tinyMCE '2' is now 2.1.2 - Seems tinyMCE '2' was actually 3.0.9 (my fault for not checking), so '2' is now 2.1.2, and '3' is now 3.4.8... eFiction 3.4.3 used tinyMCE 2.1.0, and 3.5 upgraded that to 3.0.9.
tinyMCE '2' is now 2.1.2 - Seems tinyMCE '2' was actually 3.0.9 (my fault for not checking), so '2' is now 2.1.2, and '3' is now 3.4.8... eFiction 3.4.3 used tinyMCE 2.1.0, and 3.5 upgraded that to 3.0.9.

--- /dev/null
+++ b/tinymce/2/changelog
@@ -1,1 +1,1279 @@
+Version 2.1.2 (2007-08-21)

+	Added fix for polluting third partly libraries that insist on messing with internal objects.

+	Added new save_on_tinymce_forms option to control when triggerSave is to be called.

+	Added mceContentBody class to template plugin preview.

+	Fixed bug where background color didn't work as expected in Opera.

+	Fixed bug where empty p tags where created on source code edit when forced_root_block was used.

+	Fixed bug where it was impossible to remove alignment using the align buttons.

+	Fixed bug where a empty URL was reported as a possible email link in advlink dialog.

+	Fixed bug where Opera would destroy the body if you pressed return 3 times in the beginning of a list.

+	Fixed bug where getHTML would return an empty string in IE sometimes.

+	Fixed bug where tinyMCE.selectedInstance is null after mceRemoveControl.

+	Fixed bug where remove_script_host option didn't work with media plugin.

+	Fixed bug with the convert_urls option and anchors in the advlink plugin.

+	Fixed issue with missing entityDecode statement for new document confirm.

+	Fixed issue with incorrect font value for Sans-serif.

+	Fixed problem with some youtube video urls.

+Version 2.1.1.1 (2007-05-14)

+	Fixed bug where dot notaion for some callback options didn't work.

+	Fixed bug where valid_child_elements option didn't work.

+	Fixed bug where form trigger wasn't executed when keyboard was used to submit form.

+Version 2.1.1 (2007-05-08)

+	Added new forced_root_block option. Forces inline elements or text nodes into block elements.

+	Added new fullpage_hide_in_source_view option to fullpage plugin.

+	Added new youtube/googlevideo support to media plugin. Simply paste a YouTube/Google URL and it will embed it.

+	Added new cancel button/control to the save plugin. This will undo all changes and execute a optional callback.

+	Added new remove_trailing_nbsp option that removes &nsbp; entities when paragraphs are filled with contents.

+	Added new default_document option this enables you to specify a document to be loaded into TinyMCE by default.

+	Added new detection for external and mail links. It will now ask to add http or mailto prefixes to these.

+	Cleaned up the source code by removing some obsolete code.

+	Removed debug option, no longer needed since the devkit does it better.

+	Removed old IE 5.0 code and reduced the overall code by using smarter prototype add methods.

+	Removed encoding of apos/' characters since they only time they need to be escaped is when placed in apos based attribs.

+	Fixed bug where local urls with params like ?param=x was converted into /?param=x if relative_urls was set to true. 

+	Fixed bug where the clsids for wmp in media plugin was handled as RealMedia.

+	Fixed bug where template plugin was inserting blank_page in FF.

+	Fixed bug where it was impossible to remove the width/height of images in IE.

+	Fixed bug where replace with empty contents in the replace dialog didn't work in FF.

+	Fixed bug where the advanced themes insert image dialog produces a SSL warning if running over HTTPS in IE.

+	Fixed bug where links directly to a anchor with a editor in IE failed due to the frameset fix.

+	Fixed bug with numeric entity encoding not converting the first character in string.

+	Fixed bug with new color picker not closing correctly some times.

+	Fixed bug where FF was auto generating BR elements at the end of LI elements.

+	Fixed bug where more colors link failed if the page had a base element in page.

+	Fixed bug where link dialog produced error when importing CSS classes.

+	Fixed bug where fullpage plugin inserted extra > at the end of doctype.

+	Fixed bug where fullpage plugin didn't remove internal mce_src/mce_href items correctly.

+	Fixed bug where fullpage plugin height was incorrect on Linux.

+	Fixed bug where media plugin did a incorrect comparation of width/height.

+	Fixed bug with pressing return/enter inside a paragraph in a non IE browser.

+	Fixed bug with autoplay option for QT not being enabled by default in the media plugin.

+	Fixed bug where isDirty state of instances was incorrect if a form submit handler didn't submit the form.

+	Fixed bug where isDirty state was incorrect if another form was submitted.

+	Fixed bug with getHTML not returning correct content if run twice on a row in IE.

+	Fixed bug where setting class to "not set" in the advimage dialog in IE didn't remove the class attribute.

+	Fixed bug where mceToggleEditor command didn't work with other elements such as DIVs.

+	Fixed bug where link dialog didn't close if editing a link and having inlinepopups enabled.

+	Fixed bug where the hidden textarea was updated even if the instance was hidden with mceToggleEditor.

+	Fixed bug where IE7 was reporting undefined error if the iframe didn't load fast enough over https.

+	Fixed bug where a space was created after links, it will now just place the cursor after the link.

+	Fixed bug where false param values in media plugin wasn't stored correctly in IE.

+	Fixed bug with missing cursor if a instance was totally empty in Gecko.

+	Fixed so classes can be applied to images using the style select dropdown in FF and Opera.

+	Fixed so the width/height fields of the advanced themes image dialogs can take more that 3 characters.

+	Fixed so store/restore selection logic works in Opera and Safari (Nightly).

+	Fixed so the remove column/row icons are more clear in the table plugin. Contributed by Ferenc Veres.

+	Fixed so both title and alt attributes of buttons are set. Contributed by BigBrownChunx.

+	Fixed so if ctrl key is hold down the default browser context menu will appear.

+	Fixed so the mceResetDesignMode command resets the designmode and useCSS values more correctly.

+	Fixed so custom namespaces on tags can be used in all browsers like <myns:tag>.

+	Fixed problem with source editor using mono instead of monospace as a font family.

+	Fixed problem with Opera detection, it now detects Opera even if it spoofs another browser.

+	Fixed problem where TinyMCE failed to initialized if used together with libraries like Scriptaculous.

+Version 2.1.0 (2007-02-13)

+	Added new template plugin, this supports simple snippets and advanced smart templates.

+	Added new attributes dialog for xhtmlxtras plugin. Based on contribution by Ryan Demmer.

+	Added new bbcode plugin, currently only support for PunBB but more might be added in the future.

+	Added new support for table captions, captions can now be toggled on or off on tables.

+	Added new more colors link for text/background color menus.

+	Added new more advanced color picker based on a contribution by Tristan Poet.

+	Added new functionality to always keep inlinepopups in viewable area contributed by Joshua T. Corbin.

+	Added new maximize button for inlinepopups contributed by Joshua T. Corbin.

+	Added new mceToggleEditor command. Toggles visibility of a editor instance on/off.

+	Added new showInstance/hideInstance callbacks. Used by mceToggleEditor command.

+	Added support for Ctrl+v handling for non IE browsers when the paste_auto_cleanup_on_paste option was used with the paste plugin.

+	Fixed issue where focus wasn't returned to editor after using a inlinepopup. Contributed by Andy Skelton.

+	Fixed issue where fullscreen.htm file used the _dev version of the JavaScript.

+	Fixed issue with TinyMCE forcing absolute links for document local anchors. Ex: #a got converted into b.htm#a

+	Fixed issue where initialization failed some times with Drupal.

+	Fixed issue with rtl languages and the new color picker menus.

+	Fixed major bug where url convertion logic wasn't executed correctly.

+	Fixed bug where text color/background color menus wasn't visible in fullscreen mode.

+	Fixed bug where text color/background color menus wasn't hidden when switching to/from fullscreen mode.

+	Fixed bug where embed elements was converted into ibed elements.

+	Fixed bug where contrain proportions in advimage dialog wasn't working.

+	Fixes bug where an inlinepopup wouldn't close if mcWindows.selectedWindow was nullified contributed by Joshua T. Corbin.

+	Fixed bug where style dropdown wasn't unique for each editor instance if diffrent content_css files where used.

+	Fixed bug with the noneditable plugin and IE. Only the last element was uneditable.

+	Fixed bug with link dialog and Firebug sometimes produced a TINYMCE_UNIQUEURL not defined error.

+	Fixed so the fix_list_elements option is enabled by default to produce more valid XHTML code.

+	Fixed so that all more info links on plugins point to the wiki in the about dialog.

+	Fixed so there is two new button names forecolorpicker and backcolorpicker these can be used to make plain old color picker buttons.

+	Removed the forcing of a space inside alt attributes by the advimage plugin since the default valid_elements rule defaults to "".

+Version 2.0.9 (2007-01-09)

+	Added support for fullscreen new window mode since the other method was problematic for some.

+	Added new hide_selects_on_submit option. Enables the possibility to enable/disable disabling of TinyMCE select elements.

+	Added new removeInstance callback for plugins and also a new remove_instance_callback option.

+	Added warning if flash and media plugin is used at the same time. Flash plugin should be replaced with media plugin.

+	Fixed so that fullscreen can be used even if placed in absolute positioned divs with borders etc.

+	Fixed so that contextmenu on named anchors doesn't display the link/unlink items.

+	Fixed so that wrap in source editor dialog works in Opera.

+	Fixed so that single quotes/&#39; is only applied to text nodes not attributes.

+	Fixed so that the emotions dialog is a little wider to avoid the FF bug with statusbar content alignment.

+	Fixed issue where TinyMCE wasn't restoring scroll position after fullscreen mode switch.

+	Fixed some HTML issues in style plugin dialog. Contributed by Michael Keck.

+	Fixed bug where color selection menu was visible for instances that got removed.

+	Fixed bug where it wasn't possible to remove block formatting with format select box.

+	Fixed bug with xhtmlxtras plugin not working when convert_fonts_to_spans option enabled.

+	Fixed bug where element path elements wasn't entity encoded properly.

+	Fixed bug where IE 7 produced a invalid attribute exception for some URLs.

+	Fixed bug where the fix_table_elements option moved tables out of divs and not just P and H1-6 elements.

+	Fixed bug where drop menu for spellchecker didn't work in IE.

+	Fixed bug with noneditable plugin. The classes where removed sometimes.

+	Fixed bug where media plugin failed if single quotes wasn't entity encoded.

+	Fixed bug where fullscreen mode switched the way bold/italic/underline works in FF.

+	Fixed bug where style plugin could modify body element of editor instance.

+	Fixed bugs and issues with searchreplace plugin.

+	Fixed bug where windows using inlinepopups where invisible when using fullscreen mode. Contributed by Joshua T. Corbin.

+	Fixed bug where inlinepopups where settings style values without px suffix. Contributed by Joshua T. Corbin.

+	Fixed bug where externaltoolbar where causing problems in fullscreen mode. Contributed by Joshua T. Corbin.

+	Fixed alignment problems of buttons inside the search/replace dialog. Contributed by Dongsu Jang.

+	Optimized event/callback execution by a factor of 10.

+	Optimized cleanup engine by factor of 2 on some documents.

+	Optimized shortcut and key event handling logic.

+Version 2.0.8 (2006-10-23)

+	Added class select lists for all xhtmlxtras dialogs, custom values can still be added.

+	Added missing documentation for devkit, xhtmlxtras, visualchars and nonbreaking plugins.

+	Added new gecko_spellcheck option, this enables you to disable/enable the FF 2.0 spellchecker.

+	Fixed so that the media can be modified using the context menu.

+	Fixed bug where media plugin wasn't working if convert_fonts_to_span option was enabled.

+	Fixed bug where media plugin produced errors on older IE versions.

+	Fixed bug where media plugin was breaking when prototype was used on the same page.

+	Fixed bug where cite and datetime attributes wasn't added to the default valid_elements list for del and ins.

+	Fixed bug where insert date in xhtmlxtras plugin wasn't placed in language pack.

+	Fixed bug where new fullscreen mode didn't function in IE with XHTML transitional doctype.

+	Fixed bug where new text and hilite text previews generated ghost layers in IE.

+	Fixed bug where fullscreen mode produced an error is the resizing was disabled.

+	Fixed bug where BR elements wasn't removed from PRE elements when apply_source_formatting was enabled.

+	Fixed bug where JS errors where thrown in IE if TinyMCE was placed in a frameset.

+	Fixed bug where devkit reported errors if TinyMCE was places in a frameset.

+	Fixed bug where auto_focus option didn't work in IE.

+	Fixed bug where FF leaked memory on some event handlers.

+	Fixed bug where Fullscreen plugin didn't fill containing elements if they where absolute.

+	Fixed bug where IE 7 hover out CSS events wasn't triggered correctly due to a IE bug.

+	Fixed bug where contextmenu plugin showed a incorrect flash menu item if the media plugin was enabled.

+	Fixed bug where 100% width of TinyMCE instances didn't work correctly.

+	Fixed issue where the image icon was selected when a user selected a media object.

+	Fixed issue where select elements where disabled if AJAX or custom submit triggers where used.

+	Fixed issue where formatblock command could insert invalid elements.

+	Fixed issue with duplicate default rules for abbr in valid_elements.

+	Fixed issue where the devkit wasn't the frontmost layer all the time.

+Version 2.0.7 (2006-10-17)

+	Added new visualchars plugin. Enables users to see custom chars like &nbsp;.

+	Added new nonbreaking plugin. Enables users to insert &nbsp; characters.

+	Added new devkit plugin. Gives TinyMCE developers more information.

+	Added new xhtmlxtras plugin. Based on work contributed by Andrew Tetlaw.

+	Added new text and hilite color picker layers to the advanced theme.

+	Added new media plugin, this handles flash, quicktime, windows media player, real player.

+	Added new valid_child_elements option. Enables you to remove non valid child nodes from parents.

+	Added new required attribute flag to the valid_elements option.

+	Added new popup_css add option. Enables you to add an additional css to all popups.

+	Added new table_default_border, table_default_cellpadding, table_default_cellspacing options to table plugin.

+	Added new RegExp support for editor_selector/editor_deselector options.

+	Added new validation class. Implemented in various dialogs.

+	Added new createTag and createTagHTML methods to the API.

+	Added new shortcut keys for h1-h6,p,div,address elements by keys Ctrl+1-9.

+	Added lightbox, nofollow and tag as possible rel attribute values in the advlink dialog.

+	Added new table delete control for the table plugin.

+	Added new updated search/replace dialogs. Contributed by Felix Riesterer.

+	Added image browser support for style plugin.

+	Fixed bugs and issues with the lastest Safari Nightly build.

+	Fixed bugs where data was set outside the current function scopes.

+	Fixed bug where all plugin and theme callback methods had the "this" reference incorrectly set to window.

+	Fixed bug where a call to moveToBookmark method resulted in a error is called on a hidden TinyMCE instance.

+	Fixed bug where script element contents and event attributes where HTML encoded.

+	Fixed bug where TinyMCE didn't load if a base element and relative URL to TinyMCE where used in MSIE.

+	Fixed bug where TinyMCE didn't function in MSIE 5.0.1 because call method wasn't available.

+	Fixed bug where context menu location wasn't correct if the user scrolled down on page.

+	Fixed bug where nodes wasn't selected correctly in Opera 9.

+	Fixed bug with setOuterHTML function. This had some impacts on the spellchecker plugin.

+	Fixed bug where spaces in the body node of the document couldn't be deleted.

+	Fixed bug where images lost focus in IE if they where placed in a resizable div.

+	Fixed bug where isDirty state was set after calling user specific onsubmit function.

+	Fixed bug where editor_selector/editor_deselector matched incorrectly on some names.

+	Fixed bug where contextmenu was placed in the wrong location in FF.

+	Fixed bug where images had a href attribute displayed in it's element path title.

+	Fixed bug where forms_utils.js function where using a relative URL to the current theme.

+	Fixed bug where cursor was placed at a incorrect location after mceInsertContent call in Gecko.

+	Fixed bug where selection/caret is moved to top of document on a cleanup in Gecko.

+	Fixed bug where button elements was forced closed.

+	Fixed bug where comma separated content_css option wasn't working with the preview plugin.

+	Fixed bug where DIV element named doc caused errors in IE.

+	Fixed bug where the selectedInstance wasn't updated correctly if the user clicked outside of the body of a editor area.

+	Fixed bug where strong and em wasn't handled correctly in Gecko browsers if the user added them by using the source editor.

+	Fixed bug where script tag was removed if it was the first element in IE and convert_fonts_to_span option was enabled.

+	Fixed bug when converting empty divs to editor instances didn't work in IE.

+	Fixed bug where Gecko produces a BR tag at the end of a single line of content.

+	Fixed bug where the entity_encoding numeric wasn't converting &nbsp; to &#160;.

+	Fixed bug where fullpage plugin produced an error if the first thing was to edit the header data.

+	Fixed bug where background attribute of body element in fullpage plugin produced error in IE.

+	Fixed bug where Opera was reporting errors if the width/height of a editor area was set to a percent value.

+	Fixed bug where JS error was produced in IE if you tried to insert a row/column.

+	Fixed bug where IE was causing flicker if the browser cache was disabled and the button_tile_map option is enabled.

+	Fixed bug where onchange callback wasn't executed on a mceInsertContent command.

+	Fixed bug where custom classes on anchor elements was removed.

+	Fixed bug where force_br_newlines options produced errors in Opera.

+	Fixed bugs with table selection not beeing restored correctly when actions where performed.

+	Fixed issue where a link wasn't removed on unlink in gecko if only the caret was placed within the link.

+	Fixed so that the valid attribute values for the valid_elements rules are case insensitive.

+	Fixed so that the fullscreen plugin uses the current document area instead of a new window/popup.

+	Fixed so that the cleanup callback is executed on themes.

+	Fixed so that document local anchors isn't forced absolute.

+	Fixed so that the initialization is even faster both editor instanced and dialogs.

+	Fixed so that the force_p_newlines option works on Opera & Safari. This is enabled by default.

+	Fixed so that empty td cells are padded with &nbsp; by default. This can be changed with the extended_valid_elements option.

+	Fixed so that the theme_advanced_disable option works with RowLayout.

+	Fixed so that string serialization is alot faster in all browsers. Makes the cleanup logic a lot faster.

+	Fixed issue with language variable in replace dialog in the searchreplace plugin.

+	Fixed various CSS compatiblity issues with MSIE 7 beta 3.

+	Renamed some image names in style and layer plugins for compatiblity with Drupal.

+	Fixed some HTML and CSS issues with the style properties plugin.

+	Fixed so the addMCEControl method returns the new editor instance id.

+	Fixed translation issues with the style properties dialog, patch contributed by TOMASIAN.

+	Removed the need for adding language codes to plugins. Since the online service now merges old ones with en.

+Version 2.0.6.1 (2006-05-04)

+	Fixed issue where the layer and style plugins couldn't be added in incorrect order.

+	Fixed issue with Firefox nl not beeing defined in triggerSave correctly.

+Version 2.0.6 (2006-05-03)

+	Added new theme_advanced_source_editor_wrap option, this gives the possibility to force word wrapping.

+	Added new support for using div,blockquote,dt,dd,code,samp as a items in the theme_advanced_blockformats option.

+	Added new strict_loading_mode option, this switches the loading method from document.write to DOM.

+	Added new hidden_tab_class, display_tab_class options for resolving the MSIE image dimension bug.

+	Added new absolute layer support, this was added to a new plugin called layer.

+	Added new CSS style properties support, this was as a plugin called style.

+	Fixed bug where TinyMCE was reporting a warning when inserting a image while running on HTTPS.

+	Fixed bug where pressing the browser back button after submit removed empty paragraphs in MSIE.

+	Fixed bug where links the the same page as the editor page was converted into a /.

+	Fixed bug where the getSelectedHTML method was returning undefined when selecting controls in MSIE.

+	Fixed bug with unterminated string literal errors where reported in some browsers.

+	Fixed bug where src and href where converted into xsrc and xhref in text.

+	Fixed bug where two characters where removed by backspace sometimes in Gecko.

+	Fixed bug where class drop list wasn't visible in some of the table dialogs.

+	Fixed bug where br elements where incorrectly removed within paragraphs on backspace.

+	Fixed bug where drag/drop operations failed in MSIE when editor height was set to a % value.

+	Fixed bug where width/height was lost on images if they where placed in hidden tabs in MSIE.

+	Fixed bugs with CSS auto import parsing, contributed by Scott Eade.

+	Fixed compatiblity issues with MSIE 5.0. Some RegExps needed to be rewritten.

+	Fixed issue that made it impossible to remove the entity code/name for &#39;.

+	Fixed issue with odd <br></br> elements not beeing handled properly.

+	Fixed issue where TinyMCE couldn't be loaded in a XML document.

+	Fixed issue with contextmenu beeing placed outside of visible area on Gecko browsers.

+	Fixed issue whith area tag not being closed.

+Version 2.0.5.1 (2006-03-22)

+	Fixed bug where emtpy paragraphs sometimes got removed in MSIE.

+	Fixed bug where autosave plugin was running even in fullscreen mode.

+	Fixed bug where browse and color image button urls in form_utils.js where hardcoded.

+Version 2.0.5 (2006-03-21)

+	Added API docs for the TinyMCE_Popup class that is used by all dialogs in TinyMCE.

+	Added new TinyMCE_Layer class to the core of TinyMCE plugins will be using this later on.

+	Added new loadPlugin function, use this to load external plugins.

+	Added instructions on how to contribute language packs.

+	Added new support for multiple content_css files, based on contribution by Man-Chicken.

+	Added new table_cell_limit, table_row_limit, table_col_limit options, based on contribution by Man-Chicken.

+	Added new fix_list_elements option, if this is set to true UL/OL lists will be forced XHTML valid on cleanup.

+	Added new fix_table_elements, if this is set to true tables will be moved outside paragraphs.

+	Fixed so input and button as closed elements in the cleanup logic.

+	Fixed so the mceButtonSelected is more visible with darker background in the editor_ui.css.

+	Fixed issue where charmap.js was calling switchClass that's reserved for buttons.

+	Fixed issue where the directionality option wasn't used in the preview plugin.

+	Fixed issues with nestled bullet lists pasted from Word 2003.

+	Fixed bug where button wasn't selected correctly in MSIE due to a CSS issue.

+	Fixed bug where ask mode wasn't working on DIV elements in Firefox and Opera.

+	Fixed bug where the mceAddFrameControl command wasn't working correctly.

+	Fixed bug where language packs wasn't imported correctly in plugins loaded externaly.

+	Fixed bug where focusing external input elements was visible in element path under MSIE.

+	Fixed bug where fullscreen plugin wasn't opening the window fullscreen in Firefox.

+	Fixed bug where style select dropdown wasn't working in Firefox when used in fullscreen mode.

+	Fixed bug where the fix_content_duplication wasn't working anymore.

+	Fixed bug where MSIE sometimes generated empty paragraphs.

+	Fixed bug where MSIE sometimes generated tags like <//tag>.

+	Fixed bug where the directionality option produced a error for the color picker dialog.

+	Fixed bug where configured callback options wasn't executed correctly in fullscreen mode.

+	Fixed bug where tags got generated as <*> some times in Gecko.

+	Fixed bug where the cursor was placed within a the anchor when inserting a new one in Gecko.

+	Fixed bug where convert_fonts_to_span option wasn't working correctly with new cleanup engine.

+	Fixed various language pack issues such as invalid characters.

+	Fixed naming conflict with zoom plugin and the format select box.

+	Fixed so that the initialization of the editor is slightly faster.

+	Removed all language packs except the english one from the core package. [BREAKS COMPATIBLITY]

+Version 2.0.4 (2006-02-24)

+	Fixed bug where fullscreen plugin was using the tinymce_dev.js script.

+	Fixed bug where events where having a return true; statement infront of them.

+	Fixed bug where theme_advanced_toolbar_location option wasn't working.

+	Fixed bug where select lists wasn't working if you touched them with the tab key.

+	Fixed bug where auto reset design mode wasn't working correctly.

+	Fixed bug where null was inserted in paste button action in MSIE.

+	Fixed bug where _template plugin had a , instead of . character on e.type.

+	Fixed bug where src, href where replaced to xsrc and xhref in comments.

+	Fixed bug where paste_cleanup_on_paste option wasn't working correctly with the paste plugin.

+	Fixed bug where MSIE was reporting an error when TinyMCE was placed in a frame and not focused.

+	Fixed bug where clipboard_msg wasn't entity decoded corectly before displaying it in confirm box.

+	Fixed bug where mceRemoveControl wasn't working correctly on DIV elements.

+	Fixed bug where mceInsertContent/mceReplaceContent produced error when a empty string was inserted.

+	Fixed so the default valid_elements option is more XHTML valid.

+	Fixed issue where style formatting wasn't handled when pasting content from Word.

+	Fixed issue where ' characters wasn't entity encoded, they are now encoded into &#39; and not &apos;.

+	Fixed issue with empty paragraphs, these are now filled with &nsbp; if they are empty.

+	Added documentation on how the # prefix can be used in the valid_elements option.

+	Added new options paste_remove_styles and paste_remove_spans to paste plugin.

+	Added possibility to have empty default attributes values.

+Version 2.0.3 (2006-02-13)

+	Added missing buttons to button reference page in documentation.

+	Added dt,dl,dd elements to default_valid elements config value.

+	Added new support for self registrering plugins.

+	Added new callback for themes and plugins handleEvent and the handle_event_callback option.

+	Added new execcommand_callback option, this enables you to add custom execcommand logic on page level.

+	Added new custom_shortcuts option, this enables you to disable plugin/theme specific keyboard shortcuts.

+	Added new addShortcut to TinyMCE_Control, this enables plugin to register custom keyboard shortcuts.

+	Added new getButtonHTML function to TinyMCE core, this function makes it easier for plugins/themes to make buttons.

+	Added more documentation on how to write plugins and updated the _template plugin.

+	Added more documentation on how to write custom themes.

+	Fixed so the default window size of the source editor is larger in the advanced theme.

+	Fixed so all internal plugins use the new auto registration and separation logic.

+	Fixed so all internal themes use the new auto registration and separation logic.

+	Fixed so the Safari warning is switched off by default.

+	Fixed so cursor position isn't moved when performing a cleanup.

+	Fixed so cursor position is correct when performing undo/redo actions.

+	Fixed so all themes/plugins now use a:hover to produce the mouse over button effect.

+	Fixed so it uses the DOMContentLoaded and onreadystatechange instead of onload.

+	Fixed so the simple theme also supports the button_tile_map option.

+	Fixed so the selection/cursor is moved to the beginning of area on search/replace.

+	Fixed callback handling to reduce logic, improve performance and flexibility.

+	Fixed documentarion error for the paste plugin, contributed by Jochen Metzger.

+	Fixed bug that made the cleanup process to hang MSIE on specific content.

+	Fixed bug with absolute to relative URL convertion logic if the absolute URL didn't have a path.

+	Fixed bug where about.htm in advanced theme refered to a non existing css file.

+	Fixed bug with defParam and the event_elements option.

+	Fixed bug where fullscreen plugin wasn't correctly setup with editor contents.

+	Fixed bug where paste/drop converted relative URLs incorrectly in MSIE.

+	Fixed bug with inlinepopups not restoring selection on close window in MSIE.

+	Fixed bug where selection was lost when a new column/row was inserted in a table running in Gecko.

+	Fixed bug where save plugin wasn't working in fullscreen mode.

+	Fixed bug where fullscreen plugin wasn't working in Opera.

+	Fixed bug where editor resizing in advanced theme wasn't working in Opera.

+	Fixed bug where cursor position was placed at the end of instance on word paste.

+	Fixed bug where a tinyMCE is undefined error was reported in Firefox.

+	Fixed compatiblity issues with new cleanup plugin and the prototype.js library.

+	Renamed the mceItemEditable/mceItemNonEditable to mceEditable/mceNonEditable.

+	Renamed the TinyMCEControl class to TinyMCE_Control, TinyMCE_ is the valid class prefix.

+	Removed the getInsertLinkTemplate and getInsertImageTemplate functions from themes and from API.

+	Removed insertImage and insertLink from TinyMCE core, they are moved to the advanced theme.

+	Removed opacity workaround made for Opera Preview 1, download Opera Preview 2 instead.

+	Removed search backward function from replace dialog since it could result in a infinite loop.

+	Marked insertlink_callback, insertimage_callback options as deprecated these can be replaced with execcommand_callback.

+	Moved selection specific methods to a new class. For example inst.selectNode is now inst.selection.selectNode.

+	Updated German language pack, contributed by Ace Man.

+Version 2.0.2 (2006-01-24)

+	Added updated Danish language pack contributed by Jan Moelgaard, John Dalsgaard and Bo Frederiksen.

+	Added updated Czech language pack contributed by michi aka mishal.

+	Added new Slovenian language pack contributed by Domen Kosir.

+	Added new Turkish language pack contributed by Engin Dumlu.

+	Added new save_onsavecallback option to the save plugin, this function is called on save.

+	Added new save_enablewhendirty option to the save plugin, this will disable the button until changes are made.

+	Added new onpageload callback event, this event is called when the page is loaded but before instances are made.

+	Added new accessibility_focus option, this enables you to control if buttons should be tab focusable or not.

+	Added new greek alpha character to charmap dialog.

+	Added new Scaron,scaron,Alpha entities to the default value of the entities option thanks to Kevin Rodgers.

+	Added new contextmenu items link.unlink,advhr contributed by Speednet.

+	Added new paste_insert_word_content_callback option for the paste plugin.

+	Added new cleanup plugin, this will replace the one inside the core ones it's considered stable.

+	Added cancel button to color picker contributed by Speednet.

+	Fixed various documentation errors and typos, modified the FAQ.

+	Fixed issue where the first handleNodeChange call was done to early in initialization.

+	Fixed issue with Dutch language pack for advlink plugin.

+	Fixed issue where dialogs was to short when dialog_type option was set to modal in MSIE.

+	Fixed bug where insert image under Gecko resulted in a broken image if it was inserted a the beginning of a element.

+	Fixed bug where mceVisualAid class wasn't removed from TH elements on save.

+	Fixed bug where the href attribute area elements gets converted to xhref.

+	Fixed bug with document relative anchors being forced absolute even when the convert_urls was set to false.

+	Fixed bug where some plugins produced &gr; intead of &gt; entities on string encoding.

+	Fixed bug where some characters in charmap dialog was double encoded in Firefox/Gecko.

+	Fixed bug with XML core entities wasn't encoded when using raw or numeric value in entity_encoding option.

+	Fixed bug where classes was removed from table,td,th elements when the verify_css_classes option was enabled.

+	Fixed bug where elements was getting a visual aid class if a default or force class attribute value rule was used.

+	Fixed bug where strong/em rules didn't handle the -/+ prefixes correctly under Firefox/Mozilla.

+	Fixed bug where non textarea elements didn't work when submiting content.

+	Fixed bug where a access denied error was produced when using contextmenu together with modal dialogs under MSIE.

+	Fixed bug where fullscreen plugin didn't call custom cleanup functions when passing content back and forth.

+	Fixed issue where default rule for font tags didn't have a + prefix in valid_elements.

+	Fixed issue with CSS where "arrow" was used instead of "default" for cursor replacement.

+	Fixed issue where the replace button replaced the current selection first time it was used.

+	Fixed issue with missing title for the advhr dialog.

+	Fixed issue with div not beeing usable in the theme_advanced_blockformats option.

+	Fixed issue in with translation in the German language pack.

+	Fixed so the word wrap toggle for source view functions in Firefox/Mozilla.

+	Fixed so title attribute of emotion images gets inserted aswell as alt.

+	Fixed so the insert return on popups is checked by default in advlink.

+	Fixed so url gets filled when empty if a user selects a popup url.

+	Fixed so some init settings gets trimmed from whitespace.

+	Fixed so charmap closes when a char is selected since most of the time users only need one char.

+	Fixed so the link and image dialogs of advanced theme are styled with the new 2.x layout.

+	Fixed accessibility issuew with the link, image and advhr dialogs.

+	Fixed so the advhr dialog uses the new 2.x layout.

+	Fixed XHTML compliance for Preview plugin contributed by Bo Frederiksen.

+	Fixed entity decoding problem with insert button of the advhr plugin contributed by Bo Frederiksen.

+Version 2.0.1 (2005-12-02)

+	Fixed critical bug in some MSIE versions when submiting content.

+Version 2.0 (2005-12-01)

+	Added new paste_replace_list option to the paste plugin, this replaces some MS specific characters into normal characters.

+	Added new convert_urls option, this was required to address some issues with Firefox 1.5.

+	Added new paste_create_linebreaks option to paste plugin contributed by Kevin Rodgers.

+	Added new advimage_update_dimensions_onchange option to advimage plugin, this is enabled by default.

+	Added new table_inline_editing option, this enables you to toggle the inline table editing controls in FF 1.5.

+	Added new object_resizing option, this enables you to toggle the resizing controls of table and images in FF 1.5.

+	Added updated simplified Chinese language pack contributed by Wang Yang (tom_cat).

+	Added updated Dutch language pack contributed by Mark van der Sanden.

+	Added updated French language pack contributed by Normand Lamoureux.

+	Added updated Polish language pack contributed by Wooya.

+	Added updated Brazilian Portuguese language pack contributed by Marcio Barbosa.

+	Added new Traditional Chinese language pack contributed by Twapweb.

+	Added new Slovak language pack contributed by Vladimir VASIL.

+	Added new Norwegian Nynorsk pack contributed by Knut B. Jacobsen.

+	Fixed bug where getting init settings in handleNodeChange callback wasn't working correctly when multiple configs where used.

+	Fixed bug with urls being converted into incorrect values in Firefox 1.5.

+	Fixed bug where editor and cursor was flickering when TinyMCE was placed in a hidden div in Firefox 1.5.

+	Fixed bug with missing parenthesis in a MSIE setInnerHTML call.

+	Fixed bug where MSIE was producing a "Invalid source HTML for this operation" javascript error when placed in P tags.

+	Fixed bug where some styles with RGB values was parsed/serialized incorrectly in Firefox/Mozilla.

+	Fixed bug where reset form action didn't reset all editor instances to their original values.

+	Fixed bug where a javascript exception whas thrown when the editor was resized to a negative value in MSIE.

+	Fixed bug where inserting custom characters or date/time within a font element removed formatting in Firefox/Mozilla.

+	Fixed bug where image urls was inserted incorrectly if relative_urls was set to false due to issues with inserthtml command.

+	Fixed bug where encoding option wasn't working correctly becurse the entities list wasn't initialized.

+	Fixed bug where MSIE removed the first comment from the HTML of a mceInsertContent call.

+	Fixed bug where update all cells in table/row wasn't working on some tables with lots of whitespace.

+	Fixed bug with td background attribute when inline_styles option was set to true in MSIE.

+	Fixed bug where forms submitted with accesskey or return produced a JS error in Firefox 1.5.

+	Fixed bug with URL convertion logic not converting paths correctly to relative/absolute URLs.

+	Fixed bug where inline_styles option and flash moviews produced strange results.

+	Fixed bug where tabs and links where opened in a new window in MSIE when dialog_type option was set to modal.

+	Fixed bug where dialogs didn't open in Opera if the dialog_type option was set to modal.

+	Fixed bug where the table plugin wasn't working with the inlinepopups plugin while running in MSIE.

+	Fixed bug where embed elements whasn't parsed correctly by the flash plugin if no object tag was surrounding it.

+	Fixed bug where contents wasn't stored/restored when using the browser back button in Firefox 1.5.

+	Fixed issue where the ghost resize handles in Firefox/Mozilla was appearing when resizing images/tables.

+	Fixed issue with constrain proportions feature in advimage plugin, when trying to reset the values to blank.

+	Fixed issue where inlinepopups option couldn't be enabled/disabled on individual instances.

+	Fixed issue where TDs was created instead of TH elements when inserting a column on a row with TH elements.

+	Fixed issue with editor_selector/editor_deselector options couldn't be used when mode was specific_textareas.

+	Fixed issue where font selection produced null face attributes in MSIE.

+	Fixed issue where document local anchors where prefixed with the document name.

+	Fixed issue where link/image dialogs of the advanced theme didn't open using inlinepopups when enabled.

+	Fixed so the CSS select list gets hidden in the link dialog in advanced theme if there isn't any CSS classes.

+	Fixed so that the onsubmit handler of a form was processed correctly when posting using the save plugin.

+	Fixed so TinyMCE makes some very simple cleanups even if cleanup option is set to false.

+	Fixed so alignment button gifs have the justify prefix, such as justifyleft, for compatiblity with Drupal.

+	Fixed compatiblity issues with the .NET version of TinyMCE Compressor.

+	Fixed performance issue with fullscreen plugin, it switches back to normal view a lot faster now.

+	Fixed issues with mceSelectList class in advanced theme and compressed it some.


+Version 2.0RC4 (2005-10-30)

+	Fixed bug with font face/size/color wasn't working correctly in Firefox 1.5b1.

+	Fixed bug where all actions where dispatching the onbeforeunload event.

+	Fixed bug where buttons in fullscreen mode wasn't working in MSIE.

+	Fixed bug where style removal with drop list wasn't working correctly.

+	Fixed bug where element path list or return key some times didn't scroll to the right location.

+	Fixed bug where return key in Firefox/Mozilla some times produced a error.

+	Fixed bug where MSIE was presenting a alert box about insecure items when running TinyMCE over HTTPS.

+	Fixed bug where TR/TD elements width/height attributes produced a JS error on cleanup.

+	Fixed bug where Polish Ctrl+Alt+Z executed the undo function instead of inserting national character.

+	Fixed bug where editor couldn't be initialized if no rows or height where specified on a textarea.

+	Fixed bug where comments sometimes got removed from HTML code.

+	Fixed bug with advimage not inserting onmouseover attribute correctly.

+	Fixed bug where anchors with child nodes messed up list elements.

+	Fixed bug where apply_source_formatting option wasn't working when used together with remove_linebreaks.

+	Fixed bug where empty paragraphs where invisible in Firefox. These are now padded with a &nbsp;.

+	Fixed bug where tables without a border attribute didn't get visual aid borders until cleanup.

+	Fixed bug with URL convertion, absolute URLs to the same domain without trailing slash produced incorrect results.

+	Fixed bug with URL convertion of urls like this somedir/?id=3 produced somedir?id=3.

+	Fixed bug with weird cursor movement when pressing return/enter in a list when running on Firefox/Mozilla.

+	Fixed bug where contents where deleted sometimes when user pressed return/enter running on Firefox/Mozilla.

+	Fixed bug where style elements what generated empty in MSIE, but using style tags is not recommended.

+	Fixed bug with not beeing able to have absolute urls in the external_link_list_url and simmilar.

+	Fixed bug with bold, italic, underline, strikethrough buttons not beeing selected correctly.

+	Fixed bug with font size and font face select list not beeing selected correctly.

+	Fixed bug where document anchors was incorrectly converted if document_base_url was defined.

+	Fixed bug where changing border width/color of a table didn't update CSS styles correcty.

+	Fixed bug where emotions plugin didn't insert a new smiley the second time you insert one.

+	Fixed bug with blockquote command produced javascript error when used on lists in MSIE.

+	Fixed bug with cleanup converting flash elements to images.

+	Fixed bug where class wasn't selected in drop list of advlink/advimage dialogs when editing links/images.

+	Fixed bug where cellpadding/cellspacing/scope wasn't correctly handled in MSIE 5.5SP2.

+	Fixed bug where hreflang,charset and type attributes wasn't returned correctly in MSIE 5.5SP2.

+	Fixed bug with broken image URLs when user clicked the cleanup button in Firefox 1.5b2.

+	Fixed some compatiblity issues with call to createStyleSheet and event.target setup.

+	Fixed more compatiblity issues with scripts extending core JS logic such as the Array class.

+	Fixed issue where paragraphs wasn't generated if user pressed returned inside a H1-H6 running on Firefox/Mozilla.

+	Fixed issue with context menu plugin messing up some onclick events.

+	Fixed issue with missing </tbody> HTML in advanced theme.

+	Fixed issue with Finnish language pack, it wasn't working at all.

+	Fixed issue where button control styles needed to be overriden in default editor_ui.css.

+	Fixed issue with a broken link in the documentation to the theme_advanced_resize_horizontal option.

+	Fixed issue with missing var declaration of a buttons variable in the advanced theme.

+	Fixed issue with missing block elements in block element regexp.

+	Fixed issue where advhr plugin didn't produce valid attribute for noshade.

+	Fixed issue with misslabeled option, plaintext_create_paragraphs is renamed to paste_create_paragraphs.

+	Fixed issue where remove_script_host and relative_urls where treated as true if they where specified as strings.

+	Fixed issue with charmap, made it easier to select/click characters.

+	Fixed issue with search/replace dialogs not being refocused in MSIE.

+	Fixed issues with dialogs being to small if large class names where added. Made sure they can grow.

+	Fixed issues with some dialogs being to small in NS 7.2 and not working correctly in NS 7.1.

+	Fixed missing HEAD element in fullscreen.htm file, contributed by monkeybrain.

+	Fixed some HTML issues with the advhr plugin, contributed by monkeybrain.

+	Fixed some small issues with the span element rule of the XHTML rule set in valid_elements documentation.

+	Added new Opera 9 support, most of the functions is working in the prerelease of Opera 9.

+	Added new paste_strip_class_attributes option to paste plugin, contributed by monkeybrain.

+	Added new merge_styles_invalid_parents option, allows users to control what elements gets styles.

+	Added new theme_advanced_resizing_use_cookie option, this enables you to disable the cookie used by resize.

+	Added new function that converts all font elements to span elements when the editor loads.

+	Added new force_hex_style_colors option, enables you to control the color format of CSS styles.

+	Added new convert_fonts_to_spans option, this option converts fonts to span elements.

+	Added new font_size_classes option, this option is used together with convert_fonts_to_spans.

+	Added new doctype option, enables you to control the internal doctype declaration.

+	Added new event_elements option contributed by happy_noodle_boy.

+	Added new path tooltips for font, span and flash elements such as color, font-family, src and so forth.

+	Added trim_span_elements back again, this option removes unneeded span elements.

+	Added documentation of the apply_source_formatting option.

+	Added updated Danish language pack, contributed by Jan Moelgaard.

+	Added updated Hebrew language pack, contributed by Liron Newman.

+	Added updated Russian language pack, contributed by Vladimir Vitkovsky.

+	Added updated Finnish language pack, contributed by Tuomo Aura.

+	Added updated Spanish language pack, contributed by Adolfo Sanz De Diego.

+	Added updated Italian language pack, contributed by grueff.

+	Added updated Icelandic language pack, contributed by Johannes Birgir Jensson.

+	Removed option convert_fonts_to_styles due to various compatiblity issues. Use convert_fonts_to_spans instead.

+Version 2.0RC3 (2005-09-26)

+	Fixed bug where colorpicker in table plugin wasn't working in Mozilla/Firefox.

+	Fixed bug where closed anchors produced strange results. Anchors are now forced open.

+	Fixed bug where the font style/color functions wasn't producing correct results.

+	Fixed bug where buttons not working if a target was defined in head element.

+	Fixed bug where paragraphs wasn't generated when pressing return/enter in a floating div.

+	Fixed bug where anchor contents was getting lost, contents of anchors are now placed behind them.

+	Fixed bug where style info such font size/face/color was removing parent elements such as LI.

+	Fixed bug where %I wasn't inserting correct hour in the insertdatetime plugin.

+	Fixed bug where MSIE sometimes doesn't output attributes correctly, contributed by Luke Bennett.

+	Fixed bug where images was lost if the user pressed return after a image in a TD on FF.

+	Fixed bug where empty non block elements where produced when hitting return in Gecko browsers.

+	Fixed bug where it was impossible to update tables.

+	Fixed various bugs and issues with removeformatting function it will now remove classes and styles.

+	Fixed compatiblity issues with prototype.js and other scripts that modifies the Object.prototype.

+	Fixed issue where a unnecessary dir and style attribute was generated on the blockquote command in MSIE.

+	Fixed issue with access denied error if page contained iframes with external URLs.

+	Fixed issue where the plugin links in about dialog was linking to blank.

+	Fixed issue with useCSS command not working in Deer park beta.

+	Fixed XHTML table compatiblity issues. Placed bordercolor and height in styles instead of attributes.

+	Fixed issue with tables getting empty summary attribute in MSIE.

+	Fixes so the insert custom character dialog is accessible through keyboard.

+	Removed _self as the default target for links inorder to produce more XHTML compliant code.

+	Removed bordercolor field from table row properties dialog since this is not a valid attribute.

+	Added accessibility warnings to image and table plugin. These can be disabled by the accessibility_warnings option.

+	Added updated Danish language pack, contributed by Jan Moelgaard.

+	Added updated Hebrew language pack, contributed by Liron Newman.

+	Added updated Norwegian language pack, contributed by Knut B. Jacobsen.

+	Added updated German language pack, contributed by salzbermat.

+Version 2.0RC2 (2005-09-12)

+	Fixed bug with plugin tab in about dialog not working in MSIE 5.01.

+	Fixed bug issues with paste and noneditable plugin in MSIE 5.01.

+	Fixed bug where dialogs in the search/replace plugin was to small.

+	Fixed bug where about dialog sometimes produced unknown runtime error in MSIE.


+	Fixed bug where it was possible to click on the disabled link icon when nothing was selected.

+	Fixed bug where autosave plugin wasn't working with JS submit calls or the save plugin.

+	Fixed bug where file/image browser wasn't working with the default link/image dialogs.

+	Fixed bug where style attributes where parsed/serialized incorrectly when using - and #.

+	Fixed bug where inline popups plugin wasn't working when loading the compressed JS files.

+	Fixed bug with contextmenu showing theme image dialog instead of advimage dialog.

+	Fixed bug with flash plugin trying to include a empty external list JS file.

+	Fixed bug with some fields beeing to short if the file browser was disabled.

+	Fixed bug where contextmenu wasn't recognizing flash elements.

+	Fixed bug where border styles on images and tables was removed.

+	Fixed accessibility issue with colorpicker, added titles and keyboard access.

+	Fixed accessibility issue with toolbar buttons, all toolbar buttons are now wrapped in links.

+	Fixed accessibility issue width browse buttons, these are now wrapped in links.

+	Fixed accessibility issue with select lists, all select lists has now keyboard access.

+	Fixed accessibility issues with missing labels in various dialogs.

+	Fixed accessibility issue with the emotions plugin, this one now inserts a alt text for smileys.

+	Fixed accessibility issue with the locationbar, menubar and so fort in advlink plugin.

+	Fixed accessibility issue with TOC in english help pages. This is not wrapped in a acronym element.

+	Fixed issue with the directionality plugin. It will now get disabled on invalid elements.

+	Fixed issue where popups was the wrong size a new resizeToInnerSize function resizes popups to the correct size.

+	Fixed so empty <a> elements gets removed since they serve no purpose.

+	Added support for TinyMCE grabbing text from input elements if specified in exact mode.

+	Added language specific relative popup width/heights to all build in dialogs.

+	Added missing browser for popup url in advlink plugin.

+	Added missing delete table icon to context menu.

+	Added so it's possible to see the target value in the target select dropdown in the advlink plugin.

+	Updated the documentation to include information about the new language packs.

+	Updated the swedish language pack.

+Version 2.0RC1 (2005-09-06)

+	Renamed CSS classes mcePathTop,mcePathBottom,mcePath to mceStatusbarTop,mceStatusbarBottom,mceStatusbar. [BREAKS COMPATIBLITY].

+	Moved all theme CSS files to a css directory within the theme. [BREAKS COMPATIBLITY].

+	Removed the default theme since the advanced theme can be configured to be as the default theme. [BREAKS COMPATIBLITY].

+	Removed closeDialog method from TinyMCE use tinyMCEPopup.close(); instead of tinyMCE.closeDialog();. [BREAKS COMPATIBLITY].

+	Removed the auto_cleanup_word option, since the paste plugin now handles this better than the build in function.

+	Added improved undo/redo and onchange handling. All modifications are now undo/redo:able.

+	Added new mceBeginUndoLevel/mceEndUndoLevel commands. Used to begin/end a undo/redo:able action.

+	Added new link dialog with tab interface and lots of new fields and options.

+	Added new image dialog with tab interface and lots of new fields and options.

+	Added new about dialog with tab interface, this one replaces the old help dialog.

+	Added new table dialogs with tab interface and lots of new fileds and options.

+	Added new utils directory in tiny_mce script dir. This directory contains various utility classes.

+	Added new TinyMCEPopup class to tiny_mce_popup.js, used for common popup logic.

+	Added new inlinepopups plugin, this makes the popup windows to open as DHTML windows (divs).

+	Added new version info constants to TinyMCE (majorVersion, minorVersion, releaseDate).

+	Added new resizing functionality to the advanced theme, the editor instance can now be resized.

+	Added new theme_advanced_resizing option, enables/disables the new resizing functionality.

+	Added new theme_advanced_resize_horizontal option, enables/disables the horizontal resizing.

+	Added new theme_advanced_path option, enables/disables the element path functionality in statusbar.

+	Added new compressed icons about 1/3 of the original size, contributed by Jozef.

+	Added new center support of images, images are now wrapped in a div with alignment.

+	Added new - character to the valid_elements/extended_valid_elements options this feature removes empty elements.

+	Added new setup_content_dom and submit_content types to custom cleanup callbacks.

+	Added new inst parameter to custom cleanup callbacks, this is a reference to the editor instance.

+	Added new mceColorPicker command to the advanced theme, enables the possibility invoke the color picker.

+	Added new safari_warning option, this enables you to disable the alert that gets presented when running on Safari.

+	Added new editor_selector/editor_deselector options that enables you to specify a include/exclude from convertion class.

+	Added new tinyMCE.addToLang function to reduce the overall size of the language files.

+	Added new auto save plugin. This plugin will confirm that the user want's the leave any modifications unsaved.

+	Added new noneditable plugin. This plugin enables you to disable/enable the possibility to edit various elements.

+	Added new word example, to better illustrate how TinyMCE is to be used when pasting content from Office/Word.

+	Added missing entities eactute,iacute,oacute,uacute,Aacute,Eacute,Iacute,Oacute,Uacute,Yacute,Aacute.

+	Added updated Hebrew language pack contributed by Liron Newman.

+	Added visual aid icon for invisible anchors elements.

+	Added new insert table and delete table commands to context menu.

+	Added new convert_fonts_to_styles option, this option controls if font or span will be used when using font size, color etc.

+	Renamed the theme_advanced_path_location to theme_advanced_statusbar_location.

+	Moved all popup javascript logic into external .js files, inorder to separate presentation and logic.

+	Removed the automatic resizing of popups. Better to use relative window sizes for each language when opening a dialog.

+	Fixed issue where the character map dialog lost focus when inserting a char.

+	Fixed issue where the attribute values where not XML encoded correctly. For example: & will be &amp;.

+	Fixed performance issue with the table plugin, it was executing logic even when it was inactive.

+	Fixed so the directionality gets inherited by all popups/dialogs.

+	Fixed so the CSS file content_css loads after the theme content CSS, user specific CSS extends theme CSS.

+	Fixed so more than 3 toolbar rows may be added in when using the default simple layout.

+	Fixed so the insertdatetime plugin polls it's default date formats from the language pack.

+	Fixes so auto_reset_designmode is enabled by default, to avoid the question about the editor not working in tabs.

+	Fixed better inline styles support for images and tables.

+	Fixed duplicate IDs on advanced theme with external toolbar, contributed by Miguel Fortea.

+	Fixed issue with remove formatting under MSIE, if all contents of a element is selected the element is also selected.

+	Fixed issue with visual aids not being removed from content when cleanup is disabled. But it's NOT recommended to disable the cleanup.

+	Fixed bug where return/enter key sometimes produced empty elements in MSIE.

+	Fixed bug where link list was generated twice in the advanced themes link dialog.

+	Fixed bug issue where embed was converted in to ibed due to some invalid regexps.

+	Fixed bug where summary attribute on tables got lost in MSIE.

+	Fixed bug where the editor scrolled to the top of content when the pasting text with the paste plugin.

+	Fixed bug where external toolbar wasn't translated, contributed by Miguel Fortea.

+	Fixed bug where the editor had a incorrect height, contributed by Miguel Fortea.

+	Fixed bug where visual aid class where presented in element path.

+	Fixed bug where HR elements with a id set to "null" produced runtime error in MSIE.

+	Fixed bug where isDirty wasn't working due to the same function name and variable name.

+	Fixed bug where events like onclick wasn't removed/stored correctly in old MSIE.

+Version 1.45 (2005-06-23)

+	Fixed so the newdocument button shows again, was removed by accident in RC2.

+	Fixed so styles drop down in link dialog gets hidden if no classes are defined.

+	Fixed bug where Paste command in context menu wasn't working.

+	Fixed bug issue with not having a base href element in preview plugin.

+	Fixed bug where input elements produced double type/value attributes in MSIE.

+	Fixed so the check for empty contents in cleanup handled uppercase elements.

+	Added a alert box is a popup is blocked by a popup blocker.

+	Added updated dutch language pack, contributed by Fred Stuurman.

+	Added a confirm dialog for the newdocument action.

+	Added mceContentBody class to the iframe document body.

+	Added allowtransparency attribute to iframe.

+	Added fix where some HTML content produced runtime error in MSIE.

+	Added a lot better Safari support, but many things are still very buggy.

+	Added flash_wmode, flash_quality and flash_menu options for the flash plugin.

+	Added new dialog_type option, this enables you to switch back to modal dialogs in MSIE.

+	Updated Canadian French table language pack contributed by Virtuelcom.

+	Fixed some minor issues with Simplified Chinese language pack.

+	Re-added Tahoma font to font drop list, was removed in previous version.

+Version 1.45 RC2 (2005-06-15)

+	Fixed bug where paste_use_dialog option for the paste plugin wasn't working correctly.

+	Fixed bug issue with setContent not calling custom cleanups correctly. Inflicts the Flash plugin.

+	Fixed bug where external_link_list_url/external_image_list_url in fullscreen mode.

+	Fixed so TinyMCE doesn't use modal dialogs on MSIE, these where giving some problems with for example lost sessions.

+	Fixed the auto resize function for popups to use new logic.

+	Fixed so callback functions gets called correctly from fullscreen mode.

+	Fixed misspelled language pack for canadian french in the advimage plugin.

+	Fixed so openWindow can open use absolute URL:s.

+	Fixed bug issue where auto_cleanup_word sometimes didn't work in MSIE.

+	Fixed bug issue where the close button in dialogs wasn't available on Firefox on MacOSX.

+	Added new pastetext icon contributed by speednet.

+	Added new browsers option that enables you to specify what browsers is to be WYSIWYG enabled or not.



+	Added updated Simplified Chinese language pack contributed by cube316.

+	Added beforeunload handler for fullscreen plugin so contents gets updated when the window is closed.

+	Added a new fullscreen_settings option for the fullscreen plugin contributed by David Glick.

+	Added new insert table command to context menu when user clicks within a table.

+	Added new advimage_constrain_proportions option to advimage plugin, contributed by Knut B. Jacobsen.

+	Added updated advanced theme with a new external toolbar location option, contributed by Man-Chicken (http://www.zoomshare.com/).

+	Added new tiny_mce_gzip.php file, this PHP script merges and compressed the requested .js files to improve loading times.

+	Added updated czech language pack, contributed by Stanislav Lacko.

+	Added new mceRemoveNode command, this command removes a node and inserts the node contents instead.

+	Added new behavior to format select box, you can now remove a paragraph by selecting -- Format --.

+	Removed ?rnd from external_link_list_url/external_image_list_url since it doesn't work well with serverside scripts.

+Version 1.45 RC1 (2005-05-27)

+	Fixed bug where character map inserted &amp; and &lt;/&gt; when using & < >.

+	Fixed so paragraphs containing &nbsp; is converted to numeric or raw if entity_encoding is set.

+	Fixed bug in searchreplace plugin when user tried to search on a empty string or the editor contents was empty.

+	Fixed repaint/trail graphics issues with images and tables in FF/Mozilla.

+	Fixed some memory leaks in TinyMCE core and context menu plugin, only MSIE was inflicted by this.

+	Fixed stange issue where elements sometimes disappeared in MSIE.

+	Fixed URL convertion problems with onmouseover, onmouseout image urls in advimage plugin.

+	Fixed URL convertion problems with Flash plugin.

+	Fixed the experimental Safari support, some features work some doesn't.

+	Fixed bug where multiple a elements where created when updating links on images in FF/Mozilla.

+	Fixed bug in importCSS function, was having a meaning less if statement.

+	Fixed so the contextmenu plugin uses images from the configurated theme instead of the advanced theme.

+	Fixed so the external_link_list_url/external_image_list_url options can use relative or absolute path.

+	Fixed so the external_link_list_url/external_image_list_url has a random query parameter to prevent it from cache.

+	Added new mceInsertRawHTML command, this inserts raw as it is HTML code in the the selected position.

+	Added paste plain text plugin contributed by Ryan Demmer, converted it into a paste plugin.

+	Added updated paste plugin contributed by speednet, includes paste directly feature for MSIE.

+	Added split/merge table cells support, to table plugin and context menus.

+	Added cut/copy/paste table rows functionality to context menu and table plugin.

+	Added new mceSetContent command, this does the same as the setContent function.

+	Added new clear all/new document icon to advanced theme.

+	Added new remove formatting and select text color icons.

+	Added new directionality plugin to better support languages that write from right to left.

+	Added new fullscreen plugin, enables users to toggle fullscreen editing mode.

+	Added a new template/tutorial plugin to aid people in the development of own plugins.

+	Removed visual_table_style and replaced it with visual_table_class. [BREAKS COMPATIBLITY].

+	Renamed urlconvertor_callback option to urlconverter_callback.

+Version 1.44 (2005-05-03)

+	Fixed bug with contextmenu not showing at the correct location in MSIE.

+	Fixed bug where a error was produced by the Flash plugin if the user reloaded the page in MSIE.

+	Fixed issue where mceAddControl and mceRemoveControl commands produced a error in MSIE.

+	Fixed bug when images and flash movies where mixed in the editor produced strange results.

+	Fixed so trailing / characters isn't removed from URLs.

+	Fixed so the contextmenu uses a diffrent method of loading it's custom CSS file.

+	Fixed getAttributes problem, it should read getAttribute.

+	Fixed so "Edit HTML source" window may be maximized.

+	Added French eacute entitiy to default entities option.

+	Added a height CSS value for the element path in advanced themes editor_ui.css since it keept bobbing up and down.

+	Added updated Polish language pack contributed by Marcin Szymon Sznyra.

+	Added better window auto resize method for most dialogs.

+	Added new feature to set what tags are to be left open in valid_elements. Add a + before the element names to enable.

+	Added nowrap for the editor table cells, sometimes the editors controls wrapped.

+	Updated German language pack contributed by Krokogras.

+Version 1.44 RC2 (2005-04-25)

+	Fixed bug with host prefixes and port numbers when having relative_urls set to false and remove_script_host set to true.

+	Fixed bug when site absolute URLs for example /something was converted incorrectly in Firefox/Mozilla.

+	Fixed bug where the link wasn't auto selected in the drop list in the advanced themes default link dialog.

+	Fixed bug issue with the flash plugin and croping out characters before and after the movie.

+	Fixed bug where the editor jumped to top of editor area on enter/return when doctype was set to XML Transitional.

+	Fixed bug where context menu was appearing in the wrong location if the window was resized.

+	Fixed bug in the context menu where table properties wasn't working.

+	Fixed bug where a selectorText exception was trown if the CSS file contained @import or @charset.

+	Fixed bug where bold/italic/strikethough/underline wasn't selected/unselected in toolbar some times.

+	Fixed issue with hspace and vspace when having the inline_styles option enabled. Contributed by speednet.

+	Fixed bug where access denied error was thrown sometimes in MSIE.

+	Fixed so images without src won't be inserted.

+	Fixed some issues with width/height fields in the advimage plugin.

+	Fixed so the contextmenu plugin doesn't appear in MSIE 5.0, now functions with 5.5+.

+	Added filebrowser icon to mouse over and mouse out fields in the advimage plugin.

+	Added filebrowser icon to popup field in the advlink plugin.

+	Added so the triggerSave function gets auto executed when a user calls submit on a form, this can be disabled with the submit_patch option.

+	Added missing readme.txt file for the context menu plugin.

+	Added new border and background color fields to table dialog, based on contribution by Neirda. Enable them by the table_color_fields option.

+	Removed some old outdated items from FAQ.

+Version 1.44 RC1 (2005-04-20)

+	Fixed bug where width/height attributes of a image wasn't stored some times in Firefox/Mozilla.

+	Fixed bug where P elements where created if a user pressed return/enter within a h1-h6 in Firefox/Mozilla.

+	Fixed bug where the remove format fuction didn't work some times in MSIE.

+	Fixed so backspace/delete gets added in one undo level in MSIE (improves performance).

+	Fixed so the "Could not find element by id or name" alert only shows when the debug option is set to true.

+	Fixed bug where bold/italic didn't work in Mozilla 1.3.

+	Fixed bug where width/height of a hidden TinyMCE instance where incorrect.

+	Fixed so the function layout of classes in tiny_mce_src.js uses prototype keyword instead of TinyMCE_ prefix (reduces size).

+	Fixed bug where triggerNodeChange produced javascript error some times in MSIE.

+	Fixed some issues in the Swedish and Spanish language packs.

+	Fixed bug where first undo level wasn't working correctly.

+	Fixed so flash plugin loads it's needed CSS data from within the plugin.

+	Fixed button images and CSS in the simple theme.

+	Fixed so the simple example shows how to use the simple theme instead of the default theme.

+	Fixed so cleanup default values can be set to empty. For example alt= generated alt="" on img elements.

+	Fixed memory leaks in MSIE (circular closure problem) events are now removed in a better way.

+	Fixed bug where URLs where converted incorrectly if the editor page URL contained / characters.

+	Fixed bug where table guidlines didn't work correctly when using the build in Mozilla table buttons.

+	Fixed bug where the Flash plugin was breaking other elements.

+	Added new contextmenu plugin, this plugin adds a menu if the user right clicks/uses the contextmenu on elements.

+	Added new multiple configuration support, the init method may now be called multiple times.

+	Added new remove_linebreaks option, this option is enabled by default and removes all HTML code linebreaks.

+	Added new behavior to the textarea_trigger option, if mode is textareas and trigger is false those elements will not be converted into editors.

+	Added new entity_encoding option, enabled user to better control the behavior of how character are converted into entities.

+	Added new isDirty command to TinyMCEControl, this method returns true if the user has done any modifications to the content.

+	Added new onchange_callback option, this callback is executed when contents within the editor instance is changed.

+	Added new init function for themes/plugins this gets called when a editor instance has finished it's setup.

+	Added new init_instance_callback option this callback is executed when instances are added to the editor.

+	Added new cleanup option this option enables users to totaly disable the whole cleanup process.

+	Added new importCSS method to TinyMCE. This method allows plugins and themes to load custom CSS files on initialization.

+	Added new getSelectedHTML method to TinyMCEControl class, this method returns the currently selected HTML contents.

+	Added new getSelectedText method to TinyMCEControl class, this method returns the currently selected contents as text.

+	Added new removeclass behavior to the removeformat button. The current class will be removed if no contents is selected.

+	Added new queryInstanceCommandValue and queryInstanceCommandState methods.

+	Added new option button_tile_map, this option contols the usage of button tile maps and is disabled by default.

+Version 1.43 (2005-03-06)

+	Fixed bug with ask option not working at all.

+	Fixed bug where a "instance is not defined bug" error was produced.

+	Fixed bug with empty image src produced a error.

+	Fixed so the simple and default theme used the same CSS style as the advanced theme.

+	Fixed bug with the relative to absolute URL convertion logic if a empty string was passed used.

+	Fixed parse error bug with the source editor some servers can't handle XML PI declarations.

+	Fixed bug issue with HR elements in MSIE, if a specific work pattern where used a runtime error was produced by MSIE.

+	Fixed bug in the URL convertor logic, port numbers was not correctly handled.

+	Fixed issue where the cursor was placed before a insert of custom charater or date/time.

+	Fixed bug where the editor height option didn't work on MSIE.

+	Fixed bug where a linefeed within a table cell broke the table in Firefox/Mozilla.

+	Fixed bug where return/enter key after a image removed all content.

+	Fixed bug where return/enter key sometimes produced nestled P elements.

+	Fixed bug where the editor was stealing focus on load in MSIE.

+	Fixed bug where the visual aid logic forces width/height attributes on tables.

+	Fixed bug where getCSSClasses some times returned null value.

+	Fixed issue where the lang_insert/lang_update language variables wasn't entity decoded.

+	Fixed so the image/link/flash drop list gets auto selected thanks goes to Randy Simons and salzbermat.

+	Fixed so remove formatting button in MSIE removes all classes aswell.

+	Fixed issue where output contained single br element when the editor area was empty.

+	Added new %A/%a/%B/%b format chunks to insertdatetime, these insert localized date names such as January.

+	Added new oninit callback option for TinyMCE this callback is executed when all editor instances been initialized.

+	Added new preview panel to dialog in the advimage plugin, contributed by Virtuelcom.

+	Added element class name to element path in the advanced theme.

+	Updated Canadian French table language pack contributed by Virtuelcom.


+Version 1.42 (2005-02-14)

+	Fixed bug with the element path beeing resized if width/height of editor was 100%.

+	Fixed bug with reloading/flicker of all button images in MSIE if browser cache is disabled.

+	Fixed backspace/delete bug in Firefox, some times the cursor got stuck.

+	Fixed bug issues with enter/return key in Firefox/Mozilla.

+	Fixed bug where copy/paste and drag drop of images/links failed in Firefox/Mozilla if a document_base_url is provided.

+	Fixed so when relative_urls is set to false it forces absolute URLs for images/links.

+	Fixed so the _src.js suffix versions of the themes and plugins gets loaded with the tiny_mce_src.js script is used.

+	Fixed so verify_css_classes option is disabled by default.

+	Fixed bug where tables where resized when toggling visual aid in Firefox/Mozilla.

+	Fixed bugs with advhr plugin running in a hidden div element.

+	Added new auto_focus option that enabled a specific editor area to be focused on startup.

+	Added a extra argument to the filebrowser callback inorder to get the calling window reference.

+	Added a new persian (farsi) language pack contributed by Morteza Zafari.

+	Added new more nice looking icons contributed by Morteza Zafari and Michael Keck. The old icons are available in a separate icon pack.

+	Added updated Canadian French language pack contributed by Virtuelcom.

+	Added updated French languahe pack contributed by Laurent Dran.

+	Added updated German language pack contributed by Tobias Heer.

+	Added some documentation regarding the layout manager options made by SlyD.

+Version 1.41 (2005-01-31)

+	Added new table plugin, all table code is moved into this plugin [BREAKS COMPATIBLITY].

+	Added new external_link_list_url/external_image_list_url options for better backend integration.

+	Added new file_browser_callback option for better backend integration.

+	Added new layout manager code into the advanced theme, contributed by SlyD.

+	Added new nowrap option, enables so users may change the word wraping behavior.

+	Added new Thai language pack contributed by Innozent.

+	Added obfuscated version of all plugins and themes to reduce over all startup/download time.

+	Added Simplified Chinese language pack contributed by cube316.

+	Added a updated Czech language pack thanks to Josef Klimosz.

+	Fixed issue where anchor elements where closed. This results in browser problems with the outputed HTML.

+	Fixed bug where the first return key press didn't produce a paragraph in Firefox/Mozilla.

+	Fixed bug in the searchreplace plugin where replace content sometimes fails in Firefox/Mozilla.

+	Fixed so all language packs now uses the ISO-639-2 code instead of ISO 3166-1 [BREAKS COMPATIBLITY].

+	Fixed some issues with the force_br_newlines option in MSIE.

+	Fixed bug where the backspace or delete key produced BR elements in Firefox/Mozilla.

+	Fixed bug issue with link and image dialogs of the default theme/simple example.

+	Fixed some bugs when having the editor hidden in a tab/div, contributed by Ernst de Moor.

+	Fixed some character issues with the Danish language packs, contributed by someone unknown.

+Version 1.40 (2005-01-09)

+	Added a new default value for the font size drop down, if no font size where found this gets selected.

+	Added a auto resize window feature, this is enabled by default but can be disabled with a window argument.

+	Added a new print plugin, prints the current editor contents to a printer.

+	Added a new searchreplace plugin, adds a search, searchnext and replace button.

+	Fixed bug issue where buttons didn't display correctly on some Firefox installations.

+	Fixed issue with value and type attributes of input elements getting lost in cleanup on MSIE.

+	Fixed so that the getEditorInstance command is public, returns a TinyMCEControl by id.

+	Fixed issue where "true" and "false" string wasn't treated as booleans in TinyMCE init options.

+	Fixed so cursor/mousepointer allways remains a arrow in all themes when rolling over buttons.

+	Fixed the popup windows so they are mode "modal" in Mozilla/Firefox.

+	Fixed so the ask question is displayed when elements are focused with the tab key.

+	Fixed so the ask option works when mode option is set to exact.

+	Fixed issue with visualaids on tables not working correctly when the user uses the tab key in Firefox/Mozilla.

+	Fixed some bugs with the mceSetCSSClass class command and the element path.

+	Fixed a new version of the mceInsertContent command.

+	Fixed so the auto_cleanup_word option is disabled by default.

+	Removed the langs of the zoom plugin, it now uses + instead of the "zoom" word.

+Version 1.391 (2005-01-04)

+	Fixed major spacebar bug in MSIE, spacebar was disabled.

+Version 1.39 (2005-01-04)

+	Updated the Flash plugin with a new version, contributed by jamesw.

+	Added new setWindowArg function, useful if plugins are to call other plugins.

+	Added new save plugin, this plugin adds a save/submit form button to tinyMCE, contributed by SlyD.

+	Added new hilite color support, sets a background-color style on the selected text.

+	Added new variable replacement popup URLs, check the openWindow function documentation for details.

+	Added new force_p_newlines option, forces P elements on return/enter key in Mozilla/Firefox.

+	Added new theme_advanced_path_location, adds a element path list.

+	Added new theme_advanced_toolbar_align option, defaults to center.


+	Added new mceSelectNode and mceSelectNodeDepth commands.

+	Added new add_unload_trigger option, this adds a unload triggerSave call. Enabled by default.

+	Added am/pm time format to the insertdatetime plugin.

+	Fixed font color and size attribute bug, contributed by Vincent FIACK.

+	Fixed className undefined bug, Firefox/Mozilla produced a console error sometimes.

+	Fixed so mceSetCSSClass command may be applied to all sorts of elements.

+	Fixed so anchor elements can be removed by setting the anchor name to nothing.

+	Fixed typing performance some in Firefox/Mozilla, removed some nodechange triggers.

+	Fixed so the zoom plugin is invisible in MSIE 5.0, since zoom isn't available in that browser.

+	Fixed bug with the emotions plugin in MSIE 5.0, it was opening a new window.

+	Fixed so contents stay within the editor if the user hits the back/forward buttons.

+	Fixed bug where the window.name property was set to the image name.

+	Fixed so anchors links within the same page are made relative when relative_urls are set to false.

+	Updated the advanced theme so most of the images are loaded from a tiled image, improves loading time.

+	Updated the Swedish language pack, contributed by Martin.

+	Updated the readme.txt in the advlink plugin, was some problems with the valid_elements.

+	Updated the default CSS for the advanced theme some, added button backgrounds to look like office2k.

+Version 1.38 (2004-11-28)

+	Added new textarea field for form elements when debug mode is enabled, contributed by Michael Keck.

+	Added new spacer item support for the theme_advanced_buttons<n> options, contributed by Michael Keck.

+	Added new selection borders for images and hr elements, contributed by Michael Keck.

+	Added new advhr plugin, this plugin handles advanced settings on HR elements, contributed by Michael Keck.

+	Added new german language pack for the preview plugin, contributed by Michael Keck.

+	Added new word wrap and source formatting to the source editor, contributed by Michael Keck.

+	Added new updated charmap, contributed by Michael Keck.

+	Added new flash plugin that enabled flash movied to be handled, contributed by Michael Keck.

+	Added the old cut/copy/paste commands to the advanced theme, these are not visible by default.

+	Added new theme_advanced_buttons<N>_add_before option to advanced theme.

+	Added new "update" button title for a popup windows.

+	Added new zoom prefix language variable to the zoom plugin.

+	Added new entities option, that enables you to config entity code to name convertion.

+	Added new custom cleanup possibility to plugins.

+	Added new cleanup_callback option, adds the possibilty to add custom cleanup logic.

+	Added new Norwegian language pack, contributed by Sten Aksel Heien.

+	Added new Korean language pack, contributed by Setzer Gabbiani.

+	Fixed the layout of the color picker, contributed by Michael Keck.

+	Fixed so the preview plugin doesn't include the any toolsbars in preview popup window, contributed by Michael Keck.

+	Fixed bug where anchors elements was treated as links.

+	Fixed so all popup windows are modal dialogs in MSIE.

+	Fixed bug where the word "null" sometimes appares in HTML after cleanup in Firefox/Mozilla.

+	Fixed bug where form elements with missing name attributes produced errors.

+	Fixed some default value bugs and issues with the new advlink plugin.

+	Fixed the link/image dialog sizes in the SE language pack.

+	Fixed the content duplication bug, it seems to be fixed anyway, if not please let me know.

+	Fixed bug where plugin handleNodeChange extentions broke the theme function.

+Version 1.37 (2004-11-12)

+	Added new mceResetDesignMode command that can be used when the editor is placed in tabs.

+	Added new updated Italian language pack thanks goes to "Fabrix Xm" for the contribtion.

+	Added new greek language pack thanks goes to "Jacaranda Bill" for the contribution.

+	Added new french language pack thanks goes to "Pat Boens" for the contribution.

+	Added new russian language pack thanks goes to "Roman Filippov" for the contribution.

+	Added new updated Dutch language pack thanks goes to Arnoud van Delden and Ernst de Moor for the contribution.

+	Added new convert_newlines_to_brs option, that enables newlines to be converted to br elements.

+	Added new custom_undo_redo_keyboard_shortcuts option, enables keyboard shortcuts to be enabled/disabled.

+	Added new auto_reset_designmode option, thats resets the design mode when a editor instance is focused.

+	Added new form reset handler, resets the contents of TinyMCE areas when the onreset event is trigged.

+	Added new skip_cleanup parameter to triggerSave, this parameter is optional and defaults to false.

+	Added new lang_underline_img language variable to all themes.

+	Added new title attribute to all images, enables tooltips in Mozilla and Firefox.

+	Added new insert and cancel CSS id's for all submit and cancel buttons.

+	Added new full featured example that includes all available plugins and buttons.

+	Added new advlink and advimage plugins to TinyMCE, these are more advanced link and image tools. Contributed by Michael Keck.

+	Added new parameters to insertImage and insertLink commands. Contributed by Michael Keck.

+	Added updated compatiblity chart, includes a matrix table thanks goes to Ernst de Moor.

+	Added new insert image icon contributed by Arnoud van Delden and Ernst de Moor.

+	Added window focus on all popup windows, contributed by Arnoud van Delden and Ernst de Moor.

+	Fixed some issues with the char map added some characters and removed duplicate ones, contributed by Arnoud van Delden and Ernst de Moor.

+	Fixed the insert row icon, rotated it 180 degrees, contributed by Arnoud van Delden and Ernst de Moor.

+	Fixed the visual aid icon, made it a bit darker. Contributed by Arnoud van Delden and Ernst de Moor.

+	Fixed some issues with entity encoding in source editor aswell as in core cleanup code.

+	Fixed bug where the auto import CSS feature imported invalid CSS rules with : or spaces.

+	Fixed bug where unnecessary entity encoding of characters was done.

+	Fixed the window sizes some to better function on MSIE with SP2.

+	Fixed some issued with the auto word cleanup feature, fixes some issued with content duplication.

+	Fixed bug that made the editor to throw weird error when HTML code includes <!a or <!/a> content.

+	Fixed bug where the style attribute was returned on images in source output even if it was disabled.

+	Fixed issue where the UI form elements of TinyMCE was submitted with the form submit.

+Version 1.36 (2004-10-19)

+	Added a newly modified version of the German language pack from "krokogras".

+	Added auto resizing to popup windows with the same name.

+	Added example page for the plugin_preview_pageurl option in the preview plugin.

+	Fixed issue with link button auto enable/disable feature when content selection was made with the keyboard.

+	Fixed bug where events wasn't handled correctly in MSIE 5.5 and some 6.0 versions.

+	Fixed so align on images gets set as float style when the inline_styles option is enabled.

+	Fixed so solid border style isn't applied on elements with a border when the inline_styles option is enabled.

+	Fixed some issues with tables and the inline_styles option.

+	Fixed back button issue with MSIE, iframes was placed in browser history.

+Version 1.35 (2004-10-13)

+	Added so that whitespace gets stripped in plugin and theme_advanced_buttons options.

+	Added custom plugin_preview_pageurl option to preview plugin.

+	Added Canadian French language packs for the new plugins, contributed by Virtuelcom.

+	Added new theme_advanced_blockformats option.

+	Added new title support to advanced theme link dialog.

+	Added new Ctrl+B/I/U keyboard shortcuts for Firefox.

+	Added Polish language pack contributed by "revyag".

+	Added Taiwanese language pack contributed by "Jim Kou".

+	Added updated German language pack contributed by "Krokogras".

+	Fixed some issues with ieSpell including better language support.

+	Fixed bug with default value in valid_elements not working in Firefox some times.

+	Fixed bug when focusing links without selecting any characters.

+	Fixed some typos in Swedish language pack.

+	Fixed bug with content selection and link button auto enable/disable feature.

+	Fixed bug issue when "theme_advanced_buttons<N>" options where left empty.

+	Fixed various bugs with absolute URLs.

+Version 1.34 (2004-10-03)

+	Added new insertdatetime plugin, inserts date/time in various formats.

+	Added new preview plugin, previews the HTML page in a new window.

+	Added new zoom plugin, adds the possibility zoom the editor in MSIE.

+	Added new emotions plugin, adds the possibility to add smileys.

+	Fixed so that TinyMCE functions on MSIE 5.0 again.

+	Fixed so that TinyMCE functions better on Mozilla 1.3.

+	Fixed so that the cursor doesn't jump to the top when setting styles.

+	Fixed bug with STRONG and EM elements wasn't handled correctly in Firefox.

+	Optimized the key handling some, gives better typing performance.

+	Removed key down statusbar debug info.

+Version 1.33 (2004-09-29)

+	Removed the need of loading blank.html, iframes are now created dynamicly.

+	Fixed bug when selecting tables, MSIE was casting errors.

+	Fixed bug with pluginurl variable.

+	Fixed bug when tinyMCE.selectedElement error was cast in Mozilla.

+	Added new Arabic language pack contributed by Hani Suleiman.

+	Added "lang_dir" support to language packs like Arabic.

+Version 1.32 (2004-09-25)

+	Added new ieSpell plugin, only works in MSIE.

+	Added new "theme_advanced_buttons<N>_add" option.

+	Added new importPluginLanguagePack function.

+	Added new Danish language pack contributed by Jan Moelgaard.


+	Added new any_selection to handleNodeChange callback.

+	Modified so link/unlink is dimmed if nothing is selected.

+	Fixed bug when deleting images in Firefox.

+	Changed the plugin location to a new plugin directory.

+	Renamed the "theme_plugins" option to "plugins".

+Version 1.31 (2004-09-18)

+	Added Canadian French language pack, contributed by Virtuelcom.

+	Added so link/unlink buttons gets selected when user enters a link element.

+	Fixed URL bug when drag dropping/copy pasting images in Mozilla.

+	Fixed so mso style attribs don't get trimmed if auto_cleanup_word option is set to false.

+	Fixed bug with text alignment buttons.

+	Fixed bug with CSS auto import function in MSIE.

+	Fixed initialization bugs and issues.

+Version 1.30 (2004-09-10)

+	Fixed bug issue where the editor was stealing focus from location bar.

+	Fixed bug issue with absolute aligned images lost focus when using tools.

+	Fixed bug #1025483, Url converting broken.

+	Added ability to send command values in advanced theme button list, contributed by someone helpfull.

+	Added new cleanup_on_startup option, to increase startup speed.

+	Added new inline_styles partly based on a contribution by Victor Nilsson.

+	Added new named anchor support.

+	Added custom_undo_redo_levels option.

+Version 1.29 (2004-09-08)

+	Added new getEditorId function, to retrive the editor id of a form element.

+	Readded so cleanup is automaticly executed on editor startup in MSIE.

+	Added some various cleanup fixes for MS Word HTML.

+	Added new auto_cleanup_word option, enabled auto MS Word HTML cleanup on paste events.

+	Fixed parameter issue with insertImage function. Bug #1022863.

+	Fixed bug #1022874, Where the small theme had underline command on strikethrough button.

+	Fixed some bugs with table commands.

+	Fixed bug #1023204, mceRemoveControl brings back the old HTML.

+	Fixed bug issue with tinyMCE.selectedInstance in Mozilla.

+	Fixed bug issue with Mozilla not saving content.

+Version 1.28 (2004-09-04)

+	Added new Finnish language pack thanks to Urho Konttori.

+	Added new rowseparator as a possible value of the theme_advanced_buttons<n> options.

+	Added new theme_advanced_toolbar_location option.

+	Added new uid variable option to valid_elements. (Generates unique IDs)

+	Added new "directionality" option to support languages like Arabic.

+	Added new character map button/window.

+	Added new guidelines/visual aid toggle button.

+	Reduced the source of the advanced theme some, and added some better comments.

+	Separated the default theme in to files aswell.

+	Removed source area size options and made source editor resizable instead.

+	Increased the default width and height of the source editor.

+	Fixed bug where image width/height default to 0x0 if these attributes wasn't defined.

+	Fixed some bug issues with MSIE 5.5.

+Version 1.27 (2004-08-29)

+	Added new cleanup logic, with new options and smarter behavior.

+	Added new "trim_span_elements" option (removed unneeded span elements).

+	Added new "verify_css_classes" option (verifies so class attributes contain a valid class).

+	Added new "verify_html" option (enables/disabled verification of elements and attributes).

+	Added new value verification type to "valid_elements" option.

+	Added new simple wildcard support in "valid_elements" option.

+	Added class as a valid attribute to table elements by default.

+	Added so non existent classes gets removed HTML output.

+	Added fix for &nbsp; entities, so they get converted correctly.

+	Added new class select box in table dialog.

+	Added hr as a default valid element.

+	Fixed some issues with the language packs.

+	Fixed some weird bugs and issues with hr elements.

+	Fixed bug where Mozilla was casting exceptions on keypress.

+Version 1.26 (2004-08-25)

+	Added a better way to create theme popup windows (External files).

+	Added new getWindowArg function, returns window arguments in theme popups.

+	Modified the advanced theme to adopt the new theme popup idea.

+	Fixed critical Mozilla bug, where the editor didn't work at all some times.

+	Fixed bug with auto CSS class import feature running on Firefox.

+Version 1.25 (2004-08-22)

+	Added new format select box in advanced theme (Can be disabled).

+	Added new "theme_advanced_disable" option to advanced theme.

+	Added some new elements to default list of valid elements (Format select box elements).

+	Added new font face, forecolor and font size support, these are not enabled by default.

+	Added new "mceAddControl" command, enables users to dynamicly add editors.

+	Added new execInstanceCommand function, check the documentation for details.

+	Added new "mceSetAttribute" command.

+	Modified the themes so that the focus alert doesn't popup as often as before.

+	Modified the "mceRemoveControl" command so it can handle element id aswell as editor ids.

+	Fixed some bugs and issues with the new custom undo/redo logic.

+	Fixed weird Mozilla bug #997860.

+Version 1.24 (2004-08-17)

+	Modified so that span with CSS classes that don't exists get removed.

+	Added new "custom_undo_redo" option, this option is enabled by default.

+	Added new "fix_content_duplication" option, that fixes some MSIE content duplication issues.

+	Added new "mceFocus" command, that changes focus to the specified editor instance.

+	Added new "mceReplaceContent" command, that enables users to replace the current selection.

+	Fixed so styles including spaces doesn't get listed in style selection box.

+	Fixed bug with form element names and exact mode in Mozilla.

+	Fixed so tiny_mce_src.js can be used aswell as tiny_mce.js.

+	Converted some of the language packs to better support unicode.

+Version 1.23 (2004-07-31)

+	Modified the mceSetCSSClass command to address bug #997071.

+	Added new Hungarian language pack thanks to 2XP.

+	Added new callback "setupcontent_callback" check the manual for details.

+	Fixed bug #994506, where empty theme_plugins option generated a 404 error.

+	Fixed bug #999332, where image properties wasn't removed if the user deleted the image.

+Version 1.22 (2004-07-19)

+	Fixed bug #989846, Image resize bug.

+	Changed so that style attribute values get converted to lowercase in MSIE.

+	Changed so the alignment called "middle" is "center" in table properties.

+	Fixed so visual aids work correctly after using the source editor.

+	Fixed some issues with anchor links.

+	Fixed so that javascript: links can be used.

+	Added width/height options for the advanced source editor.

+	Fixed bug issue with URL:s containing quotes or single quotes.

+	Fixed so that document_base_url can point to another domain.

+Version 1.21 (2004-07-12)

+	Added new "theme_plugins" option, check the manuals for details.

+	Added new "execCommand" plugin extention possibility.

+	Added new "buttons<n>" config options to the advanced theme.

+	Added new "mceRemoveControl" command.

+	Added Spanish language pack thanks to "Alvaro Velasco".

+	Fixed first click bug.

+	Fixed so CSS url:s can be absolute.

+	Updated the FAQ regarding the Cut/Copy/Paste issue.

+Version 1.20 (2004-07-05)

+	Fixed bug issue #983257, JS runtime error when template contains no controls.

+	Removed cut/copy/paste commands and icons due to security reasons in Mozilla.


+	Fixed minor bug regarding empty attributes.

+	Fixed so the "extended_valid_elements" overrides previous declarations.

+Version 1.19 (2004-06-28)

+	Fixed focus bug that appared on Linux version of Mozilla.

+	Fixed major bug issues with some Firefox/Firebird versions on Linux.

+	Fixed minor visual aid bugs on tables.

+	Fixed minor bugs with table commands.

+	Fixed scroll issue in HTML source windows on Mozilla/Linux.

+	Added a compatiblity chart to the manuals.

+Version 1.18 (2004-06-20)

+	Added new option "remove_script_host".

+	Some minor fixes to the mceInsertContent command.

+	Fixed some issues with visual aids for tables.

+	Fixed strange focus bug in MSIE.

+	Updated some of the documentation.

+Version 1.17 (2004-06-16)

+	Fixed bug, #972666 - Doesn't save edits when id != name.

+	Added more Italian, user manuals. Thanks goes to "Fabrix Xm".

+	Added Dutch language pack thanks to "Meint Post".

+	Modified the MSIE version of mceInsertContent command.

+Version 1.16 (2004-06-14)

+	Added new table dialog and TinyMCE_<theme>_getInsertTableTemplate template function.

+	Added auto class import feature and Italian language pack thanks goes to "Lorenzo Pavani".

+	Added border, alignment, vspace, hspace, width, height fields to the image properties dialog in advanced theme.

+	Updates advanced theme help pages for Swedish and English.

+	Fixed some minor issues with the mceSetCSSClass command.

+	Fixed minor MSIE bug in built in default URL convertor.

+	Fixed some image alignment issues.

+	Fixed support for site root script paths like src="/jscripts/tiny_mce.js".

+	Removed the use of "TinyMCE_advanced_cssClasses" from "advanced" theme.

+	Modified the default value of "valid_elements" to include table align and class as valid attributes.

+	Modified the default value of "valid_elements" to set img border attribute to 0 by default instead of by force.

+	Modified so that popup windows gets centered on screen.

+Version 1.15 (2004-06-09)

+	Added new "advanced" theme, that adds some new functions.

+	Added new public js functions "getContent, setContent, applyTemplate, openWindow".

+	Added new custom command "mceSetCSSClass", that sets css class of the selection.

+	Added new custom command "mceInsertContent", that inserts HTML content.

+	Added class attributes to some of the elements in the default value of "valid_elements".

+	Added ability to have theme specific language packs by the js function "importThemeLanguagePack".

+	Added more documentation to the usage and themes sections.

+	Added table support, with custom commands and in advanced theme.

+	Modified the advanced example to include the new advanced theme.

+	Fixed tooltips for buttons in Mozilla.

+Version 1.14 (2004-06-07)

+	Added new conversion possibility to save callback.

+	Added some more usage documentation.

+	Fixed some issues will updateContent function in Mozilla.

+	Fixed some issues with relative paths.

+	Fixed small Mozilla issue with visual aids.

+	Fixed so that the default theme sets image border to 0.

+	Fixed bug #968079, Removing editor buttons in template can cause errors.

+Version 1.13 (2004-06-04)

+	Fixed critical bug where the editor didn't work at all in MSIE.

+	Fixed bug where table visual aids didn't work in Mozilla.

+Version 1.12 (2004-06-03)


+	Added documentation of the diffrent public javascript functions of tinyMCE.

+	Fixed bug #965615, Empty editor content returns "<br />" as value after cleanup.

+	Fixed bug where Bold and Italic didn't work correctly in Mozilla.

+Version 1.11 (2004-06-01)

+	Added new option "document_base_url", it's used when converting absolute URLs to relative ones.

+	Added so that align button sets the align attribute of selected images.

+	Fixed bug when / was passed within query string to the editors page.

+	Fixed bug #961041, Image attributes are not removed.

+Version 1.1 (2004-05-26)

+	Fixed bug #960112 JavaScript error when opening image window.

+	Fixed bug #926644 Multiple forms with elements having the same name failed.

+	Added function so that "specific_textareas" mode handles the "ask" option.

+	Added new option "focus_alert", to remove annoying focus alert message.

+Version 1.09 (2004-05-24)

+	Added new option "extended_valid_elements", this option adds extra elements to the "valid_elements" list.

+	Fixed bug #958637, Resized images are displayed in original size

+	Fixed bug #958942, Bug on realitive_urls (Bug with absolute URLs to insertlink_callback, insertimage_callback callbacks)

+	Fixed bug #958498, Unable to change Bold and italic text in Mozilla. 

+Version 1.08 (2004-05-21)

+	Added new attributes "border, hspace, vspace, width, height, align" to the getInsertImageTemplate theme function.

+	Added new relative_urls option, this new feature converts all absolute URLs to relative URLs and it's on by default.

+	Fixed bug #956007, the CSS theme URL:s was allways pointing to the default theme.

+	Fixed bug where enter/return key produced a error in the insert link popup window form. (This was done in the default template)

+	Fixed bug #957681, Could not delete text without first adding character bug in Mozilla.

+Version 1.07 (2004-05-10)

+	Added experimental support for option "force_br_newlines" to address bug #922416 and feature request #936270.

+	Fixed bug with mailto: links.

+Version 1.06 (2004-04-15) 

+	Added new German language pack. Thanks goes to "Simon Rupf" for the contribution.

+	Added new German/Swedish bold/italic language specific icons to both default and simple theme.

+	Added new Swedish documentation. 

+Version 1.05 (2004-04-02) 

+	Added new Italian language pack and documentation. Thanks goes to "Fabrix Xm" for the contribution.

+	Fixed missing "lang_help_desc" definition in UK and SE langpacks.

+	Added better documentation for the "valid_elements" option and it's format.

+	Added new "preformatted" option to address feature request #927948.

+	Added browser checker so that the script don't break on non compatible browsers.

+	Fixed bug #926639, now the editor instance gets resized if a width/height is specified in %.

+	Added new simple theme, this theme has only basic functions. 

+Version 1.04 (2004-03-30) 

+	Fixed bug when insertLink and insertImage function didn't use the url_convertor callback.

+	Fixed MSIE bug when images was 32x32 on initialization on slow connections.

+	Fixed bug that made request on images with wrong path, produced some 404 error in webserver logs.

+	Fixed MSIE bug where users could add images outside of the editor scope. 

+Version 1.03 (2004-03-26) 

+	Added new "add_form_submit_trigger" this option is default and is added on all document forms within the page. To address bug #923362

+	Moved javascript sourcecode file to "jscripts/tiny_mce/tiny_mce_src.js".

+	Added new obfuscated version of tinymce to reduce size of script.

+	Added some performance boosting code to the switchClassSticky function.

+	Removed the "autosave" option, this is no longer needed and is replaced with "add_form_submit_trigger" or triggerSave call.

+	Fixed undo bug in MSIE.

+	Removed some unused eventhandlers results in better performance. 

+Version 1.02 (2004-03-26) 

+	Added new handleNodeChange callback to themes.

+	Fixed some bugs regarding events and themes function checks.

+	Fixed bug issue when user focused nodes with keyboard. 

+Version 1.01 (2004-03-12) 

+	Added some more documentation.

+	Added new "visual" option to editor.

+	Fixed bug on empty P elements.

+	Fixed bug on table width/height. 

+Version 1.0 (2004-03-11) 

+	Added new "debug" option and fixed some path issues.  

 

--- a/tinymce/2/jscripts/tiny_mce/blank.htm
+++ b/tinymce/2/jscripts/tiny_mce/blank.htm
@@ -1,10 +1,10 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>blank_page</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-</head>
-<body class="mceContentBody">
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>blank_page</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

+</head>

+<body class="mceContentBody">

+

+</body>

+</html>

 
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/changelog.txt
+++ /dev/null
@@ -1,15 +1,1 @@
-Version 2.0.1 (2008-03-12)
-	Fixed bug where Firefox 3 wasn't loading the contents correctly.
-Version 2.0 (2008-01-30)
-	Final version of the 2.x branch released.
-Version 2.0rc1 (2008-01-14)
-	Moved package from beta to release candidate.
-Version 2.0b2 (2007-11-21)
-	Fixed typo of que to queue so it compatible with TinyMCE 3.0b1.
-Version 2.0b1 (2007-11-15)
-	Fixed bug with IE6 casting an error on async property.
-Version 2.0a2 (2007-11-xx)
-	Fixed bug where on demand loading didn't work correctly in IE and Safari.
-Version 2.0a1 (2007-11-01)
-	Rewritten compressor for TinyMCE 3.x has on demand and progressive loading features.
 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Array.class.js
@@ -1,1 +1,54 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * The contents of this file will be wrapped in a class later on.

+ */

+

+/**#@+

+ * @member TinyMCE_Engine

+ * @method

+ */

+tinyMCE.add(TinyMCE_Engine, {

+	/**

+	 * 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 setting any

+	 * named properties to null.

+	 *

+	 * @param {Array} Name/Value array to clear.

+	 * @return Cleared name/value array.

+	 * @type Array

+	 */

+	clearArray : function(a) {

+		var n;

+

+		for (n in a)

+			a[n] = null;

+

+		return a;

+	},

+

+	/**

+	 * Splits a string by the specified delimiter and skips any empty items.

+	 *

+	 * @param {string} d Delimiter to split by.

+	 * @param {string} s String to split.

+	 * @return Array with chunks from string.

+	 * @type Array

+	 */

+	explode : function(d, s) {

+		var ar = s.split(d), oar = [], i;

+

+		for (i = 0; i<ar.length; i++) {

+			if (ar[i] !== '')

+				oar[oar.length] = ar[i];

+		}

+

+		return oar;

+	}

+});

+

+/**#@-*/

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js
@@ -1,1 +1,1480 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * Some of the contents of this file will be wrapped in a class later on it will also be replaced with the new cleanup logic.

+ */

+

+/**#@+

+ * @member TinyMCE_Engine

+ * @method

+ */

+

+tinyMCE.add(TinyMCE_Engine, {

+	/**

+	 * 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.

+	 *

+	 * @param {string} s HTML string to cleanup.

+	 * @return Cleaned HTML string.

+	 * @type string

+	 */

+	cleanupHTMLCode : function(s) {

+		s = s.replace(new RegExp('<p \\/>', 'gi'), '<p>&nbsp;</p>');

+		s = s.replace(new RegExp('<p>\\s*<\\/p>', 'gi'), '<p>&nbsp;</p>');

+

+		// Fix close BR elements

+		s = s.replace(new RegExp('<br>\\s*<\\/br>', 'gi'), '<br />');

+

+		// Open closed tags like <b/> to <b></b>

+		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>');

+

+		// Remove trailing space <b > to <b>

+		s = s.replace(new RegExp('\\s+></', 'gi'), '></');

+

+		// Close tags <img></img> to <img/>

+		s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>', 'gi'), '<$1$2 />');

+

+		// Weird MSIE bug, <p><hr /></p> breaks runtime?

+		if (tinyMCE.isIE)

+			s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'), "<hr>");

+

+		// Weird tags will make IE error #bug: 1538495

+		if (tinyMCE.isIE)

+			s = s.replace(/<!(\s*)\/>/g, '');

+

+		// Convert relative anchors to absolute URLs ex: #something to file.htm#something

+		// Removed: Since local document anchors should never be forced absolute example edit.php?id=something

+		//if (tinyMCE.getParam('convert_urls'))

+		//	s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings.document_base_url + "#");

+

+		return s;

+	},

+

+	/**

+	 * Parses the specified HTML style data. This will parse for example

+	 * "border-left: 1px; background-color: red" into an key/value array.

+	 *

+	 * @param {string} str Style data to parse.

+	 * @return Name/Value array of style items.

+	 * @type Array

+	 */

+	parseStyle : function(str) {

+		var ar = [], st, i, re, pa;

+

+		if (str == null)

+			return ar;

+

+		st = str.split(';');

+

+		tinyMCE.clearArray(ar);

+

+		for (i=0; i<st.length; i++) {

+			if (st[i] == '')

+				continue;

+

+			re = new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');

+			pa = st[i].replace(re, '$1||$2').split('||');

+	//tinyMCE.debug(str, pa[0] + "=" + pa[1], st[i].replace(re, '$1||$2'));

+			if (pa.length == 2)

+				ar[pa[0].toLowerCase()] = pa[1];

+		}

+

+		return ar;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {Array} ar Style name/value array with items.

+	 * @param {string} pr Style item prefix to bundle for example border.

+	 * @param {string} sf Style item suffix to bunlde for example -width or -width.

+	 * @param {string} res Result name, for example border-width.

+	 */

+	compressStyle : function(ar, pr, sf, res) {

+		var box = [], i, a;

+

+		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 (i=0; i<box.length; i++) {

+			if (box[i] == null)

+				return;

+

+			if (i && box[i] != box[i-1])

+				return;

+		}

+

+		// They are all the same

+		ar[res] = box[0];

+		ar[pr + '-top' + sf] = null;

+		ar[pr + '-left' + sf] = null;

+		ar[pr + '-right' + sf] = null;

+		ar[pr + '-bottom' + sf] = null;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {Array} ar Name/Value array of items to serialize.

+	 * @return Serialized HTML string containing the items.

+	 * @type string

+	 */

+	serializeStyle : function(ar) {

+		var str = "", key, val, m;

+

+		// Compress box

+		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 (key in ar) {

+			val = ar[key];

+

+			if (typeof(val) == 'function')

+				continue;

+

+			if (key.indexOf('mso-') == 0)

+				continue;

+

+			if (val != null && val !== '') {

+				val = '' + val; // Force string

+

+				// Fix style URL

+				val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)", 'gi'), "url('$1')");

+

+				// Convert URL

+				if (val.indexOf('url(') != -1 && tinyMCE.getParam('convert_urls')) {

+					m = new RegExp("url\\('(.*?)'\\)").exec(val);

+

+					if (m.length > 1)

+						val = "url('" + eval(tinyMCE.getParam('urlconverter_callback') + "(m[1], null, true);") + "')";

+				}

+

+				// Force HEX colors

+				if (tinyMCE.getParam("force_hex_style_colors"))

+					val = tinyMCE.convertRGBToHex(val, true);

+

+				val = val.replace(/\"/g, '\'');

+

+				if (val != "url('')")

+					str += key.toLowerCase() + ": " + val + "; ";

+			}

+		}

+

+		if (new RegExp('; $').test(str))

+			str = str.substring(0, str.length - 2);

+

+		return str;

+	},

+

+	/**

+	 * Returns a hexadecimal version of the specified rgb(1,2,3) string.

+	 *

+	 * @param {string} s RGB string to parse, if this doesn't isn't a rgb(n,n,n) it will passthrough the string.

+	 * @param {boolean} k Keep before/after contents. If enabled contents before after the rgb(n,n,n) will be intact.

+	 * @return Hexadecimal version of the specified rgb(1,2,3) string.

+	 * @type string

+	 */

+	convertRGBToHex : function(s, k) {

+		var re, rgb;

+

+		if (s.toLowerCase().indexOf('rgb') != -1) {

+			re = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");

+			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;

+	},

+

+	/**

+	 * Returns a rgb(n,n,n) string from a hexadecimal value.

+	 *

+	 * @param {string} s Hexadecimal string to parse.

+	 * @return rgb(n,n,n) string from a hexadecimal value.

+	 * @type string

+	 */

+	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;

+	},

+

+	/**

+	 * Converts span elements to font elements in the specified document instance.

+	 * Todo: Move this function into a XHTML plugin or simmilar.

+	 *

+	 * @param {DOMDocument} doc Document instance to convert spans in.

+	 */

+	convertSpansToFonts : function(doc) {

+		var s, i, size, fSize, x, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');

+

+		s = tinyMCE.selectElements(doc, 'span,font');

+		for (i=0; i<s.length; i++) {

+			size = tinyMCE.trim(s[i].style.fontSize).toLowerCase();

+			fSize = 0;

+

+			for (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 = '';

+			}

+

+			fFace = s[i].style.fontFamily;

+			if (fFace != null && fFace !== '') {

+				tinyMCE.setAttrib(s[i], 'face', fFace);

+				s[i].style.fontFamily = '';

+			}

+

+			fColor = s[i].style.color;

+			if (fColor != null && fColor !== '') {

+				tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor));

+				s[i].style.color = '';

+			}

+		}

+	},

+

+	/**

+	 * Convers fonts to spans in the specified document.

+	 * Todo: Move this function into a XHTML plugin or simmilar.

+	 *

+	 * @param {DOMDocument} doc Document instance to convert fonts in.

+	 */

+	convertFontsToSpans : function(doc) {

+		var fsClasses, s, i, fSize, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');

+

+		fsClasses = tinyMCE.getParam('font_size_classes');

+		if (fsClasses !== '')

+			fsClasses = fsClasses.replace(/\s+/, '').split(',');

+		else

+			fsClasses = null;

+

+		s = tinyMCE.selectElements(doc, 'span,font');

+		for (i=0; i<s.length; i++) {

+			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');

+			}

+		}

+	},

+

+	/**

+	 * Moves the contents of a anchor outside and after the anchor. Only if the anchor doesn't

+	 * have a href.

+	 *

+	 * @param {DOMDocument} doc DOM document instance to fix anchors in.

+	 */

+	cleanupAnchors : function(doc) {

+		var i, cn, x, an = doc.getElementsByTagName("a");

+

+		// Loops backwards due to bug #1467987

+		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]);

+			}

+		}

+	},

+

+	/**

+	 * Returns the HTML contents of the specified editor instance id.

+	 *

+	 * @param {string} editor_id Editor instance id to retrive HTML code from.

+	 * @return HTML contents of editor id or null if it wasn't found.

+	 * @type string

+	 */

+	getContent : function(editor_id) {

+		if (typeof(editor_id) != "undefined")

+			 tinyMCE.getInstanceById(editor_id).select();

+

+		if (tinyMCE.selectedInstance)

+			return tinyMCE.selectedInstance.getHTML();

+

+		return null;

+	},

+

+	/**

+	 * Fixes invalid ul/ol elements so the document is more XHTML valid.

+	 *

+	 * @param {DOMDocument} d HTML DOM document to fix list elements in.

+	 * @private

+	 */

+	_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 = '&nbsp;';

+						np.appendChild(n);

+						p.insertBefore(np, p.firstChild);

+					} else

+						np.appendChild(n);

+				}

+			}

+		}

+	},

+

+	/**

+	 * Moves table elements out of block elements to produce more valid XHTML.

+	 *

+	 * @param {DOMDocument} d HTML DOM document to fix list elements in.

+	 * @private

+	 */

+	_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,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);

+			}

+		}

+	},

+

+	/**

+	 * Performces cleanup of the contents of the specified instance.

+	 * Todo: Finish documentation, and remove useless parameters.

+	 *

+	 * @param {TinyMCE_Control} inst Editor instance.

+	 * @param {DOMDocument} doc ...

+	 * @param {Array} config ...

+	 * @param {HTMLElement} elm ...

+	 * @param {boolean} visual ...

+	 * @param {boolean} on_save ...

+	 * @param {boolean} on_submit ...

+	 * @param {boolean} inn inner html.

+	 * @return Cleaned HTML contents of editor instance.

+	 * @type string

+	 * @private

+	 */

+	_cleanupHTML : function(inst, doc, config, elm, visual, on_save, on_submit, inn) {

+		var h, d, t1, t2, t3, t4, t5, c, s, nb;

+

+		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();

+

+		inst._fixRootBlocks();

+

+		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);

+

+		// Call custom cleanup code

+		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++; // Unique ID needed for the content duplication bug

+		c.serializedNodes = [];

+		c.sourceIndex = -1;

+

+		if (s.cleanup_serializer == "xml")

+			h = c.serializeNodeAsXML(elm, inn);

+		else

+			h = c.serializeNodeAsHTML(elm, inn);

+

+		if (d)

+			t3 = new Date().getTime();

+

+		// Post processing

+		nb = tinyMCE.getParam('entity_encoding') == 'numeric' ? '&#160;' : '&nbsp;';

+		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>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g, '<hr />');

+		h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb + '</td>');

+		h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko

+		h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P tags for Gecko

+		h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'), '$1');

+		h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb + '</p>');

+

+		// Clean body

+		if (/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))

+			h = '';

+

+		// If preformatted

+		if (s.preformatted) {

+			h = h.replace(/^<pre>/, '');

+			h = h.replace(/<\/pre>$/, '');

+			h = '<pre>' + h + '</pre>';

+		}

+

+		// Gecko specific processing

+		if (tinyMCE.isGecko) {

+			// Makes no sence but FF generates it!!

+			h = h.replace(/<br \/>\s*<\/li>/g, '</li>');

+			h = h.replace(/&nbsp;\s*<\/(dd|dt)>/g, '</$1>');

+			h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');

+			h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1>' + nb + '</td>');

+		}

+

+		if (s.force_br_newlines)

+			h = h.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<br />');

+

+		// Call custom cleanup code

+		h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", h);

+

+		// Remove internal classes

+		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 encoding (not recommended option)

+		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;

+	}

+});

+

+/**#@-*/

+

+/**

+ * TinyMCE_Cleanup class.

+ *

+ * @constructor

+ */

+function TinyMCE_Cleanup() {

+	this.isIE = (navigator.appName == "Microsoft Internet Explorer");

+	this.rules = tinyMCE.clearArray([]);

+

+	// Default config

+	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([]);

+	this.vElementsRe = '';

+	this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;

+	this.codeElementsRe = /^(SCRIPT|STYLE)$/;

+	this.serializationId = 0;

+	this.mceAttribs = {

+		href : 'mce_href',

+		src : 'mce_src',

+		type : 'mce_type'

+	};

+}

+

+/**#@+

+ * @member TinyMCE_Cleanup

+ */

+TinyMCE_Cleanup.prototype = {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Initializes the cleanup engine with the specified config.

+	 *

+	 * @param {Array} s Name/Value array with config settings.

+	 */

+	init : function(s) {

+		var n, a, i, ir, or, st;

+

+		for (n in s)

+			this.settings[n] = s[n];

+

+		// Setup code formating

+		s = this.settings;

+

+		// Setup regexps

+		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', '<(\\/?)(', ')([^>]*)>');

+		this.serializedNodes = [];

+		this.serializationId = 0;

+

+		if (s.invalid_elements !== '')

+			this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','), 'g', '^(', ')$');

+		else

+			this.iveRe = null;

+

+		// Setup separator

+		st = '';

+		for (i=0; i<s.indent_levels; i++)

+			st += s.indent_char;

+

+		this.inStr = st;

+

+		// If verify_html if false force *[*]

+		if (!s.verify_html) {

+			s.valid_elements = '*[*]';

+			s.extended_valid_elements = '';

+		}

+

+		this.fillStr = s.entity_encoding == "named" ? "&nbsp;" : "&#160;";

+		this.idCount = 0;

+		this.xmlEncodeRe = new RegExp('[\u007F-\uFFFF<>&"]', 'g');

+	},

+

+	/**

+	 * Adds a cleanup rule string, for 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.

+	 *

+	 * @param {string} s Rule string to parse and add to the cleanup rules array.

+	 */

+	addRuleStr : function(s) {

+		var r = this.parseRuleStr(s), n;

+

+		for (n in r) {

+			if (r[n])

+				this.rules[n] = r[n];

+		}

+

+		this.vElements = tinyMCE.clearArray([]);

+

+		for (n in this.rules) {

+			if (this.rules[n])

+				this.vElements[this.vElements.length] = this.rules[n].tag;

+		}

+

+		this.vElementsRe = this._arrayToRe(this.vElements, '');

+	},

+

+	/**

+	 * Returns true/false if the element name if valid or not against the cleanup rules.

+	 *

+	 * @param {string} n Node name to validate.

+	 * @return {bool} True/false if the name is valid or not.

+	 */

+	isValid : function(n) {

+		if (!this.rulesDone)

+			this._setupRules(); // Will initialize cleanup rules

+

+		// Empty is true since it removes formatting

+		if (!n)

+			return true;

+

+		// Clean the name up a bit

+		n = n.replace(/[^a-z0-9]+/gi, '').toUpperCase();

+

+		return !tinyMCE.getParam('cleanup') || this.vElementsRe.test(n);

+	},

+

+	/**

+	 *

+	 * format: h1/h2/h3/h4/h5/h6[%inline_trans_no_a],table[thead|tbody|tfoot|tr|td],body[%btrans]=>p

+	 */

+	addChildRemoveRuleStr : function(s) {

+		var x, y, p, i, t, tn, ta, cl, r;

+

+		if (!s)

+			return;

+

+		ta = s.split(',');

+		for (x=0; x<ta.length; x++) {

+			s = ta[x];

+

+			// Split tag/children

+			p = this.split(/\[|\]/, s);

+			if (p == null || p.length < 1)

+				t = s.toUpperCase();

+			else

+				t = p[0].toUpperCase();

+

+			// Handle all tag names

+			tn = this.split('/', t);

+			for (y=0; y<tn.length; y++) {

+				r = "^(";

+

+				// Build regex

+				cl = this.split(/\|/, p[1]);

+				for (i=0; i<cl.length; i++) {

+					if (cl[i] == '%istrict')

+						r += tinyMCE.inlineStrict;

+					else if (cl[i] == '%itrans')

+						r += tinyMCE.inlineTransitional;

+					else if (cl[i] == '%istrict_na')

+						r += tinyMCE.inlineStrict.substring(2);

+					else if (cl[i] == '%itrans_na')

+						r += tinyMCE.inlineTransitional.substring(2);

+					else if (cl[i] == '%btrans')

+						r += tinyMCE.blockElms;

+					else if (cl[i] == '%strict')

+						r += tinyMCE.blockStrict;

+					else

+						r += (cl[i].charAt(0) != '#' ? cl[i].toUpperCase() : cl[i]);

+

+					r += (i != cl.length - 1 ? '|' : '');

+				}

+

+				r += ')$';

+

+				if (this.childRules == null)

+					this.childRules = tinyMCE.clearArray([]);

+

+				this.childRules[tn[y]] = new RegExp(r);

+

+				if (p.length > 1)

+					this.childRules[tn[y]].wrapTag = p[2];

+			}

+		}

+	},

+

+	/**

+	 * Parses a cleanup rule string, for 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.

+	 *

+	 * @param {string} s Rule string to parse as a name/value rule array.

+	 * @return Parsed name/value rule array.

+	 * @type Array

+	 */

+	parseRuleStr : function(s) {

+		var ta, p, r, a, i, x, px, t, tn, y, av, or = tinyMCE.clearArray([]), 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;

+

+			// Split tag/attrs

+			p = this.split(/\[|\]/, s);

+			if (p == null || p.length < 1)

+				t = s.toUpperCase();

+			else

+				t = p[0].toUpperCase();

+

+			// Handle all tag names

+			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;

+

+				// Handle prefixes

+				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 + '$'));

+

+				// Setup valid attributes

+				if (p.length > 1) {

+					r.vAttribsRe = '^(';

+					a = this.split(/\|/, p[1]);

+

+					for (i=0; i<a.length; i++) {

+						t = a[i];

+

+						if (t.charAt(0) == '!') {

+							a[i] = t = t.substring(1);

+

+							if (!r.reqAttribsRe)

+								r.reqAttribsRe = '\\s+(' + t;

+							else

+								r.reqAttribsRe += '|' + t;

+						}

+

+						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([]);

+

+								r.forceAttribs[t.toLowerCase()] = av[0].substring(1);

+							} else if (av[0].charAt(0) == '=') {

+								if (!r.defaultAttribs)

+									r.defaultAttribs = tinyMCE.clearArray([]);

+

+								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([]);

+

+								r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?', av[0].substring(1)), 'i');

+							}

+						}

+

+						r.vAttribsRe += '' + t.toLowerCase() + (i != a.length - 1 ? '|' : '');

+

+						a[i] = t.toLowerCase();

+					}

+

+					if (r.reqAttribsRe)

+						r.reqAttribsRe = new RegExp(r.reqAttribsRe + ')=\"', 'g');

+

+					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();

+

+					//tinyMCE.debug(r.tag, r.oTagName, r.vAttribsRe, r.vAttribsReWC);

+				} else {

+					r.vAttribsRe = '';

+					r.vAttribs = tinyMCE.clearArray([]);

+					r.vAttribsReIsWild = false;

+				}

+

+				or[r.tag] = r;

+			}

+		}

+

+		return or;

+	},

+

+	/**

+	 * Serializes the specified node as a HTML string. This uses the XML parser and serializer

+	 * to generate a XHTML string.

+	 *

+	 * @param {HTMLNode} n Node to serialize as a XHTML string.

+	 * @return Serialized XHTML string based on specified node.

+	 * @type string

+	 */

+	serializeNodeAsXML : function(n) {

+		var s, b;

+

+		if (!this.xmlDoc) {

+			if (this.isIE) {

+				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.isIE)

+			return this.xmlDoc.xml;

+		else

+			return new XMLSerializer().serializeToString(this.xmlDoc);

+	},

+

+	/**

+	 * Converts and adds the specified HTML DOM node to a XML DOM node.

+	 *

+	 * @param {HTMLNode} n HTML Node to add as a XML node.

+	 * @param {XMLNode} xn XML Node to add the HTML node to.

+	 * @private

+	 */

+	_convertToXML : function(n, xn) {

+		var xd, el, i, l, cn, at, no, hc = false;

+

+		if (tinyMCE.isRealIE && this._isDuplicate(n))

+			return;

+

+		xd = this.xmlDoc;

+

+		switch (n.nodeType) {

+			case 1: // Element

+				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: // Text

+				xn.appendChild(xd.createTextNode(n.nodeValue));

+				return;

+

+			case 8: // Comment

+				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);

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {HTMLNode} n Node to serialize as a XHTML string.

+	 * @param {bool} inn Optional inner HTML mode. Will only output child nodes and not the parent.

+	 * @return Serialized XHTML string based on specified node.

+	 * @type string

+	 */

+	serializeNodeAsHTML : function(n, inn) {

+		var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr, nn;

+

+		if (!this.rulesDone)

+			this._setupRules(); // Will initialize cleanup rules

+

+		if (tinyMCE.isRealIE && this._isDuplicate(n))

+			return '';

+

+		// Skip non valid child elements

+		if (n.parentNode && this.childRules != null) {

+			cr = this.childRules[n.parentNode.nodeName];

+

+			if (typeof(cr) != "undefined" && !cr.test(n.nodeName)) {

+				st = true;

+				t = null;

+			}

+		}

+

+		switch (n.nodeType) {

+			case 1: // Element

+				hc = n.hasChildNodes();

+

+				if (st)

+					break;

+

+				nn = n.nodeName;

+

+				if (tinyMCE.isRealIE) {

+					// MSIE sometimes produces <//tag>

+					if (n.nodeName.indexOf('/') != -1)

+						break;

+

+					// MSIE has it's NS in a separate attrib

+					if (n.scopeName && n.scopeName != 'HTML')

+						nn = n.scopeName.toUpperCase() + ':' + nn.toUpperCase();

+				} else if (tinyMCE.isOpera && nn.indexOf(':') > 0)

+					nn = nn.toUpperCase();

+

+				// Convert fonts to spans

+				if (this.settings.convert_fonts_to_spans) {

+					// On get content FONT -> SPAN

+					if (this.settings.on_save && nn == 'FONT')

+						nn = 'SPAN';

+

+					// On insert content SPAN -> FONT

+					if (!this.settings.on_save && nn == 'SPAN')

+						nn = 'FONT';

+				}

+

+				if (this.vElementsRe.test(nn) && (!this.iveRe || !this.iveRe.test(nn)) && !inn) {

+					va = true;

+

+					r = this.rules[nn];

+					if (!r) {

+						at = this.rules;

+						for (no in at) {

+							if (at[no] && at[no].validRe.test(nn)) {

+								r = at[no];

+								break;

+							}

+						}

+					}

+

+					en = r.isWild ? nn.toLowerCase() : r.oTagName;

+					f = r.fill;

+

+					if (r.removeEmpty && !hc)

+						return "";

+

+					t = '<' + en;

+

+					if (r.vAttribsReIsWild) {

+						// Serialize wildcard attributes

+						at = n.attributes;

+						for (i=at.length-1; i>-1; i--) {

+							no = at[i];

+							if (no.specified && r.vAttribsRe.test(no.nodeName))

+								t += this._serializeAttribute(n, r, no.nodeName);

+						}

+					} else {

+						// Serialize specific attributes

+						for (i=r.vAttribs.length-1; i>-1; i--)

+							t += this._serializeAttribute(n, r, r.vAttribs[i]);

+					}

+

+					// Serialize mce_ atts

+					if (!this.settings.on_save) {

+						at = this.mceAttribs;

+

+						for (no in at) {

+							if (at[no])

+								t += this._serializeAttribute(n, r, at[no]);

+						}

+					}

+

+					// Check for required attribs

+					if (r.reqAttribsRe && !t.match(r.reqAttribsRe))

+						t = null;

+

+					// Close these

+					if (t != null && this.closeElementsRe.test(nn))

+						return t + ' />';

+

+					if (t != null)

+						h += t + '>';

+

+					if (this.isIE && this.codeElementsRe.test(nn))

+						h += n.innerHTML;

+				}

+			break;

+

+			case 3: // Text

+				if (st)

+					break;

+

+				if (n.parentNode && this.codeElementsRe.test(n.parentNode.nodeName))

+					return this.isIE ? '' : n.nodeValue;

+

+				return this.xmlEncode(n.nodeValue);

+

+			case 8: // Comment

+				if (st)

+					break;

+

+				return "<!--" + this._trimComment(n.nodeValue) + "-->";

+		}

+

+		if (hc) {

+			cn = n.childNodes;

+

+			for (i=0, l=cn.length; i<l; i++)

+				h += this.serializeNodeAsHTML(cn[i]);

+		}

+

+		// Fill empty nodes

+		if (f && !hc)

+			h += this.fillStr;

+

+		// End element

+		if (t != null && va)

+			h += '</' + en + '>';

+

+		return h;

+	},

+

+	/**

+	 * Serializes the specified attribute as a XHTML string chunk.

+	 *

+	 * @param {HTMLNode} n HTML node to get attribute from.

+	 * @param {TinyMCE_CleanupRule} r Cleanup rule to use in serialization.

+	 * @param {string} an Attribute name to lookfor and serialize.

+	 * @return XHTML chunk containing attribute data if it was found.

+	 * @type string

+	 * @private

+	 */

+	_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 && /^(src|href|longdesc)$/.test(an))

+			av = this._urlConverter(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) {

+			if (an.indexOf('on') != 0)

+				av = this.xmlEncode(av, 1);

+

+			return " " + an + "=" + '"' + av + '"';

+		}

+

+		return "";

+	},

+

+	/**

+	 * Applies source formatting/indentation on the specified HTML string.

+	 *

+	 * @param {string} h HTML string to apply formatting to.

+	 * @return Formatted HTML string.

+	 * @type string

+	 */

+	formatHTML : function(h) {

+		var s = this.settings, p = '', i = 0, li = 0, o = '', l;

+

+		// Replace BR in pre elements to \n

+		h = h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {

+			c = c.replace(/<br\s*\/>/gi, '\n');

+			return '<pre' + b + '>' + c + '</pre>';

+		});

+

+		h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :)

+		h = '\n' + h;

+		h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting

+		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';

+

+		//tinyMCE.debug(h);

+

+		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;

+		}

+

+		//tinyMCE.debug(h);

+

+		return o;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} s String to convert to XML.

+	 * @return Encoded XML string based on configured entity encoding.

+	 * @type string

+	 */

+	xmlEncode : function(s) {

+		var cl = this, re = this.xmlEncodeRe;

+

+		if (!this.entitiesDone)

+			this._setupEntities(); // Will intialize lookup table

+

+		switch (this.settings.entity_encoding) {

+			case "raw":

+				return tinyMCE.xmlEncode(s);

+

+			case "named":

+				return s.replace(re, function (c) {

+					var b = cl.entities[c.charCodeAt(0)];

+

+					return b ? '&' + b + ';' : c;

+				});

+

+			case "numeric":

+				return s.replace(re, function (c) {

+					return '&#' + c.charCodeAt(0) + ';';

+				});

+		}

+

+		return s;

+	},

+

+	/**

+	 * Splits the specified string and removed empty chunks.

+	 *

+	 * @param {RegEx} re RegEx to split string by.

+	 * @param {string} s String value to split.

+	 * @return Array with parts from specified string.

+	 * @type string

+	 */

+	split : function(re, s) {

+		var i, l, o = [], c = s.split(re);

+

+		for (i=0, l=c.length; i<l; i++) {

+			if (c[i] !== '')

+				o[i] = c[i];

+		}

+

+		return o;

+	},

+

+	/**

+	 * Removes contents that got added by TinyMCE to comments.

+	 *

+	 * @param {string} s Comment string data to trim.

+	 * @return Cleaned string from TinyMCE specific content.

+	 * @type string

+	 * @private

+	 */

+	_trimComment : function(s) {

+		// Remove mce_src, mce_href

+		s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");

+		s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");

+

+		return s;

+	},

+

+	/**

+	 * Returns the value of the specified attribute name or default value if it wasn't found.

+	 *

+	 * @param {HTMLElement} e HTML element to get attribute from.

+	 * @param {string} n Attribute name to get from element.

+	 * @param {string} d Default value to return if attribute wasn't found.

+	 * @return Attribute value based on specified attribute name.

+	 * @type string

+	 * @private

+	 */

+	_getAttrib : function(e, n, d) {

+		var v, ex, nn;

+

+		if (typeof(d) == "undefined")

+			d = "";

+

+		if (!e || e.nodeType != 1)

+			return d;

+

+		try {

+			v = e.getAttribute(n, 0);

+		} catch (ex) {

+			// IE 7 may cast exception on invalid attributes

+			v = e.getAttribute(n, 2);

+		}

+

+		if (n == "class" && !v)

+			v = e.className;

+

+		if (this.isIE) {

+			if (n == "http-equiv")

+				v = e.httpEquiv;

+

+			nn = e.nodeName;

+

+			// Skip the default values that IE returns

+			if (nn == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded")

+				v = "";

+

+			if (nn == "INPUT" && n == "size" && v == "20")

+				v = "";

+

+			if (nn == "INPUT" && n == "maxlength" && v == "2147483647")

+				v = "";

+

+			// Images

+			if (n == "width" || n == "height")

+				v = e.getAttribute(n, 2);

+		}

+

+		if (n == 'style' && v) {

+			if (!tinyMCE.isOpera)

+				v = e.style.cssText;

+

+			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;

+	},

+

+	/**

+	 * Internal URL converter callback function. This simply converts URLs based

+	 * on some settings.

+	 *

+	 * @param {TinyMCE_Cleanup} c Cleanup instance.

+	 * @param {HTMLNode} n HTML node that holds the URL.

+	 * @param {string} v URL value to convert.

+	 * @return Converted URL value.

+	 * @type string

+	 * @private

+	 */

+	_urlConverter : function(c, n, v) {

+		if (!c.settings.on_save)

+			return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, v);

+		else if (tinyMCE.getParam('convert_urls')) {

+			if (!this.urlConverter)

+				this.urlConverter = eval(tinyMCE.settings.urlconverter_callback);

+

+			return this.urlConverter(v, n, true);

+		}

+

+		return v;

+	},

+

+	/**

+	 * Converts a array into a regex.

+	 *

+	 * @param {Array} a Array to convert into a regex.

+	 * @param {string} op RegEx options like, gi.

+	 * @param {string} be Before chunk, beginning of expression.

+	 * @param {string} af After chunk, end of expression.

+	 * @return RegEx instance based in input information.

+	 * @type string

+	 * @private

+	 */

+	_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);

+	},

+

+	/**

+	 * Converts a wildcard string into a regex.

+	 *

+	 * @param {string} s Wildcard string to convert into RegEx.

+	 * @return RegEx string based on input.

+	 * @type string

+	 * @private

+	 */

+	_wildcardToRe : function(s) {

+		s = s.replace(/\?/g, '(\\S?)');

+		s = s.replace(/\+/g, '(\\S+)');

+		s = s.replace(/\*/g, '(\\S*)');

+

+		return s;

+	},

+

+	/**

+	 * Sets up the entity name lookup table ones. This moves the entity lookup pasing time

+	 * from init to first xmlEncode call.

+	 *

+	 * @private

+	 */

+	_setupEntities : function() {

+		var n, a, i, s = this.settings;

+

+		// Setup entities

+		if (s.entity_encoding == "named") {

+			n = tinyMCE.clearArray([]);

+			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;

+	},

+

+	/**

+	 * Sets up the cleanup rules ones. This moves the cleanup rule pasing time

+	 * from init to first cleanup call.

+	 *

+	 * @private

+	 */

+	_setupRules : function() {

+		var s = this.settings;

+

+		// Setup default rule

+		this.addRuleStr(s.valid_elements);

+		this.addRuleStr(s.extended_valid_elements);

+		this.addChildRemoveRuleStr(s.valid_child_elements);

+

+		this.rulesDone = true;

+	},

+

+	/**

+	 * Checks if the specified node is a duplicate in other words has it been processed/serialized before.

+	 *

+	 * @param {DOMNode} n DOM Node that is to be checked.

+	 * @return true/false if the node is a duplicate or not.

+	 * @type boolean

+	 * @private

+	 */

+	_isDuplicate : function(n) {

+		var i, l, sn;

+

+		if (!this.settings.fix_content_duplication)

+			return false;

+

+		if (tinyMCE.isRealIE && n.nodeType == 1) {

+			// Mark elements

+			if (n.mce_serialized == this.serializationId)

+				return true;

+

+			n.setAttribute('mce_serialized', this.serializationId);

+		} else {

+			sn = this.serializedNodes;

+

+			// Search lookup table for text nodes  and comments

+			for (i=0, l = sn.length; i<l; i++) {

+				if (sn[i] == n)

+					return true;

+			}

+

+			sn.push(n);

+		}

+

+		return false;

+	}

+

+	/**#@-*/

+};

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Control.class.js
@@ -1,1 +1,1879 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * This is the TinyMCE editor control instance class. A instance of this class will is made for each

+ * converted text area.

+ *

+ * @constructor

+ * @param {Array} settings Name/Value array of instance specific configuration settings.

+ */

+function TinyMCE_Control(settings) {

+	var t, i, tos, fu, p, x, fn, fu, pn, s = settings;

+

+	this.undoRedoLevel = true;

+	this.isTinyMCE_Control = true;

+

+	// Default settings

+	this.enabled = 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 = [];

+	this.hasMouseMoved = false;

+	this.foreColor = this.backColor = "#999999";

+	this.data = {};

+	this.cssClasses = [];

+

+	this.cleanup.init({

+		valid_elements : s.valid_elements,

+		extended_valid_elements : s.extended_valid_elements,

+		valid_child_elements : s.valid_child_elements,

+		entities : s.entities,

+		entity_encoding : s.entity_encoding,

+		debug : s.cleanup_debug,

+		indent : s.apply_source_formatting,

+		invalid_elements : s.invalid_elements,

+		verify_html : s.verify_html,

+		fix_content_duplication : s.fix_content_duplication,

+		convert_fonts_to_spans : s.convert_fonts_to_spans

+	});

+

+	// Wrap old theme

+	t = this.settings.theme;

+	if (!tinyMCE.hasTheme(t)) {

+		fn = tinyMCE.callbacks;

+		tos = {};

+

+		for (i=0; i<fn.length; i++) {

+			if ((fu = window['TinyMCE_' + t + "_" + fn[i]]))

+				tos[fn[i]] = fu;

+		}

+

+		tinyMCE.addTheme(t, tos);

+	}

+

+	// Wrap old plugins

+	this.plugins = [];

+	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;

+				tos = {};

+

+				for (x=0; x<fn.length; x++) {

+					if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))

+						tos[fn[x]] = fu;

+				}

+

+				tinyMCE.addPlugin(pn, tos);

+			}

+

+			this.plugins[this.plugins.length] = pn; 

+		}

+	}

+};

+

+/**#@+

+ * @member TinyMCE_Control

+ */

+TinyMCE_Control.prototype = {

+	/**#@+

+	 * @field

+	 */

+

+	/**

+	 * Contains methods for handling the current instance selection.

+	 *

+	 * @type TinyMCE_Selection

+	 */

+	selection : null,

+

+	/**

+	 * Name/Value array containing all instance settings.

+	 *

+	 * @type Array

+	 */

+	settings : null,

+

+	/**

+	 * Cleanup engine reference, handles all XHTML serialization and cleanup.

+	 *

+	 * @type TinyMCE_Cleanup

+	 */

+	cleanup : null,

+

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Get custom data storage object by name. The name should be for example the theme name or plugin name.

+	 * The custom data storage can be used to store plugin/theme specific information on a editor instance. A empty

+	 * object will be created automaticly the first time called.

+	 *

+	 * @param {String} na Name of data storate to retrive.

+	 * @return Data storage object

+	 * @type Object

+	 */

+	getData : function(na) {

+		var o = this.data[na];

+

+		if (!o)

+			o = this.data[na] = {};

+

+		return o;

+	},

+

+	/**

+	 * Returns true/false if the instance has the current plugin available.

+	 *

+	 * @param {string} n Plugin name to check for.

+	 * @return true/false if the instance has the current plugin available.

+	 * @type boolean

+	 */

+	hasPlugin : function(n) {

+		var i;

+

+		for (i=0; i<this.plugins.length; i++) {

+			if (this.plugins[i] == n)

+				return true;

+		}

+

+		return false;

+	},

+

+	/**

+	 * Adds a plugin to the editor instance. This will also add it globaly.

+	 *

+	 * @param {string} n Plugin name to check for.

+	 * @param {TinyMCE_Plugin} n TinyMCE plugin instance.

+	 */

+	addPlugin : function(n, p) {

+		if (!this.hasPlugin(n)) {

+			tinyMCE.addPlugin(n, p);

+			this.plugins[this.plugins.length] = n;

+		}

+	},

+

+	/**

+	 * Repaints the editarea in Gecko browsers. This method removes ghost resize handlers

+	 * and other trailing graphics.

+	 */

+	repaint : function() {

+		var s, b, ex;

+

+		if (tinyMCE.isRealIE)

+			return;

+

+		try {

+			s = this.selection;

+			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) {

+			// Ignore

+		}

+	},

+

+	/**

+	 * Switches the global TinyMCE settings to the current instance settings. This method is

+	 * used to handle multiple configurations.

+	 */

+	switchSettings : function() {

+		if (tinyMCE.configs.length > 1 && tinyMCE.currentConfig != this.settings.index) {

+			tinyMCE.settings = this.settings;

+			tinyMCE.currentConfig = this.settings.index;

+		}

+	},

+

+	/**

+	 * Selects this instance as the currently selected instance. This will also dispatch a selectInstance call to all

+	 * themes, plugins and other listeners.

+	 */

+	select : function() {

+		var oldInst = tinyMCE.selectedInstance;

+

+		if (oldInst != this) {

+			if (oldInst)

+				oldInst.execCommand('mceEndTyping');

+

+			tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst);

+			tinyMCE.selectedInstance = this;

+		}

+	},

+

+	/**

+	 * Returns the body element of a editor instance.

+	 *

+	 * @return Body element of a editor instance.

+	 * @type HTMLElement

+	 */

+	getBody : function() {

+		return this.contentBody ? this.contentBody : this.getDoc().body;

+	},

+

+	/**

+	 * Returns the DOM document of a editor instance.

+	 *

+	 * @return DOM document of a editor instance.

+	 * @type DOMDocument

+	 */

+	getDoc : function() {

+//		return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ?

+		return this.contentWindow.document;

+	},

+

+	/**

+	 * Returns the window of a editor instance.

+	 *

+	 * @return Window of a editor instance.

+	 * @type Window

+	 */

+	getWin : function() {

+		return this.contentWindow;

+	},

+

+	/**

+	 * Returns the container window of a editor instance. The container window is the window where the current instance lives in.

+	 *

+	 * @return container window of a editor instance.

+	 * @type DOMDocument

+	 */

+	getContainerWin : function() {

+		return this.containerWindow ? this.containerWindow : window;

+	},

+

+	/**

+	 * Returns the viewport of the editor instance.

+	 *

+	 * @return Viewport object with fields top, left, width and height.

+	 * @type Object

+	 */

+	getViewPort : function() {

+		return tinyMCE.getViewPort(this.getWin());

+	},

+

+	/**

+	 * 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.

+	 * This function will not go below the instance body element.

+	 *

+	 * @param {DOMNode} n HTML node to search parents on.

+	 * @param {function} f Selection function to execute on each node.

+	 * @return DOMNode or null if it wasn't found.

+	 * @type DOMNode

+	 */

+	getParentNode : function(n, f) {

+		return tinyMCE.getParentNode(n, f, this.getBody());

+	},

+

+	/**

+	 * Returns the parent element of the specified node based on the search criteria.

+	 * This method will not go below the point of the instance body.

+	 *

+	 * @param {HTMLNode} node Node to get parent element of.

+	 * @param {string} na Comma separated list of element names to get.

+	 * @param {function} f Optional function to call for each node, if it returns true the node is valid.

+	 * @return HTMLElement or null based on search criteras.

+	 * @type HTMLElement

+	 */

+	getParentElement : function(n, na, f) {

+		return tinyMCE.getParentElement(n, na, f, this.getBody());

+	},

+

+	/**

+	 * Returns the first block element parent of the specified node.

+	 * This method will not go below the point of the instance body.

+	 *

+	 * @param {HTMLNode} n Node get parent block element for.

+	 * @return First block element parent of the specified node or null if it wasn't found.

+	 * @type HTMLElement

+	 */

+	getParentBlockElement : function(n) {

+		return tinyMCE.getParentBlockElement(n, this.getBody());

+	},

+

+	/**

+	 * Auto resizes the current editor instance to match the inner document size.

+	 */

+	resizeToContent : function() {

+		var d = this.getDoc(), b = d.body, de = d.documentElement;

+

+		this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px';

+	},

+

+	/**

+	 * 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.<br />

+	 * Example shortcut inst.addShortcut('ctrl,alt', 'k', 'mceSomeCommand', false, 'somevalue');

+	 * Example blocker inst.addShortcut('ctrl,alt', 'k');

+	 *

+	 * @param {string} m List of shortcut modifiers keys, for example "ctrl,alt".

+	 * @param {Object} k Shortcut key char for example "s" or a keycode value "13".

+	 * @param {string} d Optional Shortcut description, this will be presented in the about dialog.

+	 * @param {string} cmd Optional Command name to execute, for example mceLink or Bold.

+	 * @param {boolean} ui Optional True/false state if a UI (dialog) should be presented or not.

+	 * @param {Object} va Optional command value, this can be anything.

+	 * @return true/false if the shortcut was added or not

+	 * @type boolean

+	 */

+	addShortcut : function(m, k, d, cmd, ui, va) {

+		var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, 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;

+	},

+

+	/**

+	 * Executes shortcuts based on the event information.

+	 *

+	 * @param {DOMEvent} e Keyboard event to handle.

+	 * @return true/false if the shortcut was found and executed or not.

+	 * @type boolean

+	 */

+	handleShortcut : function(e) {

+		var i, s, o;

+

+		// Normal key press, then ignore it

+		if (!e.altKey && !e.ctrlKey)

+			return false;

+

+		s = this.shortcuts;

+

+		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;

+	},

+

+	/**

+	 * 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.

+	 */

+	autoResetDesignMode : function() {

+		// Add fix for tab/style.display none/block problems in Gecko

+		if (!tinyMCE.isIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))

+			eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}');

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @return Returns if the instance is hidden or not.

+	 * @type boolean

+	 */

+	isHidden : function() {

+		var s;

+

+		if (tinyMCE.isIE)

+			return false;

+

+		s = this.getSel();

+

+		// Weird, wheres that cursor selection?

+		return (!s || !s.rangeCount || s.rangeCount == 0);

+	},

+

+	/**

+	 * Returns true/false if the editor instance is dirty or not. In other words if it has been modified

+	 * or not.

+	 *

+	 * @return Editor instance dirty state.

+	 * @type boolean

+	 */

+	isDirty : function() {

+		// Is content modified and not in a submit procedure

+		return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML) && !this.isNotDirty;

+	},

+

+	/**

+	 * ..

+	 *

+	 * @private

+	 */

+	_mergeElements : function(scmd, pa, ch, override) {

+		var st, stc, className, n;

+

+		if (scmd == "removeformat") {

+			pa.className = "";

+			pa.style.cssText = "";

+			ch.className = "";

+			ch.style.cssText = "";

+			return;

+		}

+

+		st = tinyMCE.parseStyle(tinyMCE.getAttrib(pa, "style"));

+		stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style"));

+		className = tinyMCE.getAttrib(pa, "class");

+

+		// Removed class adding due to bug #1478272

+		className = tinyMCE.getAttrib(ch, "class");

+

+		if (override) {

+			for (n in st) {

+				if (typeof(st[n]) == 'function')

+					continue;

+

+				stc[n] = st[n];

+			}

+		} else {

+			for (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");

+	},

+

+	/**

+	 * Generates root level block elements such a P for inline elements and text nodes.

+	 */

+	_fixRootBlocks : function() {

+		var rb, b, ne, be, nx, bm;

+

+		rb = tinyMCE.getParam('forced_root_block');

+		if (!rb)

+			return;

+

+		b = this.getBody();

+		ne = b.firstChild;

+

+		while (ne) {

+			nx = ne.nextSibling;

+

+			// If text node or inline element wrap it in a block element

+			if ((ne.nodeType == 3 && ne.nodeValue.replace(/\s+/g, '') != '') || (ne.nodeType == 1 && !tinyMCE.blockRegExp.test(ne.nodeName))) {

+				if (!bm)

+					bm = this.selection.getBookmark();

+

+				if (!be) {

+					be = this.getDoc().createElement(rb);

+					be.appendChild(ne.cloneNode(true));

+					b.replaceChild(be, ne);

+				} else {

+					be.appendChild(ne.cloneNode(true));

+					b.removeChild(ne);

+				}

+			} else

+				be = null;

+

+			ne = nx;

+		}

+

+		if (bm)

+			this.selection.moveToBookmark(bm);

+	},

+

+	/**

+	 * Removes any traling &nbsp; to the current block element.

+	 */

+	_fixTrailingNbsp : function() {

+		var s = this.selection, e = s.getFocusElement(), bm, v;

+

+		if (e && tinyMCE.blockRegExp.test(e.nodeName) && e.firstChild) {

+			v = e.firstChild.nodeValue;

+

+			if (v && v.length > 1 && /(^\u00a0|\u00a0$)/.test(v)) {

+				e.firstChild.nodeValue = v.replace(/(^\u00a0|\u00a0$)/, '');

+				s.selectNode(e.firstChild, true, false, false); // Select and collapse

+			}

+		}

+	},

+

+	/**

+	 * Sets the useCSS mode in Gecko browsers. This will also remove the build in

+	 * inline table editing controls since they are buggy when it comes to col/rowspans.

+	 *

+	 * @param {boolean} b UseCSS state true/false.

+	 * @private

+	 */

+	_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) {}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} command Command name to execute, for example mceLink or Bold.

+	 * @param {boolean} user_interface True/false state if a UI (dialog) should be presented or not.

+	 * @param {mixed} value Optional command value, this can be anything.

+	 */

+	execCommand : function(command, user_interface, value) {

+		var i, x, z, align, img, div, doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();

+

+		// Is not a undo specific command

+		if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command))

+			this.undoBookmark = null;

+

+		// Mozilla issue

+		if (!tinyMCE.isIE && !this.useCSS) {

+			this._setUseCSS(false);

+			this.useCSS = true;

+		}

+

+		//debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value);

+		this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks

+

+		// Don't dispatch key commands

+		if (!/mceStartTyping|mceEndTyping/.test(command)) {

+			if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value))

+				return;

+		}

+

+		// Fix align on images

+		if (focusElm && focusElm.nodeName == "IMG") {

+			align = focusElm.getAttribute('align');

+			img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm;

+

+			switch (command) {

+				case "JustifyLeft":

+					if (align == 'left') {

+						img.setAttribute('align', ''); // Needed for IE

+						img.removeAttribute('align');

+					} else

+						img.setAttribute('align', 'left');

+

+					// Remove the div

+					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.setAttribute('align', ''); // Needed for IE

+					img.removeAttribute('align');

+

+					// Is centered

+					div = tinyMCE.getParentElement(focusElm, "div");

+					if (div && div.style.textAlign == "center") {

+						// Remove div

+						if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)

+							div.parentNode.replaceChild(img, div);

+					} else {

+						// Add div

+						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.setAttribute('align', ''); // Needed for IE

+						img.removeAttribute('align');

+					} else

+						img.setAttribute('align', 'right');

+

+					// Remove the div

+					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 "JustifyLeft":

+			case "JustifyCenter":

+			case "JustifyFull":

+			case "JustifyRight":

+				var el = tinyMCE.getParentNode(focusElm, function(n) {return tinyMCE.getAttrib(n, 'align');});

+

+				if (el) {

+					el.setAttribute('align', ''); // Needed for IE

+					el.removeAttribute('align');

+				} else

+					this.getDoc().execCommand(command, user_interface, value);

+

+				tinyMCE.triggerNodeChange();

+

+				return true;

+

+			case "unlink":

+				// Unlink if caret is inside link

+				if (tinyMCE.isGecko && this.getSel().isCollapsed) {

+					focusElm = tinyMCE.getParentElement(focusElm, 'A');

+

+					if (focusElm)

+						this.selection.selectNode(focusElm, false);

+				}

+

+				this.getDoc().execCommand(command, user_interface, value);

+

+				tinyMCE.isGecko && this.getSel().collapseToEnd();

+

+				tinyMCE.triggerNodeChange();

+

+				return true;

+

+			case "InsertUnorderedList":

+			case "InsertOrderedList":

+				this.getDoc().execCommand(command, user_interface, value);

+				tinyMCE.triggerNodeChange();

+				break;

+

+			case "Strikethrough":

+				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 (!this.cleanup.isValid(value))

+						return true;

+

+					if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value))

+						value = value.replace(/[^a-z]/gi, '');

+

+					if (tinyMCE.isIE && 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.isIE) {

+					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 (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 "mceSetStyleInfo":

+			case "SetStyleInfo":

+				var rng = this.getRng();

+				var sel = this.getSel();

+				var scmd = value.command;

+				var sname = value.name;

+				var svalue = value.value == null ? '' : value.value;

+				//var svalue = value['value'] == null ? '' : value['value'];

+				var wrapper = value.wrapper ? value.wrapper : "span";

+				var parentElm = null;

+				var invalidRe = new RegExp("^BODY|HTML$", "g");

+				var invalidParentsRe = tinyMCE.settings.merge_styles_invalid_parents !== '' ? new RegExp(tinyMCE.settings.merge_styles_invalid_parents, "gi") : null;

+

+				// Whole element selected check

+				if (tinyMCE.isIE) {

+					// Control range

+					if (rng.item)

+						parentElm = rng.item(0);

+					else {

+						var pelm = rng.parentElement();

+						var prng = doc.selection.createRange();

+						prng.moveToElementText(pelm);

+

+						if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) {

+							if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName))

+								parentElm = pelm;

+						}

+					}

+				} else {

+					var felm = this.getFocusElement();

+					if (sel.isCollapsed || (new RegExp('td|tr|tbody|table|img', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode))

+						parentElm = felm;

+				}

+

+				// Whole element selected

+				if (parentElm && !invalidRe.test(parentElm.nodeName)) {

+					if (scmd == "setstyle")

+						tinyMCE.setStyleAttrib(parentElm, sname, svalue);

+

+					if (scmd == "setattrib")

+						tinyMCE.setAttrib(parentElm, sname, svalue);

+

+					if (scmd == "removeformat") {

+						parentElm.style.cssText = '';

+						tinyMCE.setAttrib(parentElm, 'class', '');

+					}

+

+					// Remove style/attribs from all children

+					var ch = tinyMCE.getNodeTree(parentElm, [], 1);

+					for (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); // Bug in FF when running in fullscreen

+					doc.execCommand("FontName", false, "#mce_temp_font#");

+					var elementArray = tinyMCE.getElementsByAttributeValue(this.getBody(), "font", "face", "#mce_temp_font#");

+

+					// Change them all

+					for (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 (i=0; i<elm.childNodes.length; i++)

+									spanElm.appendChild(elm.childNodes[i].cloneNode(true));

+							}

+

+							spanElm.setAttribute("mce_new", "true");

+							elm.parentNode.replaceChild(spanElm, elm);

+

+							// Remove style/attribs from all children

+							var ch = tinyMCE.getNodeTree(spanElm, [], 1);

+							for (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', '');

+								}

+							}

+						}

+					}

+				}

+

+				// Cleaup wrappers

+				var nodes = doc.getElementsByTagName(wrapper);

+				for (i=nodes.length-1; i>=0; i--) {

+					var elm = nodes[i];

+					var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true";

+

+					elm.removeAttribute("mce_new");

+

+					// Is only child a element

+					if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {

+						//tinyMCE.debug("merge1" + isNew);

+						this._mergeElements(scmd, elm, elm.childNodes[0], isNew);

+						continue;

+					}

+

+					// Is I the only child

+					if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {

+						//tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName);

+						if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))

+							this._mergeElements(scmd, elm.parentNode, elm, false);

+					}

+				}

+

+				// Remove empty wrappers

+				var nodes = doc.getElementsByTagName(wrapper);

+				for (i=nodes.length-1; i>=0; i--) {

+					var elm = nodes[i], isEmpty = true;

+

+					// Check if it has any attribs

+					var tmp = doc.createElement("body");

+					tmp.appendChild(elm.cloneNode(false));

+

+					// Is empty span, remove it

+					tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), '');

+					//tinyMCE.debug(tmp.innerHTML);

+					if (new RegExp('<span>', 'gi').test(tmp.innerHTML)) {

+						for (x=0; x<elm.childNodes.length; x++) {

+							if (elm.parentNode != null)

+								elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true), elm);

+						}

+

+						elm.parentNode.removeChild(elm);

+					}

+				}

+

+				// Re add the visual aids

+				if (scmd == "removeformat")

+					tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);

+

+				tinyMCE.triggerNodeChange();

+

+				break;

+

+			case "FontName":

+				if (value == null) {

+					var s = this.getSel();

+

+					// Find font and select it

+					if (tinyMCE.isGecko && s.isCollapsed) {

+						var f = tinyMCE.getParentElement(this.getFocusElement(), "font");

+

+						if (f != null)

+							this.selection.selectNode(f, false);

+					}

+

+					// Remove format

+					this.getDoc().execCommand("RemoveFormat", false, null);

+

+					// Collapse range if font was found

+					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":

+				value = value == null ? this.foreColor : value;

+				value = tinyMCE.trim(value);

+				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;

+

+				this.foreColor = value;

+				this.getDoc().execCommand('forecolor', false, value);

+				break;

+

+			case "HiliteColor":

+				value = value == null ? this.backColor : value;

+				value = tinyMCE.trim(value);

+				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;

+				this.backColor = value;

+

+				if (tinyMCE.isGecko || tinyMCE.isOpera) {

+					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;

+

+				// Try executing command

+				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.');

+

+				// Alert error in gecko if command failed

+				if (tinyMCE.isGecko && cmdFailed) {

+					// Confirm more info

+					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 = "";

+

+				// Call custom cleanup code

+				value = tinyMCE.storeAwayURLs(value);

+				value = tinyMCE._customCleanup(this, "insert_to_editor", value);

+

+				if (this.getBody().nodeName == 'BODY')

+					tinyMCE._setHTML(doc, value);

+				else

+					this.getBody().innerHTML = value;

+

+				tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings, this.getBody(), false, false, false, true));

+				tinyMCE.convertAllRelativeURLs(this.getBody());

+

+				// Cleanup any mess left from storyAwayURLs

+				tinyMCE._removeInternal(this.getBody());

+

+				// When editing always use fonts internaly

+				if (tinyMCE.getParam("convert_fonts_to_spans"))

+					tinyMCE.convertSpansToFonts(doc);

+

+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);

+				tinyMCE._setEventsEnabled(this.getBody(), false);

+				this._addBogusBR();

+

+				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);

+

+				// When editing always use fonts internaly

+				if (tinyMCE.getParam("convert_fonts_to_spans"))

+					tinyMCE.convertSpansToFonts(doc);

+

+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);

+				tinyMCE._setEventsEnabled(this.getBody(), false);

+				this._addBogusBR();

+				this.repaint();

+				this.selection.moveToBookmark(b);

+				tinyMCE.triggerNodeChange();

+			break;

+

+			case "mceReplaceContent":

+				// Force empty string

+				if (!value)

+					value = '';

+

+				this.getWin().focus();

+

+				var selectedText = "";

+

+				if (tinyMCE.isIE) {

+					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);

+				}

+

+				this._addBogusBR();

+				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("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value});

+			break;

+

+			case "mceInsertRawHTML":

+				var key = 'tiny_mce_marker';

+

+				this.execCommand('mceBeginUndoLevel');

+

+				// Insert marker key

+				this.execCommand('mceInsertContent', false, key);

+

+				// Store away scroll pos

+				var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft;

+				var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop;

+

+				// Find marker and replace with RAW HTML

+				var html = this.getBody().innerHTML;

+				if ((pos = html.indexOf(key)) != -1)

+					tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length));

+

+				// Restore scoll pos

+				this.contentWindow.scrollTo(scrollX, scrollY);

+

+				this.execCommand('mceEndUndoLevel');

+

+				break;

+

+			case "mceInsertContent":

+				// Force empty string

+				if (!value)

+					value = '';

+

+				var insertHTMLFailed = false;

+

+				// Removed since it produced problems in IE

+				// this.getWin().focus();

+

+				if (tinyMCE.isGecko || tinyMCE.isOpera) {

+					try {

+						// Is plain text or HTML, &amp;, &nbsp; etc will be encoded wrong in FF

+						if (value.indexOf('<') == -1 && !value.match(/(&#38;|&#160;|&#60;|&#62;)/g)) {

+							var r = this.getRng();

+							var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value));

+							var s = this.getSel();

+							var r2 = r.cloneRange();

+

+							// Insert text at cursor position

+							s.removeAllRanges();

+							r.deleteContents();

+							r.insertNode(n);

+

+							// Move the cursor to the end of text

+							r2.selectNode(n);

+							r2.collapse(false);

+							s.removeAllRanges();

+							s.addRange(r2);

+						} else {

+							value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value);

+							this.getDoc().execCommand('inserthtml', false, value);

+							tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);

+						}

+					} catch (ex) {

+						insertHTMLFailed = true;

+					}

+

+					if (!insertHTMLFailed) {

+						tinyMCE.triggerNodeChange();

+						return;

+					}

+				}

+

+				if (!tinyMCE.isIE) {

+					var isHTML = value.indexOf('<') != -1;

+					var sel = this.getSel();

+					var rng = this.getRng();

+

+					if (isHTML) {

+						if (tinyMCE.isSafari) {

+							var tmpRng = this.getDoc().createRange();

+

+							tmpRng.setStart(this.getBody(), 0);

+							tmpRng.setEnd(this.getBody(), 0);

+

+							value = tmpRng.createContextualFragment(value);

+						} else

+							value = rng.createContextualFragment(value);

+					} else {

+						// Setup text node

+						value = doc.createTextNode(tinyMCE.entityDecode(value));

+					}

+

+					// Insert plain text in Safari

+					if (tinyMCE.isSafari && !isHTML) {

+						this.execCommand('InsertText', false, value.nodeValue);

+						tinyMCE.triggerNodeChange();

+						return true;

+					} else if (tinyMCE.isSafari && isHTML) {

+						rng.deleteContents();

+						rng.insertNode(value);

+						tinyMCE.triggerNodeChange();

+						return true;

+					}

+

+					rng.deleteContents();

+

+					// If target node is text do special treatment, (Mozilla 1.3 fix)

+					if (rng.startContainer.nodeType == 3) {

+						var node = rng.startContainer.splitText(rng.startOffset);

+						node.parentNode.insertBefore(value, node); 

+					} else

+						rng.insertNode(value);

+

+					if (!isHTML) {

+						// Removes weird selection trails

+						sel.selectAllChildren(doc.body);

+						sel.removeAllRanges();

+

+						// Move cursor to end of content

+						var rng = doc.createRange();

+

+						rng.selectNode(value);

+						rng.collapse(false);

+

+						sel.addRange(rng);

+					} else

+						rng.collapse(false);

+

+					tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);

+				} else {

+					var rng = doc.selection.createRange(), tmpRng = null;

+					var c = value.indexOf('<!--') != -1;

+

+					// Fix comment bug, add tag before comments

+					if (c)

+						value = tinyMCE.uniqueTag + value;

+

+					//	tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)

+

+					if (rng.item)

+						rng.item(0).outerHTML = value;

+					else

+						rng.pasteHTML(value);

+

+					//if (tmpRng)

+					//	tmpRng.select(); // Restore range  (Fixes Undo bookmark bug in IE)

+

+					// Remove unique tag

+					if (c) {

+						var e = this.getDoc().getElementById('mceTMPElement');

+						e.parentNode.removeChild(e);

+					}

+				}

+

+				tinyMCE.execCommand("mceAddUndoLevel");

+				tinyMCE.triggerNodeChange();

+			break;

+

+			case "mceStartTyping":

+				if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex == -1) {

+					this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;

+					tinyMCE.typingUndoIndex = tinyMCE.undoIndex;

+					this.execCommand('mceAddUndoLevel');

+				}

+				break;

+

+			case "mceEndTyping":

+				if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex != -1) {

+					this.execCommand('mceAddUndoLevel');

+					this.undoRedo.typingUndoIndex = -1;

+				}

+

+				tinyMCE.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.isIE) {

+					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":

+			case "removeformat":

+				var text = this.selection.getSelectedText();

+

+				if (tinyMCE.isOpera) {

+					this.getDoc().execCommand("RemoveFormat", false, null);

+					return;

+				}

+

+				if (tinyMCE.isIE) {

+					try {

+						var rng = doc.selection.createRange();

+						rng.execCommand("RemoveFormat", false, null);

+					} catch (e) {

+						// Do nothing

+					}

+

+					this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});

+				} else {

+					this.getDoc().execCommand(command, user_interface, value);

+

+					this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});

+				}

+

+				// Remove class

+				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();

+		}

+

+		// Add undo level after modification

+		if (command != "mceAddUndoLevel" && command != "Undo" && command != "Redo" && command != "mceStartTyping" && command != "mceEndTyping")

+			tinyMCE.execCommand("mceAddUndoLevel");

+	},

+

+	/**

+	 * Returns a command specific value, for example the current font size.

+	 *

+	 * @param {string} c Command to query value from.

+	 * @return Command specific value, for example the current font size.

+	 * @type mixed

+	 */

+	queryCommandValue : function(c) {

+		try {

+			return this.getDoc().queryCommandValue(c);

+		} catch (e) {

+			return null;

+		}

+	},

+

+	/**

+	 * Returns a command specific state, for example if bold is enabled or not.

+	 *

+	 * @param {string} c Command to query state from.

+	 * @return Command specific state, for example if bold is enabled or not.

+	 * @type boolean

+	 */

+	queryCommandState : function(c) {

+		return this.getDoc().queryCommandState(c);

+	},

+

+	/**

+	 * Adds a bogus BR to make the cursor visible in Gecko.

+	 */

+	_addBogusBR : function() {

+		var b = this.getBody();

+

+		if (tinyMCE.isGecko && !b.hasChildNodes())

+			b.innerHTML = '<br _moz_editor_bogus_node="TRUE" />';

+	},

+

+	/**

+	 * Gets executed when the editor control instance is added.

+	 *

+	 * @param {HTMLElement} replace_element Element to replace with a editor instance.

+	 * @param {string} form_element_name Form element name that gets replaced.

+	 * @param {DOMDocument} target_document Target document reference where the element is located.

+	 * @private

+	 */

+	_onAdd : function(replace_element, form_element_name, target_document) {

+		var hc, th, tos, editorTemplate, targetDoc, deltaWidth, deltaHeight, html, rng, fragment;

+		var dynamicIFrame, tElm, doc, parentElm;

+

+		th = this.settings.theme;

+		tos = tinyMCE.themes[th];

+

+		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 (tos.getEditorTemplate)

+			editorTemplate = tos.getEditorTemplate(this.settings, this.editorId);

+

+		deltaWidth = editorTemplate.delta_width ? editorTemplate.delta_width : 0;

+		deltaHeight = editorTemplate.delta_height ? editorTemplate.delta_height : 0;

+		html = '<span id="' + this.editorId + '_parent" class="mceEditorContainer">' + editorTemplate.html;

+

+		html = tinyMCE.replaceVar(html, "editor_id", this.editorId);

+

+		if (!this.settings.default_document)

+			this.settings.default_document = tinyMCE.baseURL + "/blank.htm";

+

+		this.settings.old_width = this.settings.width;

+		this.settings.old_height = this.settings.height;

+

+		// Set default width, height

+		if (this.settings.width == -1)

+			this.settings.width = replace_element.offsetWidth;

+

+		if (this.settings.height == -1)

+			this.settings.height = replace_element.offsetHeight;

+

+		// Try the style width

+		if (this.settings.width == 0)

+			this.settings.width = replace_element.style.width;

+

+		// Try the style height

+		if (this.settings.height == 0)

+			this.settings.height = replace_element.style.height; 

+

+		// If no width/height then default to 320x240, better than nothing

+		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;

+		this.settings.width_style = "" + this.settings.width;

+		this.settings.height_style = "" + this.settings.height;

+

+		// Special % handling

+		if (("" + this.settings.width).indexOf('%') != -1)

+			this.settings.area_width = "100%";

+		else

+			this.settings.width_style += 'px';

+

+		if (("" + this.settings.height).indexOf('%') != -1)

+			this.settings.area_height = "100%";

+		else

+			this.settings.height_style += 'px';

+

+		if (("" + replace_element.style.width).indexOf('%') != -1) {

+			this.settings.width = replace_element.style.width;

+			this.settings.area_width = "100%";

+			this.settings.width_style = "100%";

+		}

+

+		if (("" + replace_element.style.height).indexOf('%') != -1) {

+			this.settings.height = replace_element.style.height;

+			this.settings.area_height = "100%";

+			this.settings.height_style = "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;

+

+		// Get replace_element contents

+		if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName == "INPUT")

+			this.startContent = replace_element.value;

+		else

+			this.startContent = replace_element.innerHTML;

+

+		// If not text area or input

+		if (replace_element.nodeName != "TEXTAREA" && replace_element.nodeName != "INPUT") {

+			this.oldTargetElement = replace_element;

+

+			// Debug mode

+			hc = '<input type="hidden" id="' + form_element_name + '" name="' + form_element_name + '" />';

+			this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');

+			this.oldTargetElement.style.display = "none";

+

+			html += '</span>';

+

+			if (tinyMCE.isGecko)

+				html = hc + html;

+			else

+				html += hc;

+

+			// Output HTML and set editable

+			if (tinyMCE.isGecko) {

+				rng = replace_element.ownerDocument.createRange();

+				rng.setStartBefore(replace_element);

+

+				fragment = rng.createContextualFragment(html);

+				tinyMCE.insertAfter(fragment, replace_element);

+			} else

+				replace_element.insertAdjacentHTML("beforeBegin", html);

+		} else {

+			html += '</span>';

+

+			// Just hide the textarea element

+			this.oldTargetElement = replace_element;

+

+			this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');

+			this.oldTargetElement.style.display = "none";

+

+			// Output HTML and set editable

+			if (tinyMCE.isGecko) {

+				rng = replace_element.ownerDocument.createRange();

+				rng.setStartBefore(replace_element);

+

+				fragment = rng.createContextualFragment(html);

+				tinyMCE.insertAfter(fragment, replace_element);

+			} else

+				replace_element.insertAdjacentHTML("beforeBegin", html);

+		}

+

+		// Setup iframe

+		dynamicIFrame = false;

+		tElm = targetDoc.getElementById(this.editorId);

+

+		if (!tinyMCE.isIE) {

+			// Node case is preserved in XML strict mode

+			if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName == "span")) {

+				tElm = tinyMCE._createIFrame(tElm, targetDoc);

+				dynamicIFrame = true;

+			}

+

+			this.targetElement = tElm;

+			this.iframeElement = tElm;

+			this.contentDocument = tElm.contentDocument;

+			this.contentWindow = tElm.contentWindow;

+

+			//this.getDoc().designMode = "on";

+		} 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";

+		}

+

+		// Setup base HTML

+		doc = this.contentDocument;

+		if (dynamicIFrame) {

+			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) {

+				// Failed Mozilla 1.3

+				this.getDoc().location.href = tinyMCE.baseURL + "/blank.htm";

+			}

+		}

+

+		// This timeout is needed in MSIE 5.5 for some odd reason

+		// it seems that the document.frames isn't initialized yet?

+		if (tinyMCE.isIE)

+			window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" + this.editorId + "\"]);", 1);

+

+		// Setup element references

+		parentElm = this.targetDoc.getElementById(this.editorId + '_parent');

+		this.formElement = tinyMCE.isGecko ? parentElm.previousSibling : parentElm.nextSibling;

+

+		tinyMCE.setupContent(this.editorId, true);

+

+		return true;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} u URL to set as base URL or null to remove it.

+	 */

+	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);

+		}

+	},

+

+	/**

+	 * Returns the cleaned HTML of the editor control instance.

+	 *

+	 * @param {bool} r Optional raw parameter, if set to true. Cleanup will be skipped.

+	 * @return Cleaned HTML content string.

+	 * @type string

+	 */

+	getHTML : function(r) {

+		var h, d = this.getDoc(), b = this.getBody();

+

+		if (r)

+			return b.innerHTML;

+

+		h = tinyMCE._cleanupHTML(this, d, this.settings, b, false, true, false, true);

+

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			tinyMCE.convertSpansToFonts(d);

+

+		return h;

+	},

+

+	/**

+	 * Sets the HTML contents of the instance.

+	 *

+	 * @param {string} h HTML content string to replace body with.

+	 */

+	setHTML : function(h) {

+		this.execCommand('mceSetContent', false, h);

+		this.repaint();

+	},

+

+	/**

+	 * Returns the currently selected element. This is was added for compatiblity and is deprecated.

+	 * Please use inst.selection.getFocusElement instead.

+	 *

+	 * @return Currently selected element.

+	 * @type HTMLElement

+	 * @deprecated

+	 */

+	getFocusElement : function() {

+		return this.selection.getFocusElement();

+	},

+

+	/**

+	 * Returns the browsers selection instance. This is was added for compatiblity and is deprecated.

+	 * Please use inst.selection.getSel instead.

+	 *

+	 * @return Browser selection instance.

+	 * @type DOMSelection

+	 * @deprecated

+	 */

+	getSel : function() {

+		return this.selection.getSel();

+	},

+

+	/**

+	 * Returns the browsers selections first range instance. This is was added for compatiblity and is deprecated.

+	 * Please use inst.selection.getRng instead.

+	 *

+	 * @return Browsers selections first range instance.

+	 * @type DOMRange

+	 * @deprecated

+	 */

+	getRng : function() {

+		return this.selection.getRng();

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {boolean} skip_cleanup Optional Skip cleanup, simply move the contents as fast as possible.

+	 * @param {boolean} skip_callback Optional Skip callback, don't call the save_callback function.

+	 */

+	triggerSave : function(skip_cleanup, skip_callback) {

+		var e, nl = [], i, s, content, htm;

+

+		if (!this.enabled)

+			return;

+

+		this.switchSettings();

+		s = tinyMCE.settings;

+

+		// Force hidden tabs visible while serializing

+		if (tinyMCE.isRealIE) {

+			e = this.iframeElement;

+

+			do {

+				if (e.style && e.style.display == 'none') {

+					e.style.display = 'block';

+					nl[nl.length] = {elm : e, type : 'style'};

+				}

+

+				if (e.style && s.hidden_tab_class.length > 0 && e.className.indexOf(s.hidden_tab_class) != -1) {

+					e.className = s.display_tab_class;

+					nl[nl.length] = {elm : e, type : 'class'};

+				}

+			} while ((e = e.parentNode) != null)

+		}

+

+		tinyMCE.settings.preformatted = false;

+

+		// Default to false

+		if (typeof(skip_cleanup) == "undefined")

+			skip_cleanup = false;

+

+		// Default to false

+		if (typeof(skip_callback) == "undefined")

+			skip_callback = false;

+

+		tinyMCE._setHTML(this.getDoc(), this.getBody().innerHTML);

+

+		// Remove visual aids when cleanup is disabled

+		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);

+		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 !== '')

+			content = tinyMCE.resolveDots(tinyMCE.settings.save_callback, window)(this.formTargetElementId,htm,this.getBody());

+

+		// Use callback content if available

+		if ((typeof(content) != "undefined") && content != null)

+			htm = content;

+

+		// Replace some weird entities (Bug: #1056343)

+		htm = tinyMCE.regexpReplace(htm, "&#40;", "(", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#41;", ")", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#59;", ";", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#34;", "&quot;", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#94;", "^", "gi");

+

+		if (this.formElement)

+			this.formElement.value = htm;

+

+		if (tinyMCE.isSafari && this.formElement)

+			this.formElement.innerText = htm;

+

+		// Hide them again (tabs in MSIE)

+		for (i=0; i<nl.length; i++) {

+			if (nl[i].type == 'style')

+				nl[i].elm.style.display = 'none';

+			else

+				nl[i].elm.className = s.hidden_tab_class;

+		}

+	}

+

+	/**#@-*/

+};

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_DOMUtils.class.js
@@ -1,1 +1,693 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * The contents of this file will be wrapped in a class later on.

+ */

+

+/**#@+

+ * @member TinyMCE_Engine

+ * @method

+ */

+tinyMCE.add(TinyMCE_Engine, {

+	/**

+	 * Creates a HTML tag by name and attributes array. This will XML encode all attribute values.

+	 *

+	 * @param {string} tn Tag name to create.

+	 * @param {Array} a Optional name/Value array of attributes.

+	 * @param {string} h Optional inner HTML of new tag, raw HTML code.

+	 */

+	createTagHTML : function(tn, a, h) {

+		var o = '', f = tinyMCE.xmlEncode, n;

+

+		o = '<' + tn;

+

+		if (a) {

+			for (n in a) {

+				if (typeof(a[n]) != 'function' && a[n] != null)

+					o += ' ' + f(n) + '="' + f('' + a[n]) + '"';

+			}

+		}

+

+		o += !h ? ' />' : '>' + h + '</' + tn + '>';

+

+		return o;

+	},

+

+	/**

+	 * Creates a tag by name and attributes array. This will create a DOM node out of the specified

+	 * data.

+	 *

+	 * @param {string} d Document to create DOM node in.

+	 * @param {string} tn Tag name to create.

+	 * @param {Array} a Optional name/Value array of attributes.

+	 * @param {string} h Optional inner HTML of new tag, raw HTML code.

+	 */

+	createTag : function(d, tn, a, h) {

+		var o = d.createElement(tn), n;

+

+		if (a) {

+			for (n in a) {

+				if (typeof(a[n]) != 'function' && a[n] != null)

+					tinyMCE.setAttrib(o, n, a[n]);

+			}

+		}

+

+		if (h)

+			o.innerHTML = h;

+

+		return o;

+	},

+

+	/**

+	 * Returns a element by a specific attribute and it's value.

+	 *

+	 * @param {HTMLElement} n Element to search in.

+	 * @param {string} e Element name to search for.

+	 * @param {string} a Attribute name to search for.

+	 * @param {string} v Attribute value to search for.

+	 * @return HTML element that matched the criterias or null on failure.

+	 * @type HTMLElement

+	 */

+	getElementByAttributeValue : function(n, e, a, v) {

+		return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0];

+	},

+

+	/**

+	 * Returns a element array by a specific attribute and it's value.

+	 *

+	 * @param {HTMLElement} n Element to search in.

+	 * @param {string} e Element name to search for.

+	 * @param {string} a Attribute name to search for.

+	 * @param {string} v Attribute value to search for.

+	 * @return HTML element array that matched the criterias or null on failure.

+	 * @type Array

+	 */

+	getElementsByAttributeValue : function(n, e, a, v) {

+		var i, nl = n.getElementsByTagName(e), o = [];

+

+		for (i=0; i<nl.length; i++) {

+			if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)

+				o[o.length] = nl[i];

+		}

+

+		return o;

+	},

+

+	/**

+	 * Returns true/false if the specified node is a block element or not.

+	 *

+	 * @param {HTMLNode} n Node to verify.

+	 * @return true/false if the specified node is a block element or not.

+	 * @type boolean

+	 */

+	isBlockElement : function(n) {

+		return n != null && n.nodeType == 1 && this.blockRegExp.test(n.nodeName);

+	},

+

+	/**

+	 * Returns the first block element parent of the specified node.

+	 *

+	 * @param {HTMLNode} n Node get parent block element for.

+	 * @param {HTMLNode} r Optional root element, never go below this point.

+	 * @return First block element parent of the specified node or null if it wasn't found.

+	 * @type HTMLElement

+	 */

+	getParentBlockElement : function(n, r) {

+		return this.getParentNode(n, function(n) {

+			return tinyMCE.isBlockElement(n);

+		}, r);

+

+		return null;

+	},

+

+	/**

+	 * Inserts a node after the specific node.

+	 *

+	 * @param {HTMLNode} n New node to insert.

+	 * @param {HTMLNode} r Reference node to insert after.

+	 */

+	insertAfter : function(n, r){

+		if (r.nextSibling)

+			r.parentNode.insertBefore(n, r.nextSibling);

+		else

+			r.parentNode.appendChild(n);

+	},

+

+	/**

+	 * Sets the innerHTML property of a element, this function also

+	 * fixes a MSIE bug where the first comment is removed.

+	 *

+	 * @param {HTMLElement} e Element to insert HTML in.

+	 * @param {string} h HTML code to insert into innerHTML.

+	 */

+	setInnerHTML : function(e, h) {

+		var i, nl, n;

+

+		// Convert all strong/em to b/i in Gecko

+		if (tinyMCE.isGecko) {

+			h = h.replace(/<embed([^>]*)>/gi, '<tmpembed$1>');

+			h = h.replace(/<em([^>]*)>/gi, '<i$1>');

+			h = h.replace(/<tmpembed([^>]*)>/gi, '<embed$1>');

+			h = h.replace(/<strong([^>]*)>/gi, '<b$1>');

+			h = h.replace(/<\/strong>/gi, '</b>');

+			h = h.replace(/<\/em>/gi, '</i>');

+		}

+

+		if (tinyMCE.isRealIE) {

+			// Since MSIE handles invalid HTML better that valid XHTML we

+			// need to make some things invalid. <hr /> gets converted to <hr>.

+			h = h.replace(/\s\/>/g, '>');

+

+			// Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones

+			h = h.replace(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs

+			h = h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs

+			h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs

+

+			// Remove first comment

+			e.innerHTML = tinyMCE.uniqueTag + h;

+			e.firstChild.removeNode(true);

+

+			// Remove weird auto generated empty paragraphs unless it's supposed to be there

+			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);

+		}

+	},

+

+	/**

+	 * Returns the outer HTML of a element, this uses the outerHTML

+	 * property in MSIE and Opera and a workaround for Gecko.

+	 *

+	 * @param {HTMLElement} e HTML element to get outerHTML from.

+	 * @return HTML content string.

+	 * @type string

+	 */

+	getOuterHTML : function(e) {

+		var d;

+

+		if (tinyMCE.isIE)

+			return e.outerHTML;

+

+		d = e.ownerDocument.createElement("body");

+		d.appendChild(e.cloneNode(true));

+

+		return d.innerHTML;

+	},

+

+	/**

+	 * Sets the outer HTML of a element, this uses the outerHTML

+	 * property in MSIE and Opera and a workaround for Gecko.

+	 *

+	 * @param {HTMLElement} e HTML element to set outerHTML on.

+	 * @param {string} h HTML string to set in property.

+	 * @param {DOMDocument} d Optional document instance (Required in old IE versions).

+	 */

+	setOuterHTML : function(e, h, d) {

+		var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;

+

+		if (tinyMCE.isIE && e.nodeType == 1)

+			e.outerHTML = h;

+		else {

+			t = d.createElement("body");

+			t.innerHTML = h;

+

+			for (i=0, nl=t.childNodes; i<nl.length; i++)

+				e.parentNode.insertBefore(nl[i].cloneNode(true), e);

+

+			e.parentNode.removeChild(e);

+		}

+	},

+

+	/**

+	 * Returns a element by id, this will also search the form names to match the id.

+	 *

+	 * @param {string} id Id of element.

+	 * @param {DOMDocument} d Optional document.

+	 * @return HTML element that matches the id.

+	 * @type HTMLElement

+	 */

+	_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;

+	},

+

+	/**

+	 * Returns a array of nodes selected retrived from the child nodes of the specified node.

+	 *

+	 * @param {HTMLNode} n Node to get children from.

+	 * @param {Array} na Array to fill with children.

+	 * @param {int} t Node type to get.

+	 * @param {string} nn Node name of items to retrive.

+	 * @return Node array.

+	 * @type Array

+	 * @deprecated

+	 */

+	getNodeTree : function(n, na, t, nn) {

+		return this.selectNodes(n, function(n) {

+			return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);

+		}, na ? na : []);

+	},

+

+	/**

+	 * Returns the parent element of the specified node based on the search criteria.

+	 *

+	 * @param {HTMLNode} node Node to get parent element of.

+	 * @param {string} na Comma separated list of element names to get.

+	 * @param {function} f Optional function to call for each node, if it returns true the node is valid.

+	 * @param {HTMLNode} r Optional root element, never go below this point.

+	 * @return HTMLElement or null based on search criteras.

+	 * @type HTMLElement

+	 */

+	getParentElement : function(n, na, f, r) {

+		var re = na ? new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$') : 0, v;

+

+		// Compatiblity with old scripts where f param was a attribute string

+		if (f && typeof(f) == 'string')

+			return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) !== '';});

+

+		return this.getParentNode(n, function(n) {

+			return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName))) && (!f || f(n));

+		}, r);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {DOMNode} n HTML node to search parents on.

+	 * @param {function} f Selection function to execute on each node.

+	 * @param {HTMLNode} r Optional root element, never go below this point.

+	 * @return DOMNode or null if it wasn't found.

+	 * @type DOMNode

+	 */

+	getParentNode : function(n, f, r) {

+		while (n) {

+			if (n == r)

+				return null;

+

+			if (f(n))

+				return n;

+

+			n = n.parentNode;

+		}

+

+		return null;

+	},

+

+	/**

+	 * Returns the attribute value of a element or the default value if it wasn't found.

+	 *

+	 * @param {HTMLElement} elm HTML element to get attribute from.

+	 * @param {string} name Attribute name to retrive.

+	 * @param {string} dv Optional default value to return, this value defaults to a empty string.

+	 * @return Attribute value or default value if it wasn't found in element.

+	 * @type string

+	 */

+	getAttrib : function(elm, name, dv) {

+		var v;

+

+		if (typeof(dv) == "undefined")

+			dv = "";

+

+		// Not a element

+		if (!elm || elm.nodeType != 1)

+			return dv;

+

+		try {

+			v = elm.getAttribute(name, 0);

+		} catch (ex) {

+			// IE 7 may cast exception on invalid attributes

+			v = elm.getAttribute(name, 2);

+		}

+

+		// Try className for class attrib

+		if (name == "class" && !v)

+			v = elm.className;

+

+		// Workaround for a issue with Firefox 1.5rc2+

+		if (tinyMCE.isGecko) {

+			if (name == "src" && elm.src != null && elm.src !== '')

+				v = elm.src;

+

+			// Workaround for a issue with Firefox 1.5rc2+

+			if (name == "href" && elm.href != null && elm.href !== '')

+				v = elm.href;

+		} else if (tinyMCE.isIE) {

+			switch (name) {

+				case "http-equiv":

+					v = elm.httpEquiv;

+					break;

+

+				case "width":

+				case "height":

+					v = elm.getAttribute(name, 2);

+					break;

+			}

+		}

+

+		if (name == "style" && !tinyMCE.isOpera)

+			v = elm.style.cssText;

+

+		return (v && v !== '') ? v : dv;

+	},

+

+	/**

+	 * Sets the attribute value for a specific attribute.

+	 *

+	 * @param {HTMLElement} el HTML element to set attribute on.

+	 * @param {string} name Attribute name to set.

+	 * @param {string} va Attribute value to set.

+	 * @param {boolean} fix Optional fix value state, if true only number data will be accepted.

+	 */

+	setAttrib : function(el, name, va, fix) {

+		if (typeof(va) == "number" && va != null)

+			va = "" + va;

+

+		if (fix) {

+			if (va == null)

+				va = "";

+

+			va = va.replace(/[^0-9%]/g, '');

+		}

+

+		if (name == "style")

+			el.style.cssText = va;

+

+		if (name == "class")

+			el.className = va;

+

+		if (va != null && va !== '' && va != -1)

+			el.setAttribute(name, va);

+		else

+			el.removeAttribute(name);

+	},

+

+	/**

+	 * Sets a style attribute item value.

+	 *

+	 * @param {HTMLElement} e HTML element to set style attribute item on.

+	 * @param {string} n Style item name to set.

+	 * @param {string} v Style item value to set.

+	 */

+	setStyleAttrib : function(e, n, v) {

+		e.style[n] = v;

+

+		// Style attrib deleted in IE

+		if (tinyMCE.isIE && v == null || v == '') {

+			v = tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));

+			e.style.cssText = v;

+			e.setAttribute("style", v);

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {HTMLElement} ei Element to set CSS class on.

+	 * @param {string} c CSS class to set.

+	 */

+	switchClass : function(ei, c) {

+		var e;

+

+		if (tinyMCE.switchClassCache[ei])

+			e = tinyMCE.switchClassCache[ei];

+		else

+			e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);

+

+		if (e) {

+			// Keep tile mode

+			if (tinyMCE.settings.button_tile_map && e.className && e.className.indexOf('mceTiledButton') == 0)

+				c = 'mceTiledButton ' + c;

+

+			e.className = c;

+		}

+	},

+

+	/**

+	 * Returns the absolute x, y position of a node. The position will be returned in a object with

+	 * two properties absLeft and absTop.

+	 *

+	 * @param {HTMLNode} n HTML element to get x, y position from.

+	 * @param {HTMLNode} cn Optional HTML element to to stop position calcualtion by.

+	 * @return Absolute position of the specified element.

+	 * @type TinyMCE_ElementPosition

+	 */

+	getAbsPosition : function(n, cn) {

+		var l = 0, t = 0;

+

+		while (n && n != cn) {

+			l += n.offsetLeft;

+			t += n.offsetTop;

+			n = n.offsetParent;

+		}

+

+		return {absLeft : l, absTop : t};

+	},

+

+	/**

+	 * 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. 

+	 *

+	 * @param {HTMLNode} e HTML node to search from.

+	 * @param {string} n Comma separated list of element names to search for.

+	 * @return HTML Element or null if it wasn't found.

+	 * @type HTMLElement 

+	 */

+	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;

+	},

+

+	/**

+	 * 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. 

+	 *

+	 * @param {HTMLNode} e HTML node to search from.

+	 * @param {string} n Comma separated list of element names to search for.

+	 * @return HTML Element or null if it wasn't found.

+	 * @type HTMLElement 

+	 */

+	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;

+	},

+

+	/**

+	 * Returns a array of elements when the specified function matches a node.

+	 *

+	 * @param {DOMNode} n Node to select children from.

+	 * @param {string} na Element name(s) to search for separated by commas.

+	 * @param {function} f Function that returns true/false if the node is to be added or not.

+	 * @return Array with selected elements.

+	 * @type Array

+	 */

+	selectElements : function(n, na, f) {

+		var i, a = [], nl, x;

+

+		for (x=0, na = na.split(','); x<na.length; x++)

+			for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)

+				(!f || f(nl[i])) && a.push(nl[i]);

+

+		return a;

+	},

+

+	/**

+	 * Returns a array of nodes when the specified function matches a node.

+	 *

+	 * @param {DOMNode} n Node to select children from.

+	 * @param {function} f Function that returns true/false if the node is to be added or not.

+	 * @param {Array} a Optional array to fill with nodes.

+	 * @return Array with selected nodes.

+	 * @type Array

+	 */

+	selectNodes : function(n, f, a) {

+		var i;

+

+		if (!a)

+			a = [];

+

+		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;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {HTMLElement} e HTML element to add CSS class to.

+	 * @param {string] c CSS class to add to HTML element.

+	 * @param {boolean] b Optional parameter, if set to true, class will be added to the beginning.

+	 * @return Returns the new class attribute value.

+	 * @type string

+	 */

+	addCSSClass : function(e, c, b) {

+		var o = this.removeCSSClass(e, c);

+		return e.className = b ? c + (o !== '' ? (' ' + o) : '') : (o !== '' ? (o + ' ') : '') + c;

+	},

+

+	/**

+	 * Removes the specified CSS class from the element.

+	 *

+	 * @param {HTMLElement} e HTML element to remove CSS class to.

+	 * @param {string] c CSS class to remove to HTML element.

+	 * @return Returns the new class attribute value.

+	 * @type string

+	 */

+	removeCSSClass : function(e, c) {

+		c = e.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');

+		return e.className = c != ' ' ? c : '';

+	},

+

+	/**

+	 * Returns true if the specified element has the specified class.

+	 *

+	 * @param {HTMLElement} n HTML element to check CSS class on.

+	 * @param {string] c CSS class to check for.

+	 * @return true/false if the specified element has the specified class.

+	 * @type bool

+	 */

+	hasCSSClass : function(n, c) {

+		return new RegExp('\\b' + c + '\\b', 'g').test(n.className);

+	},

+

+	/**

+	 * Renames the specified element to the specified name.

+	 *

+	 * @param {HTMLElement} e Element to rename.

+	 * @param {string} n New name of the element.

+	 * @param {DOMDocument} d Optional document reference.

+	 */

+	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);

+		}

+	},

+

+	/**

+	 * Returns the viewport of the specificed window instance.

+	 *

+	 * @param {Window} w Window to get viewport of.

+	 * @return Viewport object with fields top, left, width and height.

+	 * @type Object

+	 */

+	getViewPort : function(w) {

+		var d = w.document, m = d.compatMode == 'CSS1Compat', b = d.body, de = d.documentElement;

+

+		return {

+			left : w.pageXOffset || (m ? de.scrollLeft : b.scrollLeft),

+			top : w.pageYOffset || (m ? de.scrollTop : b.scrollTop),

+			width : w.innerWidth || (m ? de.clientWidth : b.clientWidth),

+			height : w.innerHeight || (m ? de.clientHeight : b.clientHeight)

+		};

+	},

+

+	/**

+	 * Returns the current runtime/computed style value of a element.

+	 *

+	 * @param {Element} n HTML element to get style from.

+	 * @param {string} na Style name to return.

+	 * @param {string} d Optional default value.

+	 * @return {string} Current runtime/computed style value of a element.

+	 */

+	getStyle : function(n, na, d) {

+		if (!n)

+			return false;

+

+		// Gecko

+		if (tinyMCE.isGecko && n.ownerDocument.defaultView) {

+			try {

+				return n.ownerDocument.defaultView.getComputedStyle(n, null).getPropertyValue(na);

+			} catch (n) {

+				// Old safari might fail

+				return null;

+			}

+		}

+

+		// Camelcase it, if needed

+		na = na.replace(/-(\D)/g, function(a, b){

+			return b.toUpperCase();

+		});

+

+		// IE & Opera

+		if (n.currentStyle)

+			return n.currentStyle[na];

+

+		return false;

+	}

+

+	/**#@-*/

+});

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Debug.class.js
@@ -1,1 +1,37 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * The contents of this file will be wrapped in a class later on.

+ */

+

+/**#@+

+ * @member TinyMCE_Engine

+ * @method

+ */

+tinyMCE.add(TinyMCE_Engine, {

+	/**

+	 * Debugs the specified message to devkit if it's loaded.

+	 *

+	 * @param {1..n} Numerous arguments that will be outputed.

+	 */

+	debug : function() {

+		var m = "", a, i, l = tinyMCE.log.length;

+

+		for (i=0, a = this.debug.arguments; i<a.length; i++) {

+			m += a[i];

+

+			if (i<a.length-1)

+				m += ', ';

+		}

+

+		if (l < 1000)

+			tinyMCE.log[l] = "[debug] " + m;

+	}

+

+	/**#@-*/

+});

+

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Engine.class.js
@@ -1,1 +1,3062 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * Core engine class for TinyMCE, a instance of this class is available as a global called tinyMCE.

+ *

+ * @constructor

+ */

+function TinyMCE_Engine() {

+	var ua;

+

+	this.majorVersion = "2";

+	this.minorVersion = "1.2";

+	this.releaseDate = "2007-08-21";

+

+	this.instances = [];

+	this.switchClassCache = [];

+	this.windowArgs = [];

+	this.loadedFiles = [];

+	this.pendingFiles = [];

+	this.loadingIndex = 0;

+	this.configs = [];

+	this.currentConfig = 0;

+	this.eventHandlers = [];

+	this.log = [];

+	this.undoLevels = [];

+	this.undoIndex = 0;

+	this.typingUndoIndex = -1;

+	this.settings = [];

+

+	// Browser check

+	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.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);

+	this.isGecko = ua.indexOf('Gecko') != -1; // Will also be true on Safari

+	this.isSafari = ua.indexOf('Safari') != -1;

+	this.isOpera = window['opera'] && opera.buildNumber ? true : false;

+	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 = [];

+	this.themes = [];

+	this.menus = [];

+	this.loadedPlugins = [];

+	this.buttonMap = [];

+	this.isLoaded = false;

+

+	// Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those

+	if (this.isOpera) {

+		this.isMSIE = true;

+		this.isGecko = false;

+		this.isSafari =  false;

+	}

+

+	this.isIE = this.isMSIE;

+	this.isRealIE = this.isMSIE && !this.isOpera;

+

+	// TinyMCE editor id instance counter

+	this.idCounter = 0;

+};

+

+/**#@+

+ * @member TinyMCE_Engine

+ */

+TinyMCE_Engine.prototype = {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Initializes TinyMCE with the specific configuration settings. This method

+	 * may be called multiple times when multiple instances with diffrent settings is to be created.

+	 *

+	 * @param {Array} Name/Value array of initialization settings.

+	 */

+	init : function(settings) {

+		var theme, nl, baseHREF = "", i, cssPath, entities, h, p, src, elements = [], head;

+

+		// IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry.

+		if (this.isMSIE5_0)

+			return;

+

+		this.settings = settings;

+

+		// Check if valid browser has execcommand support

+		if (typeof(document.execCommand) == 'undefined')

+			return;

+

+		// Get script base path

+		if (!tinyMCE.baseURL) {

+			// Search through head

+			head = document.getElementsByTagName('head')[0];

+

+			if (head) {

+				for (i=0, nl = head.getElementsByTagName('script'); i<nl.length; i++)

+					elements.push(nl[i]);

+			}

+

+			// Search through rest of document

+			for (i=0, nl = document.getElementsByTagName('script'); i<nl.length; i++)

+				elements.push(nl[i]);

+

+			// If base element found, add that infront of baseURL

+			nl = document.getElementsByTagName('base');

+			for (i=0; i<nl.length; i++) {

+				if (nl[i].href)

+					baseHREF = nl[i].href;

+			}

+

+			for (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)) {

+					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' : '';

+

+					// Force it absolute if page has a base href

+					if (baseHREF !== '' && src.indexOf('://') == -1)

+						tinyMCE.baseURL = baseHREF + src;

+					else

+						tinyMCE.baseURL = src;

+

+					break;

+				}

+			}

+		}

+

+		// Get document base path

+		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 not HTTP absolute

+		if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') {

+			// If site absolute

+			tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;

+		}

+

+		// Set default values on settings

+		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],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");

+		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("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("custom_undo_redo_global", false);

+		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", true);

+		this._def("fix_table_elements", false);

+		this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml');

+		this._def("hidden_tab_class", '');

+		this._def("display_tab_class", '');

+		this._def("gecko_spellcheck", false);

+		this._def("hide_selects_on_submit", true);

+		this._def("forced_root_block", false);

+		this._def("remove_trailing_nbsp", false);

+		this._def("save_on_tinymce_forms", false);

+

+		// Force strict loading mode to false on non Gecko browsers

+		if (this.isMSIE && !this.isOpera)

+			this.settings.strict_loading_mode = false;

+

+		// Browser check IE

+		if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1)

+			return;

+

+		// Browser check Gecko

+		if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1)

+			return;

+

+		// Browser check Safari

+		if (this.isSafari && this.settings.browsers.indexOf('safari') == -1)

+			return;

+

+		// Browser check Opera

+		if (this.isOpera && this.settings.browsers.indexOf('opera') == -1)

+			return;

+

+		// If not super absolute make it so

+		baseHREF = tinyMCE.settings.document_base_url;

+		h = document.location.href;

+		p = h.indexOf('://');

+		if (p > 0 && document.location.protocol != "file:") {

+			p = h.indexOf('/', p + 3);

+			h = h.substring(0, p);

+

+			if (baseHREF.indexOf('://') == -1)

+				baseHREF = h + baseHREF;

+

+			tinyMCE.settings.document_base_url = baseHREF;

+			tinyMCE.settings.document_base_prefix = h;

+		}

+

+		// Trim away query part

+		if (baseHREF.indexOf('?') != -1)

+			baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));

+

+		this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";

+

+		theme = this.settings.theme;

+		this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';

+		this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';

+		this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';

+		this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i");

+		this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40];

+		this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL

+		this.uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>';

+		this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance'];

+

+		// Theme url

+		this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme;

+

+		if (!tinyMCE.isIE || tinyMCE.isOpera)

+			this.settings.force_br_newlines = false;

+

+		if (tinyMCE.getParam("popups_css", false)) {

+			cssPath = tinyMCE.getParam("popups_css", "");

+

+			// Is relative

+			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')

+				this.settings.popups_css = this.documentBasePath + "/" + cssPath;

+			else

+				this.settings.popups_css = cssPath;

+		} else

+			this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css";

+

+		if (tinyMCE.getParam("editor_css", false)) {

+			cssPath = tinyMCE.getParam("editor_css", "");

+

+			// Is relative

+			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')

+				this.settings.editor_css = this.documentBasePath + "/" + cssPath;

+			else

+				this.settings.editor_css = cssPath;

+		} else {

+			if (this.settings.editor_css !== '')

+				this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";

+		}

+

+		// Only do this once

+		if (this.configs.length == 0) {

+			if (typeof(TinyMCECompressed) == "undefined") {

+				tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad);

+

+				if (tinyMCE.isRealIE) {

+					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);

+

+		// Add plugins

+		p = tinyMCE.getParam('plugins', '', true, ',');

+		if (p.length > 0) {

+			for (i=0; i<p.length; i++) {

+				if (p[i].charAt(0) != '-')

+					this.loadScript(tinyMCE.baseURL + '/plugins/' + p[i] + '/editor_plugin' + tinyMCE.srcMode + '.js');

+			}

+		}

+

+		// Setup entities

+		if (tinyMCE.getParam('entity_encoding') == 'named') {

+			settings.cleanup_entities = [];

+			entities = tinyMCE.getParam('entities', '', true, ',');

+			for (i=0; i<entities.length; i+=2)

+				settings.cleanup_entities['c' + entities[i]] = entities[i+1];

+		}

+

+		// Save away this config

+		settings.index = this.configs.length;

+		this.configs[this.configs.length] = settings;

+

+		// Start loading first one in chain

+		this.loadNextScript();

+

+		// Force flicker free CSS backgrounds in IE

+		if (this.isIE && !this.isOpera) {

+			try {

+				document.execCommand('BackgroundImageCache', false, true);

+			} catch (e) {

+				// Ignore

+			}

+		}

+

+		// Setup XML encoding regexps

+		this.xmlEncodeRe = new RegExp('[<>&"]', 'g');

+	},

+

+	/**

+	 * Adds unload event handles to execute triggerSave.

+	 *

+	 * @private

+	 */

+	_addUnloadEvents : function() {

+		var st = tinyMCE.settings.add_unload_trigger;

+

+		if (tinyMCE.isIE) {

+			if (st) {

+				tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler);

+				tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler);

+			}

+		} else {

+			if (st)

+				tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);});

+		}

+	},

+

+	/**

+	 * Assigns a default value for a specific config parameter.

+	 *

+	 * @param {string} key Settings key to add default value to.

+	 * @param {object} def_val Default value to assign if the settings option isn't defined.

+	 * @param {boolean} t Trim all white space, if true all whitespace will be removed from option value.

+	 * @private

+	 */

+	_def : function(key, def_val, t) {

+		var v = tinyMCE.getParam(key, def_val);

+

+		v = t ? v.replace(/\s+/g, "") : v;

+

+		this.settings[key] = v;

+	},

+

+	/**

+	 * Returns true/false if the specified plugin is loaded or not.

+	 *

+	 * @param {string} n Plugin name to look for.

+	 * @return true/false if the specified plugin is loaded or not.

+	 * @type boolean

+	 */

+	hasPlugin : function(n) {

+		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;

+	},

+

+	/**

+	 * Adds the specified plugin to the list of loaded plugins, this will also setup the baseURL

+	 * property of the plugin.

+	 *

+	 * @param {string} Plugin name/id.

+	 * @param {TinyMCE_Plugin} p Plugin instance to add.

+	 */

+	addPlugin : function(n, p) {

+		var op = this.plugins[n];

+

+		// Use the previous plugin object base URL used when loading external plugins

+		p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n;

+		this.plugins[n] = p;

+

+		this.loadNextScript();

+	},

+

+	/**

+	 * Sets the baseURL of the specified plugin, this is useful if the plugin is loaded from

+	 * a external location.

+	 *

+	 * @param {string} n Plugin name/id to set base URL on. This have to be added before.

+	 * @param {string} u Base URL of plugin, this string should be the URL prefix for the plugin without a trailing slash.

+	 */

+	setPluginBaseURL : function(n, u) {

+		var op = this.plugins[n];

+

+		if (op)

+			op.baseURL = u;

+		else

+			this.plugins[n] = {baseURL : u};

+	},

+

+	/**

+	 * Load plugin from external URL.

+	 *

+	 * @param {string} n Plugin name for example \"emotions\".

+	 * @param {string} u URL of plugin directory to load.

+	 */

+	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");

+	},

+

+	/**

+	 * Returns true/false if the specified theme is loaded or not.

+	 *

+	 * @param {string} n Theme name/id to check for.

+	 * @return true/false if the specified theme is loaded or not.

+	 * @type boolean

+	 */

+	hasTheme : function(n) {

+		return typeof(this.themes[n]) != "undefined" && this.themes[n] != null;

+	},

+

+	/**

+	 * Adds the specified theme in to the list of loaded themes.

+	 *

+	 * @param {string} n Theme name/id to add the object reference to.

+	 * @param {TinyMCE_Theme} t Theme instance to add to the loaded list.

+	 */

+	addTheme : function(n, t) {

+		this.themes[n] = t;

+

+		this.loadNextScript();

+	},

+

+	/**

+	 * Adds a floating menu instance to TinyMCE.

+	 *

+	 * @param {string} n TinyMCE menu id.

+	 * @param {TinyMCE_Menu} m TinyMCE menu instance.

+	 */

+	addMenu : function(n, m) {

+		this.menus[n] = m;

+	},

+

+	/**

+	 * Checks if the specified menu by name is added to TinyMCE.

+	 *

+	 * @param {string} n TinyMCE menu id.

+	 * @return true/false if it exists or not.

+	 * @type boolean

+	 */

+	hasMenu : function(n) {

+		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} url Script URL to load.

+	 */

+	loadScript : function(url) {

+		var i;

+

+		for (i=0; i<this.loadedFiles.length; i++) {

+			if (this.loadedFiles[i] == url)

+				return;

+		}

+

+		if (tinyMCE.settings.strict_loading_mode)

+			this.pendingFiles[this.pendingFiles.length] = url;

+		else

+			document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></script>');

+

+		this.loadedFiles[this.loadedFiles.length] = url;

+	},

+

+	/**

+	 * Loads the next script in chain.

+	 */

+	loadNextScript : function() {

+		var d = document, se;

+

+		if (!tinyMCE.settings.strict_loading_mode)

+			return;

+

+		if (this.loadingIndex < this.pendingFiles.length) {

+			se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script');

+			se.setAttribute('language', 'javascript');

+			se.setAttribute('type', 'text/javascript');

+			se.setAttribute('src', this.pendingFiles[this.loadingIndex++]);

+

+			d.getElementsByTagName("head")[0].appendChild(se);

+		} else

+			this.loadingIndex = -1; // Done with loading

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} url CSS file URL to load or comma separated list of files.

+	 */

+	loadCSS : function(url) {

+		var ar = url.replace(/\s+/, '').split(',');

+		var lflen = 0, csslen = 0, skip = false;

+		var x = 0, i = 0, nl, le;

+

+		for (x = 0,csslen = ar.length; x<csslen; x++) {

+			if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0) {

+				/* Make sure it doesn't exist. */

+				for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {

+					if (this.loadedFiles[i] == ar[x]) {

+						skip = true;

+						break;

+					}

+				}

+

+				if (!skip) {

+					if (tinyMCE.settings.strict_loading_mode) {

+						nl = document.getElementsByTagName("head");

+

+						le = document.createElement('link');

+						le.setAttribute('href', ar[x]);

+						le.setAttribute('rel', 'stylesheet');

+						le.setAttribute('type', 'text/css');

+

+						nl[0].appendChild(le);			

+					} else

+						document.write('<link href="' + ar[x] + '" rel="stylesheet" type="text/css" />');

+

+					this.loadedFiles[this.loadedFiles.length] = ar[x];

+				}

+			}

+		}

+	},

+

+	/**

+	 * Imports a CSS file into a allready loaded document. This will add a link element

+	 * to the head element of the document.

+	 *

+	 * @param {DOMDocument} doc DOM Document to load CSS into.

+	 * @param {string} css CSS File URL to load or comma separated list of files.

+	 */

+	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) {

+				// Is relative, make absolute

+				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);

+			}

+		}

+	},

+

+	/**

+	 * Displays a confirm dialog when a user clicks/focus a textarea that is to be converted into

+	 * a TinyMCE instance.

+	 *

+	 * @param {DOMEvent} e DOM event instance.

+	 * @param {Array} settings Name/Value array of initialization settings.

+	 */

+	confirmAdd : function(e, settings) {

+		var elm = tinyMCE.isIE ? 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');

+	},

+

+	/**

+	 * Moves the contents from the hidden textarea to the editor that gets inserted.

+	 *

+	 * @param {string} form_element_name Form element name to move contents from.

+	 * @deprecated

+	 */

+	updateContent : function(form_element_name) {

+		var formElement, n, inst, doc;

+

+		// Find MCE instance linked to given form element and copy it's value

+		formElement = document.getElementById(form_element_name);

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (!tinyMCE.isInstance(inst))

+				continue;

+

+			inst.switchSettings();

+

+			if (inst.formElement == formElement) {

+				doc = inst.getDoc();

+

+				tinyMCE._setHTML(doc, inst.formElement.value);

+

+				if (!tinyMCE.isIE)

+					doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid);

+			}

+		}

+	},

+

+	/**

+	 * Adds a TinyMCE editor control instance to a specific form element.

+	 *

+	 * @param {HTMLElement} replace_element HTML element object to replace.

+	 * @param {string} form_element_name HTML form element name,

+	 * @param {DOMDocument} target_document Target document that holds the element.

+	 */

+	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);

+	},

+

+	/**

+	 * Removes the specified instance from TinyMCE Engine.

+	 *

+	 * @param {MCEControl} ti Target instance to remove from TinyMCE.

+	 * @return Removed MCEControl instance.

+	 * @type MCEControl

+	 */

+	removeInstance : function(ti) {

+		var t = [], n, i;

+

+		// Remove from instances

+		for (n in tinyMCE.instances) {

+			i = tinyMCE.instances[n];

+

+			if (tinyMCE.isInstance(i) && ti != i)

+					t[n] = i;

+		}

+

+		tinyMCE.instances = t;

+

+		// Remove from global undo/redo

+		n = [];

+		t = tinyMCE.undoLevels;

+

+		for (i=0; i<t.length; i++) {

+			if (t[i] != ti)

+				n.push(t[i]);

+		}

+

+		tinyMCE.undoLevels = n;

+		tinyMCE.undoIndex = n.length;

+

+		// Dispatch remove instance call

+		tinyMCE.dispatchCallback(ti, 'remove_instance_callback', 'removeInstance', ti);

+

+		return ti;

+	},

+

+	/**

+	 * Removes a TinyMCE editor control instance by id.

+	 *

+	 * @param {string} editor_id Id of editor instance to remove.

+	 */

+	removeMCEControl : function(editor_id) {

+		var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn, n;

+

+		if (inst) {

+			inst.switchSettings();

+

+			editor_id = inst.editorId;

+			h = tinyMCE.getContent(editor_id);

+

+			this.removeInstance(inst);

+

+			tinyMCE.selectedElement = null;

+			tinyMCE.selectedInstance = null;

+

+			tinyMCE.selectedElement = null;

+			tinyMCE.selectedInstance = null;

+

+			// Try finding an instance

+			for (n in tinyMCE.instances) {

+				if (!tinyMCE.isInstance(tinyMCE.instances[n]))

+					continue;

+

+				tinyMCE.selectedInstance = tinyMCE.instances[n];

+				break;

+			}

+

+			// Remove element

+			re = document.getElementById(editor_id + "_parent");

+			ot = inst.oldTargetElement;

+			tn = ot.nodeName.toLowerCase();

+

+			if (tn == "textarea" || tn == "input") {

+				re.parentNode.removeChild(re);

+				ot.style.display = "inline";

+				ot.value = h;

+			} else {

+				ot.innerHTML = h;

+				ot.style.display = 'block';

+				re.parentNode.insertBefore(ot, re);

+				re.parentNode.removeChild(re);

+			}

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {boolean} skip_cleanup Optional Skip cleanup, simply move the contents as fast as possible.

+	 * @param {boolean} skip_callback Optional Skip callback, don't call the save_callback function.

+	 */

+	triggerSave : function(skip_cleanup, skip_callback) {

+		var inst, n;

+

+		// Default to false

+		if (typeof(skip_cleanup) == "undefined")

+			skip_cleanup = false;

+

+		// Default to false

+		if (typeof(skip_callback) == "undefined")

+			skip_callback = false;

+

+		// Cleanup and set all form fields

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (!tinyMCE.isInstance(inst))

+				continue;

+

+			inst.triggerSave(skip_cleanup, skip_callback);

+		}

+	},

+

+	/**

+	 * Resets a forms TinyMCE instances based on form index.

+	 *

+	 * @param {int} form_index Form index to reset.

+	 */

+	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;

+			}

+		}

+	},

+

+	/**

+	 * Executes a command on a specific editor instance by id.

+	 *

+	 * @param {string} editor_id TinyMCE editor control instance id to perform comman on.

+	 * @param {string} command Command name to execute, for example mceLink or Bold.

+	 * @param {boolean} user_interface True/false state if a UI (dialog) should be presented or not.

+	 * @param {object} value Optional command value, this can be anything.

+	 * @param {boolean} focus True/false if the editor instance should be focused first.

+	 */

+	execInstanceCommand : function(editor_id, command, user_interface, value, focus) {

+		var inst = tinyMCE.getInstanceById(editor_id), r;

+

+		if (inst) {

+			r = inst.selection.getRng();

+

+			if (typeof(focus) == "undefined")

+				focus = true;

+

+			// IE bug lost focus on images in absolute divs Bug #1534575

+			if (focus && (!r || !r.item))

+				inst.contentWindow.focus();

+

+			// Reset design mode if lost

+			inst.autoResetDesignMode();

+

+			this.selectedElement = inst.getFocusElement();

+			inst.select();

+			tinyMCE.execCommand(command, user_interface, value);

+

+			// Cancel event so it doesn't call onbeforeonunlaod

+			if (tinyMCE.isIE && window.event != null)

+				tinyMCE.cancelEvent(window.event);

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} command Command name to execute, for example mceLink or Bold.

+	 * @param {boolean} user_interface True/false state if a UI (dialog) should be presented or not.

+	 * @param {object} value Optional command value, this can be anything.

+	 */

+	execCommand : function(command, user_interface, value) {

+		var inst = tinyMCE.selectedInstance, n, pe, te;

+

+		// Default input

+		user_interface = user_interface ? user_interface : false;

+		value = value ? value : null;

+

+		if (inst)

+			inst.switchSettings();

+

+		switch (command) {

+			case "Undo":

+				if (this.getParam('custom_undo_redo_global')) {

+					if (this.undoIndex > 0) {

+						tinyMCE.nextUndoRedoAction = 'Undo';

+						inst = this.undoLevels[--this.undoIndex];

+						inst.select();

+

+						if (!tinyMCE.nextUndoRedoInstanceId)

+							inst.execCommand('Undo');

+					}

+				} else

+					inst.execCommand('Undo');

+				return true;

+

+			case "Redo":

+				if (this.getParam('custom_undo_redo_global')) {

+					if (this.undoIndex <= this.undoLevels.length - 1) {

+						tinyMCE.nextUndoRedoAction = 'Redo';

+						inst = this.undoLevels[this.undoIndex++];

+						inst.select();

+

+						if (!tinyMCE.nextUndoRedoInstanceId)

+							inst.execCommand('Redo');

+					}

+				} else

+					inst.execCommand('Redo');

+

+				return true;

+

+			case 'mceFocus':

+				inst = tinyMCE.getInstanceById(value);

+

+				if (inst)

+					inst.getWin().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 "mceToggleEditor":

+				inst = tinyMCE.getInstanceById(value);

+

+				if (inst) {

+					pe = document.getElementById(inst.editorId + '_parent');

+					te = inst.oldTargetElement;

+

+					if (typeof(inst.enabled) == 'undefined')

+						inst.enabled = true;

+

+					inst.enabled = !inst.enabled;

+

+					if (!inst.enabled) {

+						pe.style.display = 'none';

+

+						if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')

+							te.value = inst.getHTML();

+						else

+							te.innerHTML = inst.getHTML();

+

+						te.style.display = inst.oldTargetDisplay;

+						tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst);

+					} else {

+						pe.style.display = 'block';

+						te.style.display = 'none';

+

+						if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')

+							inst.setHTML(te.value);

+						else

+							inst.setHTML(te.innerHTML);

+

+						inst.useCSS = false;

+						tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst);

+					}

+				} else

+					tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);

+

+				return;

+

+			case "mceResetDesignMode":

+				// Resets the designmode state of the editors in Gecko

+				if (tinyMCE.isGecko) {

+					for (n in tinyMCE.instances) {

+						if (!tinyMCE.isInstance(tinyMCE.instances[n]))

+							continue;

+

+						try {

+							tinyMCE.instances[n].getDoc().designMode = "off";

+							tinyMCE.instances[n].getDoc().designMode = "on";

+							tinyMCE.instances[n].useCSS = false;

+						} catch (e) {

+							// Ignore any errors

+						}

+					}

+				}

+

+				return;

+		}

+

+		if (inst) {

+			inst.execCommand(command, user_interface, value);

+		} else if (tinyMCE.settings.focus_alert)

+			alert(tinyMCELang.lang_focus_alert);

+	},

+

+	/**

+	 * Creates a iframe editor container for the specified element.

+	 *

+	 * @param {HTMLElement} replace_element Element to replace with iframe element.

+	 * @param {DOMDocument} doc Optional document to use with iframe replacement.

+	 * @param {DOMWindow} win Optional window to use with iframe replacement.

+	 * @private

+	 */

+	_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 = (isNaN(aw) || aw < 0) ? 300 : aw;

+			aw = aw + "px";

+		}

+

+		if (ah.indexOf('%') == -1) {

+			ah = parseInt(ah);

+			ah = (isNaN(ah) || ah < 0) ? 240 : ah;

+			ah = ah + "px";

+		}

+

+		iframe.setAttribute("id", id);

+		iframe.setAttribute("name", id);

+		iframe.setAttribute("class", "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");

+		iframe.className = 'mceEditorIframe';

+

+		if (tinyMCE.settings.auto_resize)

+			iframe.setAttribute("scrolling", "no");

+

+		// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs

+		if (tinyMCE.isRealIE)

+			iframe.setAttribute("src", this.settings.default_document);

+

+		iframe.style.width = aw;

+		iframe.style.height = ah;

+

+		// Ugly hack for Gecko problem in strict mode

+		if (tinyMCE.settings.strict_loading_mode)

+			iframe.style.marginBottom = '-5px';

+

+		// MSIE 5.0 issue

+		if (tinyMCE.isRealIE)

+			replace_element.outerHTML = iframe.outerHTML;

+		else

+			replace_element.parentNode.replaceChild(iframe, replace_element);

+

+		if (tinyMCE.isRealIE)

+			return win.frames[id];

+		else

+			return iframe;

+	},

+

+	/**

+	 * Setups the contents of TinyMCE editor instance and fills it with contents.

+	 *

+	 * @param {string} editor_id TinyMCE editor instance control id to fill.

+	 */

+	setupContent : function(editor_id) {

+		var inst = tinyMCE.instances[editor_id], i, doc = inst.getDoc(), head = doc.getElementsByTagName('head').item(0);

+		var content = inst.startContent, contentElement, body;

+

+		// HTML values get XML encoded in strict mode

+		if (tinyMCE.settings.strict_loading_mode) {

+			content = content.replace(/&lt;/g, '<');

+			content = content.replace(/&gt;/g, '>');

+			content = content.replace(/&quot;/g, '"');

+			content = content.replace(/&amp;/g, '&');

+		}

+

+		tinyMCE.selectedInstance = inst;

+		inst.switchSettings();

+

+		// Not loaded correctly hit it again, Mozilla bug #997860

+		if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {

+			// This part will remove the designMode status

+			// Failes first time in Firefox 1.5b2 on Mac

+			try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {}

+			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000);

+			return;

+		}

+

+		// Wait for it to load

+		if (!head || !doc.body) {

+			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10);

+			return;

+		}

+

+		// Import theme specific content CSS the user specific

+		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);

+

+		// Setup keyboard shortcuts

+		if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) {

+			inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo');

+			inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo');

+		}

+

+		// BlockFormat shortcuts keys

+		for (i=1; i<=6; i++)

+			inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, '<h' + i + '>');

+

+		inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '<p>');

+		inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '<div>');

+		inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '<address>');

+

+		// Add default shortcuts for gecko

+		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');

+		}

+

+		// Setup span styles

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			inst.getBody().setAttribute('id', 'mceSpanFonts');

+

+		if (tinyMCE.settings.nowrap)

+			doc.body.style.whiteSpace = "nowrap";

+

+		doc.body.dir = this.settings.directionality;

+		doc.editorId = editor_id;

+

+		// Add on document element in Mozilla

+		if (!tinyMCE.isIE)

+			doc.documentElement.editorId = editor_id;

+

+		inst.setBaseHREF(tinyMCE.settings.base_href);

+

+		// Replace new line characters to BRs

+		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");

+		}

+

+		// Open closed anchors

+	//	content = content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');

+

+		// Call custom cleanup code

+		content = tinyMCE.storeAwayURLs(content);

+		content = tinyMCE._customCleanup(inst, "insert_to_editor", content);

+

+		if (tinyMCE.isIE) {

+			// Ugly!!!

+			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;");

+

+			body = inst.getBody();

+			body.editorId = editor_id;

+		}

+

+		content = tinyMCE.cleanupHTMLCode(content);

+

+		// Fix for bug #958637

+		if (!tinyMCE.isIE) {

+			contentElement = inst.getDoc().createElement("body");

+			doc = inst.getDoc();

+

+			contentElement.innerHTML = content;

+

+			if (tinyMCE.settings.cleanup_on_startup)

+				tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement));

+			else

+				tinyMCE.setInnerHTML(inst.getBody(), content);

+

+			tinyMCE.convertAllRelativeURLs(inst.getBody());

+		} else {

+			if (tinyMCE.settings.cleanup_on_startup) {

+				tinyMCE._setHTML(inst.getDoc(), content);

+

+				// Produces permission denied error in MSIE 5.5

+				try {

+					tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));

+				} catch(e) {

+					// Ignore

+				}

+			} else

+				tinyMCE._setHTML(inst.getDoc(), content);

+		}

+

+		// Fix for bug #957681

+		//inst.getDoc().designMode = inst.getDoc().designMode;

+

+		tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings.visual, inst);

+		tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc());

+

+		// Re-add design mode on mozilla

+		if (!tinyMCE.isIE)

+			tinyMCE.addEventHandlers(inst);

+

+		// Add blur handler

+		if (tinyMCE.isIE) {

+			tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch);

+			tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953

+

+			// Workaround for drag drop/copy paste base href bug

+			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);

+			}

+		}

+

+		// Trigger node change, this call locks buttons for tables and so forth

+		inst.select();

+		tinyMCE.selectedElement = inst.contentWindow.document.body;

+

+		// Call custom DOM cleanup

+		tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody());

+		tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody());

+		tinyMCE._setEventsEnabled(inst.getBody(), false);

+		tinyMCE.cleanupAnchors(inst.getDoc());

+

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			tinyMCE.convertSpansToFonts(inst.getDoc());

+

+		inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);

+		inst.undoRedo.add({ content : inst.startContent });

+

+		// Cleanup any mess left from storyAwayURLs

+		if (tinyMCE.isGecko) {

+			// Remove mce_src from textnodes and comments

+			tinyMCE.selectNodes(inst.getBody(), function(n) {

+				if (n.nodeType == 3 || n.nodeType == 8)

+					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");

+

+				return false;

+			});

+		}

+

+		// Remove Gecko spellchecking

+		if (tinyMCE.isGecko)

+			inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck");

+

+		// Cleanup any mess left from storyAwayURLs

+		tinyMCE._removeInternal(inst.getBody());

+

+		inst.select();

+		tinyMCE.triggerNodeChange(false, true);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} s HTML string to replace src and href attributes in.

+	 * @return HTML string with replaced src and href attributes.

+	 * @type string

+	 */

+	storeAwayURLs : function(s) {

+		// Remove all mce_src, mce_href and replace them with new ones

+		// s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');

+		// s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');

+

+		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;

+	},

+

+	/**

+	 * Removes any internal content inserted by regexps.

+	 *

+	 * @param {DOMNode} n Node to remove internal content from.

+	 */

+	_removeInternal : function(n) {

+		if (tinyMCE.isGecko) {

+			// Remove mce_src from textnodes and comments

+			tinyMCE.selectNodes(n, function(n) {

+				if (n.nodeType == 3 || n.nodeType == 8)

+					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");

+

+				return false;

+			});

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {HTMLElement} form_obj Form object to loop through for TinyMCE specific form elements.

+	 */

+	removeTinyMCEFormElements : function(form_obj) {

+		var i, elementId;

+

+		// Skip form element removal

+		if (!tinyMCE.getParam('hide_selects_on_submit'))

+			return;

+

+		// Check if form is valid

+		if (typeof(form_obj) == "undefined" || form_obj == null)

+			return;

+

+		// If not a form, find the form

+		if (form_obj.nodeName != "FORM") {

+			if (form_obj.form)

+				form_obj = form_obj.form;

+			else

+				form_obj = tinyMCE.getParentElement(form_obj, "form");

+		}

+

+		// Still nothing

+		if (form_obj == null)

+			return;

+

+		// Disable all UI form elements that TinyMCE created

+		for (i=0; i<form_obj.elements.length; i++) {

+			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;

+		}

+	},

+

+	/**

+	 * Event handler function that gets executed each time a event occurs in a TinyMCE editor control instance.

+	 * Todo: Fix the return statements so they return true or false.

+	 *

+	 * @param {DOMEvent} e DOM event object reference.

+	 * @return true - if the event is to be chained, false - if the event chain is to be canceled.

+	 * @type boolean

+	 */

+	handleEvent : function(e) {

+		var inst = tinyMCE.selectedInstance, i, elm, keys;

+

+		// Remove odd, error

+		if (typeof(tinyMCE) == "undefined")

+			return true;

+

+		//tinyMCE.debug(e.type + " " + e.target.nodeName + " " + (e.relatedTarget ? e.relatedTarget.nodeName : ""));

+

+		if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback', 'handleEvent', e))

+			return false;

+

+		switch (e.type) {

+			case "beforedeactivate": // Was added due to bug #1439953

+			case "blur":

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.execCommand('mceEndTyping');

+

+				tinyMCE.hideMenus();

+

+				return;

+

+			// Workaround for drag drop/copy paste base href bug

+			case "drop":

+			case "beforepaste":

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.setBaseHREF(null);

+

+				// Fixes odd MSIE bug where drag/droping elements in a iframe with height 100% breaks

+				// This logic forces the width/height to be in pixels while the user is drag/dropping

+				if (tinyMCE.isRealIE) {

+					var ife = tinyMCE.selectedInstance.iframeElement;

+

+					/*if (ife.style.width.indexOf('%') != -1) {

+						ife._oldWidth = ife.width.height;

+						ife.style.width = ife.clientWidth;

+					}*/

+

+					if (ife.style.height.indexOf('%') != -1) {

+						ife._oldHeight = ife.style.height;

+						ife.style.height = ife.clientHeight;

+					}

+				}

+

+				window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();", 1);

+				return;

+

+			case "submit":

+				tinyMCE.formSubmit(tinyMCE.isMSIE ? window.event.srcElement : e.target);

+				return;

+

+			case "reset":

+				var formObj = tinyMCE.isIE ? window.event.srcElement : e.target;

+

+				for (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.instances[e.target.editorId].select();

+				} else {

+					if (e.target.ownerDocument.editorId)

+						tinyMCE.instances[e.target.ownerDocument.editorId].select();

+				}

+

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.switchSettings();

+

+				// Insert P element

+				if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && e.keyCode == 13 && !e.shiftKey) {

+					// Insert P element instead of BR

+					if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {

+						// Cancel event

+						tinyMCE.execCommand("mceAddUndoLevel");

+						return tinyMCE.cancelEvent(e);

+					}

+				}

+

+				// Handle backspace

+				if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {

+					// Insert P element instead of BR

+					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {

+						// Cancel event

+						tinyMCE.execCommand("mceAddUndoLevel");

+						return tinyMCE.cancelEvent(e);

+					}

+				}

+

+				// Return key pressed

+				if (tinyMCE.isIE && tinyMCE.settings.force_br_newlines && e.keyCode == 13) {

+					if (e.target.editorId)

+						tinyMCE.instances[e.target.editorId].select();

+

+					if (tinyMCE.selectedInstance) {

+						var sel = tinyMCE.selectedInstance.getDoc().selection;

+						var rng = sel.createRange();

+

+						if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)

+							return false;

+

+						// Cancel event

+						e.returnValue = false;

+						e.cancelBubble = true;

+

+						// Insert BR element

+						rng.pasteHTML("<br />");

+						rng.collapse(false);

+						rng.select();

+

+						tinyMCE.execCommand("mceAddUndoLevel");

+						tinyMCE.triggerNodeChange(false);

+						return false;

+					}

+				}

+

+				// Backspace or delete

+				if (e.keyCode == 8 || e.keyCode == 46) {

+					tinyMCE.selectedElement = e.target;

+					tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");

+					tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");

+					tinyMCE.triggerNodeChange(false);

+				}

+

+				return false;

+

+			case "keyup":

+			case "keydown":

+				tinyMCE.hideMenus();

+				tinyMCE.hasMouseMoved = false;

+

+				if (inst && inst.handleShortcut(e))

+					return false;

+

+				inst._fixRootBlocks();

+

+				if (inst.settings.remove_trailing_nbsp)

+					inst._fixTrailingNbsp();

+

+				if (e.target.editorId)

+					tinyMCE.instances[e.target.editorId].select();

+

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.switchSettings();

+

+				inst = tinyMCE.selectedInstance;

+

+				// Handle backspace

+				if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {

+					// Insert P element instead of BR

+					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {

+						// Cancel event

+						tinyMCE.execCommand("mceAddUndoLevel");

+						e.preventDefault();

+						return false;

+					}

+				}

+

+				tinyMCE.selectedElement = null;

+				tinyMCE.selectedNode = null;

+				elm = tinyMCE.selectedInstance.getFocusElement();

+				tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");

+				tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");

+				tinyMCE.selectedElement = elm;

+

+				// Update visualaids on tabs

+				if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)

+					tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance);

+

+				// Fix empty elements on return/enter, check where enter occured

+				if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)

+					tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();

+

+				// Fix empty elements on return/enter

+				if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) {

+					elm = tinyMCE.enterKeyElement;

+					if (elm) {

+						var re = new RegExp('^HR|IMG|BR$','g'); // Skip these

+						var dre = new RegExp('^H[1-6]$','g'); // Add double on these

+

+						if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {

+							if (dre.test(elm.nodeName))

+								elm.innerHTML = "&nbsp;&nbsp;";

+							else

+								elm.innerHTML = "&nbsp;";

+						}

+					}

+				}

+

+				// Check if it's a position key

+				keys = tinyMCE.posKeyCodes;

+				var posKey = false;

+				for (i=0; i<keys.length; i++) {

+					if (keys[i] == e.keyCode) {

+						posKey = true;

+						break;

+					}

+				}

+

+				// MSIE custom key handling

+				if (tinyMCE.isIE && tinyMCE.settings.custom_undo_redo) {

+					keys = [8, 46]; // Backspace,Delete

+

+					for (i=0; i<keys.length; i++) {

+						if (keys[i] == e.keyCode) {

+							if (e.type == "keyup")

+								tinyMCE.triggerNodeChange(false);

+						}

+					}

+				}

+

+				// If Ctrl key

+				if (e.keyCode == 17)

+					return true;

+

+				// Handle Undo/Redo when typing content

+

+				if (tinyMCE.isGecko) {

+					// Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)

+					if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))

+						tinyMCE.execCommand("mceStartTyping");

+				} else {

+					// IE seems to be working better with this setting

+					if (!posKey && e.type == "keyup")

+						tinyMCE.execCommand("mceStartTyping");

+				}

+

+				// Store undo bookmark

+				if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)

+					inst.undoBookmark = inst.selection.getBookmark();

+

+				// End typing (position key) or some Ctrl event

+				if (e.type == "keyup" && (posKey || e.ctrlKey))

+					tinyMCE.execCommand("mceEndTyping");

+

+				if (posKey && e.type == "keyup")

+					tinyMCE.triggerNodeChange(false);

+

+				if (tinyMCE.isIE && e.ctrlKey)

+					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);

+			break;

+

+			case "mousedown":

+			case "mouseup":

+			case "click":

+			case "dblclick":

+			case "focus":

+				tinyMCE.hideMenus();

+

+				if (tinyMCE.selectedInstance) {

+					tinyMCE.selectedInstance.switchSettings();

+					tinyMCE.selectedInstance.isFocused = true;

+				}

+

+				// Check instance event trigged on

+				var targetBody = tinyMCE.getParentElement(e.target, "html");

+				for (var instanceName in tinyMCE.instances) {

+					if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))

+						continue;

+

+					inst = tinyMCE.instances[instanceName];

+

+					// Reset design mode if lost (on everything just in case)

+					inst.autoResetDesignMode();

+

+					// Use HTML element since users might click outside of body element

+					if (inst.getBody().parentNode == targetBody) {

+						inst.select();

+						tinyMCE.selectedElement = e.target;

+						tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");

+						tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");

+						break;

+					}

+				}

+

+				// Add first bookmark location

+				if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick"))

+					tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();

+

+				// Reset selected node

+				if (e.type != "focus")

+					tinyMCE.selectedNode = null;

+

+				tinyMCE.triggerNodeChange(false);

+				tinyMCE.execCommand("mceEndTyping");

+

+				if (e.type == "mouseup")

+					tinyMCE.execCommand("mceAddUndoLevel");

+

+				// Just in case

+				if (!tinyMCE.selectedInstance && e.target.editorId)

+					tinyMCE.instances[e.target.editorId].select();

+

+				return false;

+		}

+	},

+

+	/**

+	 * Returns the HTML code for a normal button control.

+	 *

+	 * @param {string} id Button control id, this will be the suffix for the element id, the prefix is the editor id.

+	 * @param {string} lang Language variable key name to insert as the title/alt of the button image.

+	 * @param {string} img Image URL to insert, {$themeurl} and {$pluginurl} will be replaced.

+	 * @param {string} cmd Command to execute when the user clicks the button.

+	 * @param {string} ui Optional user interface boolean for command.

+	 * @param {string} val Optional value for command.

+	 * @return HTML code for a normal button based in input information.

+	 * @type string

+	 */

+	getButtonHTML : function(id, lang, img, cmd, ui, val) {

+		var h = '', m, x, io = '';

+

+		cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';

+

+		if (typeof(ui) != "undefined" && ui != null)

+			cmd += ',' + ui;

+

+		if (typeof(val) != "undefined" && val != null)

+			cmd += ",'" + val + "'";

+

+		cmd += ');';

+

+		// Patch for IE7 bug with hover out not restoring correctly

+		if (tinyMCE.isRealIE)

+			io = 'onmouseover="tinyMCE.lastHover = this;"';

+

+		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled

+		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {

+			// Tiled button

+			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;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">';

+			h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" alt="{$'+lang+'}" title="{$' + lang + '}" />';

+			h += '</a>';

+		} else {

+			// Normal button

+			h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">';

+			h += '<img src="' + img + '" alt="{$'+lang+'}" title="{$' + lang + '}" />';

+			h += '</a>';

+		}

+

+		return h;

+	},

+

+	/**

+	 * Returns the HTML code for a normal button control.

+	 *

+	 * @param {string} id Button control id, this will be the suffix for the element id, the prefix is the editor id.

+	 * @param {string} lang Language variable key name to insert as the title/alt of the button image.

+	 * @param {string} img Image URL to insert, {$themeurl} and {$pluginurl} will be replaced.

+	 * @param {string} mcmd Command to execute when the user clicks the menu arrow button.

+	 * @param {string} cmd Command to execute when the user clicks the main button.

+	 * @param {string} ui Optional user interface boolean for command.

+	 * @param {string} val Optional value for command.

+	 * @return HTML code for a normal button based in input information.

+	 * @type string

+	 */

+	getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) {

+		var h = '', m, x;

+

+		mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');';

+		cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';

+

+		if (typeof(ui) != "undefined" && ui != null)

+			cmd += ',' + ui;

+

+		if (typeof(val) != "undefined" && val != null)

+			cmd += ",'" + val + "'";

+

+		cmd += ');';

+

+		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled

+		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {

+			x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);

+

+			if (tinyMCE.isRealIE)

+				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';

+			else

+				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';

+

+			h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';

+			h += '<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: ' + x + 'px 0" title="{$' + lang + '}" /></a>';

+			h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';

+			h += '</a></span>';

+		} else {

+			if (tinyMCE.isRealIE)

+				h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';

+			else

+				h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton">';

+

+			h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';

+			h += '<img src="' + img + '" title="{$' + lang + '}" /></a>';

+			h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';

+			h += '</a></span>';

+		}

+

+		return h;

+	},

+

+	/**

+	 * Switched classes on menu elements in MSIE.

+	 *

+	 * @param {string} e Event name	out, over.

+	 * @param {HTMLElement} o HTML element to set class on.

+	 */

+	_menuButtonEvent : function(e, o) {

+		if (o.className == 'mceMenuButtonFocus')

+			return;

+

+		if (e == 'over')

+			o.className = o.className + ' mceMenuHover';

+		else

+			o.className = o.className.replace(/\s.*$/, '');

+	},

+

+	/**

+	 * Adds a list of buttons available in the tiled button image used by the button_tile_map option.

+	 *

+	 * @param {string} m Comma separated list of buttons that are available in tiled image.

+	 */

+	addButtonMap : function(m) {

+		var i, a = m.replace(/\s+/, '').split(',');

+

+		for (i=0; i<a.length; i++)

+			this.buttonMap[a[i]] = i;

+	},

+

+	/**

+	 * Gets called when a form is submited with a f.submit call or when a submit button is pressed.

+	 *

+	 * @param {HTMLForm} f Form element that got submitted.

+	 * @param {bool} p Is it a f.submit pathed call.

+	 */

+	formSubmit : function(f, p) {

+		var n, inst, found = false;

+

+		if (f.form)

+			f = f.form;

+

+		// Is it a form that has a TinyMCE instance

+		if (tinyMCE.getParam('save_on_tinymce_forms')) {

+			for (n in tinyMCE.instances) {

+				inst = tinyMCE.instances[n];

+

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				if (inst.formElement) {

+					if (f == inst.formElement.form) {

+						found = true;

+						inst.isNotDirty = true;

+					}

+				}

+			}

+		} else

+			found  = true;

+

+		// Is valid

+		if (found) {

+			tinyMCE.removeTinyMCEFormElements(f);

+			tinyMCE.triggerSave();

+		}

+

+		// Is it patched

+		if (f.mceOldSubmit && p)

+			f.mceOldSubmit();

+	},

+

+	/**

+	 * 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.

+	 */

+	submitPatch : function() {

+		tinyMCE.formSubmit(this, true);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @return true - if the event is to be chained, false - if the event chain is to be canceled.

+	 * @type boolean

+	 */

+	onLoad : function() {

+		var r, i, c, mode, trigger, elements, element, settings, elementId, elm;

+		var selector, deselector, elementRefAr, form;

+

+		// Wait for everything to be loaded first

+		if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {

+			window.setTimeout('tinyMCE.onLoad();', 1);

+			return;

+		}

+

+		if (tinyMCE.isRealIE && window.event.type == "readystatechange" && document.readyState != "complete")

+			return true;

+

+		if (tinyMCE.isLoaded)

+			return true;

+

+		tinyMCE.isLoaded = true;

+

+		// IE produces JS error if TinyMCE is placed in a frame

+		// It seems to have something to do with the selection not beeing

+		// correctly initialized in IE so this hack solves the problem

+		if (tinyMCE.isRealIE && document.body && window.location.href != window.top.location.href) {

+			r = document.body.createTextRange();

+			r.collapse(true);

+			r.select();

+		}

+

+		tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');

+

+		for (c=0; c<tinyMCE.configs.length; c++) {

+			tinyMCE.settings = tinyMCE.configs[c];

+

+			selector = tinyMCE.getParam("editor_selector");

+			deselector = tinyMCE.getParam("editor_deselector");

+			elementRefAr = [];

+

+			// Add submit triggers

+			if (document.forms && tinyMCE.settings.add_form_submit_trigger && !tinyMCE.submitTriggers) {

+				for (i=0; i<document.forms.length; i++) {

+					form = document.forms[i];

+

+					tinyMCE.addEvent(form, "submit", TinyMCE_Engine.prototype.handleEvent);

+					tinyMCE.addEvent(form, "reset", TinyMCE_Engine.prototype.handleEvent);

+					tinyMCE.submitTriggers = true; // Do it only once

+

+					// Patch the form.submit function

+					if (tinyMCE.settings.submit_patch) {

+						try {

+							form.mceOldSubmit = form.submit;

+							form.submit = TinyMCE_Engine.prototype.submitPatch;

+						} catch (e) {

+							// Do nothing

+						}

+					}

+				}

+			}

+

+			// Add editor instances based on mode

+			mode = tinyMCE.settings.mode;

+			switch (mode) {

+				case "exact":

+					elements = tinyMCE.getParam('elements', '', true, ',');

+

+					for (i=0; i<elements.length; i++) {

+						element = tinyMCE._getElementById(elements[i]);

+						trigger = element ? element.getAttribute(tinyMCE.settings.textarea_trigger) : "";

+

+						if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(element, "class")))

+							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]);

+					}

+				break;

+

+				case "specific_textareas":

+				case "textareas":

+					elements = document.getElementsByTagName("textarea");

+

+					for (i=0; i<elements.length; i++) {

+						elm = elements.item(i);

+						trigger = elm.getAttribute(tinyMCE.settings.textarea_trigger);

+

+						if (selector !== '' && !new RegExp('\\b' + selector + '\\b').test(tinyMCE.getAttrib(elm, "class")))

+							continue;

+

+						if (selector !== '')

+							trigger = selector !== '' ? "true" : "";

+

+						if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(elm, "class")))

+							continue;

+

+						if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))

+							elementRefAr[elementRefAr.length] = elm;

+					}

+				break;

+			}

+

+			for (i=0; i<elementRefAr.length; i++) {

+				element = elementRefAr[i];

+				elementId = element.name ? element.name : element.id;

+

+				if (tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) {

+					// Focus breaks in Mozilla

+					if (tinyMCE.isGecko) {

+						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);});

+						// tinyMCE.addEvent(element, "mouseover", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});

+					} else {

+						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); });

+						// tinyMCE.addEvent(element, "mouseenter", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });

+					}

+				} else

+					tinyMCE.addMCEControl(element, elementId);

+			}

+

+			// Handle auto focus

+			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();

+				}, 100);

+			}

+

+			tinyMCE.dispatchCallback(null, 'oninit', 'onInit');

+		}

+	},

+

+	/**

+	 * Returns true/false if a specific object is a TinyMCE_Control instance or not.

+	 *

+	 * @param {object} o Object to check.

+	 * @return true/false if it's a control or not.

+	 * @type boolean

+	 */

+	isInstance : function(o) {

+		return o != null && typeof(o) == "object" && o.isTinyMCE_Control;

+	},

+

+	/**

+	 * Returns a specific configuration setting or the default value if it wasn't found.

+	 *

+	 * @param {string} name Configuration setting to get.

+	 * @param {string} default_value Default value to return if it wasn't found.

+	 * @param {boolean} strip_whitespace Optional remove all whitespace.

+	 * @param {string} split_chr Split char/regex/string.

+	 * @return Number, string or other object based in parameter and default_value.

+	 * @type object

+	 */

+	getParam : function(name, default_value, strip_whitespace, split_chr) {

+		var i, outArray, value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];

+

+		// Fix bool values

+		if (value == "true" || value == "false")

+			return (value == "true");

+

+		if (strip_whitespace)

+			value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");

+

+		if (typeof(split_chr) != "undefined" && split_chr != null) {

+			value = value.split(split_chr);

+			outArray = [];

+

+			for (i=0; i<value.length; i++) {

+				if (value[i] && value[i] !== '')

+					outArray[outArray.length] = value[i];

+			}

+

+			value = outArray;

+		}

+

+		return value;

+	},

+

+	/**

+	 * Returns a language variable value from the language packs.

+	 *

+	 * @param {string} name Name of the key to retrive.

+	 * @param {string} default_value Optional default value to return if it wasn't found.

+	 * @param {boolean} parse_entities Is HTML entities to be resolved or not.

+	 * @param {Array} va Optional name/value array of variables to replace in language string.	 

+	 * @return Language string value could be a number if it's a relative dimenstion.

+	 * @type object

+	 */

+	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;

+	},

+

+	/**

+	 * HTML entity decode a string, replaces &lt; with <.

+	 *

+	 * @param {string} s Entity string to decode into normal string.

+	 * @return Entity decoded string.

+	 * @type string

+	 */

+	entityDecode : function(s) {

+		var e = document.createElement("div");

+

+		e.innerHTML = s;

+

+		return !e.firstChild ? s : e.firstChild.nodeValue;

+	},

+

+	/**

+	 * Adds language items to the global language array.

+	 *

+	 * @param {string} prefix Prefix string to add infront of every array item before adding it.

+	 * @param {Array} ar Language item array to add to global language array.

+	 */

+	addToLang : function(prefix, ar) {

+		var k;

+

+		for (k in ar) {

+			if (typeof(ar[k]) == 'function')

+				continue;

+

+			tinyMCELang[(k.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix !== '' ? (prefix + "_") : '') + k] = ar[k];

+		}

+

+		this.loadNextScript();

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {boolean} focus Optional state if the last selected editor instance is to be focused or not.

+	 * @param {boolean} setup_content Optional state if it's called from setup content function or not.

+	 */

+	triggerNodeChange : function(focus, setup_content) {

+		var elm, inst, editorId, undoIndex = -1, undoLevels = -1, doc, anySelection = false, st;

+

+		if (tinyMCE.selectedInstance) {

+			inst = tinyMCE.selectedInstance;

+			elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();

+

+/*			if (elm == inst.lastTriggerEl)

+				return;

+

+			inst.lastTriggerEl = elm;*/

+

+			editorId = inst.editorId;

+			st = inst.selection.getSelectedText();

+

+			if (tinyMCE.settings.auto_resize)

+				inst.resizeToContent();

+

+			if (setup_content && tinyMCE.isGecko && inst.isHidden())

+				elm = inst.getBody();

+

+			inst.switchSettings();

+

+			if (tinyMCE.selectedElement)

+				anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (st && st.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();

+	},

+

+	/**

+	 * Executes the custom cleanup functions on the specified content.

+	 *

+	 * @param {TinyMCE_Control} inst TinyMCE editor control instance.

+	 * @param {string} type Event type to call.

+	 * @param {object} content DOM element or string to pass to handlers depending on type.

+	 * @return string or DOM element depending on type.

+	 * @private

+	 */

+	_customCleanup : function(inst, type, content) {

+		var pl, po, i, customCleanup;

+

+		// Call custom cleanup

+		customCleanup = tinyMCE.settings.cleanup_callback;

+		if (customCleanup != '')

+			content = tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback, window)(type, content, inst);

+

+		// Trigger theme cleanup

+		po = tinyMCE.themes[tinyMCE.settings.theme];

+		if (po && po.cleanup)

+			content = po.cleanup(type, content, inst);

+

+		// Trigger plugin cleanups

+		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;

+	},

+

+	/**

+	 * Sets the HTML contents of the selected editor instance.

+	 *

+	 * @param {string} h HTML contents to set in the selected instance.

+	 * @deprecated

+	 */

+	setContent : function(h) {

+		if (tinyMCE.selectedInstance) {

+			tinyMCE.selectedInstance.execCommand('mceSetContent', false, h);

+			tinyMCE.selectedInstance.repaint();

+		}

+	},

+

+	/**

+	 * Loads a theme specific language pack.

+	 *

+	 * @param {string} name Optional name of the theme to load language pack from.

+	 */

+	importThemeLanguagePack : function(name) {

+		if (typeof(name) == "undefined")

+			name = tinyMCE.settings.theme;

+

+		tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings.language + '.js');

+	},

+

+	/**

+	 * Loads a plugin specific language pack.

+	 *

+	 * @param {string} name Plugin name/id to load language pack for.

+	 */

+	importPluginLanguagePack : function(name) {

+		var b = tinyMCE.baseURL + '/plugins/' + name;

+

+		if (this.plugins[name])

+			b = this.plugins[name].baseURL;

+

+		tinyMCE.loadScript(b + '/langs/' + tinyMCE.settings.language +  '.js');

+	},

+

+	/**

+	 * Replaces language, args and settings variables in a HTML string.

+	 *

+	 * @param {string} h HTML string to replace language variables in.

+	 * @param {Array} ag Optional arguments array to take variables from.

+	 * @return HTML string with replaced varliables.

+	 * @type string

+	 */

+	applyTemplate : function(h, ag) {

+		return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}', 'gi'), function(m, s) {

+			if (s.indexOf('lang_') == 0 && tinyMCELang[s])

+				return tinyMCELang[s];

+

+			if (ag && ag[s])

+				return ag[s];

+

+			if (tinyMCE.settings[s])

+				return tinyMCE.settings[s];

+

+			if (m == 'themeurl')

+				return tinyMCE.themeURL;

+

+			return m;

+		});

+	},

+

+	/**

+	 * Replaces a specific variable in the string with a nother string.

+	 *

+	 * @param {string} h String to search in for the variable.

+	 * @param {string} r Variable name to search for.

+	 * @param {string} v Value to insert where a variable is found.

+	 * @return String with replaced variable.

+	 * @type string

+	 */

+	replaceVar : function(h, r, v) {

+		return h.replace(new RegExp('{\\\$' + r + '}', 'g'), v);

+	},

+

+	/**

+	 * 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 keys: file, width, height, close_previous.

+	 *

+	 * @param {Array} template Popup template data such as with, height etc.

+	 * @param {Array} args Popup arguments that is to be passed to the popup such as custom data.

+	 */

+	openWindow : function(template, args) {

+		var html, width, height, x, y, resizable, scrollbars, url, name, win, modal, features;

+

+		args = !args ? {} : args;

+

+		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;

+

+		// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!

+		if (tinyMCE.isIE)

+			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;

+

+		// Replace all args as variables in URL

+		for (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);

+

+			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.isRealIE) && resizable != 'yes' && tinyMCE.settings.dialog_type == "modal") {

+				height += 10;

+

+				features = "resizable:" + resizable + ";scroll:" + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:" + width + "px;dialogHeight:" + height + "px;";

+

+				window.showModalDialog(url, window, features);

+			} else {

+				modal = (resizable == "yes") ? "no" : "yes";

+

+				if (tinyMCE.isGecko && tinyMCE.isMac)

+					modal = "no";

+

+				if (template.close_previous != "no")

+					try {tinyMCE.lastWindow.close();} catch (ex) {}

+

+				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;

+

+				try {

+					win.resizeTo(width, height);

+				} catch(e) {

+					// Ignore

+				}

+

+				// Make it bigger if statusbar is forced

+				if (tinyMCE.isGecko) {

+					if (win.document.defaultView.statusbar.visible)

+						win.resizeBy(0, tinyMCE.isMac ? 10 : 24);

+				}

+

+				win.focus();

+			}

+		}

+	},

+

+	/**

+	 * Closes the specified window. This function is deprecated and should be replaced with

+	 * tinyMCEPopup.close();.

+	 *

+	 * @param {DOMWindow} win Window reference to close.

+	 * @deprecated

+	 */

+	closeWindow : function(win) {

+		win.close();

+	},

+

+	/**

+	 * Returns the visual aid class string, this will add/remove the visual aid class.

+	 *

+	 * @param {string} class_name Class name value to add/remove visual aid classes from.

+	 * @param {boolean} state true/false if the classes should be added or removed.

+	 * @return New class value containing the visual aid classes or not.

+	 * @type string

+	 */

+	getVisualAidClass : function(class_name, state) {

+		var i, classNames, ar, className, aidClass = tinyMCE.settings.visual_table_class;

+

+		if (typeof(state) == "undefined")

+			state = tinyMCE.settings.visual;

+

+		// Split

+		classNames = [];

+		ar = class_name.split(' ');

+		for (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;

+

+		// Glue

+		className = "";

+		for (i=0; i<classNames.length; i++) {

+			if (i > 0)

+				className += " ";

+

+			className += classNames[i];

+		}

+

+		return className;

+	},

+

+	/**

+	 * Adds visual aid classes to all elements that need them recursive in the DOM tree.

+	 *

+	 * @param {HTMLElement} el HTML element to add visual aid classes to.

+	 * @param {boolean} deep Should they be added to all children aswell.

+	 * @param {boolean} state Should they be added or removed.

+	 * @param {TinyMCE_Control} inst TinyMCE editor control instance to add/remove them to/from.

+	 */

+	handleVisualAid : function(el, deep, state, inst, skip_dispatch) {

+		var i, x, y, tableElement, anchorName, oldW, oldH, bo, cn;

+

+		if (!el)

+			return;

+

+		if (!skip_dispatch)

+			tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst);

+

+		tableElement = null;

+

+		switch (el.nodeName) {

+			case "TABLE":

+				oldW = el.style.width;

+				oldH = el.style.height;

+				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 (y=0; y<el.rows.length; y++) {

+					for (x=0; x<el.rows[y].cells.length; x++) {

+						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":

+				anchorName = tinyMCE.getAttrib(el, "name");

+

+				if (anchorName !== '' && state) {

+					el.title = anchorName;

+					tinyMCE.addCSSClass(el, 'mceItemAnchor');

+				} else if (anchorName !== '' && !state)

+					el.className = '';

+

+				break;

+		}

+

+		if (deep && el.hasChildNodes()) {

+			for (i=0; i<el.childNodes.length; i++)

+				tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {boolean} m Mode state, true is to replace the src, href attributes to mce_tsrc and mce_thref.

+	 * @param {HTMLElement} e HTML element to replace them in. (Will be used if m is 0)

+	 * @param {string} h HTML code to replace them in. (Will be used if m is 1)

+	 * @return Converted string or the specified HTML value depending on mode.

+	 * @type string

+	 */

+	fixGeckoBaseHREFBug : function(m, e, h) {

+		var xsrc, xhref;

+

+		if (tinyMCE.isGecko) {

+			if (m == 1) {

+				h = h.replace(/\ssrc=/gi, " mce_tsrc=");

+				h = h.replace(/\shref=/gi, " mce_thref=");

+

+				return h;

+			} else {

+				// Why bother if there is no src or href broken

+				if (!new RegExp('(src|href)=', 'g').test(h))

+					return h;

+

+				// Restore src and href that gets messed up by Gecko

+				tinyMCE.selectElements(e, 'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK', function (n) {

+					xsrc = tinyMCE.getAttrib(n, "mce_tsrc");

+					xhref = tinyMCE.getAttrib(n, "mce_thref");

+

+					if (xsrc !== '') {

+						try {

+							n.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xsrc);

+						} catch (e) {

+							// Ignore, Firefox cast exception if local file wasn't found

+						}

+

+						n.removeAttribute("mce_tsrc");

+					}

+

+					if (xhref !== '') {

+						try {

+							n.href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xhref);

+						} catch (e) {

+							// Ignore, Firefox cast exception if local file wasn't found

+						}

+

+						n.removeAttribute("mce_thref");

+					}

+

+					return false;

+				});

+

+				// Restore text/comment nodes

+				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;

+	},

+

+	/**

+	 * Sets the HTML code of a specific document.

+	 * Todo: Try to merge/remove this one.

+	 *

+	 * @param {DOMDocument} doc DOM document to set the HTML code in.

+	 * @param {string} html_content HTML contents to set in DOM document.

+	 * @private

+	 */

+	_setHTML : function(doc, html_content) {

+		var i, html, paras, node;

+

+		// Force closed anchors open

+		//html_content = html_content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');

+

+		html_content = tinyMCE.cleanupHTMLCode(html_content);

+

+		// Try innerHTML if it fails use pasteHTML in MSIE

+		try {

+			tinyMCE.setInnerHTML(doc.body, html_content);

+		} catch (e) {

+			if (this.isMSIE)

+				doc.body.createTextRange().pasteHTML(html_content);

+		}

+

+		// Content duplication bug fix

+		if (tinyMCE.isIE && tinyMCE.settings.fix_content_duplication) {

+			// Remove P elements in P elements

+			paras = doc.getElementsByTagName("P");

+			for (i=0; i<paras.length; i++) {

+				node = paras[i];

+

+				while ((node = node.parentNode) != null) {

+					if (node.nodeName == "P")

+						node.outerHTML = node.innerHTML;

+				}

+			}

+

+			// Content duplication bug fix (Seems to be word crap)

+			html = doc.body.innerHTML;

+

+			// Always set the htmlText output

+			tinyMCE.setInnerHTML(doc.body, html);

+		}

+

+		tinyMCE.cleanupAnchors(doc);

+

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			tinyMCE.convertSpansToFonts(doc);

+	},

+

+	/**

+	 * Returns the editor instance id of a specific form element.

+	 *

+	 * @param {string} form_element Form element name to get instance id for.

+	 * @return TinyMCE editor instance id or null if it wasn't found.

+	 * @type string

+	 */

+	getEditorId : function(form_element) {

+		var inst = this.getInstanceById(form_element);

+

+		if (!inst)

+			return null;

+

+		return inst.editorId;

+	},

+

+	/**

+	 * Returns a TinyMCE editor instance by the specified editor id or null if it wasn't found.

+	 *

+	 * @param {string} editor_id Editor id to get instance for.

+	 * @return TinyMCE editor control instance or null if it wasn't found.

+	 * @type TinyMCE_Control

+	 */

+	getInstanceById : function(editor_id) {

+		var inst = this.instances[editor_id], n;

+

+		if (!inst) {

+			for (n in tinyMCE.instances) {

+				inst = tinyMCE.instances[n];

+

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				if (inst.formTargetElementId == editor_id)

+					return inst;

+			}

+		} else

+			return inst;

+

+		return null;

+	},

+

+	/**

+	 * Queries a command value for a specific command on a specific editor instance.

+	 *

+	 * @param {string} editor_id Editor id to query command value on.

+	 * @param {string} command Command to query for.

+	 * @return Command value passed from browser.

+	 * @type object

+	 */

+	queryInstanceCommandValue : function(editor_id, command) {

+		var inst = tinyMCE.getInstanceById(editor_id);

+

+		if (inst)

+			return inst.queryCommandValue(command);

+

+		return false;

+	},

+

+	/**

+	 * Queries a command state for a specific command on a specific editor instance.

+	 *

+	 * @param {string} editor_id Editor id to query command state on.

+	 * @param {string} command Command to query for.

+	 * @return Command state passed from browser.

+	 * @type boolean

+	 */

+	queryInstanceCommandState : function(editor_id, command) {

+		var inst = tinyMCE.getInstanceById(editor_id);

+

+		if (inst)

+			return inst.queryCommandState(command);

+

+		return null;

+	},

+

+	/**

+	 * Sets the window argument to be passed to TinyMCE popup.

+	 *

+	 * @param {string} n Window argument name.

+	 * @param {string} v Window argument value.

+	 */

+	setWindowArg : function(n, v) {

+		this.windowArgs[n] = v;

+	},

+

+	/**

+	 * Returns the window argument to be passed to TinyMCE popup.

+	 * Use: tinyMCEPopup.getWindowArg instead.

+	 *

+	 * @param {string} n Window argument name.

+	 * @return Argument value or default value if it wasn't found.

+	 * @deprecated

+	 */

+	getWindowArg : function(n, d) {

+		return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n];

+	},

+

+	/**

+	 * Returns a array of CSS classes that is available in a document.

+	 * Todo: Fix this one, it's so ugly. :)

+	 *

+	 * @param {string} editor_id Editor id to get CSS classes from.

+	 * @param {DOMDocument} doc DOM document to get the CSS classes from.

+	 * @return Array of CSS classes that is available in a document.

+	 * @type Array

+	 */

+	getCSSClasses : function(editor_id, doc) {

+		var i, c, x, rule, styles, rules, csses, selectorText, inst = tinyMCE.getInstanceById(editor_id);

+		var cssClass, addClass, p;

+

+		if (!inst)

+			inst = tinyMCE.selectedInstance;

+

+		if (!inst)

+			return [];

+

+		if (!doc)

+			doc = inst.getDoc();

+

+		// Is cached, use that

+		if (inst && inst.cssClasses.length > 0)

+			return inst.cssClasses;

+

+		if (!doc)

+			return;

+

+		styles = doc.styleSheets;

+

+		if (styles && styles.length > 0) {

+			for (x=0; x<styles.length; x++) {

+				csses = null;

+

+				try {

+					csses = tinyMCE.isIE ? doc.styleSheets(x).rules : styles[x].cssRules;

+				} catch(e) {

+					// Just ignore any errors I know this is ugly!!

+				}

+	

+				if (!csses)

+					return [];

+

+				for (i=0; i<csses.length; i++) {

+					selectorText = csses[i].selectorText;

+

+					// Can be multiple rules per selector

+					if (selectorText) {

+						rules = selectorText.split(',');

+						for (c=0; c<rules.length; c++) {

+							rule = rules[c];

+

+							// Strip spaces between selectors

+							while (rule.indexOf(' ') == 0)

+								rule = rule.substring(1);

+

+							// Invalid rule

+							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;

+

+							// Is class rule

+							if (rule.indexOf('.') != -1) {

+								cssClass = rule.substring(rule.indexOf('.') + 1);

+								addClass = true;

+

+								for (p=0; p<inst.cssClasses.length && addClass; p++) {

+									if (inst.cssClasses[p] == cssClass)

+										addClass = false;

+								}

+

+								if (addClass)

+									inst.cssClasses[inst.cssClasses.length] = cssClass;

+							}

+						}

+					}

+				}

+			}

+		}

+

+		return inst.cssClasses;

+	},

+

+	/**

+	 * Regexp replaces the contents of a string. Use normal replace instead.

+	 *

+	 * @param {string} in_str String to replace in.

+	 * @param {string} reg_exp Regexp to replace.

+	 * @param {string} replace_str String to replace with.

+	 * @param {string} in_str Optional regexp options like "gi".

+	 * @return Replaced string value.

+	 * @type string

+	 * @deprecated

+	 */

+	regexpReplace : function(in_str, reg_exp, replace_str, opts) {

+		var re;

+

+		if (in_str == null)

+			return in_str;

+

+		if (typeof(opts) == "undefined")

+			opts = 'g';

+

+		re = new RegExp(reg_exp, opts);

+

+		return in_str.replace(re, replace_str);

+	},

+

+	/**

+	 * Removes all prefix, suffix whitespace of a string.

+	 *

+	 * @param {string} s String to replace whitespace in.

+	 * @return Replaced string value.

+	 * @type string

+	 */

+	trim : function(s) {

+		return s.replace(/^\s*|\s*$/g, "");

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} s String to replace event data in.

+	 * @return Replaced string value.

+	 * @type string

+	 */

+	cleanupEventStr : function(s) {

+		s = "" + s;

+		s = s.replace('function anonymous()\n{\n', '');

+		s = s.replace('\n}', '');

+		s = s.replace(/^return true;/gi, ''); // Remove event blocker

+

+		return s;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} c Control name/id to get HTML code for.

+	 * @return HTML code for the specified control or empty string if it wasn't found.

+	 * @type string

+	 */

+	getControlHTML : function(c) {

+		var i, l, n, o, v, rtl = tinyMCE.getLang('lang_dir') == 'rtl';

+

+		l = tinyMCE.plugins;

+		for (n in l) {

+			o = l[n];

+

+			if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {

+				if (rtl)

+					return '<span dir="rtl">' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + '</span>';

+

+				return tinyMCE.replaceVar(v, "pluginurl", o.baseURL);

+			}

+		}

+

+		o = tinyMCE.themes[tinyMCE.settings.theme];

+		if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {

+			if (rtl)

+				return '<span dir="rtl">' + v + '</span>';

+

+			return v;

+		}

+

+		return '';

+	},

+

+	/**

+	 * Evaluates the specified function and uses the array of arguments.

+	 *

+	 * @param {string} f Function reference to execute.

+	 * @param {int} idx Index in array to start grabbing arguments from.

+	 * @param {Array} a Array of function arguments.

+	 * @param {Object} o Optional object reference to call function on.

+	 * @return Value returned from the evaluated function.

+	 * @type object

+	 */

+	evalFunc : function(f, idx, a, o) {

+		o = !o ? window : o;

+		f = typeof(f) == 'function' ? f : o[f];

+

+		return f.apply(o, Array.prototype.slice.call(a, idx));

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {TinyMCE_Control} i TinyMCE editor control instance to execute callback on.

+	 * @param {string} p TinyMCE callback parameter to execute.

+	 * @param {string} n Function name to execute.

+	 * @return true/false if they where dispatched.

+	 */

+	dispatchCallback : function(i, p, n) {

+		return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {TinyMCE_Control} i TinyMCE editor control instance to execute callback on.

+	 * @param {string} p TinyMCE callback parameter to execute.

+	 * @param {string} n Function name to execute.

+	 * @return true/false if a callback was executed.

+	 */

+	executeCallback : function(i, p, n) {

+		return this.callFunc(i, p, n, 1, this.executeCallback.arguments);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {TinyMCE_Control} i TinyMCE editor control instance to execute callback on.

+	 * @param {string} p TinyMCE callback parameter to execute.

+	 * @param {string} n Function name to execute.

+	 * @return true/false if a callback was executed.

+	 */

+	execCommandCallback : function(i, p, n) {

+		return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments);

+	},

+

+	/**

+	 * Executes callback chain. Callback order: Option, Plugins, Themes.

+	 *

+	 * @param {TinyMCE_Control} ins TinyMCE editor control instance to execute callback on.

+	 * @param {string} p TinyMCE callback parameter name.

+	 * @param {string} n Function name to execute.

+	 * @param {int} m Execution mode value, 0 = no chain, 1 = event chain, 2 = execcommand chain.

+	 * @param {Array} a Array with function arguments.

+	 * @return true - if the callback was executed, false if it wasn't.

+	 * @type boolean

+	 */

+	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(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(n, 3, a, o)) == s && m > 0)

+					return true;

+			}

+		}

+

+		l = tinyMCE.themes;

+		for (on in l) {

+			o = l[on];

+

+			if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)

+				return true;

+		}

+

+		return false;

+	},

+

+	/**

+	 * Resolves a x.x.x string into a reference for objects in object in objects.

+	 *

+	 * @param {string} s Dot notation string.

+	 * @param {object} o Object tree.

+	 * @return {object} Reference based on dots.

+	 */

+	resolveDots : function(s, o) {

+		var i;

+

+		if (typeof(s) == 'string') {

+			for (i=0, s=s.split('.'); i<s.length; i++)

+				o = o[s[i]];

+		} else

+			o = s;

+

+		return o;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} s String to encode.

+	 * @return XML Encoded string.

+	 * @type string

+	 */

+	xmlEncode : function(s) {

+		return s ? ('' + s).replace(this.xmlEncodeRe, function (c, b) {

+			switch (c) {

+				case '&':

+					return '&amp;';

+

+				case '"':

+					return '&quot;';

+

+				case '<':

+					return '&lt;';

+

+				case '>':

+					return '&gt;';

+			}

+

+			return c;

+		}) : s;

+	},

+

+	/**

+	 * Add methods to existing class.

+	 *

+	 * @param {Object} c Function/Class to add methods to.

+	 * @param {Object} m List of methods to add. Name/Value collection.

+	 */

+	add : function(c, m) {

+		var n;

+

+		for (n in m) {

+			if (m.hasOwnProperty(n))

+				c.prototype[n] = m[n];

+		}

+	},

+

+	/**

+	 * Extends the specified prototype with new methods.

+	 *

+	 * @param {Object} p Prototype to extend with new methods.

+	 * @param {Object} np New prototype to extend the other one with.

+	 * @return Extended prototype array.

+	 * @type Object

+	 */

+	extend : function(p, np) {

+		var o = {}, n;

+

+		o.parent = p;

+

+		for (n in p) {

+			if (p.hasOwnProperty(n))

+				o[n] = p[n];

+		}

+

+		for (n in np) {

+			if (np.hasOwnProperty(n))

+				o[n] = np[n];

+		}

+

+		return o;

+	},

+

+	/**

+	 * Hides any visible menu layers.

+	 *

+	 * @private

+	 */

+	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;

+		}

+	}

+

+	/**#@-*/

+};

+

+// Global instances

+var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors

+var tinyMCE = new TinyMCE_Engine();

+var tinyMCELang = {};

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Event.class.js
@@ -1,1 +1,358 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * The contents of this file will be wrapped in a class later on.

+ */

+

+/**#@+

+ * @member TinyMCE_Engine

+ * @method

+ */

+tinyMCE.add(TinyMCE_Engine, {

+	/**

+	 * Sets the enabled/disabled state of build in events on the specific node.

+	 * This function is needed since some events gets executed in WYSIWYG mode.

+	 *

+	 * @param {HTMLNode} node HTML node to enable/disable events on.

+	 * @param {boolean} state true/false state if the events should be disabled or enabled.

+	 * @private

+	 */

+	_setEventsEnabled : function(node, state) {

+		var evs, x, y, elms, i, event;

+		var events = ['onfocus','onblur','onclick','ondblclick',

+					'onmousedown','onmouseup','onmouseover','onmousemove',

+					'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];

+

+		evs = tinyMCE.settings.event_elements.split(',');

+		for (y=0; y<evs.length; y++){

+			elms = node.getElementsByTagName(evs[y]);

+			for (i=0; i<elms.length; i++) {

+				event = "";

+

+				for (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);

+					}

+				}

+			}

+		}

+	},

+

+	/**

+	 * Patch function for MSIE specific events, this one simply grabs the window.event object and

+	 * passes it as a argument to the handleEvent function of the TinyMCE_Engine class.

+	 *

+	 * @param {string} editor_id Editor id to patch.

+	 * @private

+	 */

+	_eventPatch : function(editor_id) {

+		var n, inst, win, e;

+

+		// Remove odd, error

+		if (typeof(tinyMCE) == "undefined")

+			return true;

+

+		try {

+			// Try selected instance first

+			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;

+				}

+			}

+

+			// Search for it

+			for (n in tinyMCE.instances) {

+				inst = tinyMCE.instances[n];

+

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				inst.select();

+				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) {

+			// Ignore error if iframe is pointing to external URL

+		}

+	},

+

+	findEvent : function(e) {

+		var n, inst;

+

+		if (e)

+			return e;

+

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (tinyMCE.isInstance(inst) && inst.getWin().event)

+				return inst.getWin().event;

+		}

+

+		return null;

+	},

+

+	/**

+	 * 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.

+	 */

+	unloadHandler : function() {

+		tinyMCE.triggerSave(true, true);

+	},

+

+	/**

+	 * Adds the handleEvent function to the specified editor instance.

+	 *

+	 * @param {inst} inst Editor control instance to add event handler to.

+	 */

+	addEventHandlers : function(inst) {

+		this.setEventHandlers(inst, 1);

+	},

+

+	/**

+	 * Sets or removes event handles form the specified instance.

+	 *

+	 * @param {bool} s True/false state if to add or remove event handlers.

+	 */

+	setEventHandlers : function(inst, s) {

+		var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;

+

+		ie = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'controlselect', 'dblclick'];

+		ot = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'focus', 'blur', 'dragdrop'];

+

+		inst.switchSettings();

+

+		if (tinyMCE.isIE) {

+			for (i=0; i<ie.length; i++)

+				f(doc, ie[i], TinyMCE_Engine.prototype._eventPatch);

+		} else {

+			for (i=0; i<ot.length; i++)

+				f(doc, ot[i], tinyMCE.handleEvent);

+

+			// Force designmode

+			try {

+				doc.designMode = "On";

+			} catch (e) {

+				// Ignore

+			}

+		}

+	},

+

+	/**

+	 * 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.

+	 */

+	onMouseMove : function() {

+		var inst, lh;

+

+		// Fix for IE7 bug where it's not restoring hover on anchors correctly

+		if (tinyMCE.lastHover) {

+			lh = tinyMCE.lastHover;

+

+			// Call out on menus and refresh class on normal buttons

+			if (lh.className.indexOf('mceMenu') != -1)

+				tinyMCE._menuButtonEvent('out', lh);

+			else

+				lh.className = lh.className;

+

+			tinyMCE.lastHover = null;

+		}

+

+		if (!tinyMCE.hasMouseMoved) {

+			inst = tinyMCE.selectedInstance;

+

+			// Workaround for bug #1437457 (Odd MSIE bug)

+			if (inst.isFocused) {

+				inst.undoBookmark = inst.selection.getBookmark();

+				tinyMCE.hasMouseMoved = true;

+			}

+		}

+

+	//	tinyMCE.cancelEvent(inst.getWin().event);

+	//	return false;

+	},

+

+	/**

+	 * Cancels the specified event, this will disable the event from be passed to other listeners in event chain.

+	 *

+	 * @param {DOMEvent} e Event to cancel.

+	 * @return Returns false.

+	 * @type bool

+	 */

+	cancelEvent : function(e) {

+		if (!e)

+			return false;

+

+		if (tinyMCE.isIE) {

+			e.returnValue = false;

+			e.cancelBubble = true;

+		} else {

+			e.preventDefault();

+			e.stopPropagation && e.stopPropagation();

+		}

+

+		return false;

+	},

+

+	/**

+	 * Adds a event handler function to the specified object.

+	 *

+	 * @param {HTMLElement} o Object to add event handler to.

+	 * @param {string} n Event name to listen to for example "click".

+	 * @param {function} h Function handler to execute when event occurs.

+	 */

+	addEvent : function(o, n, h) {

+		// Add cleanup for all non unload events

+		if (n != 'unload') {

+			function clean() {

+				var ex;

+

+				try {

+					tinyMCE.removeEvent(o, n, h);

+					tinyMCE.removeEvent(window, 'unload', clean);

+					o = n = h = null;

+				} catch (ex) {

+					// IE may produce access denied exception on unload

+				}

+			}

+

+			// Add memory cleaner

+			tinyMCE.addEvent(window, 'unload', clean);

+		}

+

+		if (o.attachEvent)

+			o.attachEvent("on" + n, h);

+		else

+			o.addEventListener(n, h, false);

+	},

+

+	/**

+	 * Removes a event handler function from the specified object.

+	 *

+	 * @param {HTMLElement} o Object to remove event handler from.

+	 * @param {string} n Event name to stop listening for. Example "click".

+	 * @param {function} h Function handler to detach from the event.

+	 */

+	removeEvent : function(o, n, h) {

+		if (o.detachEvent)

+			o.detachEvent("on" + n, h);

+		else

+			o.removeEventListener(n, h, false);

+	},

+

+	/**

+	 * Adds accessibility keydown handler to the specified select element.

+	 *

+	 * @param {DOMEvent} e Event that gets passed when the element is focused.

+	 * @param {HTMLElement} s Select element that the keydown handler gets added to.

+	 * @param {DOMWindow} w DOM window reference to add.

+	 */

+	addSelectAccessibility : function(e, s, w) {

+		// Add event handlers 

+		if (!s._isAccessible) {

+			s.onkeydown = tinyMCE.accessibleEventHandler;

+			s.onblur = tinyMCE.accessibleEventHandler;

+			s._isAccessible = true;

+			s._win = w;

+		}

+

+		return false;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {DOMEvent} e DOM event object instance.

+	 */

+	accessibleEventHandler : function(e) {

+		var elm, win = this._win;

+

+		e = tinyMCE.isIE ? win.event : e;

+		elm = tinyMCE.isIE ? e.srcElement : e.target;

+

+		// Unpiggyback onchange on blur

+		if (e.type == "blur") {

+			if (elm.oldonchange) {

+				elm.onchange = elm.oldonchange;

+				elm.oldonchange = null;

+			}

+

+			return true;

+		}

+

+		// Piggyback onchange

+		if (elm.nodeName == "SELECT" && !elm.oldonchange) {

+			elm.oldonchange = elm.onchange;

+			elm.onchange = null;

+		}

+

+		// Execute onchange and remove piggyback

+		if (e.keyCode == 13 || e.keyCode == 32) {

+			elm.onchange = elm.oldonchange;

+			elm.onchange();

+			elm.oldonchange = null;

+

+			tinyMCE.cancelEvent(e);

+			return false;

+		}

+

+		return true;

+	},

+

+	/**

+	 * Resets the iframe width and height to it's old values before a drag/drop operation occured.

+	 * This function is used in a workaround for a MSIE bug where drag/drop fails in iframes with width/height in %. 

+	 */ 

+	_resetIframeHeight : function() {

+		var ife;

+

+		if (tinyMCE.isRealIE) {

+			ife = tinyMCE.selectedInstance.iframeElement;

+

+	/*		if (ife._oldWidth) {

+				ife.style.width = ife._oldWidth;

+				ife.width = ife._oldWidth;

+			}*/

+

+			if (ife._oldHeight) {

+				ife.style.height = ife._oldHeight;

+				ife.height = ife._oldHeight;

+			}

+		}

+	}

+

+	/**#@-*/

+});

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js
@@ -1,1 +1,337 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * @class Forces P tags on return/enter in Gecko, Opera and Safari.

+ * @member TinyMCE_ForceParagraphs

+ * @private

+ * @abstract

+ */

+var TinyMCE_ForceParagraphs = {

+	/**#@+

+	 * @member TinyMCE_ForceParagraphs

+	 * @method

+	 * @private

+	 * @static

+	 */

+

+	/**

+	 * Inserts a paragraph at the current cursor location.

+	 *

+	 * @param {TinyMCE_Control} inst TinyMCE editor control instance.

+	 * @param {DOMEvent} e DOM event object.

+	 * @return true on success or false if it fails.

+	 * @type boolean

+	 * @private

+	 */

+	_insertPara : function(inst, e) {

+		var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0);

+		var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock;

+		var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null;

+		var paraBefore, paraAfter, startChop, endChop, contents, i;

+

+		function isEmpty(para) {

+			var nodes;

+

+			function isEmptyHTML(html) {

+				return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == '';

+			}

+

+			// Check for images

+			if (para.getElementsByTagName("img").length > 0)

+				return false;

+

+			// Check for tables

+			if (para.getElementsByTagName("table").length > 0)

+				return false;

+

+			// Check for HRs

+			if (para.getElementsByTagName("hr").length > 0)

+				return false;

+

+			// Check all textnodes

+			nodes = tinyMCE.getNodeTree(para, [], 3);

+			for (i=0; i<nodes.length; i++) {

+				if (!isEmptyHTML(nodes[i].nodeValue))

+					return false;

+			}

+

+			// No images, no tables, no hrs, no text content then it's empty

+			return true;

+		}

+

+	//	tinyMCE.debug(body.innerHTML);

+

+	//	debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());

+

+		// Setup before range

+		rngBefore = doc.createRange();

+		rngBefore.setStart(sel.anchorNode, sel.anchorOffset);

+		rngBefore.collapse(true);

+

+		// Setup after range

+		rngAfter = doc.createRange();

+		rngAfter.setStart(sel.focusNode, sel.focusOffset);

+		rngAfter.collapse(true);

+

+		// Setup start/end points

+		direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;

+		startNode = direct ? sel.anchorNode : sel.focusNode;

+		startOffset = direct ? sel.anchorOffset : sel.focusOffset;

+		endNode = direct ? sel.focusNode : sel.anchorNode;

+		endOffset = direct ? sel.focusOffset : sel.anchorOffset;

+

+		startNode = startNode.nodeName == "HTML" ? doc.body : startNode; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes

+		startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;

+		endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;

+

+		// Get block elements

+		startBlock = inst.getParentBlockElement(startNode);

+		endBlock = inst.getParentBlockElement(endNode);

+

+		// If absolute force paragraph generation within

+		if (startBlock && (startBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(startBlock.style.position)))

+			startBlock = null;

+

+		if (endBlock && (endBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(endBlock.style.position)))

+			endBlock = null;

+

+		// Use current block name

+		if (startBlock != null) {

+			blockName = startBlock.nodeName;

+

+			// Use P instead

+			if (/(TD|TABLE|TH|CAPTION)/.test(blockName) || (blockName == "DIV" && /left|right/gi.test(startBlock.style.cssFloat)))

+				blockName = "P";

+		}

+

+		// Within a list use normal behaviour

+		if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)

+			return false;

+

+		// Within a table create new paragraphs

+		if ((startBlock != null && startBlock.nodeName == "TABLE") || (endBlock != null && endBlock.nodeName == "TABLE"))

+			startBlock = endBlock = null;

+

+		// Setup new paragraphs

+		paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);

+		paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);

+

+		// Is header, then force paragraph under

+		if (/^(H[1-6])$/.test(blockName))

+			paraAfter = doc.createElement("p");

+

+		// Setup chop nodes

+		startChop = startNode;

+		endChop = endNode;

+

+		// Get startChop node

+		node = startChop;

+		do {

+			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))

+				break;

+

+			startChop = node;

+		} while ((node = node.previousSibling ? node.previousSibling : node.parentNode));

+

+		// Get endChop node

+		node = endChop;

+		do {

+			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))

+				break;

+

+			endChop = node;

+		} while ((node = node.nextSibling ? node.nextSibling : node.parentNode));

+

+		// Fix when only a image is within the TD

+		if (startChop.nodeName == "TD")

+			startChop = startChop.firstChild;

+

+		if (endChop.nodeName == "TD")

+			endChop = endChop.lastChild;

+

+		// If not in a block element

+		if (startBlock == null) {

+			// Delete selection

+			rng.deleteContents();

+

+			if (!tinyMCE.isSafari)

+				sel.removeAllRanges();

+

+			if (startChop != rootElm && endChop != rootElm) {

+				// Insert paragraph before

+				rngBefore = rng.cloneRange();

+

+				if (startChop == body)

+					rngBefore.setStart(startChop, 0);

+				else

+					rngBefore.setStartBefore(startChop);

+

+				paraBefore.appendChild(rngBefore.cloneContents());

+

+				// Insert paragraph after

+				if (endChop.parentNode.nodeName == blockName)

+					endChop = endChop.parentNode;

+

+				// If not after image

+				//if (rng.startContainer.nodeName != "BODY" && rng.endContainer.nodeName != "BODY")

+					rng.setEndAfter(endChop);

+

+				if (endChop.nodeName != "#text" && endChop.nodeName != "BODY")

+					rngBefore.setEndAfter(endChop);

+

+				contents = rng.cloneContents();

+				if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY"))

+					paraAfter.innerHTML = contents.firstChild.innerHTML;

+				else

+					paraAfter.appendChild(contents);

+

+				// Check if it's a empty paragraph

+				if (isEmpty(paraBefore))

+					paraBefore.innerHTML = "&nbsp;";

+

+				// Check if it's a empty paragraph

+				if (isEmpty(paraAfter))

+					paraAfter.innerHTML = "&nbsp;";

+

+				// Delete old contents

+				rng.deleteContents();

+				rngAfter.deleteContents();

+				rngBefore.deleteContents();

+

+				// Insert new paragraphs

+				if (tinyMCE.isOpera) {

+					paraBefore.normalize();

+					rngBefore.insertNode(paraBefore);

+					paraAfter.normalize();

+					rngBefore.insertNode(paraAfter);

+				} else {

+					paraAfter.normalize();

+					rngBefore.insertNode(paraAfter);

+					paraBefore.normalize();

+					rngBefore.insertNode(paraBefore);

+				}

+

+				//tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);

+			} else {

+				body.innerHTML = "<" + blockName + ">&nbsp;</" + blockName + "><" + blockName + ">&nbsp;</" + blockName + ">";

+				paraAfter = body.childNodes[1];

+			}

+

+			inst.selection.moveToBookmark(b);

+			inst.selection.selectNode(paraAfter, true, true);

+

+			return true;

+		}

+

+		// Place first part within new paragraph

+		if (startChop.nodeName == blockName)

+			rngBefore.setStart(startChop, 0);

+		else

+			rngBefore.setStartBefore(startChop);

+

+		rngBefore.setEnd(startNode, startOffset);

+		paraBefore.appendChild(rngBefore.cloneContents());

+

+		// Place secound part within new paragraph

+		rngAfter.setEndAfter(endChop);

+		rngAfter.setStart(endNode, endOffset);

+		contents = rngAfter.cloneContents();

+

+		if (contents.firstChild && contents.firstChild.nodeName == blockName) {

+	/*		var nodes = contents.firstChild.childNodes;

+			for (i=0; i<nodes.length; i++) {

+				//tinyMCE.debug(nodes[i].nodeName);

+				if (nodes[i].nodeName != "BODY")

+					paraAfter.appendChild(nodes[i]);

+			}

+	*/

+			paraAfter.innerHTML = contents.firstChild.innerHTML;

+		} else

+			paraAfter.appendChild(contents);

+

+		// Check if it's a empty paragraph

+		if (isEmpty(paraBefore))

+			paraBefore.innerHTML = "&nbsp;";

+

+		// Check if it's a empty paragraph

+		if (isEmpty(paraAfter))

+			paraAfter.innerHTML = "&nbsp;";

+

+		// Create a range around everything

+		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);

+

+		// Delete all contents and insert new paragraphs

+		rng.deleteContents();

+

+		if (tinyMCE.isOpera) {

+			rng.insertNode(paraBefore);

+			rng.insertNode(paraAfter);

+		} else {

+			rng.insertNode(paraAfter);

+			rng.insertNode(paraBefore);

+		}

+

+		//tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);

+

+		// Normalize

+		paraAfter.normalize();

+		paraBefore.normalize();

+

+		inst.selection.moveToBookmark(b);

+		inst.selection.selectNode(paraAfter, true, true);

+

+		return true;

+	},

+

+	/**

+	 * Handles the backspace action in Gecko. This will remove the weird BR element

+	 * that gets generated when a user hits backspace in the beginning of a paragraph.

+	 *

+	 * @param {TinyMCE_Control} inst TinyMCE editor control instance.

+	 * @return true/false if the event should be canceled or not.

+	 * @type bool

+	 */

+	_handleBackSpace : function(inst) {

+		var r = inst.getRng(), sn = r.startContainer, nv, s = false;

+

+		// Added body check for bug #1527787

+		if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" && sn.parentNode.nodeName != "BODY") {

+			nv = sn.nodeValue;

+

+			// Handle if a backspace is pressed after a space character #bug 1466054 removed since fix for #1527787

+			/*if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ')

+				s = true;*/

+

+			// Only remove BRs if we are at the end of line #bug 1464152

+			if (nv != null && r.startOffset == nv.length)

+				sn.nextSibling.parentNode.removeChild(sn.nextSibling);

+		}

+

+		if (inst.settings.auto_resize)

+			inst.resizeToContent();

+

+		return s;

+	}

+

+	/**#@-*/

+};

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Layer.class.js
@@ -1,1 +1,331 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * 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.

+ *

+ * @param {string} id Unique ID name for the layer.

+ * @param {boolean} bm Block mode, defaults to true.

+ * @constructor

+ * @member TinyMCE_Layer

+ */

+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;

+};

+

+/**#@+

+ * @member TinyMCE_Layer

+ */

+TinyMCE_Layer.prototype = {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Moves the layer relative to the specified HTML element.

+	 *

+	 * @param {HTMLElement} re Element to move the layer relative to.

+	 * @param {string} p Position of the layer tl = top left, tr = top right, bl = bottom left, br = bottom right.

+	 */

+	moveRelativeTo : function(re, p) {

+		var rep = this.getAbsPosition(re), e = this.getElement(), x, y;

+		var w = parseInt(re.offsetWidth), h = parseInt(re.offsetHeight);

+		var ew = parseInt(e.offsetWidth), eh = parseInt(e.offsetHeight);

+

+		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);

+	},

+

+	/**

+	 * Moves the layer relative in pixels.

+	 *

+	 * @param {int} x Horizontal relative position in pixels.

+	 * @param {int} y Vertical relative position in pixels.

+	 */

+	moveBy : function(x, y) {

+		var e = this.getElement();

+		this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);

+	},

+

+	/**

+	 * Moves the layer absolute in pixels.

+	 *

+	 * @param {int} x Horizontal absolute position in pixels.

+	 * @param {int} y Vertical absolute position in pixels.

+	 */

+	moveTo : function(x, y) {

+		var e = this.getElement();

+

+		e.style.left = x + "px";

+		e.style.top = y + "px";

+

+		this.updateBlocker();

+	},

+

+	/**

+	 * Resizes the layer by the specified relative width and height.

+	 *

+	 * @param {int} w Relative width value.

+	 * @param {int} h Relative height value.

+	 */

+	resizeBy : function(w, h) {

+		var e = this.getElement();

+		this.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h);

+	},

+

+	/**

+	 * Resizes the layer to the specified width and height.

+	 *

+	 * @param {int} w Width value.

+	 * @param {int} h Height value.

+	 */

+	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();

+	},

+

+	/**

+	 * Shows the layer.

+	 */

+	show : function() {

+		var el = this.getElement();

+

+		if (el) {

+			el.style.display = 'block';

+			this.updateBlocker();

+		}

+	},

+

+	/**

+	 * Hides the layer.

+	 */

+	hide : function() {

+		var el = this.getElement();

+

+		if (el) {

+			el.style.display = 'none';

+			this.updateBlocker();

+		}

+	},

+

+	/**

+	 * Returns true/false if the layer is visible or not.

+	 *

+	 * @return true/false if it's visible or not.

+	 * @type boolean

+	 */

+	isVisible : function() {

+		return this.getElement().style.display == 'block';

+	},

+

+	/**

+	 * Returns the DOM element that the layer is binded to.

+	 *

+	 * @return DOM HTML element.

+	 * @type HTMLElement

+	 */

+	getElement : function() {

+		if (!this.element)

+			this.element = this.doc.getElementById(this.id);

+

+		return this.element;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {boolean} s Block mode state, true is the default value.

+	 */

+	setBlockMode : function(s) {

+		this.blockMode = s;

+	},

+

+	/**

+	 * Updates the select/iframe/flash blocker this will also block the caret in Firefox.

+	 */

+	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';

+		}

+	},

+

+	/**

+	 * Returns the blocker DOM element, this is a invisible iframe.

+	 *

+	 * @return DOM HTML element.

+	 * @type HTMLElement

+	 */

+	getBlocker : function() {

+		var d, b;

+

+		if (!this.blockerElement && this.blockMode) {

+			d = this.doc;

+			b = d.getElementById(this.id + "_blocker");

+

+			if (!b) {

+				b = d.createElement("iframe");

+

+				b.setAttribute('id', this.id + "_blocker");

+				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;

+	},

+

+	/**

+	 * Returns the absolute x, y cordinate of the specified node.

+	 *

+	 * @param {DOMElement} n DOM node to retrive x, y of.

+	 * @return Object containing absLeft and absTop properties.

+	 * @type Object

+	 */

+	getAbsPosition : function(n) {

+		var p = {absLeft : 0, absTop : 0};

+

+		while (n) {

+			p.absLeft += n.offsetLeft;

+			p.absTop += n.offsetTop;

+			n = n.offsetParent;

+		}

+

+		return p;

+	},

+

+	/**

+	 * Creates a element for the layer based on the id and specified name.

+	 *

+	 * @param {string} n Element tag name, like div.

+	 * @param {string} c Optional class name to set as class attribute value.

+	 * @param {HTMLElement} p Optional parent element reference, defaults to body.

+	 * @param {string} h Optional HTML code to insert into element.

+	 * @return HTML DOM element that got created.

+	 * @type HTMLElement

+	 */

+	create : function(n, c, p, h) {

+		var d = this.doc, e = d.createElement(n);

+

+		e.setAttribute('id', this.id);

+

+		if (c)

+			e.className = c;

+

+		if (!p)

+			p = d.body;

+

+		if (h)

+			e.innerHTML = h;

+

+		p.appendChild(e);

+

+		return this.element = e;

+	},

+

+	/**

+	 * Returns true/false if a element exists for the layer.

+	 * 

+	 * @return true/false if a element exists for the layer.

+	 * @type boolean

+	 */	 	

+	exists : function() {

+		return this.doc.getElementById(this.id) != null;

+	},

+

+	/**

+	 * Parses a int value this method will return 0 if the string is empty.

+	 *

+	 * @param {string} s String to parse value of.

+	 * @return Parsed number.

+	 * @type int

+	 */

+	parseInt : function(s) {

+		if (s == null || s == '')

+			return 0;

+

+		return parseInt(s);

+	},

+

+	/**

+	 * Removes the element for the layer from DOM and also the blocker iframe.

+	 */

+	remove : function() {

+		var e = this.getElement(), b = this.getBlocker();

+

+		if (e)

+			e.parentNode.removeChild(e);

+

+		if (b)

+			b.parentNode.removeChild(b);

+	}

+

+	/**#@-*/

+};

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Menu.class.js
@@ -1,1 +1,186 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * Constructor for the menu layer class.

+ *

+ * @constructor

+ * @base TinyMCE_Layer

+ * @member TinyMCE_Menu

+ */

+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 = [];

+	this.needsUpdate = true;

+};

+

+/**#@+

+ * @member TinyMCE_Menu

+ */

+TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Initializes the Menu with settings. This will also create the menu

+	 * as a DIV element if it doesn't exists in the DOM.

+	 *

+	 * @param {Array} s Name/Value array with settings.

+	 */

+	init : function(s) {

+		var n;

+

+		// Default params

+		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);

+	},

+

+	/**

+	 * Clears the menu.

+	 */

+	clear : function() {

+		this.items = [];

+	},

+

+	/**

+	 * Adds a menu title, this is a static item that can't be clicked.

+	 *

+	 * @param {string} t Text to add to title.

+	 */

+	addTitle : function(t) {

+		this.add({type : 'title', text : t});

+	},

+

+	/**

+	 * Adds a disabled menu item, this is a static item that can't be clicked.

+	 *

+	 * @param {string} t Text to add to title.

+	 */

+	addDisabled : function(t) {

+		this.add({type : 'disabled', text : t});

+	},

+

+	/**

+	 * Adds a menu separator line.

+	 */

+	addSeparator : function() {

+		this.add({type : 'separator'});

+	},

+

+	/**

+	 * Adds a menu item.

+	 *

+	 * @param {string} t Menu item text.

+	 * @param {string} js JS string to evaluate on click.

+	 */

+	addItem : function(t, js) {

+		this.add({text : t, js : js});

+	},

+

+	/**

+	 * Adds a menu item object.

+	 *

+	 * @param {Object} mi Menu item object to add.

+	 */

+	add : function(mi) {

+		this.items[this.items.length] = mi;

+		this.needsUpdate = true;

+	},

+

+	/**

+	 * Update the menu with new HTML contents.

+	 */

+	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="' + tinyMCE.xmlEncode(m[i].js) + '" onmousedown="' + tinyMCE.xmlEncode(m[i].js) + ';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><span' + c +'>' + t + '</span></a>';

+			}

+

+			h += '</td></tr>';

+		}

+

+		h += '</table>';

+

+		e.innerHTML = h;

+

+		this.needsUpdate = false;

+		this.updateBlocker();

+	},

+

+	/**

+	 * Displays the menu. This function will automaticly hide any previously visible menus.

+	 */

+	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) {

+			// Accessibility stuff

+/*			nl = this.getElement().getElementsByTagName("a");

+			if (nl.length > 0)

+				nl[0].focus();*/

+		}

+

+		tinyMCE.lastMenu = this;

+	}

+

+	/**#@-*/

+});

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Popup.class.js
@@ -1,1 +1,392 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+// Some global instances, this will be filled later

+var tinyMCE = null, tinyMCELang = null;

+

+/**

+ * Constructor for the popup class. This class contains base logic for popup/dialogs and sets up

+ * object references to the TinyMCE core.

+ *

+ * @constructor

+ */

+function TinyMCE_Popup() {

+};

+

+/**#@+

+ * @member TinyMCE_Popup

+ */

+TinyMCE_Popup.prototype = {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Searches for a window with a TinyMCE instance by looping through parent windows and openers.

+	 *

+	 * @param {DOMWindow} w DOM window to start search by.

+	 * @return {DOMWindow} Window with TinyMCE instance in it or null.

+	 */

+	findWin : function(w) {

+		var c;

+

+		// Check parents

+		c = w;

+		while (c && (c = c.parent) != null) {

+			if (typeof(c.tinyMCE) != "undefined")

+				return c;

+		}

+

+		// Check openers

+		c = w;

+		while (c && (c = c.opener) != null) {

+			if (typeof(c.tinyMCE) != "undefined")

+				return c;

+		}

+

+		// Try top

+		if (typeof(top.tinyMCE) != "undefined")

+			return top;

+

+		return null;

+	},

+

+	/**

+	 * Initializes the TinyMCE Popup class. This will setup the TinyMCE core references and other popup/dialog related functions.

+	 */

+	init : function() {

+		var win = window.opener ? window.opener : window.dialogArguments, c;

+		var inst, re, title, divElm;

+

+		if (!win)

+			win = this.findWin(window);

+

+		if (!win) {

+			alert("tinyMCE object reference not found from popup.");

+			return;

+		}

+

+		window.opener = win;

+		this.windowOpener = win;

+		this.onLoadEval = "";

+

+		// Setup parent references

+		tinyMCE = win.tinyMCE;

+		tinyMCELang = win.tinyMCELang;

+

+		inst = tinyMCE.selectedInstance;

+		this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;

+		this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);

+

+		if (this.isWindow)

+			window.focus();

+

+		// Store selection

+		if (this.storeSelection)

+			inst.selectionBookmark = inst.selection.getBookmark(true);

+

+		// Setup dir

+		if (tinyMCELang.lang_dir)

+			document.dir = tinyMCELang.lang_dir;

+

+		// Setup title

+		re = new RegExp('{|\\\$|}', 'g');

+		title = document.title.replace(re, "");

+		if (typeof(tinyMCELang[title]) != "undefined") {

+			divElm = document.createElement("div");

+			divElm.innerHTML = tinyMCELang[title];

+			document.title = divElm.innerHTML;

+

+			if (typeof(tinyMCE.setWindowTitle) != 'undefined')

+				tinyMCE.setWindowTitle(window, divElm.innerHTML);

+		}

+

+		// Output Popup CSS class

+		document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');

+

+		if (tinyMCE.getParam("popups_css_add")) {

+			c = tinyMCE.getParam("popups_css_add");

+

+			// Is relative

+			if (c.indexOf('://') == -1 && c.charAt(0) != '/')

+				c = tinyMCE.documentBasePath + "/" + c;

+

+			document.write('<link href="' + c + '" rel="stylesheet" type="text/css">');

+		}

+

+		tinyMCE.addEvent(window, "load", this.onLoad);

+	},

+

+	/**

+	 * Gets executed when the window has finished loading it's contents. This function will then

+	 * replace language variables with their real values.

+	 */

+	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';

+

+		// Execute real onload (Opera fix)

+		if (tinyMCEPopup.onLoadEval !== '')

+			eval(tinyMCEPopup.onLoadEval);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} str String to evaluate on load.

+	 */

+	executeOnLoad : function(str) {

+		if (tinyMCE.isOpera)

+			this.onLoadEval = str;

+		else

+			eval(str);

+	},

+

+	/**

+	 * 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.

+	 */

+	resizeToInnerSize : function() {

+		var i, doc, body, oldMargin, wrapper, iframe, nodes, dx, dy;

+

+		// Netscape 7.1 workaround

+		if (this.isWindow && tinyMCE.isNS71) {

+			window.resizeBy(0, 10);

+			return;

+		}

+

+		if (this.isWindow) {

+			doc = document;

+			body = doc.body;

+

+			if (body.style.display == 'none')

+				body.style.display = 'block';

+

+			// Remove margin

+			oldMargin = body.style.margin;

+			body.style.margin = '0';

+

+			// Create wrapper

+			wrapper = doc.createElement("div");

+			wrapper.id = 'mcBodyWrapper';

+			wrapper.style.display = 'none';

+			wrapper.style.margin = '0';

+

+			// Wrap body elements

+			nodes = doc.body.childNodes;

+			for (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]);

+			}

+

+			// Add wrapper

+			doc.body.appendChild(wrapper);

+

+			// Create iframe

+			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';

+

+			// Add iframe

+			doc.body.appendChild(iframe);

+

+			// Measure iframe

+			iframe = document.getElementById('mcWinIframe');

+			dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;

+			dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;

+

+			// Resize window

+			// tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);

+			window.resizeBy(dx, dy);

+

+			// Hide iframe and show wrapper

+			body.style.margin = oldMargin;

+			iframe.style.display = 'none';

+			wrapper.style.display = 'block';

+		}

+	},

+

+	/**

+	 * Resizes the current window to the dimensions of the body.

+	 */

+	resizeToContent : function() {

+		var isMSIE = (navigator.appName == "Microsoft Internet Explorer");

+		var isOpera = (navigator.userAgent.indexOf("Opera") != -1);

+		var elm, width, height, x, y, dx, dy;

+

+		if (isOpera)

+			return;

+

+		if (isMSIE) {

+			try { window.resizeTo(10, 10); } catch (e) {}

+

+			elm = document.body;

+			width = elm.offsetWidth;

+			height = elm.offsetHeight;

+			dx = (elm.scrollWidth - width) + 4;

+			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);

+				x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);

+				y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);

+				window.moveTo(x, y);

+			}

+		}

+	},

+

+	/**

+	 * Returns a window argument, window arguments can be passed from a plugin to a window

+	 * by using the tinyMCE.openWindow function.

+	 *

+	 * @param {string} name Argument name to retrive.

+	 * @param {string} default_value Optional default value to assign if the argument wasn't set.

+	 * @return Argument value object.

+	 * @type Object

+	 */

+	getWindowArg : function(name, default_value) {

+		return tinyMCE.getWindowArg(name, default_value);

+	},

+

+	/**

+	 * 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.

+	 */

+	restoreSelection : function() {

+		var inst;

+

+		if (this.storeSelection) {

+			inst = tinyMCE.selectedInstance;

+

+			inst.getWin().focus();

+

+			if (inst.selectionBookmark)

+				inst.selection.moveToBookmark(inst.selectionBookmark);

+		}

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {string} command Command name to execute, for example mceLink or Bold.

+	 * @param {boolean} user_interface True/false state if a UI (dialog) should be presented or not.

+	 * @param {mixed} value Optional command value, this can be anything.

+	 */

+	execCommand : function(command, user_interface, value) {

+		var inst = tinyMCE.selectedInstance;

+

+		this.restoreSelection();

+		inst.execCommand(command, user_interface, value);

+

+		// Store selection

+		if (this.storeSelection)

+			inst.selectionBookmark = inst.selection.getBookmark(true);

+	},

+

+	/**

+	 * Closes the current window. This should be used instead of window.close. Since this will

+	 * also handle inlinepopups closing.

+	 */

+	close : function() {

+		tinyMCE.closeWindow(window);

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {DOMEvent} e DOM event object.

+	 * @param {string} element_id Element id to be filled with the color value from the picker.

+	 */

+	pickColor : function(e, element_id) {

+		tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {

+			element_id : element_id,

+			document : document,

+			window : window,

+			store_selection : false

+		});

+	},

+

+	/**

+	 * Opens a filebrowser/imagebrowser this will set the output value from

+	 * the browser as a value on the specified element.

+	 *

+	 * @param {string} element_id Id of the element to set value in.

+	 * @param {string} type Type of browser to open image/file/flash.

+	 * @param {string} option Option name to get the file_broswer_callback function name from.

+	 */

+	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);

+

+		// Call to external callback

+		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);");

+	},

+

+	/**

+	 * Imports the specified class into the current popup. This will setup a local class definition

+	 * by importing from the parent window.

+	 *

+	 * @param {string} c Class name to import to current page.

+	 */

+	importClass : function(c) {

+		var n;

+

+		window[c] = function() {};

+

+		for (n in window.opener[c].prototype)

+			window[c].prototype[n] = window.opener[c].prototype[n];

+

+		window[c].constructor = window.opener[c].constructor;

+	}

+

+	/**#@-*/

+};

+

+// Setup global instance

+var tinyMCEPopup = new TinyMCE_Popup();

+

+tinyMCEPopup.init();

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_Selection.class.js
@@ -1,1 +1,627 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * Constructs a Selection instance and binds it to the specificed TinyMCE editor control.

+ *

+ * @param {TinyMCE_Control} inst TinyMCE editor control instance.

+ * @constructor

+ * @member TinyMCE_Selection

+ */

+function TinyMCE_Selection(inst) {

+	this.instance = inst;

+};

+

+/**#@+

+ * @member TinyMCE_Selection

+ */

+TinyMCE_Selection.prototype = {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Returns the selected HTML code.

+	 *

+	 * @return Selected HTML contents.

+	 * @type string

+	 */

+	getSelectedHTML : function() {

+		var inst = this.instance, e, r = this.getRng(), h;

+

+		if (!r)

+			return null;

+

+		e = document.createElement("body");

+

+		if (r.cloneContents)

+			e.appendChild(r.cloneContents());

+		else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) != 'undefined')

+			e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;

+		else

+			e.innerHTML = r.toString(); // Failed, use text for now

+

+		h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);

+

+		// When editing always use fonts internaly

+		//if (tinyMCE.getParam("convert_fonts_to_spans"))

+		//	tinyMCE.convertSpansToFonts(inst.getDoc());

+

+		return h;

+	},

+

+	/**

+	 * Returns the selected text.

+	 *

+	 * @return Selected text contents.

+	 * @type string

+	 */

+	getSelectedText : function() {

+		var inst = this.instance, d, r, s, t;

+

+		if (tinyMCE.isIE) {

+			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;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {boolean} simple If this is set to true, the selection bookmark will not me dom persistent.

+	 * @return Selection bookmark that can be restored later with moveToBookmark.

+	 * @type TinyMCE_Bookmark

+	 */

+	getBookmark : function(simple) {

+		var inst = this.instance, rng = this.getRng(), doc = inst.getDoc(), b = inst.getBody();

+		var trng, sx, sy, xx = -999999999, vp = inst.getViewPort();

+		var sp, le, s, e, nl, i, si, ei, w;

+

+		sx = vp.left;

+		sy = vp.top;

+

+		if (simple)

+			return {rng : rng, scrollX : sx, scrollY : sy};

+

+		if (tinyMCE.isRealIE) {

+			if (rng.item) {

+				e = rng.item(0);

+

+				nl = b.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 = doc.body.createTextRange();

+				trng.moveToElementText(inst.getBody());

+				trng.collapse(true);

+				bp = Math.abs(trng.move('character', xx));

+

+				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 - bp,

+					length : le,

+					scrollX : sx,

+					scrollY : sy

+				};

+			}

+		} else {

+			s = this.getSel();

+			e = this.getFocusElement();

+

+			if (!s)

+				return null;

+

+			if (e && e.nodeName == 'IMG') {

+				/*nl = b.getElementsByTagName('IMG');

+				for (i=0; i<nl.length; i++) {

+					if (e == nl[i]) {

+						sp = i;

+						break;

+					}

+				}*/

+

+				return {

+					start : -1,

+					end : -1,

+					index : sp,

+					scrollX : sx,

+					scrollY : sy

+				};

+			}

+

+			// Caret or selection

+			if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {

+				e = this._getPosText(b, s.anchorNode, s.focusNode);

+

+				if (!e)

+					return {scrollX : sx, scrollY : sy};

+

+				return {

+					start : e.start + s.anchorOffset,

+					end : e.end + s.focusOffset,

+					scrollX : sx,

+					scrollY : sy

+				};

+			} else {

+				e = this._getPosText(b, rng.startContainer, rng.endContainer);

+

+				if (!e)

+					return {scrollX : sx, scrollY : sy};

+

+				return {

+					start : e.start + rng.startOffset,

+					end : e.end + rng.endOffset,

+					scrollX : sx,

+					scrollY : sy

+				};

+			}

+		}

+

+		return null;

+	},

+

+	/**

+	 * Restores the selection to the specified bookmark.

+	 *

+	 * @param {TinyMCE_Bookmark} bookmark Bookmark to restore selection from.

+	 * @return true/false if it was successful or not.

+	 * @type boolean

+	 */

+	moveToBookmark : function(bookmark) {

+		var inst = this.instance, rng, nl, i, ex, b = inst.getBody(), sd;

+		var doc = inst.getDoc(), win = inst.getWin(), sel = this.getSel();

+

+		if (!bookmark)

+			return false;

+

+		if (tinyMCE.isSafari && bookmark.rng) {

+			sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset, bookmark.rng.endContainer, bookmark.rng.endOffset);

+			return true;

+		}

+

+		if (tinyMCE.isRealIE) {

+			if (bookmark.rng) {

+				try {

+					bookmark.rng.select();

+				} catch (ex) {

+					// Ignore

+				}

+

+				return true;

+			}

+

+			win.focus();

+

+			if (bookmark.tag) {

+				rng = b.createControlRange();

+

+				nl = b.getElementsByTagName(bookmark.tag);

+

+				if (nl.length > bookmark.index) {

+					try {

+						rng.addElement(nl[bookmark.index]);

+					} catch (ex) {

+						// Might be thrown if the node no longer exists

+					}

+				}

+			} else {

+				// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs

+				try {

+					// Incorrect bookmark

+					if (bookmark.start < 0)

+						return true;

+

+					rng = inst.getSel().createRange();

+					rng.moveToElementText(inst.getBody());

+					rng.collapse(true);

+					rng.moveStart('character', bookmark.start);

+					rng.moveEnd('character', bookmark.length);

+				} catch (ex) {

+					return true;

+				}

+			}

+

+			rng.select();

+

+			win.scrollTo(bookmark.scrollX, bookmark.scrollY);

+			return true;

+		}

+

+		if (tinyMCE.isGecko || tinyMCE.isOpera) {

+			if (!sel)

+				return false;

+

+			if (bookmark.rng) {

+				sel.removeAllRanges();

+				sel.addRange(bookmark.rng);

+			}

+

+			if (bookmark.start != -1 && bookmark.end != -1) {

+				try {

+					sd = this._getTextPos(b, bookmark.start, bookmark.end);

+					rng = doc.createRange();

+					rng.setStart(sd.startNode, sd.startOffset);

+					rng.setEnd(sd.endNode, sd.endOffset);

+					sel.removeAllRanges();

+					sel.addRange(rng);

+

+					if (!tinyMCE.isOpera)

+						win.focus();

+				} catch (ex) {

+					// Ignore

+				}

+			}

+

+			/*

+			if (typeof(bookmark.index) != 'undefined') {

+				tinyMCE.selectElements(b, 'IMG', function (n) {

+					if (bookmark.index-- == 0) {

+						// Select image in Gecko here

+					}

+

+					return false;

+				});

+			}

+			*/

+

+			win.scrollTo(bookmark.scrollX, bookmark.scrollY);

+			return true;

+		}

+

+		return false;

+	},

+

+	/**

+	 * Returns the character start and end position of a start and end node. This is Gecko specific logic.

+	 *

+	 * @param {Element} r Root element to loop through.

+	 * @param {Node} sn Start node to get char position of.

+	 * @param {Node} en End node to get char position of.

+	 * @return Data container with start/end properties.

+	 * @type Object

+	 * @private

+	 */

+	_getPosText : function(r, sn, en) {

+		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};

+

+		while ((n = w.nextNode()) != null) {

+			if (n == sn)

+				d.start = p;

+

+			if (n == en) {

+				d.end = p;

+				return d;

+			}

+

+			p += n.nodeValue ? n.nodeValue.length : 0;

+		}

+

+		return null;

+	},

+

+	/**

+	 * Returns the node and offset of start and end character positions. This is Gecko specific logic.

+	 *

+	 * @param {Element} r Root element to loop through.

+	 * @param {int} sp Start character position.

+	 * @param {Node} ep End character position.

+	 * @return Data container with startNode/startOffset/endNode/endOffset properties.

+	 * @type Object

+	 * @private

+	 */

+	_getTextPos : function(r, sp, ep) {

+		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};

+

+		while ((n = w.nextNode()) != null) {

+			p += n.nodeValue ? n.nodeValue.length : 0;

+

+			if (p >= sp && !d.startNode) {

+				d.startNode = n;

+				d.startOffset = sp - (p - n.nodeValue.length);

+			}

+

+			if (p >= ep) {

+				d.endNode = n;

+				d.endOffset = ep - (p - n.nodeValue.length);

+

+				return d;

+			}

+		}

+

+		return null;

+	},

+

+	/**

+	 * Selects the specified node.

+	 *

+	 * @param {HTMLNode} node Node object to move selection to.

+	 * @param {boolean} collapse True/false if it will be collasped.

+	 * @param {boolean} select_text_node True/false if the text contents should be selected or not.

+	 * @param {boolean} to_start True/false if the collapse should be to start or end of range.

+	 */

+	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 (inst.settings.auto_resize)

+			inst.resizeToContent();

+

+		if (tinyMCE.isRealIE) {

+			rng = inst.getDoc().body.createTextRange();

+

+			try {

+				rng.moveToElementText(node);

+

+				if (collapse)

+					rng.collapse(to_start);

+

+				rng.select();

+			} catch (e) {

+				// Throws illigal agrument in MSIE some times

+			}

+		} 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) {

+				// Find first textnode in tree

+				nodes = tinyMCE.getNodeTree(node, [], 3);

+				if (nodes.length > 0)

+					rng.selectNodeContents(nodes[0]);

+				else

+					rng.selectNodeContents(node);

+			} else

+				rng.selectNode(node);

+

+			if (collapse) {

+				// Special treatment of textnode collapse

+				if (!to_start && node.nodeType == 3) {

+					rng.setStart(node, node.nodeValue.length);

+					rng.setEnd(node, node.nodeValue.length);

+				} else

+					rng.collapse(to_start);

+			}

+

+			sel.removeAllRanges();

+			sel.addRange(rng);

+		}

+

+		this.scrollToNode(node);

+

+		// Set selected element

+		tinyMCE.selectedElement = null;

+		if (node.nodeType == 1)

+			tinyMCE.selectedElement = node;

+	},

+

+	/**

+	 * Scrolls to the specified node location.

+	 *

+	 * @param {HTMLNode} node Node to scroll to.

+	 */

+	scrollToNode : function(node) {

+		var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin;

+

+		// Only scroll if out of visible area

+		if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25))

+			w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25);

+

+		// Scroll container window

+		if (inst.settings.auto_resize) {

+			cwin = inst.getContainerWin();

+			cvp = tinyMCE.getViewPort(cwin);

+			p = this.getAbsPosition(node);

+

+			if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height)

+				cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25);

+		}

+	},

+

+	/**

+	 * Returns a global absolute position calculating both the container iframe location and the position within.

+	 *

+	 * @param {HTMLNode} n node.

+	 */

+	getAbsPosition : function(n) {

+		var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement);

+

+		return {

+			absLeft : ipos.absLeft + pos.absLeft,

+			absTop : ipos.absTop + pos.absTop

+		};

+	},

+

+	/**

+	 * Returns the browsers selection instance.

+	 *

+	 * @return Browser selection instance.

+	 * @type DOMSelection

+	 */

+	getSel : function() {

+		var inst = this.instance;

+

+		if (tinyMCE.isRealIE)

+			return inst.getDoc().selection;

+

+		return inst.contentWindow.getSelection();

+	},

+

+	/**

+	 * Returns the browsers selections first range instance.

+	 *

+	 * @return Browsers selections first range instance.

+	 * @type DOMRange

+	 */

+	getRng : function() {

+		var s = this.getSel();

+

+		if (s == null)

+			return null;

+

+		if (tinyMCE.isRealIE)

+			return s.createRange();

+

+		if (tinyMCE.isSafari && !s.getRangeAt)

+			return '' + window.getSelection();

+

+		if (s.rangeCount > 0)

+			return s.getRangeAt(0);

+

+		return null;

+	},

+

+	/**

+	 * Returns true/false if the current selection is collapsed or not.

+	 *

+	 * @return {bool} true/false if the current selection is collapsed or not.

+	 */

+	isCollapsed : function() {

+		var r = this.getRng();

+

+		if (r.item)

+			return false;

+

+		return r.boundingWidth == 0 || this.getSel().isCollapsed;

+	},

+

+	/**

+	 * Collapses the current selection to start or end.

+	 *

+	 * @param {bool} b true - to start, false - to end.

+	 */

+	collapse : function(b) {

+		var r = this.getRng(), s = this.getSel();

+

+		if (r.select) {

+			r.collapse(b);

+			r.select();

+		} else {

+			if (b)

+				s.collapseToStart();

+			else

+				s.collapseToEnd();

+		}

+	},

+

+	/**

+	 * Returns the currently selected/focused element.

+	 *

+	 * @return Currently selected element.

+	 * @type HTMLElement

+	 */

+	getFocusElement : function() {

+		var inst = this.instance, doc, rng, sel, elm;

+

+		if (tinyMCE.isRealIE) {

+			doc = inst.getDoc();

+			rng = doc.selection.createRange();

+

+	//		if (rng.collapse)

+	//			rng.collapse(true);

+

+			elm = rng.item ? rng.item(0) : rng.parentElement();

+		} else {

+			if (!tinyMCE.isSafari && inst.isHidden())

+				return inst.getBody();

+

+			sel = this.getSel();

+			rng = this.getRng();

+

+			if (!sel || !rng)

+				return null;

+

+			elm = rng.commonAncestorContainer;

+			//elm = (sel && sel.anchorNode) ? sel.anchorNode : null;

+

+			// Handle selection a image or other control like element such as anchors

+			if (!rng.collapsed) {

+				// Is selection small

+				if (rng.startContainer == rng.endContainer) {

+					if (rng.startOffset - rng.endOffset < 2) {

+						if (rng.startContainer.hasChildNodes())

+							elm = rng.startContainer.childNodes[rng.startOffset];

+					}

+				}

+			}

+

+			// Get the element parent of the node

+			elm = tinyMCE.getParentElement(elm);

+

+			//if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")

+			//	elm = tinyMCE.selectedElement;

+		}

+

+		return elm;

+	}

+

+	/**#@-*/

+};

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_URL.class.js
@@ -1,1 +1,379 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * The contents of this file will be wrapped in a class later on.

+ */

+

+/**#@+

+ * @member TinyMCE_Engine

+ * @method

+ */

+tinyMCE.add(TinyMCE_Engine, {

+	/**

+	 * Parses a URL in to its diffrent components.

+	 *

+	 * @param {string} url_str URL string to parse into a URL object.

+	 * @return URL object based on input string.

+	 * @type TinyMCE_URL_Item

+	 */

+	parseURL : function(url_str) {

+		var urlParts = [], i, pos, lastPos, chr;

+

+		if (url_str) {

+			// Parse protocol part

+			pos = url_str.indexOf('://');

+			if (pos != -1) {

+				urlParts.protocol = url_str.substring(0, pos);

+				lastPos = pos + 3;

+			}

+

+			// Find port or path start

+			for (i=lastPos; i<url_str.length; i++) {

+				chr = url_str.charAt(i);

+

+				if (chr == ':')

+					break;

+

+				if (chr == '/')

+					break;

+			}

+			pos = i;

+

+			// Get host

+			urlParts.host = url_str.substring(lastPos, pos);

+

+			// Get port

+			urlParts.port = "";

+			lastPos = pos;

+			if (url_str.charAt(pos) == ':') {

+				pos = url_str.indexOf('/', lastPos);

+				urlParts.port = url_str.substring(lastPos+1, pos);

+			}

+

+			// Get path

+			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);

+

+			// Get query

+			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);

+			}

+

+			// Get anchor

+			lastPos = pos;

+			if (url_str.charAt(pos) == '#') {

+				pos = url_str.length;

+				urlParts.anchor = url_str.substring(lastPos+1, pos);

+			}

+		}

+

+		return urlParts;

+	},

+

+	/**

+	 * Serializes the specified URL object into a string.

+	 *

+	 * @param {TinyMCE_URL_Item} up URL object to serialize.

+	 * @return Serialized URL object.

+	 * @type string

+	 */

+	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;

+	},

+

+	/**

+	 * Converts an absolute path to relative path.

+	 *

+	 * @param {string} base_url URL to make as a base path, URLs will be converted relative from this point.

+	 * @param {string} url_to_relative URL to convert into a relative URL.

+	 * @return Relative URL based in input.

+	 * @type string

+	 */

+	convertAbsoluteURLToRelativeURL : function(base_url, url_to_relative) {

+		var baseURL = this.parseURL(base_url), targetURL = this.parseURL(url_to_relative);

+		var i, strTok1, strTok2, breakPoint = 0, outPath = "", forceSlash = false;

+		var fileName, pos;

+

+		if (targetURL.path == '')

+			targetURL.path = "/";

+		else

+			forceSlash = true;

+

+		// Crop away last path part

+		base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/'));

+		strTok1 = base_url.split('/');

+		strTok2 = targetURL.path.split('/');

+

+		if (strTok1.length >= strTok2.length) {

+			for (i=0; i<strTok1.length; i++) {

+				if (i >= strTok2.length || strTok1[i] != strTok2[i]) {

+					breakPoint = i + 1;

+					break;

+				}

+			}

+		}

+

+		if (strTok1.length < strTok2.length) {

+			for (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 (i=0; i<(strTok1.length-(breakPoint-1)); i++)

+			outPath += "../";

+

+		for (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;

+

+		// Remove document prefix from local anchors

+		fileName = baseURL.path;

+

+		if ((pos = fileName.lastIndexOf('/')) != -1)

+			fileName = fileName.substring(pos + 1);

+

+		// Is local anchor

+		if (fileName == targetURL.path && targetURL.anchor !== '')

+			targetURL.path = "";

+

+		// If empty and not local anchor force filename or slash

+		if (targetURL.path == '' && !targetURL.anchor)

+			targetURL.path = fileName !== '' ? fileName : "/";

+

+		return this.serializeURL(targetURL);

+	},

+

+	/**

+	 * Converts an relative path to absolute path.

+	 *

+	 * @param {string} base_url URL to make as a base path, URLs will be converted absolute from this point.

+	 * @param {string} relative_url URL to convert into a absolute URL.

+	 * @return Absolute URL based in input.

+	 * @type string

+	 */

+	convertRelativeToAbsoluteURL : function(base_url, relative_url) {

+		var baseURL = this.parseURL(base_url), baseURLParts, relURLParts, newRelURLParts, numBack, relURL = this.parseURL(relative_url), i;

+		var len, absPath, start, end, newBaseURLParts;

+

+		if (relative_url == '' || relative_url.indexOf('://') != -1 || /^(mailto:|javascript:|#|\/)/.test(relative_url))

+			return relative_url;

+

+		// Split parts

+		baseURLParts = baseURL.path.split('/');

+		relURLParts = relURL.path.split('/');

+

+		// Remove empty chunks

+		newBaseURLParts = [];

+		for (i=baseURLParts.length-1; i>=0; i--) {

+			if (baseURLParts[i].length == 0)

+				continue;

+

+			newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];

+		}

+		baseURLParts = newBaseURLParts.reverse();

+

+		// Merge relURLParts chunks

+		newRelURLParts = [];

+		numBack = 0;

+		for (i=relURLParts.length-1; i>=0; i--) {

+			if (relURLParts[i].length == 0 || relURLParts[i] == ".")

+				continue;

+

+			if (relURLParts[i] == '..') {

+				numBack++;

+				continue;

+			}

+

+			if (numBack > 0) {

+				numBack--;

+				continue;

+			}

+

+			newRelURLParts[newRelURLParts.length] = relURLParts[i];

+		}

+

+		relURLParts = newRelURLParts.reverse();

+

+		// Remove end from absolute path

+		len = baseURLParts.length-numBack;

+		absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/');

+		start = "";

+		end = "";

+

+		// Build output URL

+		relURL.protocol = baseURL.protocol;

+		relURL.host = baseURL.host;

+		relURL.port = baseURL.port;

+

+		// Re-add trailing slash if it's removed

+		if (relURL.path.charAt(relURL.path.length-1) == "/")

+			absPath += "/";

+

+		relURL.path = absPath;

+

+		return this.serializeURL(relURL);

+	},

+

+	/**

+	 * Converts the specified URL based in TinyMCE configuration settings.

+	 *

+	 * @param {string} url URL to convert based on config.

+	 * @param {HTMLElement} node HTML element that holds the URL.

+	 * @param {boolean} on_save Is this convertion the final output URL.

+	 * @return Converted URL string.

+	 * @type string

+	 */

+	convertURL : function(url, node, on_save) {

+		var dl = document.location, start, portPart, urlParts, baseUrlParts, tmpUrlParts, curl;

+		var prot = dl.protocol, host = dl.hostname, port = dl.port;

+

+		// Pass through file protocol

+		if (prot == "file:")

+			return url;

+

+		// Something is wrong, remove weirdness

+		url = tinyMCE.regexpReplace(url, '(http|https):///', '/');

+

+		// Mailto link or anchor (Pass through)

+		if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || /^[ \t\r\n\+]*[#\?]/.test(url))

+			return url;

+

+		// Fix relative/Mozilla

+		if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')

+			return tinyMCE.settings.base_href + url;

+

+		// Handle relative URLs

+		if (on_save && tinyMCE.getParam('relative_urls')) {

+			curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);

+			if (curl.charAt(0) == '/')

+				curl = tinyMCE.settings.document_base_prefix + curl;

+

+			urlParts = tinyMCE.parseURL(curl);

+			tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings.document_base_url);

+

+			// Force relative

+			if (urlParts.host == tmpUrlParts.host && (urlParts.port == tmpUrlParts.port))

+				return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url, curl);

+		}

+

+		// Handle absolute URLs

+		if (!tinyMCE.getParam('relative_urls')) {

+			urlParts = tinyMCE.parseURL(url);

+			baseUrlParts = tinyMCE.parseURL(tinyMCE.settings.base_href);

+

+			// Force absolute URLs from relative URLs

+			url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);

+

+			// If anchor and path is the same page

+			if (urlParts.anchor && urlParts.path == baseUrlParts.path)

+				return "#" + urlParts.anchor;

+		}

+

+		// Remove current domain

+		if (tinyMCE.getParam('remove_script_host')) {

+			start = "";

+			portPart = "";

+

+			if (port !== '')

+				portPart = ":" + port;

+

+			start = prot + "//" + host + portPart + "/";

+

+			if (url.indexOf(start) == 0)

+				url = url.substring(start.length-1);

+		}

+

+		return url;

+	},

+

+	/**

+	 * 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.

+	 *

+	 * @param {HTMLElement} body HTML element to convert all URLs in.

+	 */

+	convertAllRelativeURLs : function(body) {

+		var i, elms, src, href, mhref, msrc;

+

+		// Convert all image URL:s to absolute URL

+		elms = body.getElementsByTagName("img");

+		for (i=0; i<elms.length; i++) {

+			src = tinyMCE.getAttrib(elms[i], 'src');

+

+			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);

+			}

+		}

+

+		// Convert all link URL:s to absolute URL

+		elms = body.getElementsByTagName("a");

+		for (i=0; i<elms.length; i++) {

+			href = tinyMCE.getAttrib(elms[i], 'href');

+

+			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);

+			}

+		}

+	}

+

+	/**#@-*/

+});

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js
@@ -1,1 +1,149 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/**

+ * Constructs a undo redo instance, this instance handles the custom undo/redo handeling in TinyMCE.

+ *

+ * @param {TinyMCE_Control} inst TinyMCE editor control instance.

+ * @constructor

+ * @member TinyMCE_UndoRedo

+ */

+function TinyMCE_UndoRedo(inst) {

+	this.instance = inst;

+	this.undoLevels = [];

+	this.undoIndex = 0;

+	this.typingUndoIndex = -1;

+	this.undoRedo = true;

+};

+

+/**#@+

+ * @member TinyMCE_UndoRedo

+ */

+TinyMCE_UndoRedo.prototype = {

+	/**#@+

+	 * @method

+	 */

+

+	/**

+	 * Adds a new undo level, this will take a snapshot of the current instance HTML or use the specified level.

+	 *

+	 * @param {TinyMCE_UndoRedoLevel} l Optional undo/redo level to add.

+	 * @return true/false on success or failure.

+	 * @type boolean

+	 */

+	add : function(l) {

+		var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;

+

+		if (l) {

+			this.undoLevels[this.undoLevels.length] = l;

+			return true;

+		}

+

+		if (this.typingUndoIndex != -1) {

+			this.undoIndex = this.typingUndoIndex;

+

+			if (tinyMCE.typingUndoIndex != -1)

+				tinyMCE.undoIndex = tinyMCE.typingUndoIndex;

+		}

+

+		newHTML = tinyMCE.trim(inst.getBody().innerHTML);

+		if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) {

+			//tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content);

+

+			// Is dirty again

+			inst.isNotDirty = false;

+

+			tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst);

+

+			// Time to compress

+			customUndoLevels = tinyMCE.settings.custom_undo_redo_levels;

+			if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {

+				for (i=0; i<this.undoLevels.length-1; i++)

+					this.undoLevels[i] = this.undoLevels[i+1];

+

+				this.undoLevels.length--;

+				this.undoIndex--;

+

+				// Todo: Implement global undo/redo logic here

+			}

+

+			b = inst.undoBookmark;

+

+			if (!b)

+				b = inst.selection.getBookmark();

+

+			this.undoIndex++;

+			this.undoLevels[this.undoIndex] = {

+				content : newHTML,

+				bookmark : b

+			};

+

+			// Remove all above from global undo/redo

+			ul = tinyMCE.undoLevels;

+			for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {

+				ur = ul[i].undoRedo;

+

+				if (ur.undoIndex == ur.undoLevels.length -1)

+					ur.undoIndex--;

+

+				ur.undoLevels.length--;

+			}

+

+			// Add global undo level

+			tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;

+			tinyMCE.undoLevels.length = tinyMCE.undoIndex;

+

+			this.undoLevels.length = this.undoIndex + 1;

+

+			return true;

+		}

+

+		return false;

+	},

+

+	/**

+	 * Performes a undo action, this will restore the HTML contents of the editor to a former state.

+	 */

+	undo : function() {

+		var inst = this.instance;

+

+		// Do undo

+		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);

+		}

+	},

+

+	/**

+	 * Performes a undo action, this will restore the HTML contents of the editor to a former undoed state.

+	 */

+	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();

+	}

+

+	/**#@-*/

+};

 

--- a/tinymce/2/jscripts/tiny_mce/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/index.htm
@@ -1,11 +1,11 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-<title>blank_page</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-</head>
-<body>
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

+<html>

+<head>

+<title>blank_page</title>

+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

+</head>

+<body>

+

+</body>

+</html>

 
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/langs/en.js
@@ -1,154 +1,42 @@
-tinyMCE.addI18n({en:{
-common:{
-edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
-apply:"Apply",
-insert:"Insert",
-update:"Update",
-cancel:"Cancel",
-close:"Close",
-browse:"Browse",
-class_name:"Class",
-not_set:"-- Not set --",
-clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",
-clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
-popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
-invalid_data:"Error: Invalid values entered, these are marked in red.",
-more_colors:"More colors"
-},
-contextmenu:{
-align:"Alignment",
-left:"Left",
-center:"Center",
-right:"Right",
-full:"Full"
-},
-insertdatetime:{
-date_fmt:"%Y-%m-%d",
-time_fmt:"%H:%M:%S",
-insertdate_desc:"Insert date",
-inserttime_desc:"Insert time",
-months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
-months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
-day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
-day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
-},
-print:{
-print_desc:"Print"
-},
-preview:{
-preview_desc:"Preview"
-},
-directionality:{
-ltr_desc:"Direction left to right",
-rtl_desc:"Direction right to left"
-},
-layer:{
-insertlayer_desc:"Insert new layer",
-forward_desc:"Move forward",
-backward_desc:"Move backward",
-absolute_desc:"Toggle absolute positioning",
-content:"New layer..."
-},
-save:{
-save_desc:"Save",
-cancel_desc:"Cancel all changes"
-},
-nonbreaking:{
-nonbreaking_desc:"Insert non-breaking space character"
-},
-iespell:{
-iespell_desc:"Run spell checking",
-download:"ieSpell not detected. Do you want to install it now?"
-},
-advhr:{
-advhr_desc:"Horizontal rule"
-},
-emotions:{
-emotions_desc:"Emotions"
-},
-searchreplace:{
-search_desc:"Find",
-replace_desc:"Find/Replace"
-},
-advimage:{
-image_desc:"Insert/edit image"
-},
-advlink:{
-link_desc:"Insert/edit link"
-},
-xhtmlxtras:{
-cite_desc:"Citation",
-abbr_desc:"Abbreviation",
-acronym_desc:"Acronym",
-del_desc:"Deletion",
-ins_desc:"Insertion",
-attribs_desc:"Insert/Edit Attributes"
-},
-style:{
-desc:"Edit CSS Style"
-},
-paste:{
-paste_text_desc:"Paste as Plain Text",
-paste_word_desc:"Paste from Word",
-selectall_desc:"Select All"
-},
-paste_dlg:{
-text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
-text_linebreaks:"Keep linebreaks",
-word_title:"Use CTRL+V on your keyboard to paste the text into the window."
-},
-table:{
-desc:"Inserts a new table",
-row_before_desc:"Insert row before",
-row_after_desc:"Insert row after",
-delete_row_desc:"Delete row",
-col_before_desc:"Insert column before",
-col_after_desc:"Insert column after",
-delete_col_desc:"Remove column",
-split_cells_desc:"Split merged table cells",
-merge_cells_desc:"Merge table cells",
-row_desc:"Table row properties",
-cell_desc:"Table cell properties",
-props_desc:"Table properties",
-paste_row_before_desc:"Paste table row before",
-paste_row_after_desc:"Paste table row after",
-cut_row_desc:"Cut table row",
-copy_row_desc:"Copy table row",
-del:"Delete table",
-row:"Row",
-col:"Column",
-cell:"Cell"
-},
-autosave:{
-unload_msg:"The changes you made will be lost if you navigate away from this page."
-},
-fullscreen:{
-desc:"Toggle fullscreen mode"
-},
-media:{
-desc:"Insert / edit embedded media",
-edit:"Edit embedded media"
-},
-fullpage:{
-desc:"Document properties"
-},
-template:{
-desc:"Insert predefined template content"
-},
-visualchars:{
-desc:"Visual control characters on/off."
-},
-spellchecker:{
-desc:"Toggle spellchecker",
-menu:"Spellchecker settings",
-ignore_word:"Ignore word",
-ignore_words:"Ignore all",
-langs:"Languages",
-wait:"Please wait...",
-sug:"Suggestions",
-no_sug:"No suggestions",
-no_mpell:"No misspellings found."
-},
-pagebreak:{
-desc:"Insert page break."
-}}});
+// UK lang variables

+

+tinyMCE.addToLang('',{

+bold_desc : 'Bold (Ctrl+B)',

+italic_desc : 'Italic (Ctrl+I)',

+underline_desc : 'Underline (Ctrl+U)',

+striketrough_desc : 'Strikethrough',

+justifyleft_desc : 'Align left',

+justifycenter_desc : 'Align center',

+justifyright_desc : 'Align right',

+justifyfull_desc : 'Align full',

+bullist_desc : 'Unordered list',

+numlist_desc : 'Ordered list',

+outdent_desc : 'Outdent',

+indent_desc : 'Indent',

+undo_desc : 'Undo (Ctrl+Z)',

+redo_desc : 'Redo (Ctrl+Y)',

+link_desc : 'Insert/edit link',

+unlink_desc : 'Unlink',

+image_desc : 'Insert/edit image',

+cleanup_desc : 'Cleanup messy code',

+focus_alert : 'A editor instance must be focused before using this command.',

+edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?',

+insert_link_title : 'Insert/edit link',

+insert : 'Insert',

+update : 'Update',

+cancel : 'Cancel',

+insert_link_url : 'Link URL',

+insert_link_target : 'Target',

+insert_link_target_same : 'Open link in the same window',

+insert_link_target_blank : 'Open link in a new window',

+insert_image_title : 'Insert/edit image',

+insert_image_src : 'Image URL',

+insert_image_alt : 'Image description',

+help_desc : 'Help',

+bold_img : "bold.gif",

+italic_img : "italic.gif",

+underline_img : "underline.gif",

+clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.'

+});

+

--- a/tinymce/2/jscripts/tiny_mce/langs/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/langs/readme.txt
@@ -1,10 +1,10 @@
-Beginning with version 2.0.5 the language packs are no
-longer included with the core distribution.
-Language packs can be downloaded from the TinyMCE website:
-http://tinymce.moxiecode.com/download.php
+Beginning with version 2.0.5 the language packs are no

+longer included with the core distribution.

+Language packs can be downloaded from the TinyMCE website:

+http://tinymce.moxiecode.com/download.php

+

+The language pack codes are based on ISO-639-1:

+http://www.loc.gov/standards/iso639-2/englangn.html

+

+Plrease try using entities if possible. Like &aring; etc for non a-z characters.

 
-The language pack codes are based on ISO-639-1:
-http://www.loc.gov/standards/iso639-2/englangn.html
-
-Plrease try using entities if possible. Like &aring; etc for non a-z characters.
-

--- a/tinymce/2/jscripts/tiny_mce/license.txt
+++ b/tinymce/2/jscripts/tiny_mce/license.txt
@@ -1,505 +1,505 @@
-		  GNU LESSER GENERAL PUBLIC LICENSE
-		       Version 2.1, February 1999
+		  GNU LESSER GENERAL PUBLIC LICENSE

+		       Version 2.1, February 1999

+

+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.

+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

+ Everyone is permitted to copy and distribute verbatim copies

+ of this license document, but changing it is not allowed.

+

+[This is the first released version of the Lesser GPL.  It also counts

+ as the successor of the GNU Library Public License, version 2, hence

+ the version number 2.1.]

+

+			    Preamble

+

+  The licenses for most software are designed to take away your

+freedom to share and change it.  By contrast, the GNU General Public

+Licenses are intended to guarantee your freedom to share and change

+free software--to make sure the software is free for all its users.

+

+  This license, the Lesser General Public License, applies to some

+specially designated software packages--typically libraries--of the

+Free Software Foundation and other authors who decide to use it.  You

+can use it too, but we suggest you first think carefully about whether

+this license or the ordinary General Public License is the better

+strategy to use in any particular case, based on the explanations below.

+

+  When we speak of free software, we are referring to freedom of use,

+not price.  Our General Public Licenses are designed to make sure that

+you have the freedom to distribute copies of free software (and charge

+for this service if you wish); that you receive source code or can get

+it if you want it; that you can change the software and use pieces of

+it in new free programs; and that you are informed that you can do

+these things.

+

+  To protect your rights, we need to make restrictions that forbid

+distributors to deny you these rights or to ask you to surrender these

+rights.  These restrictions translate to certain responsibilities for

+you if you distribute copies of the library or if you modify it.

+

+  For example, if you distribute copies of the library, whether gratis

+or for a fee, you must give the recipients all the rights that we gave

+you.  You must make sure that they, too, receive or can get the source

+code.  If you link other code with the library, you must provide

+complete object files to the recipients, so that they can relink them

+with the library after making changes to the library and recompiling

+it.  And you must show them these terms so they know their rights.

+

+  We protect your rights with a two-step method: (1) we copyright the

+library, and (2) we offer you this license, which gives you legal

+permission to copy, distribute and/or modify the library.

+

+  To protect each distributor, we want to make it very clear that

+there is no warranty for the free library.  Also, if the library is

+modified by someone else and passed on, the recipients should know

+that what they have is not the original version, so that the original

+author's reputation will not be affected by problems that might be

+introduced by others.

+

+  Finally, software patents pose a constant threat to the existence of

+any free program.  We wish to make sure that a company cannot

+effectively restrict the users of a free program by obtaining a

+restrictive license from a patent holder.  Therefore, we insist that

+any patent license obtained for a version of the library must be

+consistent with the full freedom of use specified in this license.

+

+  Most GNU software, including some libraries, is covered by the

+ordinary GNU General Public License.  This license, the GNU Lesser

+General Public License, applies to certain designated libraries, and

+is quite different from the ordinary General Public License.  We use

+this license for certain libraries in order to permit linking those

+libraries into non-free programs.

+

+  When a program is linked with a library, whether statically or using

+a shared library, the combination of the two is legally speaking a

+combined work, a derivative of the original library.  The ordinary

+General Public License therefore permits such linking only if the

+entire combination fits its criteria of freedom.  The Lesser General

+Public License permits more lax criteria for linking other code with

+the library.

+

+  We call this license the "Lesser" General Public License because it

+does Less to protect the user's freedom than the ordinary General

+Public License.  It also provides other free software developers Less

+of an advantage over competing non-free programs.  These disadvantages

+are the reason we use the ordinary General Public License for many

+libraries.  However, the Lesser license provides advantages in certain

+special circumstances.

+

+  For example, on rare occasions, there may be a special need to

+encourage the widest possible use of a certain library, so that it becomes

+a de-facto standard.  To achieve this, non-free programs must be

+allowed to use the library.  A more frequent case is that a free

+library does the same job as widely used non-free libraries.  In this

+case, there is little to gain by limiting the free library to free

+software only, so we use the Lesser General Public License.

+

+  In other cases, permission to use a particular library in non-free

+programs enables a greater number of people to use a large body of

+free software.  For example, permission to use the GNU C Library in

+non-free programs enables many more people to use the whole GNU

+operating system, as well as its variant, the GNU/Linux operating

+system.

+

+  Although the Lesser General Public License is Less protective of the

+users' freedom, it does ensure that the user of a program that is

+linked with the Library has the freedom and the wherewithal to run

+that program using a modified version of the Library.

+

+  The precise terms and conditions for copying, distribution and

+modification follow.  Pay close attention to the difference between a

+"work based on the library" and a "work that uses the library".  The

+former contains code derived from the library, whereas the latter must

+be combined with the library in order to run.

+

+		  GNU LESSER GENERAL PUBLIC LICENSE

+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

+

+  0. This License Agreement applies to any software library or other

+program which contains a notice placed by the copyright holder or

+other authorized party saying it may be distributed under the terms of

+this Lesser General Public License (also called "this License").

+Each licensee is addressed as "you".

+

+  A "library" means a collection of software functions and/or data

+prepared so as to be conveniently linked with application programs

+(which use some of those functions and data) to form executables.

+

+  The "Library", below, refers to any such software library or work

+which has been distributed under these terms.  A "work based on the

+Library" means either the Library or any derivative work under

+copyright law: that is to say, a work containing the Library or a

+portion of it, either verbatim or with modifications and/or translated

+straightforwardly into another language.  (Hereinafter, translation is

+included without limitation in the term "modification".)

+

+  "Source code" for a work means the preferred form of the work for

+making modifications to it.  For a library, complete source code means

+all the source code for all modules it contains, plus any associated

+interface definition files, plus the scripts used to control compilation

+and installation of the library.

+

+  Activities other than copying, distribution and modification are not

+covered by this License; they are outside its scope.  The act of

+running a program using the Library is not restricted, and output from

+such a program is covered only if its contents constitute a work based

+on the Library (independent of the use of the Library in a tool for

+writing it).  Whether that is true depends on what the Library does

+and what the program that uses the Library does.

+  

+  1. You may copy and distribute verbatim copies of the Library's

+complete source code as you receive it, in any medium, provided that

+you conspicuously and appropriately publish on each copy an

+appropriate copyright notice and disclaimer of warranty; keep intact

+all the notices that refer to this License and to the absence of any

+warranty; and distribute a copy of this License along with the

+Library.

+

+  You may charge a fee for the physical act of transferring a copy,

+and you may at your option offer warranty protection in exchange for a

+fee.

+

+  2. You may modify your copy or copies of the Library or any portion

+of it, thus forming a work based on the Library, and copy and

+distribute such modifications or work under the terms of Section 1

+above, provided that you also meet all of these conditions:

+

+    a) The modified work must itself be a software library.

+

+    b) You must cause the files modified to carry prominent notices

+    stating that you changed the files and the date of any change.

+

+    c) You must cause the whole of the work to be licensed at no

+    charge to all third parties under the terms of this License.

+

+    d) If a facility in the modified Library refers to a function or a

+    table of data to be supplied by an application program that uses

+    the facility, other than as an argument passed when the facility

+    is invoked, then you must make a good faith effort to ensure that,

+    in the event an application does not supply such function or

+    table, the facility still operates, and performs whatever part of

+    its purpose remains meaningful.

+

+    (For example, a function in a library to compute square roots has

+    a purpose that is entirely well-defined independent of the

+    application.  Therefore, Subsection 2d requires that any

+    application-supplied function or table used by this function must

+    be optional: if the application does not supply it, the square

+    root function must still compute square roots.)

+

+These requirements apply to the modified work as a whole.  If

+identifiable sections of that work are not derived from the Library,

+and can be reasonably considered independent and separate works in

+themselves, then this License, and its terms, do not apply to those

+sections when you distribute them as separate works.  But when you

+distribute the same sections as part of a whole which is a work based

+on the Library, the distribution of the whole must be on the terms of

+this License, whose permissions for other licensees extend to the

+entire whole, and thus to each and every part regardless of who wrote

+it.

+

+Thus, it is not the intent of this section to claim rights or contest

+your rights to work written entirely by you; rather, the intent is to

+exercise the right to control the distribution of derivative or

+collective works based on the Library.

+

+In addition, mere aggregation of another work not based on the Library

+with the Library (or with a work based on the Library) on a volume of

+a storage or distribution medium does not bring the other work under

+the scope of this License.

+

+  3. You may opt to apply the terms of the ordinary GNU General Public

+License instead of this License to a given copy of the Library.  To do

+this, you must alter all the notices that refer to this License, so

+that they refer to the ordinary GNU General Public License, version 2,

+instead of to this License.  (If a newer version than version 2 of the

+ordinary GNU General Public License has appeared, then you can specify

+that version instead if you wish.)  Do not make any other change in

+these notices.

+

+  Once this change is made in a given copy, it is irreversible for

+that copy, so the ordinary GNU General Public License applies to all

+subsequent copies and derivative works made from that copy.

+

+  This option is useful when you wish to copy part of the code of

+the Library into a program that is not a library.

+

+  4. You may copy and distribute the Library (or a portion or

+derivative of it, under Section 2) in object code or executable form

+under the terms of Sections 1 and 2 above provided that you accompany

+it with the complete corresponding machine-readable source code, which

+must be distributed under the terms of Sections 1 and 2 above on a

+medium customarily used for software interchange.

+

+  If distribution of object code is made by offering access to copy

+from a designated place, then offering equivalent access to copy the

+source code from the same place satisfies the requirement to

+distribute the source code, even though third parties are not

+compelled to copy the source along with the object code.

+

+  5. A program that contains no derivative of any portion of the

+Library, but is designed to work with the Library by being compiled or

+linked with it, is called a "work that uses the Library".  Such a

+work, in isolation, is not a derivative work of the Library, and

+therefore falls outside the scope of this License.

+

+  However, linking a "work that uses the Library" with the Library

+creates an executable that is a derivative of the Library (because it

+contains portions of the Library), rather than a "work that uses the

+library".  The executable is therefore covered by this License.

+Section 6 states terms for distribution of such executables.

+

+  When a "work that uses the Library" uses material from a header file

+that is part of the Library, the object code for the work may be a

+derivative work of the Library even though the source code is not.

+Whether this is true is especially significant if the work can be

+linked without the Library, or if the work is itself a library.  The

+threshold for this to be true is not precisely defined by law.

+

+  If such an object file uses only numerical parameters, data

+structure layouts and accessors, and small macros and small inline

+functions (ten lines or less in length), then the use of the object

+file is unrestricted, regardless of whether it is legally a derivative

+work.  (Executables containing this object code plus portions of the

+Library will still fall under Section 6.)

+

+  Otherwise, if the work is a derivative of the Library, you may

+distribute the object code for the work under the terms of Section 6.

+Any executables containing that work also fall under Section 6,

+whether or not they are linked directly with the Library itself.

+

+  6. As an exception to the Sections above, you may also combine or

+link a "work that uses the Library" with the Library to produce a

+work containing portions of the Library, and distribute that work

+under terms of your choice, provided that the terms permit

+modification of the work for the customer's own use and reverse

+engineering for debugging such modifications.

+

+  You must give prominent notice with each copy of the work that the

+Library is used in it and that the Library and its use are covered by

+this License.  You must supply a copy of this License.  If the work

+during execution displays copyright notices, you must include the

+copyright notice for the Library among them, as well as a reference

+directing the user to the copy of this License.  Also, you must do one

+of these things:

+

+    a) Accompany the work with the complete corresponding

+    machine-readable source code for the Library including whatever

+    changes were used in the work (which must be distributed under

+    Sections 1 and 2 above); and, if the work is an executable linked

+    with the Library, with the complete machine-readable "work that

+    uses the Library", as object code and/or source code, so that the

+    user can modify the Library and then relink to produce a modified

+    executable containing the modified Library.  (It is understood

+    that the user who changes the contents of definitions files in the

+    Library will not necessarily be able to recompile the application

+    to use the modified definitions.)

+

+    b) Use a suitable shared library mechanism for linking with the

+    Library.  A suitable mechanism is one that (1) uses at run time a

+    copy of the library already present on the user's computer system,

+    rather than copying library functions into the executable, and (2)

+    will operate properly with a modified version of the library, if

+    the user installs one, as long as the modified version is

+    interface-compatible with the version that the work was made with.

+

+    c) Accompany the work with a written offer, valid for at

+    least three years, to give the same user the materials

+    specified in Subsection 6a, above, for a charge no more

+    than the cost of performing this distribution.

+

+    d) If distribution of the work is made by offering access to copy

+    from a designated place, offer equivalent access to copy the above

+    specified materials from the same place.

+

+    e) Verify that the user has already received a copy of these

+    materials or that you have already sent this user a copy.

+

+  For an executable, the required form of the "work that uses the

+Library" must include any data and utility programs needed for

+reproducing the executable from it.  However, as a special exception,

+the materials to be distributed need not include anything that is

+normally distributed (in either source or binary form) with the major

+components (compiler, kernel, and so on) of the operating system on

+which the executable runs, unless that component itself accompanies

+the executable.

+

+  It may happen that this requirement contradicts the license

+restrictions of other proprietary libraries that do not normally

+accompany the operating system.  Such a contradiction means you cannot

+use both them and the Library together in an executable that you

+distribute.

+

+  7. You may place library facilities that are a work based on the

+Library side-by-side in a single library together with other library

+facilities not covered by this License, and distribute such a combined

+library, provided that the separate distribution of the work based on

+the Library and of the other library facilities is otherwise

+permitted, and provided that you do these two things:

+

+    a) Accompany the combined library with a copy of the same work

+    based on the Library, uncombined with any other library

+    facilities.  This must be distributed under the terms of the

+    Sections above.

+

+    b) Give prominent notice with the combined library of the fact

+    that part of it is a work based on the Library, and explaining

+    where to find the accompanying uncombined form of the same work.

+

+  8. You may not copy, modify, sublicense, link with, or distribute

+the Library except as expressly provided under this License.  Any

+attempt otherwise to copy, modify, sublicense, link with, or

+distribute the Library is void, and will automatically terminate your

+rights under this License.  However, parties who have received copies,

+or rights, from you under this License will not have their licenses

+terminated so long as such parties remain in full compliance.

+

+  9. You are not required to accept this License, since you have not

+signed it.  However, nothing else grants you permission to modify or

+distribute the Library or its derivative works.  These actions are

+prohibited by law if you do not accept this License.  Therefore, by

+modifying or distributing the Library (or any work based on the

+Library), you indicate your acceptance of this License to do so, and

+all its terms and conditions for copying, distributing or modifying

+the Library or works based on it.

+

+  10. Each time you redistribute the Library (or any work based on the

+Library), the recipient automatically receives a license from the

+original licensor to copy, distribute, link with or modify the Library

+subject to these terms and conditions.  You may not impose any further

+restrictions on the recipients' exercise of the rights granted herein.

+You are not responsible for enforcing compliance by third parties with

+this License.

+

+  11. If, as a consequence of a court judgment or allegation of patent

+infringement or for any other reason (not limited to patent issues),

+conditions are imposed on you (whether by court order, agreement or

+otherwise) that contradict the conditions of this License, they do not

+excuse you from the conditions of this License.  If you cannot

+distribute so as to satisfy simultaneously your obligations under this

+License and any other pertinent obligations, then as a consequence you

+may not distribute the Library at all.  For example, if a patent

+license would not permit royalty-free redistribution of the Library by

+all those who receive copies directly or indirectly through you, then

+the only way you could satisfy both it and this License would be to

+refrain entirely from distribution of the Library.

+

+If any portion of this section is held invalid or unenforceable under any

+particular circumstance, the balance of the section is intended to apply,

+and the section as a whole is intended to apply in other circumstances.

+

+It is not the purpose of this section to induce you to infringe any

+patents or other property right claims or to contest validity of any

+such claims; this section has the sole purpose of protecting the

+integrity of the free software distribution system which is

+implemented by public license practices.  Many people have made

+generous contributions to the wide range of software distributed

+through that system in reliance on consistent application of that

+system; it is up to the author/donor to decide if he or she is willing

+to distribute software through any other system and a licensee cannot

+impose that choice.

+

+This section is intended to make thoroughly clear what is believed to

+be a consequence of the rest of this License.

+

+  12. If the distribution and/or use of the Library is restricted in

+certain countries either by patents or by copyrighted interfaces, the

+original copyright holder who places the Library under this License may add

+an explicit geographical distribution limitation excluding those countries,

+so that distribution is permitted only in or among countries not thus

+excluded.  In such case, this License incorporates the limitation as if

+written in the body of this License.

+

+  13. The Free Software Foundation may publish revised and/or new

+versions of the Lesser General Public License from time to time.

+Such new versions will be similar in spirit to the present version,

+but may differ in detail to address new problems or concerns.

+

+Each version is given a distinguishing version number.  If the Library

+specifies a version number of this License which applies to it and

+"any later version", you have the option of following the terms and

+conditions either of that version or of any later version published by

+the Free Software Foundation.  If the Library does not specify a

+license version number, you may choose any version ever published by

+the Free Software Foundation.

+

+  14. If you wish to incorporate parts of the Library into other free

+programs whose distribution conditions are incompatible with these,

+write to the author to ask for permission.  For software which is

+copyrighted by the Free Software Foundation, write to the Free

+Software Foundation; we sometimes make exceptions for this.  Our

+decision will be guided by the two goals of preserving the free status

+of all derivatives of our free software and of promoting the sharing

+and reuse of software generally.

+

+			    NO WARRANTY

+

+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO

+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY

+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE

+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME

+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

+

+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU

+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR

+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE

+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A

+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF

+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

+DAMAGES.

+

+		     END OF TERMS AND CONDITIONS

+

+           How to Apply These Terms to Your New Libraries

+

+  If you develop a new library, and you want it to be of the greatest

+possible use to the public, we recommend making it free software that

+everyone can redistribute and change.  You can do so by permitting

+redistribution under these terms (or, alternatively, under the terms of the

+ordinary General Public License).

+

+  To apply these terms, attach the following notices to the library.  It is

+safest to attach them to the start of each source file to most effectively

+convey the exclusion of warranty; and each file should have at least the

+"copyright" line and a pointer to where the full notice is found.

+

+    <one line to give the library's name and a brief idea of what it does.>

+    Copyright (C) <year>  <name of author>

+

+    This library is free software; you can redistribute it and/or

+    modify it under the terms of the GNU Lesser General Public

+    License as published by the Free Software Foundation; either

+    version 2.1 of the License, or (at your option) any later version.

+

+    This library is distributed in the hope that it will be useful,

+    but WITHOUT ANY WARRANTY; without even the implied warranty of

+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

+    Lesser General Public License for more details.

+

+    You should have received a copy of the GNU Lesser General Public

+    License along with this library; if not, write to the Free Software

+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

+

+Also add information on how to contact you by electronic and paper mail.

+

+You should also get your employer (if you work as a programmer) or your

+school, if any, to sign a "copyright disclaimer" for the library, if

+necessary.  Here is a sample; alter the names:

+

+  Yoyodyne, Inc., hereby disclaims all copyright interest in the

+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

+

+  <signature of Ty Coon>, 1 April 1990

+  Ty Coon, President of Vice

+

+That's all there is to it!

+

+

 
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-		  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
-

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/plugins/_template/editor_plugin.js
@@ -1,1 +1,1 @@
-
+tinyMCE.importPluginLanguagePack('template');var TinyMCE_TemplatePlugin={getInfo:function(){return{longname:'Template plugin',author:'Your name',authorurl:'http://www.yoursite.com',infourl:'http://www.yoursite.com/docs/template.html',version:"1.0"}},initInstance:function(inst){alert("Initialization parameter:"+tinyMCE.getParam("template_someparam",false));inst.addShortcut('ctrl','t','lang_template_desc','mceTemplate')},removeInstance:function(inst){},getControlHTML:function(cn){switch(cn){case"template":return tinyMCE.getButtonHTML(cn,'lang_template_desc','{$pluginurl}/images/template.gif','mceTemplate',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceTemplate":if(user_interface){var template=new Array();template['file']='../../plugins/template/popup.htm';template['width']=300;template['height']=200;tinyMCE.openWindow(template,{editor_id:editor_id,some_custom_arg:"somecustomdata"});tinyMCE.triggerNodeChange(false)}else{alert("execCommand: mceTemplate gets called from popup.")}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node.parentNode.nodeName=="STRONG"||node.parentNode.nodeName=="B"){tinyMCE.switchClass(editor_id+'_template','mceButtonSelected');return true}tinyMCE.switchClass(editor_id+'_template','mceButtonNormal')},setupContent:function(editor_id,body,doc){},onChange:function(inst){},handleEvent:function(e){top.status="template plugin event: "+e.type;return true;},cleanup:function(type,content,inst){switch(type){case"get_from_editor":alert("[FROM] Value HTML string: "+content);break;case"insert_to_editor":alert("[TO] Value HTML string: "+content);break;case"get_from_editor_dom":alert("[FROM] Value DOM Element "+content.innerHTML);break;case"insert_to_editor_dom":alert("[TO] Value DOM Element: "+content.innerHTML);break}return content},_someInternalFunction:function(a,b){return 1}};tinyMCE.addPlugin("template",TinyMCE_TemplatePlugin);

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js
@@ -1,1 +1,246 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('template');

+

+/****

+ * Steps for creating a plugin from this template:

+ *

+ * 1. Change all "template" to the name of your plugin.

+ * 2. Remove all the callbacks in this file that you don't need.

+ * 3. Remove the popup.htm file if you don't need any popups.

+ * 4. Add your custom logic to the callbacks you needed.

+ * 5. Write documentation in a readme.txt file on how to use the plugin.

+ * 6. Upload it under the "Plugins" section at sourceforge.

+ *

+ ****/

+

+// Singleton class

+var TinyMCE_TemplatePlugin = {

+	/**

+	 * Returns information about the plugin as a name/value array.

+	 * The current keys are longname, author, authorurl, infourl and version.

+	 *

+	 * @returns Name/value array containing information about the plugin.

+	 * @type Array 

+	 */

+	getInfo : function() {

+		return {

+			longname : 'Template plugin',

+			author : 'Your name',

+			authorurl : 'http://www.yoursite.com',

+			infourl : 'http://www.yoursite.com/docs/template.html',

+			version : "1.0"

+		};

+	},

+

+	/**

+	 * Gets executed when a TinyMCE editor instance is initialized.

+	 *

+	 * @param {TinyMCE_Control} Initialized TinyMCE editor control instance. 

+	 */

+	initInstance : function(inst) {

+		// You can take out plugin specific parameters

+		alert("Initialization parameter:" + tinyMCE.getParam("template_someparam", false));

+

+		// Register custom keyboard shortcut

+		inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate');

+	},

+

+	/**

+	 * Gets executed when a TinyMCE editor instance is removed.

+	 *

+	 * @param {TinyMCE_Control} Removed TinyMCE editor control instance. 

+	 */

+	removeInstance : function(inst) {

+		// Cleanup instance resources

+	},

+

+	/**

+	 * Returns the HTML code for a specific control or empty string if this plugin doesn't have that control.

+	 * A control can be a button, select list or any other HTML item to present in the TinyMCE user interface.

+	 * The variable {$editor_id} will be replaced with the current editor instance id and {$pluginurl} will be replaced

+	 * with the URL of the plugin. Language variables such as {$lang_somekey} will also be replaced with contents from

+	 * the language packs.

+	 *

+	 * @param {string} cn Editor control/button name to get HTML for.

+	 * @return HTML code for a specific control or empty string.

+	 * @type string

+	 */

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "template":

+				return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true);

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes a specific command, this function handles plugin commands.

+	 *

+	 * @param {string} editor_id TinyMCE editor instance id that issued the command.

+	 * @param {HTMLElement} element Body or root element for the editor instance.

+	 * @param {string} command Command name to be executed.

+	 * @param {string} user_interface True/false if a user interface should be presented.

+	 * @param {mixed} value Custom value argument, can be anything.

+	 * @return true/false if the command was executed by this plugin or not.

+	 * @type

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			// Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser.

+			case "mceTemplate":

+				// Show UI/Popup

+				if (user_interface) {

+					// Open a popup window and send in some custom data in a window argument

+					var template = new Array();

+

+					template['file'] = '../../plugins/template/popup.htm'; // Relative to theme

+					template['width'] = 300;

+					template['height'] = 200;

+

+					tinyMCE.openWindow(template, {editor_id : editor_id, some_custom_arg : "somecustomdata"});

+

+					// Let TinyMCE know that something was modified

+					tinyMCE.triggerNodeChange(false);

+				} else {

+					// Do a command this gets called from the template popup

+					alert("execCommand: mceTemplate gets called from popup.");

+				}

+

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	/**

+	 * Gets called ones the cursor/selection in a TinyMCE instance changes. This is useful to enable/disable

+	 * button controls depending on where the user are and what they have selected. This method gets executed

+	 * alot and should be as performance tuned as possible.

+	 *

+	 * @param {string} editor_id TinyMCE editor instance id that was changed.

+	 * @param {HTMLNode} node Current node location, where the cursor is in the DOM tree.

+	 * @param {int} undo_index The current undo index, if this is -1 custom undo/redo is disabled.

+	 * @param {int} undo_levels The current undo levels, if this is -1 custom undo/redo is disabled.

+	 * @param {boolean} visual_aid Is visual aids enabled/disabled ex: dotted lines on tables.

+	 * @param {boolean} any_selection Is there any selection at all or is there only a cursor.

+	 */

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		// Select template button if parent node is a strong or b

+		if (node.parentNode.nodeName == "STRONG" || node.parentNode.nodeName == "B") {

+			tinyMCE.switchClass(editor_id + '_template', 'mceButtonSelected');

+			return true;

+		}

+

+		// Deselect template button

+		tinyMCE.switchClass(editor_id + '_template', 'mceButtonNormal');

+	},

+

+	/**

+	 * Gets called when a TinyMCE editor instance gets filled with content on startup.

+	 *

+	 * @param {string} editor_id TinyMCE editor instance id that was filled with content.

+	 * @param {HTMLElement} body HTML body element of editor instance.

+	 * @param {HTMLDocument} doc HTML document instance.

+	 */

+	setupContent : function(editor_id, body, doc) {

+	},

+

+	/**

+	 * Gets called when the contents of a TinyMCE area is modified, in other words when a undo level is

+	 * added.

+	 *

+	 * @param {TinyMCE_Control} inst TinyMCE editor area control instance that got modified.

+	 */

+	onChange : function(inst) {

+	},

+

+	/**

+	 * Gets called when TinyMCE handles events such as keydown, mousedown etc. TinyMCE

+	 * doesn't listen on all types of events so custom event handling may be required for

+	 * some purposes.

+	 *

+	 * @param {Event} e HTML editor event reference.

+	 * @return true - pass to next handler in chain, false - stop chain execution

+	 * @type boolean

+	 */

+	handleEvent : function(e) {

+		// Display event type in statusbar

+		top.status = "template plugin event: " + e.type;

+

+		return true; // Pass to next handler

+	},

+

+	/**

+	 * Gets called when HTML contents is inserted or retrived from a TinyMCE editor instance.

+	 * The type parameter contains what type of event that was performed and what format the content is in.

+	 * Possible valuses for type is get_from_editor, insert_to_editor, get_from_editor_dom, insert_to_editor_dom.

+	 *

+	 * @param {string} type Cleanup event type.

+	 * @param {mixed} content Editor contents that gets inserted/extracted can be a string or DOM element.

+	 * @param {TinyMCE_Control} inst TinyMCE editor instance control that performes the cleanup.

+	 * @return New content or the input content depending on action.

+	 * @type string

+	 */

+	cleanup : function(type, content, inst) {

+		switch (type) {

+			case "get_from_editor":

+				alert("[FROM] Value HTML string: " + content);

+

+				// Do custom cleanup code here

+

+				break;

+

+			case "insert_to_editor":

+				alert("[TO] Value HTML string: " + content);

+

+				// Do custom cleanup code here

+

+				break;

+

+			case "get_from_editor_dom":

+				alert("[FROM] Value DOM Element " + content.innerHTML);

+

+				// Do custom cleanup code here

+

+				break;

+

+			case "insert_to_editor_dom":

+				alert("[TO] Value DOM Element: " + content.innerHTML);

+

+				// Do custom cleanup code here

+

+				break;

+		}

+

+		return content;

+	},

+

+	// Private plugin internal methods

+

+	/**

+	 * This is just a internal plugin method, prefix all internal methods with a _ character.

+	 * The prefix is needed so they doesn't collide with future TinyMCE callback functions.

+	 *

+	 * @param {string} a Some arg1.

+	 * @param {string} b Some arg2.

+	 * @return Some return.

+	 * @type string

+	 */

+	_someInternalFunction : function(a, b) {

+		return 1;

+	}

+};

+

+// Adds the plugin class to the list of available TinyMCE plugins

+tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin);

 

 Binary files /dev/null and b/tinymce/2/jscripts/tiny_mce/plugins/_template/images/template.gif differ
--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/plugins/_template/langs/en.js
@@ -1,1 +1,9 @@
+// UK lang variables

+

+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */

+

+tinyMCE.addToLang('',{

+template_title : 'This is just a template popup',

+template_desc : 'This is just a template button'

+});

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/plugins/_template/popup.htm
@@ -1,1 +1,49 @@
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_template_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript">

+	<!--

+		function init() {

+			var inst = tinyMCE.selectedInstance;

+			var elm = inst.getFocusElement();

+

+			alert("Got a window argument from plugin: " + tinyMCE.getWindowArg('some_custom_arg'));

+

+			// Set the form item value to the selected node element name

+			document.forms[0].nodename.value = elm.nodeName;

+		}

+

+		function insertSomething() {

+			// Execute the mceTemplate command without UI this time

+			tinyMCEPopup.execCommand('mceTemplate');

+

+			// Close the dialog

+			tinyMCEPopup.close();

+		}

+	//-->

+	</script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');"> 

+	<form onsubmit="insert();return false;">

+		<h3>{$lang_template_title}</h3>

+

+		<!-- Gets filled with the selected elements name -->

+		<div style="margin-top: 10px; margin-bottom: 10px">

+			The selected element name: <input type="text" name="nodename" />

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertSomething();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body> 

+</html> 

 

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/plugins/_template/readme.txt
@@ -1,1 +1,1 @@
-
+This is a template/tutorial plugin that where created to help you in the development of own plugins for TinyMCE.

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/css/advhr.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/css/advhr.css
@@ -1,6 +1,24 @@
-input.radio {border:1px none #000; background:transparent; vertical-align:middle;}
-.panel_wrapper div.current {height:80px;}
-#width {width:50px; vertical-align:middle;}
-#width2 {width:50px; vertical-align:middle;}
-#size {width:100px;}
+input.radio {

+	border: 1px none #000000;

+	background-color: transparent;

+	vertical-align: middle;

+}

+

+.panel_wrapper div.current {

+	height: 80px;

+}

+

+#width {

+	width: 50px;

+	vertical-align: middle;

+}

+

+#width2 {

+	width: 50px;

+	vertical-align: middle;

+}

+

+#size {

+	width: 100px;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.AdvancedHRPlugin',{init:function(ed,url){ed.addCommand('mceAdvancedHr',function(){ed.windowManager.open({file:url+'/rule.htm',width:250+parseInt(ed.getLang('advhr.delta_width',0)),height:160+parseInt(ed.getLang('advhr.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('advhr',{title:'advhr.advhr_desc',cmd:'mceAdvancedHr'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('advhr',n.nodeName=='HR');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='HR')ed.selection.select(e);});},getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advhr',tinymce.plugins.AdvancedHRPlugin);})();
+tinyMCE.importPluginLanguagePack('advhr');var TinyMCE_AdvancedHRPlugin={getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"advhr":return tinyMCE.getButtonHTML(cn,'lang_insert_advhr_desc','{$pluginurl}/images/advhr.gif','mceAdvancedHr')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_advhr_delta_width',0);template['height']+=tinyMCE.getLang('lang_advhr_delta_height',0);var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.selectedElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):""}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'})}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'<hr />')}else{tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",size:size,width:width,noshade:noshade,mceDo:'insert'})}}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="HR"){tinyMCE.switchClass(editor_id+'_advhr','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advhr','mceButtonNormal');return true}};tinyMCE.addPlugin("advhr",TinyMCE_AdvancedHRPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js
@@ -1,54 +1,91 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('advhr');

+

+var TinyMCE_AdvancedHRPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Advanced HR',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		}

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "advhr":

+				return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr');

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes the mceAdvanceHr command.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceAdvancedHr":

+				var template = new Array();

+

+				template['file']   = '../../plugins/advhr/rule.htm'; // Relative to theme

+				template['width']  = 250;

+				template['height'] = 160;

+

+				template['width']  += tinyMCE.getLang('lang_advhr_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0);

+

+				var size = "", width = "", noshade = "";

+				if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") {

+					tinyMCE.hrElement = tinyMCE.selectedElement;

+

+					if (tinyMCE.hrElement) {

+						size    = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";

+						width   = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";

+						noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";

+					}

+

+					tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});

+				} else {

+					if (tinyMCE.isMSIE) {

+						tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');

+					} else {

+						tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'});

+					}

+				}

+

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		if (node == null)

+			return;

+

+		do {

+			if (node.nodeName == "HR") {

+				tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected');

+				return true;

+			}

+		} while ((node = node.parentNode));

+

+		tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal');

+

+		return true;

+	}

+};

+

+tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.AdvancedHRPlugin', {
-		init : function(ed, url) {
-			// Register commands
-			ed.addCommand('mceAdvancedHr', function() {
-				ed.windowManager.open({
-					file : url + '/rule.htm',
-					width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),
-					height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			// Register buttons
-			ed.addButton('advhr', {
-				title : 'advhr.advhr_desc',
-				cmd : 'mceAdvancedHr'
-			});
-
-			ed.onNodeChange.add(function(ed, cm, n) {
-				cm.setActive('advhr', n.nodeName == 'HR');
-			});
-
-			ed.onClick.add(function(ed, e) {
-				e = e.target;
-
-				if (e.nodeName === 'HR')
-					ed.selection.select(e);
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Advanced HR',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/js/rule.js
+++ /dev/null
@@ -1,44 +1,1 @@
-var AdvHRDialog = {
-	init : function(ed) {
-		var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;
 
-		w = dom.getAttrib(n, 'width');
-		f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');
-		f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';
-		f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');
-		selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');
-	},
-
-	update : function() {
-		var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';
-
-		h = '<hr';
-
-		if (f.size.value) {
-			h += ' size="' + f.size.value + '"';
-			st += ' height:' + f.size.value + 'px;';
-		}
-
-		if (f.width.value) {
-			h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';
-			st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';
-		}
-
-		if (f.noshade.checked) {
-			h += ' noshade="noshade"';
-			st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';
-		}
-
-		if (ed.settings.inline_styles)
-			h += ' style="' + tinymce.trim(st) + '"';
-
-		h += ' />';
-
-		ed.execCommand("mceInsertContent", false, h);
-		tinyMCEPopup.close();
-	}
-};
-
-tinyMCEPopup.requireLangPack();
-tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js
@@ -1,44 +1,44 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var formObj = document.forms[0];

+	formObj.width.value  = tinyMCE.getWindowArg('width');

+	formObj.size.value   = tinyMCE.getWindowArg('size');

+	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'),'Insert',true);

+	if (tinyMCE.getWindowArg('noshade')) {

+		formObj.noshade.checked = true;

+	}

+	if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {

+		formObj.width2.value = "%";

+		formObj.width.value  = formObj.width.value.substring(0,formObj.width.value.length-1);

+	}

+}

+

+function insertHR() {

+	var formObj = document.forms[0];

+	var width   = formObj.width.value;

+	var size    = formObj.size.value;

+	var html = '<hr';

+	if (size!='' && size!=0) {

+		html += ' size="' + size + '"';

+	}

+	if (width!='' && width!=0) {

+		html += ' width="' + width;

+		if (formObj.width2.value=='%') {

+			html += '%';

+		}

+		html += '"';

+	}

+	if (formObj.noshade.checked==true) {

+		html += ' noshade="noshade"';

+	}

+	html += ' />';

+

+	tinyMCEPopup.execCommand("mceInsertContent", true, html);

+	tinyMCEPopup.close();

+}

+

+function cancelAction() {

+	tinyMCEPopup.close();

+}

 
-	var formObj = document.forms[0];
-	formObj.width.value  = tinyMCE.getWindowArg('width');
-	formObj.size.value   = tinyMCE.getWindowArg('size');
-	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'),'Insert',true);
-	if (tinyMCE.getWindowArg('noshade')) {
-		formObj.noshade.checked = true;
-	}
-	if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {
-		formObj.width2.value = "%";
-		formObj.width.value  = formObj.width.value.substring(0,formObj.width.value.length-1);
-	}
-}
-
-function insertHR() {
-	var formObj = document.forms[0];
-	var width   = formObj.width.value;
-	var size    = formObj.size.value;
-	var html = '<hr';
-	if (size!='' && size!=0) {
-		html += ' size="' + size + '"';
-	}
-	if (width!='' && width!=0) {
-		html += ' width="' + width;
-		if (formObj.width2.value=='%') {
-			html += '%';
-		}
-		html += '"';
-	}
-	if (formObj.noshade.checked==true) {
-		html += ' noshade="noshade"';
-	}
-	html += ' />';
-
-	tinyMCEPopup.execCommand("mceInsertContent", true, html);
-	tinyMCEPopup.close();
-}
-
-function cancelAction() {
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/langs/en.js
@@ -1,9 +1,9 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+insert_advhr_desc : 'Horizontale rule',

+insert_advhr_width : 'Width',

+insert_advhr_size : 'Height',

+insert_advhr_noshade : 'No shadow'

+});

 
-tinyMCE.addToLang('',{
-insert_advhr_desc : 'Horizontale rule',
-insert_advhr_width : 'Width',
-insert_advhr_size : 'Height',
-insert_advhr_noshade : 'No shadow'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js
+++ /dev/null
@@ -1,5 +1,1 @@
-tinyMCE.addI18n('en.advhr_dlg',{
-width:"Width",
-size:"Height",
-noshade:"No shadow"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/advhr/rule.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advhr/rule.htm
@@ -1,64 +1,62 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advhr.advhr_desc}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/rule.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<link href="css/advhr.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body>
-<form onsubmit="AdvHRDialog.update();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_insert_advhr_desc}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/rule.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<link href="css/advhr.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');">

+<form onsubmit="insertHR();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_advhr_desc}</a></span></li>

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<table border="0" cellpadding="4" cellspacing="0">

+                    <tr>

+                        <td><label for="width">{$lang_insert_advhr_width}</label></td>

+                        <td nowrap="nowrap">

+                            <input id="width" name="width" type="text" value="" />

+                            <select name="width2" id="width2">

+                                <option value="">px</option>

+                                <option value="%">%</option>

+                            </select>

+                        </td>

+                    </tr>

+                    <tr>

+                        <td><label for="size">{$lang_insert_advhr_size}</label></td>

+                        <td><select id="size" name="size">

+                            <option value="">Normal</option>

+                            <option value="1">1</option>

+                            <option value="2">2</option>

+                            <option value="3">3</option>

+                            <option value="4">4</option>

+                            <option value="5">5</option>

+                        </select></td>

+                    </tr>

+                    <tr>

+                        <td><label for="noshade">{$lang_insert_advhr_noshade}</label></td>

+                        <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>

+                    </tr>

+            </table>

+		</div>

+	</div>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertHR();" />

+		</div>

+

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<table border="0" cellpadding="4" cellspacing="0">
-                    <tr>
-                        <td><label for="width">{#advhr_dlg.width}</label></td>
-                        <td nowrap="nowrap">
-                            <input id="width" name="width" type="text" value="" class="mceFocus" />
-                            <select name="width2" id="width2">
-                                <option value="">px</option>
-                                <option value="%">%</option>
-                            </select>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td><label for="size">{#advhr_dlg.size}</label></td>
-                        <td><select id="size" name="size">
-                            <option value="">Normal</option>
-                            <option value="1">1</option>
-                            <option value="2">2</option>
-                            <option value="3">3</option>
-                            <option value="4">4</option>
-                            <option value="5">5</option>
-                        </select></td>
-                    </tr>
-                    <tr>
-                        <td><label for="noshade">{#advhr_dlg.noshade}</label></td>
-                        <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
-                    </tr>
-            </table>
-		</div>
-	</div>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#insert}" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/css/advimage.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/css/advimage.css
@@ -1,14 +1,67 @@
-#src_list, #over_list, #out_list {width:280px;}
-.mceActionPanel {margin-top:7px;}
-.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}
-.checkbox {border:0;}
-.panel_wrapper div.current {height:305px;}
-#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
-#align, #classlist {width:150px;}
-#width, #height {vertical-align:middle; width:50px; text-align:center;}
-#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}
-#class_list {width:180px;}
-input {width: 280px;}
-#constrain, #onmousemovecheck {width:auto;}
-#id, #dir, #lang, #usemap, #longdesc {width:200px;}
+/* CSS file for advimage plugin popup */

+

+.mceImageList {

+	width: 280px;

+}

+

+.mceActionPanel {

+	margin-top: 7px;

+}

+

+.alignPreview {

+	border: 1px solid black;

+	width: 140px;

+	height: 140px;

+	overflow: hidden;

+	padding: 5px;

+}

+

+.checkbox {

+	border: 0;

+}

+

+.panel_wrapper div.current {

+	height: 305px;

+}

+

+#prev {

+	margin: 0;

+	border: 1px

+	solid black;

+	width: 99%;

+	height: 150px;

+	overflow: auto;

+}

+

+#align, #classlist {

+	width: 150px;

+}

+

+#width, #height {

+	vertical-align: middle;

+	width: 50px;

+	text-align: center;

+}

+

+#vspace, #hspace, #border {

+	vertical-align: middle;

+	width: 30px;

+	text-align: center;

+}

+

+#classlist {

+	width: 180px;

+}

+

+input {

+	width: 280px;

+}

+

+#constrain, #onmousemovecheck {

+	width: auto;

+}

+

+#id, #dir, #lang, #usemap, #longdesc {

+	width: 200px;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.AdvancedImagePlugin',{init:function(ed,url){ed.addCommand('mceAdvImage',function(){if(ed.dom.getAttrib(ed.selection.getNode(),'class').indexOf('mceItem')!=-1)return;ed.windowManager.open({file:url+'/image.htm',width:480+parseInt(ed.getLang('advimage.delta_width',0)),height:385+parseInt(ed.getLang('advimage.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('image',{title:'advimage.image_desc',cmd:'mceAdvImage'});},getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advimage',tinymce.plugins.AdvancedImagePlugin);})();
+tinyMCE.importPluginLanguagePack('advimage');var TinyMCE_AdvancedImagePlugin={getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"image":return tinyMCE.getButtonHTML(cn,'lang_image_desc','{$themeurl}/images/image.gif','mceAdvImage')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvImage":var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=480;template['height']=380;template['width']+=tinyMCE.getLang('lang_advimage_delta_width',0);template['height']+=tinyMCE.getLang('lang_advimage_delta_height',0);var inst=tinyMCE.getInstanceById(editor_id);var elm=inst.getFocusElement();if(elm!=null&&tinyMCE.getAttrib(elm,'class').indexOf('mceItem')!=-1)return true;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":var imgs=content.getElementsByTagName("img"),src,i;for(i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_advimage','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advimage','mceButtonNormal');return true},_getImageSrc:function(s){var sr,p=-1;if(!s)return"";if((p=s.indexOf('this.src='))!=-1){sr=s.substring(p+10);sr=sr.substring(0,sr.indexOf('\''));return sr}return""}};tinyMCE.addPlugin("advimage",TinyMCE_AdvancedImagePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js
@@ -1,47 +1,149 @@
-/**
- * $Id: editor_plugin_src.js 677 2008-03-07 13:52:41Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('advimage');

+

+var TinyMCE_AdvancedImagePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Advanced image',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "image":

+				return tinyMCE.getButtonHTML(cn, 'lang_image_desc', '{$themeurl}/images/image.gif', 'mceAdvImage');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		switch (command) {

+			case "mceAdvImage":

+				var template = new Array();

+

+				template['file']   = '../../plugins/advimage/image.htm';

+				template['width']  = 480;

+				template['height'] = 380;

+

+				// Language specific width and height addons

+				template['width']  += tinyMCE.getLang('lang_advimage_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0);

+

+				var inst = tinyMCE.getInstanceById(editor_id);

+				var elm = inst.getFocusElement();

+

+				if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1)

+					return true;

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});

+

+				return true;

+		}

+

+		return false;

+	},

+

+	cleanup : function(type, content) {

+		switch (type) {

+			case "insert_to_editor_dom":

+				var imgs = content.getElementsByTagName("img"), src, i;

+				for (i=0; i<imgs.length; i++) {

+					var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));

+					var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));

+

+					if ((src = this._getImageSrc(onmouseover)) != "") {

+						if (tinyMCE.getParam('convert_urls'))

+							src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);

+

+						imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");

+					}

+

+					if ((src = this._getImageSrc(onmouseout)) != "") {

+						if (tinyMCE.getParam('convert_urls'))

+							src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);

+

+						imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");

+					}

+				}

+				break;

+

+			case "get_from_editor_dom":

+				var imgs = content.getElementsByTagName("img");

+				for (var i=0; i<imgs.length; i++) {

+					var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseover'));

+					var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i], 'onmouseout'));

+

+					if ((src = this._getImageSrc(onmouseover)) != "") {

+						if (tinyMCE.getParam('convert_urls'))

+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");

+

+						imgs[i].setAttribute('onmouseover', "this.src='" + src + "';");

+					}

+

+					if ((src = this._getImageSrc(onmouseout)) != "") {

+						if (tinyMCE.getParam('convert_urls'))

+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");

+

+						imgs[i].setAttribute('onmouseout', "this.src='" + src + "';");

+					}

+				}

+				break;

+		}

+

+		return content;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		if (node == null)

+			return;

+

+		do {

+			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {

+				tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonSelected');

+				return true;

+			}

+		} while ((node = node.parentNode));

+

+		tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonNormal');

+

+		return true;

+	},

+

+	/**

+	 * Returns the image src from a scripted mouse over image str.

+	 *

+	 * @param {string} s String to get real src from.

+	 * @return Image src from a scripted mouse over image str.

+	 * @type string

+	 */

+	_getImageSrc : function(s) {

+		var sr, p = -1;

+

+		if (!s)

+			return "";

+

+		if ((p = s.indexOf('this.src=')) != -1) {

+			sr = s.substring(p + 10);

+			sr = sr.substring(0, sr.indexOf('\''));

+

+			return sr;

+		}

+

+		return "";

+	}

+};

+

+tinyMCE.addPlugin("advimage", TinyMCE_AdvancedImagePlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.AdvancedImagePlugin', {
-		init : function(ed, url) {
-			// Register commands
-			ed.addCommand('mceAdvImage', function() {
-				// Internal image object like a flash placeholder
-				if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
-					return;
-
-				ed.windowManager.open({
-					file : url + '/image.htm',
-					width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),
-					height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			// Register buttons
-			ed.addButton('image', {
-				title : 'advimage.image_desc',
-				cmd : 'mceAdvImage'
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Advanced image',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/image.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/image.htm
@@ -1,239 +1,242 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advimage_dlg.dialog_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/validate.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/image.js"></script>
-	<link href="css/advimage.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="advimage" style="display: none">
-    <form onsubmit="ImageDialog.insert();return false;" action="#"> 
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>
-				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_insert_image_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>

+	<link href="css/advimage.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="advimage" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+    <form onsubmit="insertAction();return false;" action="#"> 

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advimage_tab_general}</a></span></li>

+				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_advimage_tab_appearance}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advimage_tab_advanced}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+						<legend>{$lang_advimage_general}</legend>

+

+						<table class="properties">

+							<tr>

+								<td class="column1"><label id="srclabel" for="src">{$lang_insert_image_src}</label></td>

+								<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">

+									<tr> 

+									  <td><input name="src" type="text" id="src" value="" onchange="showPreviewImage(this.value);" /></td> 

+									  <td id="srcbrowsercontainer">&nbsp;</td>

+									</tr>

+								  </table></td>

+							</tr>

+							<tr id="imagelistsrcrow">

+								<td class="column1"><label for="imagelistsrc">{$lang_image_list}</label></td>

+								<td colspan="2" id="imagelistsrccontainer">&nbsp;</td>

+							</tr>

+							<tr> 

+								<td class="column1"><label id="altlabel" for="alt">{$lang_insert_image_alt}</label></td> 

+								<td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> 

+							</tr> 

+							<tr> 

+								<td class="column1"><label id="titlelabel" for="title">{$lang_advimage_title}</label></td> 

+								<td colspan="2"><input id="title" name="title" type="text" value="" /></td> 

+							</tr>

+						</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_advimage_preview}</legend>

+					<div id="prev"></div>

+				</fieldset>

+			</div>

+

+			<div id="appearance_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_advimage_tab_appearance}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr> 

+							<td class="column1"><label id="alignlabel" for="align">{$lang_insert_image_align}</label></td> 

+							<td><select id="align" name="align" onchange="changeAppearance();"> 

+									<option value="">{$lang_insert_image_align_default}</option> 

+									<option value="baseline">{$lang_insert_image_align_baseline}</option> 

+									<option value="top">{$lang_insert_image_align_top}</option> 

+									<option value="middle">{$lang_insert_image_align_middle}</option> 

+									<option value="bottom">{$lang_insert_image_align_bottom}</option> 

+									<option value="texttop">{$lang_insert_image_align_texttop}</option> 

+									<option value="absmiddle">{$lang_insert_image_align_absmiddle}</option> 

+									<option value="absbottom">{$lang_insert_image_align_absbottom}</option> 

+									<option value="left">{$lang_insert_image_align_left}</option> 

+									<option value="right">{$lang_insert_image_align_right}</option> 

+								</select> 

+							</td>

+							<td rowspan="6" valign="top">

+								<div class="alignPreview">

+									<img id="alignSampleImg" src="images/sample.gif" alt="{$lang_advimage_example_img}" />

+									Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam

+									nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum

+									edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam

+									erat volutpat.

+								</div>

+							</td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="widthlabel" for="width">{$lang_insert_image_dimensions}</label></td>

+							<td nowrap="nowrap">

+								<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="changeHeight();" /> x 

+								<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="changeWidth();" /> px

+							</td>

+						</tr>

+

+						<tr>

+							<td>&nbsp;</td>

+							<td><table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>

+										<td><label id="constrainlabel" for="constrain">{$lang_advimage_constrain_proportions}</label></td>

+									</tr>

+								</table></td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="vspacelabel" for="vspace">{$lang_insert_image_vspace}</label></td> 

+							<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" />

+							</td>

+						</tr>

+

+						<tr> 

+							<td class="column1"><label id="hspacelabel" for="hspace">{$lang_insert_image_hspace}</label></td> 

+							<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="borderlabel" for="border">{$lang_insert_image_border}</label></td> 

+							<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="changeAppearance();updateStyle();" /></td> 

+						</tr>

+

+						<tr>

+							<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>

+							<td colspan="2">

+								 <select id="classlist" name="classlist">

+									<option value="" selected>{$lang_not_set}</option>

+								 </select>

+							</td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="stylelabel" for="style">{$lang_advimage_style}</label></td> 

+							<td colspan="2"><input id="style" name="style" type="text" value="" onchange="styleUpdated();" /></td> 

+						</tr>

+

+						<!-- <tr>

+							<td class="column1"><label id="classeslabel" for="classes">{$lang_advimage_classes}</label></td> 

+							<td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> 

+						</tr> -->

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_advimage_swap_image}</legend>

+

+					<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="changeMouseMove();" />

+					<label id="onmousemovechecklabel" for="onmousemovecheck">{$lang_advimage_alt_image}</label>

+

+					<table border="0" cellpadding="4" cellspacing="0" width="100%">

+							<tr>

+								<td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{$lang_advimage_mouseover}</label></td> 

+								<td><table border="0" cellspacing="0" cellpadding="0"> 

+									<tr> 

+									  <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> 

+									  <td id="onmouseoversrccontainer">&nbsp;</td>

+									</tr>

+								  </table></td>

+							</tr>

+							<tr id="imagelistoverrow">

+								<td class="column1"><label for="imagelistover">{$lang_image_list}</label></td>

+								<td id="imagelistovercontainer">&nbsp;</td>

+							</tr>

+							<tr> 

+								<td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{$lang_advimage_mouseout}</label></td> 

+								<td class="column2"><table border="0" cellspacing="0" cellpadding="0"> 

+									<tr> 

+									  <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> 

+									  <td id="onmouseoutsrccontainer">&nbsp;</td>

+									</tr> 

+								  </table></td> 

+							</tr>

+							<tr id="imagelistoutrow">

+								<td class="column1"><label for="imagelistout">{$lang_image_list}</label></td>

+								<td id="imagelistoutcontainer">&nbsp;</td>

+							</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_advimage_misc}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label id="idlabel" for="id">{$lang_advimage_id}</label></td> 

+							<td><input id="id" name="id" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="dirlabel" for="dir">{$lang_advimage_langdir}</label></td> 

+							<td>

+								<select id="dir" name="dir" onchange="changeAppearance();"> 

+										<option value="">{$lang_not_set}</option> 

+										<option value="ltr">{$lang_advimage_ltr}</option> 

+										<option value="rtl">{$lang_advimage_rtl}</option> 

+								</select>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="langlabel" for="lang">{$lang_advimage_langcode}</label></td> 

+							<td>

+								<input id="lang" name="lang" type="text" value="" />

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="usemaplabel" for="usemap">{$lang_advimage_image_map}</label></td> 

+							<td>

+								<input id="usemap" name="usemap" type="text" value="" />

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="longdesclabel" for="longdesc">{$lang_advimage_long_desc}</label></td>

+							<td><table border="0" cellspacing="0" cellpadding="0">

+									<tr>

+									  <td><input id="longdesc" name="longdesc" type="text" value="" /></td>

+									  <td id="longdesccontainer">&nbsp;</td>

+									</tr>

+								</table></td> 

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" />

+			</div>

+		</div>

+    </form>

+</body> 

+</html> 

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-						<legend>{#advimage_dlg.general}</legend>
-
-						<table class="properties">
-							<tr>
-								<td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>
-								<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
-									<tr> 
-									  <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" /></td> 
-									  <td id="srcbrowsercontainer">&nbsp;</td>
-									</tr>
-								  </table></td>
-							</tr>
-							<tr>
-								<td><label for="src_list">{#advimage_dlg.image_list}</label></td>
-								<td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"></select></td>
-							</tr>
-							<tr> 
-								<td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td> 
-								<td colspan="2"><input id="alt" name="alt" type="text" value="" /></td> 
-							</tr> 
-							<tr> 
-								<td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td> 
-								<td colspan="2"><input id="title" name="title" type="text" value="" /></td> 
-							</tr>
-						</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#advimage_dlg.preview}</legend>
-					<div id="prev"></div>
-				</fieldset>
-			</div>
-
-			<div id="appearance_panel" class="panel">
-				<fieldset>
-					<legend>{#advimage_dlg.tab_appearance}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr> 
-							<td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td> 
-							<td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();"> 
-									<option value="">{#not_set}</option> 
-									<option value="baseline">{#advimage_dlg.align_baseline}</option>
-									<option value="top">{#advimage_dlg.align_top}</option>
-									<option value="middle">{#advimage_dlg.align_middle}</option>
-									<option value="bottom">{#advimage_dlg.align_bottom}</option>
-									<option value="text-top">{#advimage_dlg.align_texttop}</option>
-									<option value="text-bottom">{#advimage_dlg.align_textbottom}</option>
-									<option value="left">{#advimage_dlg.align_left}</option>
-									<option value="right">{#advimage_dlg.align_right}</option>
-								</select> 
-							</td>
-							<td rowspan="6" valign="top">
-								<div class="alignPreview">
-									<img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />
-									Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
-									nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
-									edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
-									erat volutpat.
-								</div>
-							</td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>
-							<td nowrap="nowrap">
-								<input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" /> x 
-								<input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" /> px
-							</td>
-						</tr>
-
-						<tr>
-							<td>&nbsp;</td>
-							<td><table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
-										<td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>
-									</tr>
-								</table></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td> 
-							<td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />
-							</td>
-						</tr>
-
-						<tr> 
-							<td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td> 
-							<td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td> 
-							<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td> 
-						</tr>
-
-						<tr>
-							<td><label for="class_list">{#class_name}</label></td>
-							<td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"></select></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td> 
-							<td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td> 
-						</tr>
-
-						<!-- <tr>
-							<td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td> 
-							<td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td> 
-						</tr> -->
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-				<fieldset>
-					<legend>{#advimage_dlg.swap_image}</legend>
-
-					<input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" />
-					<label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>
-
-					<table border="0" cellpadding="4" cellspacing="0" width="100%">
-							<tr>
-								<td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td> 
-								<td><table border="0" cellspacing="0" cellpadding="0"> 
-									<tr> 
-									  <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td> 
-									  <td id="onmouseoversrccontainer">&nbsp;</td>
-									</tr>
-								  </table></td>
-							</tr>
-							<tr>
-								<td><label for="over_list">{#advimage_dlg.image_list}</label></td>
-								<td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"></select></td>
-							</tr>
-							<tr> 
-								<td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td> 
-								<td class="column2"><table border="0" cellspacing="0" cellpadding="0"> 
-									<tr> 
-									  <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td> 
-									  <td id="onmouseoutsrccontainer">&nbsp;</td>
-									</tr> 
-								  </table></td> 
-							</tr>
-							<tr>
-								<td><label for="out_list">{#advimage_dlg.image_list}</label></td>
-								<td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"></select></td>
-							</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#advimage_dlg.misc}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td> 
-							<td><input id="id" name="id" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td> 
-							<td>
-								<select id="dir" name="dir" onchange="ImageDialog.changeAppearance();"> 
-										<option value="">{#not_set}</option> 
-										<option value="ltr">{#advimage_dlg.ltr}</option> 
-										<option value="rtl">{#advimage_dlg.rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td> 
-							<td>
-								<input id="lang" name="lang" type="text" value="" />
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td> 
-							<td>
-								<input id="usemap" name="usemap" type="text" value="" />
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>
-							<td><table border="0" cellspacing="0" cellpadding="0">
-									<tr>
-									  <td><input id="longdesc" name="longdesc" type="text" value="" /></td>
-									  <td id="longdesccontainer">&nbsp;</td>
-									</tr>
-								</table></td> 
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" id="insert" name="insert" value="{#insert}" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-    </form>
-</body> 
-</html> 
-

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/advimage/img/sample.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/js/image.js
+++ /dev/null
@@ -1,442 +1,1 @@
-var ImageDialog = {
-	preInit : function() {
-		var url;
 
-		tinyMCEPopup.requireLangPack();
-
-		if (url = tinyMCEPopup.getParam("external_image_list_url"))
-			document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-	},
-
-	init : function(ed) {
-		var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode();
-
-		tinyMCEPopup.resizeToInnerSize();
-		this.fillClassList('class_list');
-		this.fillFileList('src_list', 'tinyMCEImageList');
-		this.fillFileList('over_list', 'tinyMCEImageList');
-		this.fillFileList('out_list', 'tinyMCEImageList');
-		TinyMCE_EditableSelects.init();
-
-		if (n.nodeName == 'IMG') {
-			nl.src.value = dom.getAttrib(n, 'src');
-			nl.width.value = dom.getAttrib(n, 'width');
-			nl.height.value = dom.getAttrib(n, 'height');
-			nl.alt.value = dom.getAttrib(n, 'alt');
-			nl.title.value = dom.getAttrib(n, 'title');
-			nl.vspace.value = this.getAttrib(n, 'vspace');
-			nl.hspace.value = this.getAttrib(n, 'hspace');
-			nl.border.value = this.getAttrib(n, 'border');
-			selectByValue(f, 'align', this.getAttrib(n, 'align'));
-			selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);
-			nl.style.value = dom.getAttrib(n, 'style');
-			nl.id.value = dom.getAttrib(n, 'id');
-			nl.dir.value = dom.getAttrib(n, 'dir');
-			nl.lang.value = dom.getAttrib(n, 'lang');
-			nl.usemap.value = dom.getAttrib(n, 'usemap');
-			nl.longdesc.value = dom.getAttrib(n, 'longdesc');
-			nl.insert.value = ed.getLang('update');
-
-			if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))
-				nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
-
-			if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))
-				nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
-
-			if (ed.settings.inline_styles) {
-				// Move attribs to styles
-				if (dom.getAttrib(n, 'align'))
-					this.updateStyle('align');
-
-				if (dom.getAttrib(n, 'hspace'))
-					this.updateStyle('hspace');
-
-				if (dom.getAttrib(n, 'border'))
-					this.updateStyle('border');
-
-				if (dom.getAttrib(n, 'vspace'))
-					this.updateStyle('vspace');
-			}
-		}
-
-		// Setup browse button
-		document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
-		if (isVisible('srcbrowser'))
-			document.getElementById('src').style.width = '260px';
-
-		// Setup browse button
-		document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');
-		if (isVisible('overbrowser'))
-			document.getElementById('onmouseoversrc').style.width = '260px';
-
-		// Setup browse button
-		document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');
-		if (isVisible('outbrowser'))
-			document.getElementById('onmouseoutsrc').style.width = '260px';
-
-		// If option enabled default contrain proportions to checked
-		if (ed.getParam("advimage_constrain_proportions", true))
-			f.constrain.checked = true;
-
-		// Check swap image if valid data
-		if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)
-			this.setSwapImage(true);
-		else
-			this.setSwapImage(false);
-
-		this.changeAppearance();
-		this.showPreviewImage(nl.src.value, 1);
-	},
-
-	insert : function(file, title) {
-		var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];
-
-		if (f.src.value === '') {
-			if (ed.selection.getNode().nodeName == 'IMG') {
-				ed.dom.remove(ed.selection.getNode());
-				ed.execCommand('mceRepaint');
-			}
-
-			tinyMCEPopup.close();
-			return;
-		}
-
-		if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {
-			if (!f.alt.value) {
-				tinyMCEPopup.editor.windowManager.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {
-					if (s)
-						t.insertAndClose();
-				});
-
-				return;
-			}
-		}
-
-		t.insertAndClose();
-	},
-
-	insertAndClose : function() {
-		var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;
-
-		tinyMCEPopup.restoreSelection();
-
-		// Fixes crash in Safari
-		if (tinymce.isWebKit)
-			ed.getWin().focus();
-
-		if (!ed.settings.inline_styles) {
-			args = {
-				vspace : nl.vspace.value,
-				hspace : nl.hspace.value,
-				border : nl.border.value,
-				align : getSelectValue(f, 'align')
-			};
-		} else {
-			// Remove deprecated values
-			args = {
-				vspace : '',
-				hspace : '',
-				border : '',
-				align : ''
-			};
-		}
-
-		tinymce.extend(args, {
-			src : nl.src.value,
-			width : nl.width.value,
-			height : nl.height.value,
-			alt : nl.alt.value,
-			title : nl.title.value,
-			'class' : getSelectValue(f, 'class_list'),
-			style : nl.style.value,
-			id : nl.id.value,
-			dir : nl.dir.value,
-			lang : nl.lang.value,
-			usemap : nl.usemap.value,
-			longdesc : nl.longdesc.value
-		});
-
-		args.onmouseover = args.onmouseout = '';
-
-		if (f.onmousemovecheck.checked) {
-			if (nl.onmouseoversrc.value)
-				args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";
-
-			if (nl.onmouseoutsrc.value)
-				args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";
-		}
-
-		el = ed.selection.getNode();
-
-		if (el && el.nodeName == 'IMG') {
-			ed.dom.setAttribs(el, args);
-		} else {
-			ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
-			ed.dom.setAttribs('__mce_tmp', args);
-			ed.dom.setAttrib('__mce_tmp', 'id', '');
-			ed.undoManager.add();
-		}
-
-		tinyMCEPopup.close();
-	},
-
-	getAttrib : function(e, at) {
-		var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
-
-		if (ed.settings.inline_styles) {
-			switch (at) {
-				case 'align':
-					if (v = dom.getStyle(e, 'float'))
-						return v;
-
-					if (v = dom.getStyle(e, 'vertical-align'))
-						return v;
-
-					break;
-
-				case 'hspace':
-					v = dom.getStyle(e, 'margin-left')
-					v2 = dom.getStyle(e, 'margin-right');
-
-					if (v && v == v2)
-						return parseInt(v.replace(/[^0-9]/g, ''));
-
-					break;
-
-				case 'vspace':
-					v = dom.getStyle(e, 'margin-top')
-					v2 = dom.getStyle(e, 'margin-bottom');
-					if (v && v == v2)
-						return parseInt(v.replace(/[^0-9]/g, ''));
-
-					break;
-
-				case 'border':
-					v = 0;
-
-					tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
-						sv = dom.getStyle(e, 'border-' + sv + '-width');
-
-						// False or not the same as prev
-						if (!sv || (sv != v && v !== 0)) {
-							v = 0;
-							return false;
-						}
-
-						if (sv)
-							v = sv;
-					});
-
-					if (v)
-						return parseInt(v.replace(/[^0-9]/g, ''));
-
-					break;
-			}
-		}
-
-		if (v = dom.getAttrib(e, at))
-			return v;
-
-		return '';
-	},
-
-	setSwapImage : function(st) {
-		var f = document.forms[0];
-
-		f.onmousemovecheck.checked = st;
-		setBrowserDisabled('overbrowser', !st);
-		setBrowserDisabled('outbrowser', !st);
-
-		if (f.over_list)
-			f.over_list.disabled = !st;
-
-		if (f.out_list)
-			f.out_list.disabled = !st;
-
-		f.onmouseoversrc.disabled = !st;
-		f.onmouseoutsrc.disabled  = !st;
-	},
-
-	fillClassList : function(id) {
-		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
-		if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
-			cl = [];
-
-			tinymce.each(v.split(';'), function(v) {
-				var p = v.split('=');
-
-				cl.push({'title' : p[0], 'class' : p[1]});
-			});
-		} else
-			cl = tinyMCEPopup.editor.dom.getClasses();
-
-		if (cl.length > 0) {
-			lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-
-			tinymce.each(cl, function(o) {
-				lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
-			});
-		} else
-			dom.remove(dom.getParent(id, 'tr'));
-	},
-
-	fillFileList : function(id, l) {
-		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
-		l = window[l];
-
-		if (l && l.length > 0) {
-			lst.options[lst.options.length] = new Option('', '');
-
-			tinymce.each(l, function(o) {
-				lst.options[lst.options.length] = new Option(o[0], o[1]);
-			});
-		} else
-			dom.remove(dom.getParent(id, 'tr'));
-	},
-
-	resetImageData : function() {
-		var f = document.forms[0];
-
-		f.elements.width.value = f.elements.height.value = '';
-	},
-
-	updateImageData : function(img, st) {
-		var f = document.forms[0];
-
-		if (!st) {
-			f.elements.width.value = img.width;
-			f.elements.height.value = img.height;
-		}
-
-		this.preloadImg = img;
-	},
-
-	changeAppearance : function() {
-		var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');
-
-		if (img) {
-			if (ed.getParam('inline_styles')) {
-				ed.dom.setAttrib(img, 'style', f.style.value);
-			} else {
-				img.align = f.align.value;
-				img.border = f.border.value;
-				img.hspace = f.hspace.value;
-				img.vspace = f.vspace.value;
-			}
-		}
-	},
-
-	changeHeight : function() {
-		var f = document.forms[0], tp, t = this;
-
-		if (!f.constrain.checked || !t.preloadImg) {
-			return;
-		}
-
-		if (f.width.value == "" || f.height.value == "")
-			return;
-
-		tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;
-		f.height.value = tp.toFixed(0);
-	},
-
-	changeWidth : function() {
-		var f = document.forms[0], tp, t = this;
-
-		if (!f.constrain.checked || !t.preloadImg) {
-			return;
-		}
-
-		if (f.width.value == "" || f.height.value == "")
-			return;
-
-		tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;
-		f.width.value = tp.toFixed(0);
-	},
-
-	updateStyle : function(ty) {
-		var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});
-
-		if (tinyMCEPopup.editor.settings.inline_styles) {
-			// Handle align
-			if (ty == 'align') {
-				dom.setStyle(img, 'float', '');
-				dom.setStyle(img, 'vertical-align', '');
-
-				v = getSelectValue(f, 'align');
-				if (v) {
-					if (v == 'left' || v == 'right')
-						dom.setStyle(img, 'float', v);
-					else
-						img.style.verticalAlign = v;
-				}
-			}
-
-			// Handle border
-			if (ty == 'border') {
-				dom.setStyle(img, 'border', '');
-
-				v = f.border.value;
-				if (v || v == '0') {
-					if (v == '0')
-						img.style.border = '0';
-					else
-						img.style.border = v + 'px solid black';
-				}
-			}
-
-			// Handle hspace
-			if (ty == 'hspace') {
-				dom.setStyle(img, 'marginLeft', '');
-				dom.setStyle(img, 'marginRight', '');
-
-				v = f.hspace.value;
-				if (v) {
-					img.style.marginLeft = v + 'px';
-					img.style.marginRight = v + 'px';
-				}
-			}
-
-			// Handle vspace
-			if (ty == 'vspace') {
-				dom.setStyle(img, 'marginTop', '');
-				dom.setStyle(img, 'marginBottom', '');
-
-				v = f.vspace.value;
-				if (v) {
-					img.style.marginTop = v + 'px';
-					img.style.marginBottom = v + 'px';
-				}
-			}
-
-			// Merge
-			dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText));
-		}
-	},
-
-	changeMouseMove : function() {
-	},
-
-	showPreviewImage : function(u, st) {
-		if (!u) {
-			tinyMCEPopup.dom.setHTML('prev', '');
-			return;
-		}
-
-		if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))
-			this.resetImageData();
-
-		u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);
-
-		if (!st)
-			tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');
-		else
-			tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');
-	}
-};
-
-ImageDialog.preInit();
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js
@@ -1,535 +1,539 @@
-/* Functions for the advimage plugin popup */
+/* Functions for the advimage plugin popup */

+

+var preloadImg = null;

+var orgImageWidth, orgImageHeight;

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+

+	// Import external list url javascript

+	var url = tinyMCE.getParam("external_image_list_url");

+	if (url != null) {

+		// Fix relative

+		if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+			url = tinyMCE.documentBasePath + "/" + url;

+

+		document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+	}

+}

+

+function convertURL(url, node, on_save) {

+	return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");

+}

+

+function getImageSrc(str) {

+	var pos = -1;

+

+	if (!str)

+		return "";

+

+	if ((pos = str.indexOf('this.src=')) != -1) {

+		var src = str.substring(pos + 10);

+

+		src = src.substring(0, src.indexOf('\''));

+

+		if (tinyMCE.getParam('convert_urls'))

+			src = convertURL(src, null, true);

+

+		return src;

+	}

+

+	return "";

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var formObj = document.forms[0];

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var elm = inst.getFocusElement();

+	var action = "insert";

+	var html = "";

+

+	// Image list src

+	html = getImageListHTML('imagelistsrc','src','onSelectMainImage');

+	if (html == "")

+		document.getElementById("imagelistsrcrow").style.display = 'none';

+	else

+		document.getElementById("imagelistsrccontainer").innerHTML = html;

+

+	// Image list oversrc

+	html = getImageListHTML('imagelistover','onmouseoversrc');

+	if (html == "")

+		document.getElementById("imagelistoverrow").style.display = 'none';

+	else

+		document.getElementById("imagelistovercontainer").innerHTML = html;

+

+	// Image list outsrc

+	html = getImageListHTML('imagelistout','onmouseoutsrc');

+	if (html == "")

+		document.getElementById("imagelistoutrow").style.display = 'none';

+	else

+		document.getElementById("imagelistoutcontainer").innerHTML = html;

+

+	// Src browser

+	html = getBrowserHTML('srcbrowser','src','image','advimage');

+	document.getElementById("srcbrowsercontainer").innerHTML = html;

+

+	// Over browser

+	html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage');

+	document.getElementById("onmouseoversrccontainer").innerHTML = html;

+

+	// Out browser

+	html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage');

+	document.getElementById("onmouseoutsrccontainer").innerHTML = html;

+

+	// Longdesc browser

+	html = getBrowserHTML('longdescbrowser','longdesc','file','advimage');

+	document.getElementById("longdesccontainer").innerHTML = html;

+

+	// Resize some elements

+	if (isVisible('srcbrowser'))

+		document.getElementById('src').style.width = '260px';

+

+	if (isVisible('oversrcbrowser'))

+		document.getElementById('onmouseoversrc').style.width = '260px';

+

+	if (isVisible('outsrcbrowser'))

+		document.getElementById('onmouseoutsrc').style.width = '260px';

+

+	if (isVisible('longdescbrowser'))

+		document.getElementById('longdesc').style.width = '180px';

+

+	// Check action

+	if (elm != null && elm.nodeName == "IMG")

+		action = "update";

+

+	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 

+

+	if (action == "update") {

+		var src = tinyMCE.getAttrib(elm, 'src');

+		var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));

+		var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));

+

+		src = convertURL(src, elm, true);

+

+		// Use mce_src if found

+		var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src');

+		if (mceRealSrc != "") {

+			src = mceRealSrc;

+

+			if (tinyMCE.getParam('convert_urls'))

+				src = convertURL(src, elm, true);

+		}

+

+		if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls'))

+			onmouseoversrc = convertURL(onmouseoversrc, elm, true);

+

+		if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls'))

+			onmouseoutsrc = convertURL(onmouseoutsrc, elm, true);

+

+		// Setup form data

+		var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"));

+

+		// Store away old size

+		orgImageWidth = trimSize(getStyle(elm, 'width'))

+		orgImageHeight = trimSize(getStyle(elm, 'height'));

+

+		formObj.src.value    = src;

+		formObj.alt.value    = tinyMCE.getAttrib(elm, 'alt');

+		formObj.title.value  = tinyMCE.getAttrib(elm, 'title');

+		formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth'));

+		formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace');

+		formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace');

+		formObj.width.value  = orgImageWidth;

+		formObj.height.value = orgImageHeight;

+		formObj.onmouseoversrc.value = onmouseoversrc;

+		formObj.onmouseoutsrc.value  = onmouseoutsrc;

+		formObj.id.value  = tinyMCE.getAttrib(elm, 'id');

+		formObj.dir.value  = tinyMCE.getAttrib(elm, 'dir');

+		formObj.lang.value  = tinyMCE.getAttrib(elm, 'lang');

+		formObj.longdesc.value  = tinyMCE.getAttrib(elm, 'longdesc');

+		formObj.usemap.value  = tinyMCE.getAttrib(elm, 'usemap');

+		formObj.style.value  = tinyMCE.serializeStyle(style);

+

+		// Select by the values

+		if (tinyMCE.isMSIE)

+			selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat'));

+		else

+			selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat'));

+

+		addClassesToList('classlist', 'advimage_styles');

+

+		selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'));

+		selectByValue(formObj, 'imagelistsrc', src);

+		selectByValue(formObj, 'imagelistover', onmouseoversrc);

+		selectByValue(formObj, 'imagelistout', onmouseoutsrc);

+

+		updateStyle();

+		showPreviewImage(src, true);

+		changeAppearance();

+

+		window.focus();

+	} else

+		addClassesToList('classlist', 'advimage_styles');

+

+	// If option enabled default contrain proportions to checked

+	if (tinyMCE.getParam("advimage_constrain_proportions", true))

+		formObj.constrain.checked = true;

+

+	// Check swap image if valid data

+	if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "")

+		setSwapImageDisabled(false);

+	else

+		setSwapImageDisabled(true);

+}

+

+function setSwapImageDisabled(state) {

+	var formObj = document.forms[0];

+

+	formObj.onmousemovecheck.checked = !state;

+

+	setBrowserDisabled('overbrowser', state);

+	setBrowserDisabled('outbrowser', state);

+

+	if (formObj.imagelistover)

+		formObj.imagelistover.disabled = state;

+

+	if (formObj.imagelistout)

+		formObj.imagelistout.disabled = state;

+

+	formObj.onmouseoversrc.disabled = state;

+	formObj.onmouseoutsrc.disabled  = state;

+}

+

+function setAttrib(elm, attrib, value) {

+	var formObj = document.forms[0];

+	var valueElm = formObj.elements[attrib];

+

+	if (typeof(value) == "undefined" || value == null) {

+		value = "";

+

+		if (valueElm)

+			value = valueElm.value;

+	}

+

+	if (value != "") {

+		elm.setAttribute(attrib, value);

+

+		if (attrib == "style")

+			attrib = "style.cssText";

+

+		if (attrib == "longdesc")

+			attrib = "longDesc";

+

+		if (attrib == "width") {

+			attrib = "style.width";

+			value = value + "px";

+			value = value.replace(/%px/g, 'px');

+		}

+

+		if (attrib == "height") {

+			attrib = "style.height";

+			value = value + "px";

+			value = value.replace(/%px/g, 'px');

+		}

+

+		if (attrib == "class")

+			attrib = "className";

+

+		eval('elm.' + attrib + "=value;");

+	} else {

+		if (attrib == 'class')

+			elm.className = '';

+

+		elm.removeAttribute(attrib);

+	}

+}

+

+function makeAttrib(attrib, value) {

+	var formObj = document.forms[0];

+	var valueElm = formObj.elements[attrib];

+

+	if (typeof(value) == "undefined" || value == null) {

+		value = "";

+

+		if (valueElm)

+			value = valueElm.value;

+	}

+

+	if (value == "")

+		return "";

+

+	// XML encode it

+	value = value.replace(/&/g, '&amp;');

+	value = value.replace(/\"/g, '&quot;');

+	value = value.replace(/</g, '&lt;');

+	value = value.replace(/>/g, '&gt;');

+

+	return ' ' + attrib + '="' + value + '"';

+}

+

+function insertAction() {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var elm = inst.getFocusElement();

+	var formObj = document.forms[0];

+	var src = formObj.src.value;

+	var onmouseoversrc = formObj.onmouseoversrc.value;

+	var onmouseoutsrc = formObj.onmouseoutsrc.value;

+

+	if (!AutoValidator.validate(formObj)) {

+		alert(tinyMCE.getLang('lang_invalid_data'));

+		return false;

+	}

+

+	if (tinyMCE.getParam("accessibility_warnings")) {

+		if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true)))

+			return;

+	}

+

+	if (onmouseoversrc && onmouseoversrc != "")

+		onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";

+

+	if (onmouseoutsrc && onmouseoutsrc != "")

+		onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";

+

+	if (elm != null && elm.nodeName == "IMG") {

+		setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement));

+		setAttrib(elm, 'mce_src', src);

+		setAttrib(elm, 'alt');

+		setAttrib(elm, 'title');

+		setAttrib(elm, 'border');

+		setAttrib(elm, 'vspace');

+		setAttrib(elm, 'hspace');

+		setAttrib(elm, 'width');

+		setAttrib(elm, 'height');

+		setAttrib(elm, 'onmouseover', onmouseoversrc);

+		setAttrib(elm, 'onmouseout', onmouseoutsrc);

+		setAttrib(elm, 'id');

+		setAttrib(elm, 'dir');

+		setAttrib(elm, 'lang');

+		setAttrib(elm, 'longdesc');

+		setAttrib(elm, 'usemap');

+		setAttrib(elm, 'style');

+		setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));

+		setAttrib(elm, 'align', getSelectValue(formObj, 'align'));

+

+		//tinyMCEPopup.execCommand("mceRepaint");

+

+		// Repaint if dimensions changed

+		if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight)

+			inst.repaint();

+

+		// Refresh in old MSIE

+		if (tinyMCE.isMSIE5)

+			elm.outerHTML = elm.outerHTML;

+	} else {

+		var html = "<img";

+

+		html += makeAttrib('src', convertURL(src, tinyMCE.imgElement));

+		html += makeAttrib('mce_src', src);

+		html += makeAttrib('alt');

+		html += makeAttrib('title');

+		html += makeAttrib('border');

+		html += makeAttrib('vspace');

+		html += makeAttrib('hspace');

+		html += makeAttrib('width');

+		html += makeAttrib('height');

+		html += makeAttrib('onmouseover', onmouseoversrc);

+		html += makeAttrib('onmouseout', onmouseoutsrc);

+		html += makeAttrib('id');

+		html += makeAttrib('dir');

+		html += makeAttrib('lang');

+		html += makeAttrib('longdesc');

+		html += makeAttrib('usemap');

+		html += makeAttrib('style');

+		html += makeAttrib('class', getSelectValue(formObj, 'classlist'));

+		html += makeAttrib('align', getSelectValue(formObj, 'align'));

+		html += " />";

+

+		tinyMCEPopup.execCommand("mceInsertContent", false, html);

+	}

+

+	tinyMCE._setEventsEnabled(inst.getBody(), false);

+	tinyMCEPopup.close();

+}

+

+function cancelAction() {

+	tinyMCEPopup.close();

+}

+

+function changeAppearance() {

+	var formObj = document.forms[0];

+	var img = document.getElementById('alignSampleImg');

+

+	if (img) {

+		img.align = formObj.align.value;

+		img.border = formObj.border.value;

+		img.hspace = formObj.hspace.value;

+		img.vspace = formObj.vspace.value;

+	}

+}

+

+function changeMouseMove() {

+	var formObj = document.forms[0];

+

+	setSwapImageDisabled(!formObj.onmousemovecheck.checked);

+}

+

+function updateStyle() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	if (tinyMCE.getParam('inline_styles', false)) {

+		st['width'] = formObj.width.value == '' ? '' : formObj.width.value + "px";

+		st['height'] = formObj.height.value == '' ? '' : formObj.height.value + "px";

+		st['border-width'] = formObj.border.value == '' ? '' : formObj.border.value + "px";

+		st['margin-top'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";

+		st['margin-bottom'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";

+		st['margin-left'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";

+		st['margin-right'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";

+	} else {

+		st['width'] = st['height'] = st['border-width'] = null;

+

+		if (st['margin-top'] == st['margin-bottom'])

+			st['margin-top'] = st['margin-bottom'] = null;

+

+		if (st['margin-left'] == st['margin-right'])

+			st['margin-left'] = st['margin-right'] = null;

+	}

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function styleUpdated() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	if (st['width'])

+		formObj.width.value = st['width'].replace('px', '');

+

+	if (st['height'])

+		formObj.height.value = st['height'].replace('px', '');

+

+	if (st['margin-top'] && st['margin-top'] == st['margin-bottom'])

+		formObj.vspace.value = st['margin-top'].replace('px', '');

+

+	if (st['margin-left'] && st['margin-left'] == st['margin-right'])

+		formObj.hspace.value = st['margin-left'].replace('px', '');

+

+	if (st['border-width'])

+		formObj.border.value = st['border-width'].replace('px', '');

+}

+

+function changeHeight() {

+	var formObj = document.forms[0];

+

+	if (!formObj.constrain.checked || !preloadImg) {

+		updateStyle();

+		return;

+	}

+

+	if (formObj.width.value == "" || formObj.height.value == "")

+		return;

+

+	var temp = (parseInt(formObj.width.value) / parseInt(preloadImg.width)) * preloadImg.height;

+	formObj.height.value = temp.toFixed(0);

+	updateStyle();

+}

+

+function changeWidth() {

+	var formObj = document.forms[0];

+

+	if (!formObj.constrain.checked || !preloadImg) {

+		updateStyle();

+		return;

+	}

+

+	if (formObj.width.value == "" || formObj.height.value == "")

+		return;

+

+	var temp = (parseInt(formObj.height.value) / parseInt(preloadImg.height)) * preloadImg.width;

+	formObj.width.value = temp.toFixed(0);

+	updateStyle();

+}

+

+function onSelectMainImage(target_form_element, name, value) {

+	var formObj = document.forms[0];

+

+	formObj.alt.value = name;

+	formObj.title.value = name;

+

+	resetImageData();

+	showPreviewImage(formObj.elements[target_form_element].value, false);

+}

+

+function showPreviewImage(src, start) {

+	var formObj = document.forms[0];

+

+	selectByValue(document.forms[0], 'imagelistsrc', src);

+

+	var elm = document.getElementById('prev');

+	var src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);

+

+	if (!start && tinyMCE.getParam("advimage_update_dimensions_onchange", true))

+		resetImageData();

+

+	if (src == "")

+		elm.innerHTML = "";

+	else

+		elm.innerHTML = '<img id="previewImg" src="' + src + '" border="0" onload="updateImageData(' + start + ');" onerror="resetImageData();" />'

+}

+

+function updateImageData(start) {

+	var formObj = document.forms[0];

+

+	preloadImg = document.getElementById('previewImg');

+

+	if (!start && formObj.width.value == "")

+		formObj.width.value = preloadImg.width;

+

+	if (!start && formObj.height.value == "")

+		formObj.height.value = preloadImg.height;

+

+	updateStyle();

+}

+

+function resetImageData() {

+	var formObj = document.forms[0];

+	formObj.width.value = formObj.height.value = "";	

+}

+

+function getSelectValue(form_obj, field_name) {

+	var elm = form_obj.elements[field_name];

+

+	if (elm == null || elm.options == null)

+		return "";

+

+	return elm.options[elm.selectedIndex].value;

+}

+

+function getImageListHTML(elm_id, target_form_element, onchange_func) {

+	if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0)

+		return "";

+

+	var html = "";

+

+	html += '<select id="' + elm_id + '" name="' + elm_id + '"';

+	html += ' class="mceImageList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';

+	html += 'this.options[this.selectedIndex].value;';

+

+	if (typeof(onchange_func) != "undefined")

+		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';

+

+	html += '"><option value="">---</option>';

+

+	for (var i=0; i<tinyMCEImageList.length; i++)

+		html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';

+

+	html += '</select>';

+

+	return html;

+

+	// tinyMCE.debug('-- image list start --', html, '-- image list end --');

+}

+

+// While loading

+preinit();

 
-var preloadImg = null;
-var orgImageWidth, orgImageHeight;
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
-
-	// Import external list url javascript
-	var url = tinyMCE.getParam("external_image_list_url");
-	if (url != null) {
-		// Fix relative
-		if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-			url = tinyMCE.documentBasePath + "/" + url;
-
-		document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-	}
-}
-
-function convertURL(url, node, on_save) {
-	return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
-}
-
-function getImageSrc(str) {
-	var pos = -1;
-
-	if (!str)
-		return "";
-
-	if ((pos = str.indexOf('this.src=')) != -1) {
-		var src = str.substring(pos + 10);
-
-		src = src.substring(0, src.indexOf('\''));
-
-		if (tinyMCE.getParam('convert_urls'))
-			src = convertURL(src, null, true);
-
-		return src;
-	}
-
-	return "";
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	var formObj = document.forms[0];
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var elm = inst.getFocusElement();
-	var action = "insert";
-	var html = "";
-
-	// Image list src
-	html = getImageListHTML('imagelistsrc','src','onSelectMainImage');
-	if (html == "")
-		document.getElementById("imagelistsrcrow").style.display = 'none';
-	else
-		document.getElementById("imagelistsrccontainer").innerHTML = html;
-
-	// Image list oversrc
-	html = getImageListHTML('imagelistover','onmouseoversrc');
-	if (html == "")
-		document.getElementById("imagelistoverrow").style.display = 'none';
-	else
-		document.getElementById("imagelistovercontainer").innerHTML = html;
-
-	// Image list outsrc
-	html = getImageListHTML('imagelistout','onmouseoutsrc');
-	if (html == "")
-		document.getElementById("imagelistoutrow").style.display = 'none';
-	else
-		document.getElementById("imagelistoutcontainer").innerHTML = html;
-
-	// Src browser
-	html = getBrowserHTML('srcbrowser','src','image','advimage');
-	document.getElementById("srcbrowsercontainer").innerHTML = html;
-
-	// Over browser
-	html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage');
-	document.getElementById("onmouseoversrccontainer").innerHTML = html;
-
-	// Out browser
-	html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage');
-	document.getElementById("onmouseoutsrccontainer").innerHTML = html;
-
-	// Longdesc browser
-	html = getBrowserHTML('longdescbrowser','longdesc','file','advimage');
-	document.getElementById("longdesccontainer").innerHTML = html;
-
-	// Resize some elements
-	if (isVisible('srcbrowser'))
-		document.getElementById('src').style.width = '260px';
-
-	if (isVisible('oversrcbrowser'))
-		document.getElementById('onmouseoversrc').style.width = '260px';
-
-	if (isVisible('outsrcbrowser'))
-		document.getElementById('onmouseoutsrc').style.width = '260px';
-
-	if (isVisible('longdescbrowser'))
-		document.getElementById('longdesc').style.width = '180px';
-
-	// Check action
-	if (elm != null && elm.nodeName == "IMG")
-		action = "update";
-
-	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
-
-	if (action == "update") {
-		var src = tinyMCE.getAttrib(elm, 'src');
-		var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
-		var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
-
-		src = convertURL(src, elm, true);
-
-		// Use mce_src if found
-		var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src');
-		if (mceRealSrc != "") {
-			src = mceRealSrc;
-
-			if (tinyMCE.getParam('convert_urls'))
-				src = convertURL(src, elm, true);
-		}
-
-		if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls'))
-			onmouseoversrc = convertURL(onmouseoversrc, elm, true);
-
-		if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls'))
-			onmouseoutsrc = convertURL(onmouseoutsrc, elm, true);
-
-		// Setup form data
-		var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"));
-
-		// Store away old size
-		orgImageWidth = trimSize(getStyle(elm, 'width'))
-		orgImageHeight = trimSize(getStyle(elm, 'height'));
-
-		formObj.src.value    = src;
-		formObj.alt.value    = tinyMCE.getAttrib(elm, 'alt');
-		formObj.title.value  = tinyMCE.getAttrib(elm, 'title');
-		formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth'));
-		formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace');
-		formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace');
-		formObj.width.value  = orgImageWidth;
-		formObj.height.value = orgImageHeight;
-		formObj.onmouseoversrc.value = onmouseoversrc;
-		formObj.onmouseoutsrc.value  = onmouseoutsrc;
-		formObj.id.value  = tinyMCE.getAttrib(elm, 'id');
-		formObj.dir.value  = tinyMCE.getAttrib(elm, 'dir');
-		formObj.lang.value  = tinyMCE.getAttrib(elm, 'lang');
-		formObj.longdesc.value  = tinyMCE.getAttrib(elm, 'longdesc');
-		formObj.usemap.value  = tinyMCE.getAttrib(elm, 'usemap');
-		formObj.style.value  = tinyMCE.serializeStyle(style);
-
-		// Select by the values
-		if (tinyMCE.isMSIE)
-			selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat'));
-		else
-			selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat'));
-
-		addClassesToList('classlist', 'advimage_styles');
-
-		selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'));
-		selectByValue(formObj, 'imagelistsrc', src);
-		selectByValue(formObj, 'imagelistover', onmouseoversrc);
-		selectByValue(formObj, 'imagelistout', onmouseoutsrc);
-
-		updateStyle();
-		showPreviewImage(src, true);
-		changeAppearance();
-
-		window.focus();
-	} else
-		addClassesToList('classlist', 'advimage_styles');
-
-	// If option enabled default contrain proportions to checked
-	if (tinyMCE.getParam("advimage_constrain_proportions", true))
-		formObj.constrain.checked = true;
-
-	// Check swap image if valid data
-	if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "")
-		setSwapImageDisabled(false);
-	else
-		setSwapImageDisabled(true);
-}
-
-function setSwapImageDisabled(state) {
-	var formObj = document.forms[0];
-
-	formObj.onmousemovecheck.checked = !state;
-
-	setBrowserDisabled('overbrowser', state);
-	setBrowserDisabled('outbrowser', state);
-
-	if (formObj.imagelistover)
-		formObj.imagelistover.disabled = state;
-
-	if (formObj.imagelistout)
-		formObj.imagelistout.disabled = state;
-
-	formObj.onmouseoversrc.disabled = state;
-	formObj.onmouseoutsrc.disabled  = state;
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value != "") {
-		elm.setAttribute(attrib, value);
-
-		if (attrib == "style")
-			attrib = "style.cssText";
-
-		if (attrib == "longdesc")
-			attrib = "longDesc";
-
-		if (attrib == "width") {
-			attrib = "style.width";
-			value = value + "px";
-			value = value.replace(/%px/g, 'px');
-		}
-
-		if (attrib == "height") {
-			attrib = "style.height";
-			value = value + "px";
-			value = value.replace(/%px/g, 'px');
-		}
-
-		if (attrib == "class")
-			attrib = "className";
-
-		eval('elm.' + attrib + "=value;");
-	} else
-		elm.removeAttribute(attrib);
-}
-
-function makeAttrib(attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value == "")
-		return "";
-
-	// XML encode it
-	value = value.replace(/&/g, '&amp;');
-	value = value.replace(/\"/g, '&quot;');
-	value = value.replace(/</g, '&lt;');
-	value = value.replace(/>/g, '&gt;');
-
-	return ' ' + attrib + '="' + value + '"';
-}
-
-function insertAction() {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var elm = inst.getFocusElement();
-	var formObj = document.forms[0];
-	var src = formObj.src.value;
-	var onmouseoversrc = formObj.onmouseoversrc.value;
-	var onmouseoutsrc = formObj.onmouseoutsrc.value;
-
-	if (!AutoValidator.validate(formObj)) {
-		alert(tinyMCE.getLang('lang_invalid_data'));
-		return false;
-	}
-
-	if (tinyMCE.getParam("accessibility_warnings")) {
-		if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true)))
-			return;
-	}
-
-	if (onmouseoversrc && onmouseoversrc != "")
-		onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";
-
-	if (onmouseoutsrc && onmouseoutsrc != "")
-		onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";
-
-	if (elm != null && elm.nodeName == "IMG") {
-		setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement));
-		setAttrib(elm, 'mce_src', src);
-		setAttrib(elm, 'alt');
-		setAttrib(elm, 'title');
-		setAttrib(elm, 'border');
-		setAttrib(elm, 'vspace');
-		setAttrib(elm, 'hspace');
-		setAttrib(elm, 'width');
-		setAttrib(elm, 'height');
-		setAttrib(elm, 'onmouseover', onmouseoversrc);
-		setAttrib(elm, 'onmouseout', onmouseoutsrc);
-		setAttrib(elm, 'id');
-		setAttrib(elm, 'dir');
-		setAttrib(elm, 'lang');
-		setAttrib(elm, 'longdesc');
-		setAttrib(elm, 'usemap');
-		setAttrib(elm, 'style');
-		setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
-		setAttrib(elm, 'align', getSelectValue(formObj, 'align'));
-
-		//tinyMCEPopup.execCommand("mceRepaint");
-
-		// Repaint if dimensions changed
-		if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight)
-			inst.repaint();
-
-		// Refresh in old MSIE
-		if (tinyMCE.isMSIE5)
-			elm.outerHTML = elm.outerHTML;
-	} else {
-		var html = "<img";
-
-		html += makeAttrib('src', convertURL(src, tinyMCE.imgElement));
-		html += makeAttrib('mce_src', src);
-		html += makeAttrib('alt');
-		html += makeAttrib('title');
-		html += makeAttrib('border');
-		html += makeAttrib('vspace');
-		html += makeAttrib('hspace');
-		html += makeAttrib('width');
-		html += makeAttrib('height');
-		html += makeAttrib('onmouseover', onmouseoversrc);
-		html += makeAttrib('onmouseout', onmouseoutsrc);
-		html += makeAttrib('id');
-		html += makeAttrib('dir');
-		html += makeAttrib('lang');
-		html += makeAttrib('longdesc');
-		html += makeAttrib('usemap');
-		html += makeAttrib('style');
-		html += makeAttrib('class', getSelectValue(formObj, 'classlist'));
-		html += makeAttrib('align', getSelectValue(formObj, 'align'));
-		html += " />";
-
-		tinyMCEPopup.execCommand("mceInsertContent", false, html);
-	}
-
-	tinyMCE._setEventsEnabled(inst.getBody(), false);
-	tinyMCEPopup.close();
-}
-
-function cancelAction() {
-	tinyMCEPopup.close();
-}
-
-function changeAppearance() {
-	var formObj = document.forms[0];
-	var img = document.getElementById('alignSampleImg');
-
-	if (img) {
-		img.align = formObj.align.value;
-		img.border = formObj.border.value;
-		img.hspace = formObj.hspace.value;
-		img.vspace = formObj.vspace.value;
-	}
-}
-
-function changeMouseMove() {
-	var formObj = document.forms[0];
-
-	setSwapImageDisabled(!formObj.onmousemovecheck.checked);
-}
-
-function updateStyle() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	if (tinyMCE.getParam('inline_styles', false)) {
-		st['width'] = formObj.width.value == '' ? '' : formObj.width.value + "px";
-		st['height'] = formObj.height.value == '' ? '' : formObj.height.value + "px";
-		st['border-width'] = formObj.border.value == '' ? '' : formObj.border.value + "px";
-		st['margin-top'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
-		st['margin-bottom'] = formObj.vspace.value == '' ? '' : formObj.vspace.value + "px";
-		st['margin-left'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
-		st['margin-right'] = formObj.hspace.value == '' ? '' : formObj.hspace.value + "px";
-	} else {
-		st['width'] = st['height'] = st['border-width'] = null;
-
-		if (st['margin-top'] == st['margin-bottom'])
-			st['margin-top'] = st['margin-bottom'] = null;
-
-		if (st['margin-left'] == st['margin-right'])
-			st['margin-left'] = st['margin-right'] = null;
-	}
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function styleUpdated() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	if (st['width'])
-		formObj.width.value = st['width'].replace('px', '');
-
-	if (st['height'])
-		formObj.height.value = st['height'].replace('px', '');
-
-	if (st['margin-top'] && st['margin-top'] == st['margin-bottom'])
-		formObj.vspace.value = st['margin-top'].replace('px', '');
-
-	if (st['margin-left'] && st['margin-left'] == st['margin-right'])
-		formObj.hspace.value = st['margin-left'].replace('px', '');
-
-	if (st['border-width'])
-		formObj.border.value = st['border-width'].replace('px', '');
-}
-
-function changeHeight() {
-	var formObj = document.forms[0];
-
-	if (!formObj.constrain.checked || !preloadImg) {
-		updateStyle();
-		return;
-	}
-
-	if (formObj.width.value == "" || formObj.height.value == "")
-		return;
-
-	var temp = (parseInt(formObj.width.value) / parseInt(preloadImg.width)) * preloadImg.height;
-	formObj.height.value = temp.toFixed(0);
-	updateStyle();
-}
-
-function changeWidth() {
-	var formObj = document.forms[0];
-
-	if (!formObj.constrain.checked || !preloadImg) {
-		updateStyle();
-		return;
-	}
-
-	if (formObj.width.value == "" || formObj.height.value == "")
-		return;
-
-	var temp = (parseInt(formObj.height.value) / parseInt(preloadImg.height)) * preloadImg.width;
-	formObj.width.value = temp.toFixed(0);
-	updateStyle();
-}
-
-function onSelectMainImage(target_form_element, name, value) {
-	var formObj = document.forms[0];
-
-	formObj.alt.value = name;
-	formObj.title.value = name;
-
-	resetImageData();
-	showPreviewImage(formObj.elements[target_form_element].value, false);
-}
-
-function showPreviewImage(src, start) {
-	var formObj = document.forms[0];
-
-	selectByValue(document.forms[0], 'imagelistsrc', src);
-
-	var elm = document.getElementById('prev');
-	var src = src == "" ? src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
-
-	if (!start && tinyMCE.getParam("advimage_update_dimensions_onchange", true))
-		resetImageData();
-
-	if (src == "")
-		elm.innerHTML = "";
-	else
-		elm.innerHTML = '<img id="previewImg" src="' + src + '" border="0" onload="updateImageData();" onerror="resetImageData();" />'
-}
-
-function updateImageData() {
-	var formObj = document.forms[0];
-
-	preloadImg = document.getElementById('previewImg');
-
-	if (formObj.width.value == "")
-		formObj.width.value = preloadImg.width;
-
-	if (formObj.height.value == "")
-		formObj.height.value = preloadImg.height;
-
-	updateStyle();
-}
-
-function resetImageData() {
-	var formObj = document.forms[0];
-	formObj.width.value = formObj.height.value = "";	
-}
-
-function getSelectValue(form_obj, field_name) {
-	var elm = form_obj.elements[field_name];
-
-	if (elm == null || elm.options == null)
-		return "";
-
-	return elm.options[elm.selectedIndex].value;
-}
-
-function getImageListHTML(elm_id, target_form_element, onchange_func) {
-	if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0)
-		return "";
-
-	var html = "";
-
-	html += '<select id="' + elm_id + '" name="' + elm_id + '"';
-	html += ' class="mceImageList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
-	html += 'this.options[this.selectedIndex].value;';
-
-	if (typeof(onchange_func) != "undefined")
-		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
-
-	html += '"><option value="">---</option>';
-
-	for (var i=0; i<tinyMCEImageList.length; i++)
-		html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
-
-	html += '</select>';
-
-	return html;
-
-	// tinyMCE.debug('-- image list start --', html, '-- image list end --');
-}
-
-// While loading
-preinit();
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/langs/en.js
@@ -1,28 +1,28 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('advimage',{

+tab_general : 'General',

+tab_appearance : 'Appearance',

+tab_advanced : 'Advanced',

+general : 'General',

+title : 'Title',

+preview : 'Preview',

+constrain_proportions : 'Constrain proportions',

+langdir : 'Language direction',

+langcode : 'Language code',

+long_desc : 'Long description link',

+style : 'Style',

+classes : 'Classes',

+ltr : 'Left to right',

+rtl : 'Right to left',

+id : 'Id',

+image_map : 'Image map',

+swap_image : 'Swap image',

+alt_image : 'Alternative image',

+mouseover : 'for mouse over',

+mouseout : 'for mouse out',

+misc : 'Miscellaneous',

+example_img : 'Appearance&nbsp;preview&nbsp;image',

+missing_alt : 'Are you sure you want to continue without including an Image Description? Without  it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.'

+});

 
-tinyMCE.addToLang('advimage',{
-tab_general : 'General',
-tab_appearance : 'Appearance',
-tab_advanced : 'Advanced',
-general : 'General',
-title : 'Title',
-preview : 'Preview',
-constrain_proportions : 'Constrain proportions',
-langdir : 'Language direction',
-langcode : 'Language code',
-long_desc : 'Long description link',
-style : 'Style',
-classes : 'Classes',
-ltr : 'Left to right',
-rtl : 'Right to left',
-id : 'Id',
-image_map : 'Image map',
-swap_image : 'Swap image',
-alt_image : 'Alternative image',
-mouseover : 'for mouse over',
-mouseout : 'for mouse out',
-misc : 'Miscellaneous',
-example_img : 'Appearance&nbsp;preview&nbsp;image',
-missing_alt : 'Are you sure you want to continue without including an Image Description? Without  it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js
+++ /dev/null
@@ -1,43 +1,1 @@
-tinyMCE.addI18n('en.advimage_dlg',{
-tab_general:"General",
-tab_appearance:"Appearance",
-tab_advanced:"Advanced",
-general:"General",
-title:"Title",
-preview:"Preview",
-constrain_proportions:"Constrain proportions",
-langdir:"Language direction",
-langcode:"Language code",
-long_desc:"Long description link",
-style:"Style",
-classes:"Classes",
-ltr:"Left to right",
-rtl:"Right to left",
-id:"Id",
-map:"Image map",
-swap_image:"Swap image",
-alt_image:"Alternative image",
-mouseover:"for mouse over",
-mouseout:"for mouse out",
-misc:"Miscellaneous",
-example_img:"Appearance preview image",
-missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",
-dialog_title:"Insert/edit image",
-src:"Image URL",
-alt:"Image description",
-list:"Image list",
-border:"Border",
-dimensions:"Dimensions",
-vspace:"Vertical space",
-hspace:"Horizontal space",
-align:"Alignment",
-align_baseline:"Baseline",
-align_top:"Top",
-align_middle:"Middle",
-align_bottom:"Bottom",
-align_texttop:"Text top",
-align_textbottom:"Text bottom",
-align_left:"Left",
-align_right:"Right",
-image_list:"Image list"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/advimage/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advimage/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/css/advlink.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/css/advlink.css
@@ -1,9 +1,36 @@
-.mceLinkList, .mceAnchorList, #targetlist {width:280px;}
-.mceActionPanel {margin-top:7px;}
-.panel_wrapper div.current {height:320px;}
-#classlist, #title, #href {width:280px;}
-#popupurl, #popupname {width:200px;}
-#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}
-#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}
-#events_panel input {width:200px;}
+/* CSS file for advimage plugin popup */

+

+.mceLinkList, .mceAnchorList, #targetlist {

+	width: 280px;

+}

+

+.mceActionPanel {

+	margin-top: 7px;

+}

+

+.panel_wrapper div.current {

+	height: 320px;

+}

+

+#classlist, #title, #href {

+	width: 280px;

+}

+

+#popupurl, #popupname {

+	width: 200px;

+}

+

+#popupwidth, #popupheight, #popupleft, #popuptop {

+	width: 30px;

+	vertical-align: middle;

+	text-align: center;

+}

+

+#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {

+	width: 200px;

+}

+

+#events_panel input {

+	width: 200px;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.AdvancedLinkPlugin',{init:function(ed,url){this.editor=ed;ed.addCommand('mceAdvLink',function(){var se=ed.selection;if(se.isCollapsed()&&!ed.dom.getParent(se.getNode(),'A'))return;ed.windowManager.open({file:url+'/link.htm',width:480+parseInt(ed.getLang('advlink.delta_width',0)),height:400+parseInt(ed.getLang('advlink.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('link',{title:'advlink.link_desc',cmd:'mceAdvLink'});ed.addShortcut('ctrl+k','advlink.advlink_desc','mceAdvLink');ed.onNodeChange.add(function(ed,cm,n,co){cm.setDisabled('link',co&&n.nodeName!='A');cm.setActive('link',n.nodeName=='A'&&!n.name);});},getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('advlink',tinymce.plugins.AdvancedLinkPlugin);})();
+tinyMCE.importPluginLanguagePack('advlink');var TinyMCE_AdvancedLinkPlugin={getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','k','lang_advlink_desc','mceAdvLink')},getControlHTML:function(cn){switch(cn){case"link":return tinyMCE.getButtonHTML(cn,'lang_link_desc','{$themeurl}/images/link.gif','mceAdvLink')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvLink":var inst=tinyMCE.getInstanceById(editor_id),anySelection=false;var focusElm=inst.getFocusElement(),selectedText=inst.selection.getSelectedText();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(anySelection||(focusElm!=null&&focusElm.nodeName=="A")){tinyMCE.openWindow({file:'../../plugins/advlink/link.htm',width:480+tinyMCE.getLang('lang_advlink_delta_width',0),height:400+tinyMCE.getLang('lang_advlink_delta_height',0)},{editor_id:editor_id,inline:"yes"})}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="A"&&tinyMCE.getAttrib(node,'href')!=""){tinyMCE.switchClass(editor_id+'_advlink','mceButtonSelected');return true}}while((node=node.parentNode));if(any_selection){tinyMCE.switchClass(editor_id+'_advlink','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_advlink','mceButtonDisabled');return true}};tinyMCE.addPlugin("advlink",TinyMCE_AdvancedLinkPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js
@@ -1,58 +1,84 @@
-/**
- * $Id: editor_plugin_src.js 539 2008-01-14 19:08:58Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('advlink');

+

+var TinyMCE_AdvancedLinkPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Advanced link',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink');

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "link":

+				return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		switch (command) {

+			case "mceAdvLink":

+				var inst = tinyMCE.getInstanceById(editor_id), anySelection = false;

+				var focusElm = inst.getFocusElement(), selectedText = inst.selection.getSelectedText();

+

+				if (tinyMCE.selectedElement)

+					anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);

+

+				if (anySelection || (focusElm != null && focusElm.nodeName == "A")) {

+					tinyMCE.openWindow({

+						file : '../../plugins/advlink/link.htm',

+						width : 480 + tinyMCE.getLang('lang_advlink_delta_width', 0),

+						height : 400 + tinyMCE.getLang('lang_advlink_delta_height', 0)

+					}, {

+						editor_id : editor_id,

+						inline : "yes"

+					});

+				}

+

+				return true;

+		}

+

+		return false;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		if (node == null)

+			return;

+

+		do {

+			if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") {

+				tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected');

+				return true;

+			}

+		} while ((node = node.parentNode));

+

+		if (any_selection) {

+			tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal');

+			return true;

+		}

+

+		tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled');

+

+		return true;

+	}

+};

+

+tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
-		init : function(ed, url) {
-			this.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceAdvLink', function() {
-				var se = ed.selection;
-
-				// No selection and not in link
-				if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))
-					return;
-
-				ed.windowManager.open({
-					file : url + '/link.htm',
-					width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),
-					height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			// Register buttons
-			ed.addButton('link', {
-				title : 'advlink.link_desc',
-				cmd : 'mceAdvLink'
-			});
-
-			ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
-
-			ed.onNodeChange.add(function(ed, cm, n, co) {
-				cm.setDisabled('link', co && n.nodeName != 'A');
-				cm.setActive('link', n.nodeName == 'A' && !n.name);
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Advanced link',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/js/advlink.js
+++ /dev/null
@@ -1,529 +1,1 @@
-/* Functions for the advlink plugin popup */
 
-tinyMCEPopup.requireLangPack();
-
-var templates = {
-	"window.open" : "window.open('${url}','${target}','${options}')"
-};
-
-function preinit() {
-	var url;
-
-	if (url = tinyMCEPopup.getParam("external_link_list_url"))
-		document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-}
-
-function changeClass() {
-	var f = document.forms[0];
-
-	f.classes.value = getSelectValue(f, 'classlist');
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	var formObj = document.forms[0];
-	var inst = tinyMCEPopup.editor;
-	var elm = inst.selection.getNode();
-	var action = "insert";
-	var html;
-
-	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
-	document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
-	document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
-	document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
-	document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
-
-	// Link list
-	html = getLinkListHTML('linklisthref','href');
-	if (html == "")
-		document.getElementById("linklisthrefrow").style.display = 'none';
-	else
-		document.getElementById("linklisthrefcontainer").innerHTML = html;
-
-	// Resize some elements
-	if (isVisible('hrefbrowser'))
-		document.getElementById('href').style.width = '260px';
-
-	if (isVisible('popupurlbrowser'))
-		document.getElementById('popupurl').style.width = '180px';
-
-	elm = inst.dom.getParent(elm, "A");
-	if (elm != null && elm.nodeName == "A")
-		action = "update";
-
-	formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); 
-
-	setPopupControlsDisabled(true);
-
-	if (action == "update") {
-		var href = inst.dom.getAttrib(elm, 'href');
-		var onclick = inst.dom.getAttrib(elm, 'onclick');
-
-		// Setup form data
-		setFormValue('href', href);
-		setFormValue('title', inst.dom.getAttrib(elm, 'title'));
-		setFormValue('id', inst.dom.getAttrib(elm, 'id'));
-		setFormValue('style', inst.dom.getAttrib(elm, "style"));
-		setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));
-		setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));
-		setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));
-		setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));
-		setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));
-		setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));
-		setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
-		setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
-		setFormValue('type', inst.dom.getAttrib(elm, 'type'));
-		setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));
-		setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));
-		setFormValue('onclick', onclick);
-		setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));
-		setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));
-		setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));
-		setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));
-		setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));
-		setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));
-		setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
-		setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
-		setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
-		setFormValue('target', inst.dom.getAttrib(elm, 'target'));
-		setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
-
-		// Parse onclick data
-		if (onclick != null && onclick.indexOf('window.open') != -1)
-			parseWindowOpen(onclick);
-		else
-			parseFunction(onclick);
-
-		// Select by the values
-		selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));
-		selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));
-		selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));
-		selectByValue(formObj, 'linklisthref', href);
-
-		if (href.charAt(0) == '#')
-			selectByValue(formObj, 'anchorlist', href);
-
-		addClassesToList('classlist', 'advlink_styles');
-
-		selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
-		selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
-	} else
-		addClassesToList('classlist', 'advlink_styles');
-}
-
-function checkPrefix(n) {
-	if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))
-		n.value = 'mailto:' + n.value;
-
-	if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))
-		n.value = 'http://' + n.value;
-}
-
-function setFormValue(name, value) {
-	document.forms[0].elements[name].value = value;
-}
-
-function parseWindowOpen(onclick) {
-	var formObj = document.forms[0];
-
-	// Preprocess center code
-	if (onclick.indexOf('return false;') != -1) {
-		formObj.popupreturn.checked = true;
-		onclick = onclick.replace('return false;', '');
-	} else
-		formObj.popupreturn.checked = false;
-
-	var onClickData = parseLink(onclick);
-
-	if (onClickData != null) {
-		formObj.ispopup.checked = true;
-		setPopupControlsDisabled(false);
-
-		var onClickWindowOptions = parseOptions(onClickData['options']);
-		var url = onClickData['url'];
-
-		formObj.popupname.value = onClickData['target'];
-		formObj.popupurl.value = url;
-		formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
-		formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
-
-		formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
-		formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
-
-		if (formObj.popupleft.value.indexOf('screen') != -1)
-			formObj.popupleft.value = "c";
-
-		if (formObj.popuptop.value.indexOf('screen') != -1)
-			formObj.popuptop.value = "c";
-
-		formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
-		formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
-		formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
-		formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
-		formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
-		formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
-		formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
-
-		buildOnClick();
-	}
-}
-
-function parseFunction(onclick) {
-	var formObj = document.forms[0];
-	var onClickData = parseLink(onclick);
-
-	// TODO: Add stuff here
-}
-
-function getOption(opts, name) {
-	return typeof(opts[name]) == "undefined" ? "" : opts[name];
-}
-
-function setPopupControlsDisabled(state) {
-	var formObj = document.forms[0];
-
-	formObj.popupname.disabled = state;
-	formObj.popupurl.disabled = state;
-	formObj.popupwidth.disabled = state;
-	formObj.popupheight.disabled = state;
-	formObj.popupleft.disabled = state;
-	formObj.popuptop.disabled = state;
-	formObj.popuplocation.disabled = state;
-	formObj.popupscrollbars.disabled = state;
-	formObj.popupmenubar.disabled = state;
-	formObj.popupresizable.disabled = state;
-	formObj.popuptoolbar.disabled = state;
-	formObj.popupstatus.disabled = state;
-	formObj.popupreturn.disabled = state;
-	formObj.popupdependent.disabled = state;
-
-	setBrowserDisabled('popupurlbrowser', state);
-}
-
-function parseLink(link) {
-	link = link.replace(new RegExp('&#39;', 'g'), "'");
-
-	var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
-
-	// Is function name a template function
-	var template = templates[fnName];
-	if (template) {
-		// Build regexp
-		var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
-		var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
-		var replaceStr = "";
-		for (var i=0; i<variableNames.length; i++) {
-			// Is string value
-			if (variableNames[i].indexOf("'${") != -1)
-				regExp += "'(.*)'";
-			else // Number value
-				regExp += "([0-9]*)";
-
-			replaceStr += "$" + (i+1);
-
-			// Cleanup variable name
-			variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
-
-			if (i != variableNames.length-1) {
-				regExp += "\\s*,\\s*";
-				replaceStr += "<delim>";
-			} else
-				regExp += ".*";
-		}
-
-		regExp += "\\);?";
-
-		// Build variable array
-		var variables = [];
-		variables["_function"] = fnName;
-		var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
-		for (var i=0; i<variableNames.length; i++)
-			variables[variableNames[i]] = variableValues[i];
-
-		return variables;
-	}
-
-	return null;
-}
-
-function parseOptions(opts) {
-	if (opts == null || opts == "")
-		return [];
-
-	// Cleanup the options
-	opts = opts.toLowerCase();
-	opts = opts.replace(/;/g, ",");
-	opts = opts.replace(/[^0-9a-z=,]/g, "");
-
-	var optionChunks = opts.split(',');
-	var options = [];
-
-	for (var i=0; i<optionChunks.length; i++) {
-		var parts = optionChunks[i].split('=');
-
-		if (parts.length == 2)
-			options[parts[0]] = parts[1];
-	}
-
-	return options;
-}
-
-function buildOnClick() {
-	var formObj = document.forms[0];
-
-	if (!formObj.ispopup.checked) {
-		formObj.onclick.value = "";
-		return;
-	}
-
-	var onclick = "window.open('";
-	var url = formObj.popupurl.value;
-
-	onclick += url + "','";
-	onclick += formObj.popupname.value + "','";
-
-	if (formObj.popuplocation.checked)
-		onclick += "location=yes,";
-
-	if (formObj.popupscrollbars.checked)
-		onclick += "scrollbars=yes,";
-
-	if (formObj.popupmenubar.checked)
-		onclick += "menubar=yes,";
-
-	if (formObj.popupresizable.checked)
-		onclick += "resizable=yes,";
-
-	if (formObj.popuptoolbar.checked)
-		onclick += "toolbar=yes,";
-
-	if (formObj.popupstatus.checked)
-		onclick += "status=yes,";
-
-	if (formObj.popupdependent.checked)
-		onclick += "dependent=yes,";
-
-	if (formObj.popupwidth.value != "")
-		onclick += "width=" + formObj.popupwidth.value + ",";
-
-	if (formObj.popupheight.value != "")
-		onclick += "height=" + formObj.popupheight.value + ",";
-
-	if (formObj.popupleft.value != "") {
-		if (formObj.popupleft.value != "c")
-			onclick += "left=" + formObj.popupleft.value + ",";
-		else
-			onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
-	}
-
-	if (formObj.popuptop.value != "") {
-		if (formObj.popuptop.value != "c")
-			onclick += "top=" + formObj.popuptop.value + ",";
-		else
-			onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
-	}
-
-	if (onclick.charAt(onclick.length-1) == ',')
-		onclick = onclick.substring(0, onclick.length-1);
-
-	onclick += "');";
-
-	if (formObj.popupreturn.checked)
-		onclick += "return false;";
-
-	// tinyMCE.debug(onclick);
-
-	formObj.onclick.value = onclick;
-
-	if (formObj.href.value == "")
-		formObj.href.value = url;
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib.toLowerCase()];
-	var dom = tinyMCEPopup.editor.dom;
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	// Clean up the style
-	if (attrib == 'style')
-		value = dom.serializeStyle(dom.parseStyle(value));
-
-	dom.setAttrib(elm, attrib, value);
-}
-
-function getAnchorListHTML(id, target) {
-	var inst = tinyMCEPopup.editor;
-	var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i;
-	var html = "";
-
-	html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" o2nfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
-	html += 'this.options[this.selectedIndex].value;">';
-	html += '<option value="">---</option>';
-
-	for (i=0; i<nodes.length; i++) {
-		if ((name = inst.dom.getAttrib(nodes[i], "name")) != "")
-			html += '<option value="#' + name + '">' + name + '</option>';
-	}
-
-	html += '</select>';
-
-	return html;
-}
-
-function insertAction() {
-	var inst = tinyMCEPopup.editor;
-	var elm, elementArray, i;
-
-	elm = inst.selection.getNode();
-	checkPrefix(document.forms[0].href);
-
-	elm = inst.dom.getParent(elm, "A");
-
-	// Remove element if there is no href
-	if (!document.forms[0].href.value) {
-		tinyMCEPopup.execCommand("mceBeginUndoLevel");
-		i = inst.selection.getBookmark();
-		inst.dom.remove(elm, 1);
-		inst.selection.moveToBookmark(i);
-		tinyMCEPopup.execCommand("mceEndUndoLevel");
-		tinyMCEPopup.close();
-		return;
-	}
-
-	tinyMCEPopup.execCommand("mceBeginUndoLevel");
-
-	// Create new anchor elements
-	if (elm == null) {
-		tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
-
-		elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});
-		for (i=0; i<elementArray.length; i++)
-			setAllAttribs(elm = elementArray[i]);
-	} else
-		setAllAttribs(elm);
-
-	// Don't move caret if selection was image
-	if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {
-		inst.focus();
-		inst.selection.select(elm);
-		inst.selection.collapse(0);
-		tinyMCEPopup.storeSelection();
-	}
-
-	tinyMCEPopup.execCommand("mceEndUndoLevel");
-	tinyMCEPopup.close();
-}
-
-function setAllAttribs(elm) {
-	var formObj = document.forms[0];
-	var href = formObj.href.value;
-	var target = getSelectValue(formObj, 'targetlist');
-
-	setAttrib(elm, 'href', href);
-	setAttrib(elm, 'mce_href', href);
-	setAttrib(elm, 'title');
-	setAttrib(elm, 'target', target == '_self' ? '' : target);
-	setAttrib(elm, 'id');
-	setAttrib(elm, 'style');
-	setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
-	setAttrib(elm, 'rel');
-	setAttrib(elm, 'rev');
-	setAttrib(elm, 'charset');
-	setAttrib(elm, 'hreflang');
-	setAttrib(elm, 'dir');
-	setAttrib(elm, 'lang');
-	setAttrib(elm, 'tabindex');
-	setAttrib(elm, 'accesskey');
-	setAttrib(elm, 'type');
-	setAttrib(elm, 'onfocus');
-	setAttrib(elm, 'onblur');
-	setAttrib(elm, 'onclick');
-	setAttrib(elm, 'ondblclick');
-	setAttrib(elm, 'onmousedown');
-	setAttrib(elm, 'onmouseup');
-	setAttrib(elm, 'onmouseover');
-	setAttrib(elm, 'onmousemove');
-	setAttrib(elm, 'onmouseout');
-	setAttrib(elm, 'onkeypress');
-	setAttrib(elm, 'onkeydown');
-	setAttrib(elm, 'onkeyup');
-
-	// Refresh in old MSIE
-	if (tinyMCE.isMSIE5)
-		elm.outerHTML = elm.outerHTML;
-}
-
-function getSelectValue(form_obj, field_name) {
-	var elm = form_obj.elements[field_name];
-
-	if (elm == null || elm.options == null)
-		return "";
-
-	return elm.options[elm.selectedIndex].value;
-}
-
-function getLinkListHTML(elm_id, target_form_element, onchange_func) {
-	if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
-		return "";
-
-	var html = "";
-
-	html += '<select id="' + elm_id + '" name="' + elm_id + '"';
-	html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
-	html += 'this.options[this.selectedIndex].value;';
-
-	if (typeof(onchange_func) != "undefined")
-		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
-
-	html += '"><option value="">---</option>';
-
-	for (var i=0; i<tinyMCELinkList.length; i++)
-		html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
-
-	html += '</select>';
-
-	return html;
-
-	// tinyMCE.debug('-- image list start --', html, '-- image list end --');
-}
-
-function getTargetListHTML(elm_id, target_form_element) {
-	var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
-	var html = '';
-
-	html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
-	html += 'this.options[this.selectedIndex].value;">';
-	html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
-	html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
-	html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
-	html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';
-
-	for (var i=0; i<targets.length; i++) {
-		var key, value;
-
-		if (targets[i] == "")
-			continue;
-
-		key = targets[i].split('=')[0];
-		value = targets[i].split('=')[1];
-
-		html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
-	}
-
-	html += '</select>';
-
-	return html;
-}
-
-// While loading
-preinit();
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js
@@ -1,569 +1,588 @@
-/* Functions for the advlink plugin popup */
+/* Functions for the advlink plugin popup */

+

+var templates = {

+	"window.open" : "window.open('${url}','${target}','${options}')"

+};

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+

+	// Import external list url javascript

+	var url = tinyMCE.getParam("external_link_list_url");

+	if (url != null) {

+		// Fix relative

+		if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+			url = tinyMCE.documentBasePath + "/" + url;

+

+		document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+	}

+}

+

+function changeClass() {

+	var formObj = document.forms[0];

+	formObj.classes.value = getSelectValue(formObj, 'classlist');

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var formObj = document.forms[0];

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var elm = inst.getFocusElement();

+	var action = "insert";

+	var html;

+

+	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');

+	document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');

+	document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');

+	document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');

+	document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');

+

+	// Link list

+	html = getLinkListHTML('linklisthref','href');

+	if (html == "")

+		document.getElementById("linklisthrefrow").style.display = 'none';

+	else

+		document.getElementById("linklisthrefcontainer").innerHTML = html;

+

+	// Resize some elements

+	if (isVisible('hrefbrowser'))

+		document.getElementById('href').style.width = '260px';

+

+	if (isVisible('popupurlbrowser'))

+		document.getElementById('popupurl').style.width = '180px';

+

+	elm = tinyMCE.getParentElement(elm, "a");

+	if (elm != null && elm.nodeName == "A")

+		action = "update";

+

+	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 

+

+	setPopupControlsDisabled(true);

+

+	if (action == "update") {

+		var href = tinyMCE.getAttrib(elm, 'href');

+

+		href = convertURL(href, elm, true);

+

+		// Use mce_href if found

+		var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href');

+		if (mceRealHref != "") {

+			href = mceRealHref;

+

+			if (tinyMCE.getParam('convert_urls'))

+				href = convertURL(href, elm, true);

+		}

+

+		var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));

+

+		// Setup form data

+		setFormValue('href', href);

+		setFormValue('title', tinyMCE.getAttrib(elm, 'title'));

+		setFormValue('id', tinyMCE.getAttrib(elm, 'id'));

+		setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));

+		setFormValue('rel', tinyMCE.getAttrib(elm, 'rel'));

+		setFormValue('rev', tinyMCE.getAttrib(elm, 'rev'));

+		setFormValue('charset', tinyMCE.getAttrib(elm, 'charset'));

+		setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang'));

+		setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));

+		setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));

+		setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));

+		setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));

+		setFormValue('type', tinyMCE.getAttrib(elm, 'type'));

+		setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));

+		setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));

+		setFormValue('onclick', onclick);

+		setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));

+		setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));

+		setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));

+		setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));

+		setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));

+		setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));

+		setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));

+		setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));

+		setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));

+		setFormValue('target', tinyMCE.getAttrib(elm, 'target'));

+		setFormValue('classes', tinyMCE.getAttrib(elm, 'class'));

+

+		// Parse onclick data

+		if (onclick != null && onclick.indexOf('window.open') != -1)

+			parseWindowOpen(onclick);

+		else

+			parseFunction(onclick);

+

+		// Select by the values

+		selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));

+		selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel'));

+		selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev'));

+		selectByValue(formObj, 'linklisthref', href);

+

+		if (href.charAt(0) == '#')

+			selectByValue(formObj, 'anchorlist', href);

+

+		addClassesToList('classlist', 'advlink_styles');

+

+		selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true);

+		selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true);

+	} else

+		addClassesToList('classlist', 'advlink_styles');

+

+	window.focus();

+}

+

+function checkPrefix(n) {

+	if (!Validator.isEmpty(n) && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email')))

+		n.value = 'mailto:' + n.value;

+

+	if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external')))

+		n.value = 'http://' + n.value;

+}

+

+function setFormValue(name, value) {

+	document.forms[0].elements[name].value = value;

+}

+

+function convertURL(url, node, on_save) {

+	return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");

+}

+

+function parseWindowOpen(onclick) {

+	var formObj = document.forms[0];

+

+	// Preprocess center code

+	if (onclick.indexOf('return false;') != -1) {

+		formObj.popupreturn.checked = true;

+		onclick = onclick.replace('return false;', '');

+	} else

+		formObj.popupreturn.checked = false;

+

+	var onClickData = parseLink(onclick);

+

+	if (onClickData != null) {

+		formObj.ispopup.checked = true;

+		setPopupControlsDisabled(false);

+

+		var onClickWindowOptions = parseOptions(onClickData['options']);

+		var url = onClickData['url'];

+

+		if (tinyMCE.getParam('convert_urls'))

+			url = convertURL(url, null, true);

+

+		formObj.popupname.value = onClickData['target'];

+		formObj.popupurl.value = url;

+		formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');

+		formObj.popupheight.value = getOption(onClickWindowOptions, 'height');

+

+		formObj.popupleft.value = getOption(onClickWindowOptions, 'left');

+		formObj.popuptop.value = getOption(onClickWindowOptions, 'top');

+

+		if (formObj.popupleft.value.indexOf('screen') != -1)

+			formObj.popupleft.value = "c";

+

+		if (formObj.popuptop.value.indexOf('screen') != -1)

+			formObj.popuptop.value = "c";

+

+		formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";

+		formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";

+		formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";

+		formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";

+		formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";

+		formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";

+		formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";

+

+		buildOnClick();

+	}

+}

+

+function parseFunction(onclick) {

+	var formObj = document.forms[0];

+	var onClickData = parseLink(onclick);

+

+	// TODO: Add stuff here

+}

+

+function getOption(opts, name) {

+	return typeof(opts[name]) == "undefined" ? "" : opts[name];

+}

+

+function setPopupControlsDisabled(state) {

+	var formObj = document.forms[0];

+

+	formObj.popupname.disabled = state;

+	formObj.popupurl.disabled = state;

+	formObj.popupwidth.disabled = state;

+	formObj.popupheight.disabled = state;

+	formObj.popupleft.disabled = state;

+	formObj.popuptop.disabled = state;

+	formObj.popuplocation.disabled = state;

+	formObj.popupscrollbars.disabled = state;

+	formObj.popupmenubar.disabled = state;

+	formObj.popupresizable.disabled = state;

+	formObj.popuptoolbar.disabled = state;

+	formObj.popupstatus.disabled = state;

+	formObj.popupreturn.disabled = state;

+	formObj.popupdependent.disabled = state;

+

+	setBrowserDisabled('popupurlbrowser', state);

+}

+

+function parseLink(link) {

+	link = link.replace(new RegExp('&#39;', 'g'), "'");

+

+	var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");

+

+	// Is function name a template function

+	var template = templates[fnName];

+	if (template) {

+		// Build regexp

+		var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));

+		var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";

+		var replaceStr = "";

+		for (var i=0; i<variableNames.length; i++) {

+			// Is string value

+			if (variableNames[i].indexOf("'${") != -1)

+				regExp += "'(.*)'";

+			else // Number value

+				regExp += "([0-9]*)";

+

+			replaceStr += "$" + (i+1);

+

+			// Cleanup variable name

+			variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");

+

+			if (i != variableNames.length-1) {

+				regExp += "\\s*,\\s*";

+				replaceStr += "<delim>";

+			} else

+				regExp += ".*";

+		}

+

+		regExp += "\\);?";

+

+		// Build variable array

+		var variables = new Array();

+		variables["_function"] = fnName;

+		var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');

+		for (var i=0; i<variableNames.length; i++)

+			variables[variableNames[i]] = variableValues[i];

+

+		return variables;

+	}

+

+	return null;

+}

+

+function parseOptions(opts) {

+	if (opts == null || opts == "")

+		return new Array();

+

+	// Cleanup the options

+	opts = opts.toLowerCase();

+	opts = opts.replace(/;/g, ",");

+	opts = opts.replace(/[^0-9a-z=,]/g, "");

+

+	var optionChunks = opts.split(',');

+	var options = new Array();

+

+	for (var i=0; i<optionChunks.length; i++) {

+		var parts = optionChunks[i].split('=');

+

+		if (parts.length == 2)

+			options[parts[0]] = parts[1];

+	}

+

+	return options;

+}

+

+function buildOnClick() {

+	var formObj = document.forms[0];

+

+	if (!formObj.ispopup.checked) {

+		formObj.onclick.value = "";

+		return;

+	}

+

+	var onclick = "window.open('";

+	var url = formObj.popupurl.value;

+

+	if (tinyMCE.getParam('convert_urls'))

+		url = convertURL(url, null, true);

+

+	onclick += url + "','";

+	onclick += formObj.popupname.value + "','";

+

+	if (formObj.popuplocation.checked)

+		onclick += "location=yes,";

+

+	if (formObj.popupscrollbars.checked)

+		onclick += "scrollbars=yes,";

+

+	if (formObj.popupmenubar.checked)

+		onclick += "menubar=yes,";

+

+	if (formObj.popupresizable.checked)

+		onclick += "resizable=yes,";

+

+	if (formObj.popuptoolbar.checked)

+		onclick += "toolbar=yes,";

+

+	if (formObj.popupstatus.checked)

+		onclick += "status=yes,";

+

+	if (formObj.popupdependent.checked)

+		onclick += "dependent=yes,";

+

+	if (formObj.popupwidth.value != "")

+		onclick += "width=" + formObj.popupwidth.value + ",";

+

+	if (formObj.popupheight.value != "")

+		onclick += "height=" + formObj.popupheight.value + ",";

+

+	if (formObj.popupleft.value != "") {

+		if (formObj.popupleft.value != "c")

+			onclick += "left=" + formObj.popupleft.value + ",";

+		else

+			onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";

+	}

+

+	if (formObj.popuptop.value != "") {

+		if (formObj.popuptop.value != "c")

+			onclick += "top=" + formObj.popuptop.value + ",";

+		else

+			onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";

+	}

+

+	if (onclick.charAt(onclick.length-1) == ',')

+		onclick = onclick.substring(0, onclick.length-1);

+

+	onclick += "');";

+

+	if (formObj.popupreturn.checked)

+		onclick += "return false;";

+

+	// tinyMCE.debug(onclick);

+

+	formObj.onclick.value = onclick;

+

+	if (formObj.href.value == "")

+		formObj.href.value = url;

+}

+

+function setAttrib(elm, attrib, value) {

+	var formObj = document.forms[0];

+	var valueElm = formObj.elements[attrib.toLowerCase()];

+

+	if (typeof(value) == "undefined" || value == null) {

+		value = "";

+

+		if (valueElm)

+			value = valueElm.value;

+	}

+

+	if (value != "") {

+		elm.setAttribute(attrib.toLowerCase(), value);

+

+		if (attrib == "style")

+			attrib = "style.cssText";

+

+		if (attrib.substring(0, 2) == 'on')

+			value = 'return true;' + value;

+

+		if (attrib == "class")

+			attrib = "className";

+

+		eval('elm.' + attrib + "=value;");

+	} else

+		elm.removeAttribute(attrib);

+}

+

+function getAnchorListHTML(id, target) {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var nodes = inst.getBody().getElementsByTagName("a"), name, i;

+	var html = "";

+

+	html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';

+	html += 'this.options[this.selectedIndex].value;">';

+	html += '<option value="">---</option>';

+

+	for (i=0; i<nodes.length; i++) {

+		if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")

+			html += '<option value="#' + name + '">' + name + '</option>';

+	}

+

+	html += '</select>';

+

+	return html;

+}

+

+function insertAction() {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var elm = inst.getFocusElement();

+

+	checkPrefix(document.forms[0].href);

+

+	elm = tinyMCE.getParentElement(elm, "a");

+

+	tinyMCEPopup.execCommand("mceBeginUndoLevel");

+

+	// Create new anchor elements

+	if (elm == null) {

+		if (tinyMCE.isSafari)

+			tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.selection.getSelectedHTML() + '</a>');

+		else

+			tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");

+

+		var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");

+		for (var i=0; i<elementArray.length; i++) {

+			var elm = elementArray[i];

+

+			// Move cursor to end

+			try {

+				tinyMCE.selectedInstance.selection.collapse(false);

+			} catch (ex) {

+				// Ignore

+			}

+

+			// Move cursor behind the new anchor

+			// Don't remember why this was needed so it's now removed

+			/*

+			if (tinyMCE.isGecko) {

+				var sp = inst.getDoc().createTextNode(" ");

+

+				if (elm.nextSibling)

+					elm.parentNode.insertBefore(sp, elm.nextSibling);

+				else

+					elm.parentNode.appendChild(sp);

+

+				// Set range after link

+				var rng = inst.getDoc().createRange();

+				rng.setStartAfter(elm);

+				rng.setEndAfter(elm);

+

+				// Update selection

+				var sel = inst.getSel();

+				sel.removeAllRanges();

+				sel.addRange(rng);

+			}

+			*/

+

+			setAllAttribs(elm);

+		}

+	} else

+		setAllAttribs(elm);

+

+	tinyMCE._setEventsEnabled(inst.getBody(), false);

+	tinyMCEPopup.execCommand("mceEndUndoLevel");

+	tinyMCEPopup.close();

+}

+

+function setAllAttribs(elm) {

+	var formObj = document.forms[0];

+	var href = formObj.href.value;

+	var target = getSelectValue(formObj, 'targetlist');

+

+	// Make anchors absolute

+	if (href.charAt(0) != '#' && tinyMCE.getParam('convert_urls'))

+		href = convertURL(href, elm);

+

+	setAttrib(elm, 'href', href);

+	setAttrib(elm, 'mce_href', href);

+	setAttrib(elm, 'title');

+	setAttrib(elm, 'target', target == '_self' ? '' : target);

+	setAttrib(elm, 'id');

+	setAttrib(elm, 'style');

+	setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));

+	setAttrib(elm, 'rel');

+	setAttrib(elm, 'rev');

+	setAttrib(elm, 'charset');

+	setAttrib(elm, 'hreflang');

+	setAttrib(elm, 'dir');

+	setAttrib(elm, 'lang');

+	setAttrib(elm, 'tabindex');

+	setAttrib(elm, 'accesskey');

+	setAttrib(elm, 'type');

+	setAttrib(elm, 'onfocus');

+	setAttrib(elm, 'onblur');

+	setAttrib(elm, 'onclick');

+	setAttrib(elm, 'ondblclick');

+	setAttrib(elm, 'onmousedown');

+	setAttrib(elm, 'onmouseup');

+	setAttrib(elm, 'onmouseover');

+	setAttrib(elm, 'onmousemove');

+	setAttrib(elm, 'onmouseout');

+	setAttrib(elm, 'onkeypress');

+	setAttrib(elm, 'onkeydown');

+	setAttrib(elm, 'onkeyup');

+

+	// Refresh in old MSIE

+	if (tinyMCE.isMSIE5)

+		elm.outerHTML = elm.outerHTML;

+}

+

+function getSelectValue(form_obj, field_name) {

+	var elm = form_obj.elements[field_name];

+

+	if (elm == null || elm.options == null)

+		return "";

+

+	return elm.options[elm.selectedIndex].value;

+}

+

+function getLinkListHTML(elm_id, target_form_element, onchange_func) {

+	if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)

+		return "";

+

+	var html = "";

+

+	html += '<select id="' + elm_id + '" name="' + elm_id + '"';

+	html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';

+	html += 'this.options[this.selectedIndex].value;';

+

+	if (typeof(onchange_func) != "undefined")

+		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';

+

+	html += '"><option value="">---</option>';

+

+	for (var i=0; i<tinyMCELinkList.length; i++)

+		html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';

+

+	html += '</select>';

+

+	return html;

+

+	// tinyMCE.debug('-- image list start --', html, '-- image list end --');

+}

+

+function getTargetListHTML(elm_id, target_form_element) {

+	var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');

+	var html = '';

+

+	html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';

+	html += 'this.options[this.selectedIndex].value;">';

+

+	html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';

+	html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';

+	html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';

+	html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';

+

+	for (var i=0; i<targets.length; i++) {

+		var key, value;

+

+		if (targets[i] == "")

+			continue;

+

+		key = targets[i].split('=')[0];

+		value = targets[i].split('=')[1];

+

+		html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';

+	}

+

+	html += '</select>';

+

+	return html;

+}

+

+// While loading

+preinit();

 
-var templates = {
-	"window.open" : "window.open('${url}','${target}','${options}')"
-};
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
-
-	// Import external list url javascript
-	var url = tinyMCE.getParam("external_link_list_url");
-	if (url != null) {
-		// Fix relative
-		if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-			url = tinyMCE.documentBasePath + "/" + url;
-
-		document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-	}
-}
-
-function changeClass() {
-	var formObj = document.forms[0];
-	formObj.classes.value = getSelectValue(formObj, 'classlist');
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	var formObj = document.forms[0];
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var elm = inst.getFocusElement();
-	var action = "insert";
-	var html;
-
-	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
-	document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
-	document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
-	document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
-	document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
-
-	// Link list
-	html = getLinkListHTML('linklisthref','href');
-	if (html == "")
-		document.getElementById("linklisthrefrow").style.display = 'none';
-	else
-		document.getElementById("linklisthrefcontainer").innerHTML = html;
-
-	// Resize some elements
-	if (isVisible('hrefbrowser'))
-		document.getElementById('href').style.width = '260px';
-
-	if (isVisible('popupurlbrowser'))
-		document.getElementById('popupurl').style.width = '180px';
-
-	elm = tinyMCE.getParentElement(elm, "a");
-	if (elm != null && elm.nodeName == "A")
-		action = "update";
-
-	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
-
-	setPopupControlsDisabled(true);
-
-	if (action == "update") {
-		var href = tinyMCE.getAttrib(elm, 'href');
-
-		href = convertURL(href, elm, true);
-
-		// Use mce_href if found
-		var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href');
-		if (mceRealHref != "") {
-			href = mceRealHref;
-
-			if (tinyMCE.getParam('convert_urls'))
-				href = convertURL(href, elm, true);
-		}
-
-		var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));
-
-		// Setup form data
-		setFormValue('href', href);
-		setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
-		setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
-		setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));
-		setFormValue('rel', tinyMCE.getAttrib(elm, 'rel'));
-		setFormValue('rev', tinyMCE.getAttrib(elm, 'rev'));
-		setFormValue('charset', tinyMCE.getAttrib(elm, 'charset'));
-		setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang'));
-		setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));
-		setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
-		setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
-		setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
-		setFormValue('type', tinyMCE.getAttrib(elm, 'type'));
-		setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));
-		setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));
-		setFormValue('onclick', onclick);
-		setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));
-		setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));
-		setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));
-		setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
-		setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));
-		setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
-		setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));
-		setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));
-		setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));
-		setFormValue('target', tinyMCE.getAttrib(elm, 'target'));
-		setFormValue('classes', tinyMCE.getAttrib(elm, 'class'));
-
-		// Parse onclick data
-		if (onclick != null && onclick.indexOf('window.open') != -1)
-			parseWindowOpen(onclick);
-		else
-			parseFunction(onclick);
-
-		// Select by the values
-		selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
-		selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel'));
-		selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev'));
-		selectByValue(formObj, 'linklisthref', href);
-
-		if (href.charAt(0) == '#')
-			selectByValue(formObj, 'anchorlist', href);
-
-		addClassesToList('classlist', 'advlink_styles');
-
-		selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true);
-		selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true);
-	} else
-		addClassesToList('classlist', 'advlink_styles');
-
-	window.focus();
-}
-
-function setFormValue(name, value) {
-	document.forms[0].elements[name].value = value;
-}
-
-function convertURL(url, node, on_save) {
-	return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
-}
-
-function parseWindowOpen(onclick) {
-	var formObj = document.forms[0];
-
-	// Preprocess center code
-	if (onclick.indexOf('return false;') != -1) {
-		formObj.popupreturn.checked = true;
-		onclick = onclick.replace('return false;', '');
-	} else
-		formObj.popupreturn.checked = false;
-
-	var onClickData = parseLink(onclick);
-
-	if (onClickData != null) {
-		formObj.ispopup.checked = true;
-		setPopupControlsDisabled(false);
-
-		var onClickWindowOptions = parseOptions(onClickData['options']);
-		var url = onClickData['url'];
-
-		if (tinyMCE.getParam('convert_urls'))
-			url = convertURL(url, null, true);
-
-		formObj.popupname.value = onClickData['target'];
-		formObj.popupurl.value = url;
-		formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
-		formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
-
-		formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
-		formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
-
-		if (formObj.popupleft.value.indexOf('screen') != -1)
-			formObj.popupleft.value = "c";
-
-		if (formObj.popuptop.value.indexOf('screen') != -1)
-			formObj.popuptop.value = "c";
-
-		formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
-		formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
-		formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
-		formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
-		formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
-		formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
-		formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
-
-		buildOnClick();
-	}
-}
-
-function parseFunction(onclick) {
-	var formObj = document.forms[0];
-	var onClickData = parseLink(onclick);
-
-	// TODO: Add stuff here
-}
-
-function getOption(opts, name) {
-	return typeof(opts[name]) == "undefined" ? "" : opts[name];
-}
-
-function setPopupControlsDisabled(state) {
-	var formObj = document.forms[0];
-
-	formObj.popupname.disabled = state;
-	formObj.popupurl.disabled = state;
-	formObj.popupwidth.disabled = state;
-	formObj.popupheight.disabled = state;
-	formObj.popupleft.disabled = state;
-	formObj.popuptop.disabled = state;
-	formObj.popuplocation.disabled = state;
-	formObj.popupscrollbars.disabled = state;
-	formObj.popupmenubar.disabled = state;
-	formObj.popupresizable.disabled = state;
-	formObj.popuptoolbar.disabled = state;
-	formObj.popupstatus.disabled = state;
-	formObj.popupreturn.disabled = state;
-	formObj.popupdependent.disabled = state;
-
-	setBrowserDisabled('popupurlbrowser', state);
-}
-
-function parseLink(link) {
-	link = link.replace(new RegExp('&#39;', 'g'), "'");
-
-	var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
-
-	// Is function name a template function
-	var template = templates[fnName];
-	if (template) {
-		// Build regexp
-		var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
-		var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
-		var replaceStr = "";
-		for (var i=0; i<variableNames.length; i++) {
-			// Is string value
-			if (variableNames[i].indexOf("'${") != -1)
-				regExp += "'(.*)'";
-			else // Number value
-				regExp += "([0-9]*)";
-
-			replaceStr += "$" + (i+1);
-
-			// Cleanup variable name
-			variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
-
-			if (i != variableNames.length-1) {
-				regExp += "\\s*,\\s*";
-				replaceStr += "<delim>";
-			} else
-				regExp += ".*";
-		}
-
-		regExp += "\\);?";
-
-		// Build variable array
-		var variables = new Array();
-		variables["_function"] = fnName;
-		var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
-		for (var i=0; i<variableNames.length; i++)
-			variables[variableNames[i]] = variableValues[i];
-
-		return variables;
-	}
-
-	return null;
-}
-
-function parseOptions(opts) {
-	if (opts == null || opts == "")
-		return new Array();
-
-	// Cleanup the options
-	opts = opts.toLowerCase();
-	opts = opts.replace(/;/g, ",");
-	opts = opts.replace(/[^0-9a-z=,]/g, "");
-
-	var optionChunks = opts.split(',');
-	var options = new Array();
-
-	for (var i=0; i<optionChunks.length; i++) {
-		var parts = optionChunks[i].split('=');
-
-		if (parts.length == 2)
-			options[parts[0]] = parts[1];
-	}
-
-	return options;
-}
-
-function buildOnClick() {
-	var formObj = document.forms[0];
-
-	if (!formObj.ispopup.checked) {
-		formObj.onclick.value = "";
-		return;
-	}
-
-	var onclick = "window.open('";
-	var url = formObj.popupurl.value;
-
-	if (tinyMCE.getParam('convert_urls'))
-		url = convertURL(url, null, true);
-
-	onclick += url + "','";
-	onclick += formObj.popupname.value + "','";
-
-	if (formObj.popuplocation.checked)
-		onclick += "location=yes,";
-
-	if (formObj.popupscrollbars.checked)
-		onclick += "scrollbars=yes,";
-
-	if (formObj.popupmenubar.checked)
-		onclick += "menubar=yes,";
-
-	if (formObj.popupresizable.checked)
-		onclick += "resizable=yes,";
-
-	if (formObj.popuptoolbar.checked)
-		onclick += "toolbar=yes,";
-
-	if (formObj.popupstatus.checked)
-		onclick += "status=yes,";
-
-	if (formObj.popupdependent.checked)
-		onclick += "dependent=yes,";
-
-	if (formObj.popupwidth.value != "")
-		onclick += "width=" + formObj.popupwidth.value + ",";
-
-	if (formObj.popupheight.value != "")
-		onclick += "height=" + formObj.popupheight.value + ",";
-
-	if (formObj.popupleft.value != "") {
-		if (formObj.popupleft.value != "c")
-			onclick += "left=" + formObj.popupleft.value + ",";
-		else
-			onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
-	}
-
-	if (formObj.popuptop.value != "") {
-		if (formObj.popuptop.value != "c")
-			onclick += "top=" + formObj.popuptop.value + ",";
-		else
-			onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
-	}
-
-	if (onclick.charAt(onclick.length-1) == ',')
-		onclick = onclick.substring(0, onclick.length-1);
-
-	onclick += "');";
-
-	if (formObj.popupreturn.checked)
-		onclick += "return false;";
-
-	// tinyMCE.debug(onclick);
-
-	formObj.onclick.value = onclick;
-
-	if (formObj.href.value == "")
-		formObj.href.value = url;
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib.toLowerCase()];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value != "") {
-		elm.setAttribute(attrib.toLowerCase(), value);
-
-		if (attrib == "style")
-			attrib = "style.cssText";
-
-		if (attrib.substring(0, 2) == 'on')
-			value = 'return true;' + value;
-
-		if (attrib == "class")
-			attrib = "className";
-
-		eval('elm.' + attrib + "=value;");
-	} else
-		elm.removeAttribute(attrib);
-}
-
-function getAnchorListHTML(id, target) {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var nodes = inst.getBody().getElementsByTagName("a");
-
-	var html = "";
-
-	html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
-	html += 'this.options[this.selectedIndex].value;">';
-	html += '<option value="">---</option>';
-
-	for (var i=0; i<nodes.length; i++) {
-		if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")
-			html += '<option value="#' + name + '">' + name + '</option>';
-	}
-
-	html += '</select>';
-
-	return html;
-}
-
-function insertAction() {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var elm = inst.getFocusElement();
-
-	elm = tinyMCE.getParentElement(elm, "a");
-
-	tinyMCEPopup.execCommand("mceBeginUndoLevel");
-
-	// Create new anchor elements
-	if (elm == null) {
-		if (tinyMCE.isSafari)
-			tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.selection.getSelectedHTML() + '</a>');
-		else
-			tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");
-
-		var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");
-		for (var i=0; i<elementArray.length; i++) {
-			var elm = elementArray[i];
-
-			// Move cursor behind the new anchor
-			if (tinyMCE.isGecko) {
-				var sp = inst.getDoc().createTextNode(" ");
-
-				if (elm.nextSibling)
-					elm.parentNode.insertBefore(sp, elm.nextSibling);
-				else
-					elm.parentNode.appendChild(sp);
-
-				// Set range after link
-				var rng = inst.getDoc().createRange();
-				rng.setStartAfter(elm);
-				rng.setEndAfter(elm);
-
-				// Update selection
-				var sel = inst.getSel();
-				sel.removeAllRanges();
-				sel.addRange(rng);
-			}
-
-			setAllAttribs(elm);
-		}
-	} else
-		setAllAttribs(elm);
-
-	tinyMCE._setEventsEnabled(inst.getBody(), false);
-	tinyMCEPopup.execCommand("mceEndUndoLevel");
-	tinyMCEPopup.close();
-}
-
-function setAllAttribs(elm) {
-	var formObj = document.forms[0];
-	var href = formObj.href.value;
-	var target = getSelectValue(formObj, 'targetlist');
-
-	// Make anchors absolute
-	if (href.charAt(0) != '#')
-		href = convertURL(href, elm);
-
-	setAttrib(elm, 'href', href);
-	setAttrib(elm, 'mce_href', href);
-	setAttrib(elm, 'title');
-	setAttrib(elm, 'target', target == '_self' ? '' : target);
-	setAttrib(elm, 'id');
-	setAttrib(elm, 'style');
-	setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
-	setAttrib(elm, 'rel');
-	setAttrib(elm, 'rev');
-	setAttrib(elm, 'charset');
-	setAttrib(elm, 'hreflang');
-	setAttrib(elm, 'dir');
-	setAttrib(elm, 'lang');
-	setAttrib(elm, 'tabindex');
-	setAttrib(elm, 'accesskey');
-	setAttrib(elm, 'type');
-	setAttrib(elm, 'onfocus');
-	setAttrib(elm, 'onblur');
-	setAttrib(elm, 'onclick');
-	setAttrib(elm, 'ondblclick');
-	setAttrib(elm, 'onmousedown');
-	setAttrib(elm, 'onmouseup');
-	setAttrib(elm, 'onmouseover');
-	setAttrib(elm, 'onmousemove');
-	setAttrib(elm, 'onmouseout');
-	setAttrib(elm, 'onkeypress');
-	setAttrib(elm, 'onkeydown');
-	setAttrib(elm, 'onkeyup');
-
-	// Refresh in old MSIE
-	if (tinyMCE.isMSIE5)
-		elm.outerHTML = elm.outerHTML;
-}
-
-function getSelectValue(form_obj, field_name) {
-	var elm = form_obj.elements[field_name];
-
-	if (elm == null || elm.options == null)
-		return "";
-
-	return elm.options[elm.selectedIndex].value;
-}
-
-function getLinkListHTML(elm_id, target_form_element, onchange_func) {
-	if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
-		return "";
-
-	var html = "";
-
-	html += '<select id="' + elm_id + '" name="' + elm_id + '"';
-	html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
-	html += 'this.options[this.selectedIndex].value;';
-
-	if (typeof(onchange_func) != "undefined")
-		html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
-
-	html += '"><option value="">---</option>';
-
-	for (var i=0; i<tinyMCELinkList.length; i++)
-		html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
-
-	html += '</select>';
-
-	return html;
-
-	// tinyMCE.debug('-- image list start --', html, '-- image list end --');
-}
-
-function getTargetListHTML(elm_id, target_form_element) {
-	var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
-	var html = '';
-
-	html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
-	html += 'this.options[this.selectedIndex].value;">';
-
-	html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';
-	html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';
-	html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';
-	html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';
-
-	for (var i=0; i<targets.length; i++) {
-		var key, value;
-
-		if (targets[i] == "")
-			continue;
-
-		key = targets[i].split('=')[0];
-		value = targets[i].split('=')[1];
-
-		html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
-	}
-
-	html += '</select>';
-
-	return html;
-}
-
-// While loading
-preinit();
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/langs/en.js
@@ -1,47 +1,46 @@
-// UK lang variables
-
-tinyMCE.addToLang('advlink',{
-general_tab : 'General',
-popup_tab : 'Popup',
-events_tab : 'Events',
-advanced_tab : 'Advanced',
-general_props : 'General properties',
-popup_props : 'Popup properties',
-event_props : 'Events',
-advanced_props : 'Advanced properties',
-popup_opts : 'Options',
-anchor_names : 'Anchors',
-target_same : 'Open in this window / frame',
-target_parent : 'Open in parent window / frame',
-target_top : 'Open in top frame (replaces all frames)',
-target_blank : 'Open in new window',
-popup : 'Javascript popup',
-popup_url : 'Popup URL',
-popup_name : 'Window name',
-popup_return : 'Insert \'return false\'',
-popup_scrollbars : 'Show scrollbars',
-popup_statusbar : 'Show status bar',
-popup_toolbar : 'Show toolbars',
-popup_menubar : 'Show menu bar',
-popup_location : 'Show location bar',
-popup_resizable : 'Make window resizable',
-popup_dependent : 'Dependent (Mozilla/Firefox only)',
-popup_size : 'Size',
-popup_position : 'Position (X/Y)',
-id : 'Id',
-style: 'Style',
-classes : 'Classes',
-target_name : 'Target name',
-langdir : 'Language direction',
-target_langcode : 'Target language',
-langcode : 'Language code',
-encoding : 'Target character encoding',
-mime : 'Target MIME type',
-rel : 'Relationship page to target',
-rev : 'Relationship target to page',
-tabindex : 'Tabindex',
-accesskey : 'Accesskey',
-ltr : 'Left to right',
-rtl : 'Right to left'
+// UK lang variables

+

+tinyMCE.addToLang('advlink',{

+general_tab : 'General',

+popup_tab : 'Popup',

+events_tab : 'Events',

+advanced_tab : 'Advanced',

+general_props : 'General properties',

+popup_props : 'Popup properties',

+event_props : 'Events',

+advanced_props : 'Advanced properties',

+popup_opts : 'Options',

+anchor_names : 'Anchors',

+target_same : 'Open in this window / frame',

+target_parent : 'Open in parent window / frame',

+target_top : 'Open in top frame (replaces all frames)',

+target_blank : 'Open in new window',

+popup : 'Javascript popup',

+popup_url : 'Popup URL',

+popup_name : 'Window name',

+popup_return : 'Insert \'return false\'',

+popup_scrollbars : 'Show scrollbars',

+popup_statusbar : 'Show status bar',

+popup_toolbar : 'Show toolbars',

+popup_menubar : 'Show menu bar',

+popup_location : 'Show location bar',

+popup_resizable : 'Make window resizable',

+popup_dependent : 'Dependent (Mozilla/Firefox only)',

+popup_size : 'Size',

+popup_position : 'Position (X/Y)',

+id : 'Id',

+style: 'Style',

+classes : 'Classes',

+target_name : 'Target name',

+langdir : 'Language direction',

+target_langcode : 'Target language',

+langcode : 'Language code',

+encoding : 'Target character encoding',

+mime : 'Target MIME type',

+rel : 'Relationship page to target',

+rev : 'Relationship target to page',

+tabindex : 'Tabindex',

+accesskey : 'Accesskey',

+ltr : 'Left to right',

+rtl : 'Right to left'

 });
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js
+++ /dev/null
@@ -1,52 +1,1 @@
-tinyMCE.addI18n('en.advlink_dlg',{
-title:"Insert/edit link",
-url:"Link URL",
-target:"Target",
-titlefield:"Title",
-is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
-is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
-list:"Link list",
-general_tab:"General",
-popup_tab:"Popup",
-events_tab:"Events",
-advanced_tab:"Advanced",
-general_props:"General properties",
-popup_props:"Popup properties",
-event_props:"Events",
-advanced_props:"Advanced properties",
-popup_opts:"Options",
-anchor_names:"Anchors",
-target_same:"Open in this window / frame",
-target_parent:"Open in parent window / frame",
-target_top:"Open in top frame (replaces all frames)",
-target_blank:"Open in new window",
-popup:"Javascript popup",
-popup_url:"Popup URL",
-popup_name:"Window name",
-popup_return:"Insert 'return false'",
-popup_scrollbars:"Show scrollbars",
-popup_statusbar:"Show status bar",
-popup_toolbar:"Show toolbars",
-popup_menubar:"Show menu bar",
-popup_location:"Show location bar",
-popup_resizable:"Make window resizable",
-popup_dependent:"Dependent (Mozilla/Firefox only)",
-popup_size:"Size",
-popup_position:"Position (X/Y)",
-id:"Id",
-style:"Style",
-classes:"Classes",
-target_name:"Target name",
-langdir:"Language direction",
-target_langcode:"Target language",
-langcode:"Language code",
-encoding:"Target character encoding",
-mime:"Target MIME type",
-rel:"Relationship page to target",
-rev:"Relationship target to page",
-tabindex:"Tabindex",
-accesskey:"Accesskey",
-ltr:"Left to right",
-rtl:"Right to left",
-link_list:"Link list"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/link.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/link.htm
@@ -1,340 +1,339 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advlink_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/validate.js"></script>
-	<script type="text/javascript" src="js/advlink.js"></script>
-	<link href="css/advlink.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="advlink" style="display: none">
-    <form onsubmit="insertAction();return false;" action="#">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>
-				<li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>
-				<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_insert_link_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>

+	<link href="css/advlink.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+    <form onsubmit="insertAction();return false;" action="#">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_advlink_general_tab}</a></span></li>

+				<li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{$lang_advlink_popup_tab}</a></span></li>

+				<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_advlink_events_tab}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_advlink_advanced_tab}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_advlink_general_props}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+						  <td nowrap="nowrap"><label id="hreflabel" for="href">{$lang_insert_link_url}</label></td>

+						  <td><table border="0" cellspacing="0" cellpadding="0">

+								<tr>

+								  <td><input id="href" name="href" type="text" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>

+								  <td id="hrefbrowsercontainer">&nbsp;</td>

+								</tr>

+							  </table></td>

+						</tr>

+						<tr id="linklisthrefrow">

+							<td class="column1"><label for="linklisthref">{$lang_link_list}</label></td>

+							<td colspan="2" id="linklisthrefcontainer">&nbsp;</td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="anchorlist">{$lang_advlink_anchor_names}</label></td>

+							<td colspan="2" id="anchorlistcontainer">&nbsp;</td>

+						</tr>

+						<tr>

+							<td><label id="targetlistlabel" for="targetlist">{$lang_insert_link_target}</label></td>

+							<td id="targetlistcontainer">&nbsp;</td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label id="titlelabel" for="title">{$lang_theme_insert_link_titlefield}</label></td>

+							<td><input id="title" name="title" type="text" value="" /></td>

+						</tr>

+						<tr>

+							<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>

+							<td>

+								 <select id="classlist" name="classlist" onchange="changeClass();">

+									<option value="" selected>{$lang_not_set}</option>

+								 </select>

+							</td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="popup_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_advlink_popup_props}</legend>

+

+					<input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />

+					<label id="ispopuplabel" for="ispopup">{$lang_advlink_popup}</label>

+

+					<table border="0" cellpadding="0" cellspacing="4">

+						<tr>

+							<td nowrap="nowrap"><label for="popupurl">{$lang_advlink_popup_url}</label>&nbsp;</td>

+							<td>

+								<table border="0" cellspacing="0" cellpadding="0">

+									<tr>

+										<td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>

+										<td id="popupurlbrowsercontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="popupname">{$lang_advlink_popup_name}</label>&nbsp;</td>

+							<td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label>{$lang_advlink_popup_size}</label>&nbsp;</td>

+							<td nowrap="nowrap">

+								<input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x

+								<input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px

+							</td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap" id="labelleft"><label>{$lang_advlink_popup_position}</label>&nbsp;</td>

+							<td nowrap="nowrap">

+								<input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /                                

+								<input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)

+							</td>

+						</tr>

+					</table>

+

+					<fieldset>

+						<legend>{$lang_advlink_popup_opts}</legend>

+

+						<table border="0" cellpadding="0" cellspacing="4">

+							<tr>

+								<td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{$lang_advlink_popup_location}</label></td>

+								<td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{$lang_advlink_popup_scrollbars}</label></td>

+							</tr>

+							<tr>

+								<td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{$lang_advlink_popup_menubar}</label></td>

+								<td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{$lang_advlink_popup_resizable}</label></td>

+							</tr>

+							<tr>

+								<td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{$lang_advlink_popup_toolbar}</label></td>

+								<td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{$lang_advlink_popup_dependent}</label></td>

+							</tr>

+							<tr>

+								<td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>

+								<td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{$lang_advlink_popup_statusbar}</label></td>

+								<td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>

+								<td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{$lang_advlink_popup_return}</label></td>

+							</tr>

+						</table>

+					</fieldset>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+			<fieldset>

+					<legend>{$lang_advlink_advanced_props}</legend>

+

+					<table border="0" cellpadding="0" cellspacing="4">

+						<tr>

+							<td class="column1"><label id="idlabel" for="id">{$lang_advlink_id}</label></td> 

+							<td><input id="id" name="id" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td><label id="stylelabel" for="style">{$lang_advlink_style}</label></td>

+							<td><input type="text" id="style" name="style" value="" /></td>

+						</tr>

+

+						<tr>

+							<td><label id="classeslabel" for="classes">{$lang_advlink_classes}</label></td>

+							<td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>

+						</tr>

+

+						<tr>

+							<td><label id="targetlabel" for="target">{$lang_advlink_target_name}</label></td>

+							<td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="dirlabel" for="dir">{$lang_advlink_langdir}</label></td> 

+							<td>

+								<select id="dir" name="dir"> 

+										<option value="">{$lang_not_set}</option> 

+										<option value="ltr">{$lang_advlink_ltr}</option> 

+										<option value="rtl">{$lang_advlink_rtl}</option> 

+								</select>

+							</td> 

+						</tr>

+

+						<tr>

+							<td><label id="hreflanglabel" for="hreflang">{$lang_advlink_target_langcode}</label></td>

+							<td><input type="text" id="hreflang" name="hreflang" value="" /></td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="langlabel" for="lang">{$lang_advlink_langcode}</label></td> 

+							<td>

+								<input id="lang" name="lang" type="text" value="" />

+							</td> 

+						</tr>

+

+						<tr>

+							<td><label id="charsetlabel" for="charset">{$lang_advlink_encoding}</label></td>

+							<td><input type="text" id="charset" name="charset" value="" /></td>

+						</tr>

+

+						<tr>

+							<td><label id="typelabel" for="type">{$lang_advlink_mime}</label></td>

+							<td><input type="text" id="type" name="type" value="" /></td>

+						</tr>

+

+						<tr>

+							<td><label id="rellabel" for="rel">{$lang_advlink_rel}</label></td>

+							<td><select id="rel" name="rel"> 

+									<option value="">{$lang_not_set}</option> 

+									<option value="lightbox">Lightbox</option> 

+									<option value="alternate">Alternate</option> 

+									<option value="designates">Designates</option> 

+									<option value="stylesheet">Stylesheet</option> 

+									<option value="start">Start</option> 

+									<option value="next">Next</option> 

+									<option value="prev">Prev</option> 

+									<option value="contents">Contents</option> 

+									<option value="index">Index</option> 

+									<option value="glossary">Glossary</option> 

+									<option value="copyright">Copyright</option> 

+									<option value="chapter">Chapter</option> 

+									<option value="subsection">Subsection</option> 

+									<option value="appendix">Appendix</option> 

+									<option value="help">Help</option> 

+									<option value="bookmark">Bookmark</option>

+									<option value="nofollow">No Follow</option>

+									<option value="tag">Tag</option>

+								</select> 

+							</td>

+						</tr>

+

+						<tr>

+							<td><label id="revlabel" for="rev">{$lang_advlink_rev}</label></td>

+							<td><select id="rev" name="rev"> 

+									<option value="">{$lang_not_set}</option> 

+									<option value="alternate">Alternate</option> 

+									<option value="designates">Designates</option> 

+									<option value="stylesheet">Stylesheet</option> 

+									<option value="start">Start</option> 

+									<option value="next">Next</option> 

+									<option value="prev">Prev</option> 

+									<option value="contents">Contents</option> 

+									<option value="index">Index</option> 

+									<option value="glossary">Glossary</option> 

+									<option value="copyright">Copyright</option> 

+									<option value="chapter">Chapter</option> 

+									<option value="subsection">Subsection</option> 

+									<option value="appendix">Appendix</option> 

+									<option value="help">Help</option> 

+									<option value="bookmark">Bookmark</option> 

+								</select> 

+							</td>

+						</tr>

+

+						<tr>

+							<td><label id="tabindexlabel" for="tabindex">{$lang_advlink_tabindex}</label></td>

+							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>

+						</tr>

+

+						<tr>

+							<td><label id="accesskeylabel" for="accesskey">{$lang_advlink_accesskey}</label></td>

+							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="events_panel" class="panel">

+			<fieldset>

+					<legend>{$lang_advlink_event_props}</legend>

+

+					<table border="0" cellpadding="0" cellspacing="4">

+						<tr>

+							<td class="column1"><label for="onfocus">onfocus</label></td> 

+							<td><input id="onfocus" name="onfocus" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onblur">onblur</label></td> 

+							<td><input id="onblur" name="onblur" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onclick">onclick</label></td> 

+							<td><input id="onclick" name="onclick" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="ondblclick">ondblclick</label></td> 

+							<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onmousedown">onmousedown</label></td> 

+							<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onmouseup">onmouseup</label></td> 

+							<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onmouseover">onmouseover</label></td> 

+							<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onmousemove">onmousemove</label></td> 

+							<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onmouseout">onmouseout</label></td> 

+							<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onkeypress">onkeypress</label></td> 

+							<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onkeydown">onkeydown</label></td> 

+							<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="onkeyup">onkeyup</label></td> 

+							<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> 

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+    </form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-					<legend>{#advlink_dlg.general_props}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-						  <td nowrap="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>
-						  <td><table border="0" cellspacing="0" cellpadding="0">
-								<tr>
-								  <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>
-								  <td id="hrefbrowsercontainer">&nbsp;</td>
-								</tr>
-							  </table></td>
-						</tr>
-						<tr id="linklisthrefrow">
-							<td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>
-							<td colspan="2" id="linklisthrefcontainer">&nbsp;</td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>
-							<td colspan="2" id="anchorlistcontainer">&nbsp;</td>
-						</tr>
-						<tr>
-							<td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>
-							<td id="targetlistcontainer">&nbsp;</td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>
-							<td><input id="title" name="title" type="text" value="" /></td>
-						</tr>
-						<tr>
-							<td><label id="classlabel" for="classlist">{#class_name}</label></td>
-							<td>
-								 <select id="classlist" name="classlist" onchange="changeClass();">
-									<option value="" selected>{#not_set}</option>
-								 </select>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="popup_panel" class="panel">
-				<fieldset>
-					<legend>{#advlink_dlg.popup_props}</legend>
-
-					<input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
-					<label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>
-
-					<table border="0" cellpadding="0" cellspacing="4">
-						<tr>
-							<td nowrap="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>
-							<td>
-								<table border="0" cellspacing="0" cellpadding="0">
-									<tr>
-										<td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
-										<td id="popupurlbrowsercontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>
-							<td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label>{#advlink_dlg.popup_size}</label>&nbsp;</td>
-							<td nowrap="nowrap">
-								<input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x
-								<input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px
-							</td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label>&nbsp;</td>
-							<td nowrap="nowrap">
-								<input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /                                
-								<input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)
-							</td>
-						</tr>
-					</table>
-
-					<fieldset>
-						<legend>{#advlink_dlg.popup_opts}</legend>
-
-						<table border="0" cellpadding="0" cellspacing="4">
-							<tr>
-								<td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>
-								<td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>
-							</tr>
-							<tr>
-								<td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>
-								<td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>
-							</tr>
-							<tr>
-								<td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>
-								<td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>
-							</tr>
-							<tr>
-								<td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
-								<td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>
-								<td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
-								<td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>
-							</tr>
-						</table>
-					</fieldset>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-			<fieldset>
-					<legend>{#advlink_dlg.advanced_props}</legend>
-
-					<table border="0" cellpadding="0" cellspacing="4">
-						<tr>
-							<td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td> 
-							<td><input id="id" name="id" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>
-							<td><input type="text" id="style" name="style" value="" /></td>
-						</tr>
-
-						<tr>
-							<td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>
-							<td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
-						</tr>
-
-						<tr>
-							<td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>
-							<td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td> 
-							<td>
-								<select id="dir" name="dir"> 
-										<option value="">{#not_set}</option> 
-										<option value="ltr">{#advlink_dlg.ltr}</option> 
-										<option value="rtl">{#advlink_dlg.rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>
-							<td><input type="text" id="hreflang" name="hreflang" value="" /></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td> 
-							<td>
-								<input id="lang" name="lang" type="text" value="" />
-							</td> 
-						</tr>
-
-						<tr>
-							<td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>
-							<td><input type="text" id="charset" name="charset" value="" /></td>
-						</tr>
-
-						<tr>
-							<td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>
-							<td><input type="text" id="type" name="type" value="" /></td>
-						</tr>
-
-						<tr>
-							<td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>
-							<td><select id="rel" name="rel"> 
-									<option value="">{#not_set}</option> 
-									<option value="lightbox">Lightbox</option> 
-									<option value="alternate">Alternate</option> 
-									<option value="designates">Designates</option> 
-									<option value="stylesheet">Stylesheet</option> 
-									<option value="start">Start</option> 
-									<option value="next">Next</option> 
-									<option value="prev">Prev</option> 
-									<option value="contents">Contents</option> 
-									<option value="index">Index</option> 
-									<option value="glossary">Glossary</option> 
-									<option value="copyright">Copyright</option> 
-									<option value="chapter">Chapter</option> 
-									<option value="subsection">Subsection</option> 
-									<option value="appendix">Appendix</option> 
-									<option value="help">Help</option> 
-									<option value="bookmark">Bookmark</option>
-									<option value="nofollow">No Follow</option>
-									<option value="tag">Tag</option>
-								</select> 
-							</td>
-						</tr>
-
-						<tr>
-							<td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>
-							<td><select id="rev" name="rev"> 
-									<option value="">{#not_set}</option> 
-									<option value="alternate">Alternate</option> 
-									<option value="designates">Designates</option> 
-									<option value="stylesheet">Stylesheet</option> 
-									<option value="start">Start</option> 
-									<option value="next">Next</option> 
-									<option value="prev">Prev</option> 
-									<option value="contents">Contents</option> 
-									<option value="index">Index</option> 
-									<option value="glossary">Glossary</option> 
-									<option value="copyright">Copyright</option> 
-									<option value="chapter">Chapter</option> 
-									<option value="subsection">Subsection</option> 
-									<option value="appendix">Appendix</option> 
-									<option value="help">Help</option> 
-									<option value="bookmark">Bookmark</option> 
-								</select> 
-							</td>
-						</tr>
-
-						<tr>
-							<td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>
-							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
-						</tr>
-
-						<tr>
-							<td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>
-							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="events_panel" class="panel">
-			<fieldset>
-					<legend>{#advlink_dlg.event_props}</legend>
-
-					<table border="0" cellpadding="0" cellspacing="4">
-						<tr>
-							<td class="column1"><label for="onfocus">onfocus</label></td> 
-							<td><input id="onfocus" name="onfocus" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onblur">onblur</label></td> 
-							<td><input id="onblur" name="onblur" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onclick">onclick</label></td> 
-							<td><input id="onclick" name="onclick" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="ondblclick">ondblclick</label></td> 
-							<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onmousedown">onmousedown</label></td> 
-							<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onmouseup">onmouseup</label></td> 
-							<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onmouseover">onmouseover</label></td> 
-							<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onmousemove">onmousemove</label></td> 
-							<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onmouseout">onmouseout</label></td> 
-							<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onkeypress">onkeypress</label></td> 
-							<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onkeydown">onkeydown</label></td> 
-							<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="onkeyup">onkeyup</label></td> 
-							<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> 
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" id="insert" name="insert" value="{#insert}" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-    </form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/advlink/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/advlink/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.AutoSavePlugin',{init:function(ed,url){var t=this;t.editor=ed;window.onbeforeunload=tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;},getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinymce.majorVersion+"."+tinymce.minorVersion};},'static':{_beforeUnloadHandler:function(){var msg;tinymce.each(tinyMCE.editors,function(ed){if(ed.getParam("fullscreen_is_enabled"))return;if(ed.isDirty()){msg=ed.getLang("autosave.unload_msg");return false;}});return msg;}}});tinymce.PluginManager.add('autosave',tinymce.plugins.AutoSavePlugin);})();
+tinyMCE.importPluginLanguagePack('autosave');var TinyMCE_AutoSavePlugin={getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},_beforeUnloadHandler:function(){var n,inst,anyDirty=false,msg=tinyMCE.getLang("lang_autosave_unload_msg");if(tinyMCE.getParam("fullscreen_is_enabled"))return;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.isDirty())return msg}return}};window.onbeforeunload=TinyMCE_AutoSavePlugin._beforeUnloadHandler;tinyMCE.addPlugin("autosave",TinyMCE_AutoSavePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js
@@ -1,51 +1,47 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('autosave');

+

+var TinyMCE_AutoSavePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Auto save',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	// Private plugin internal methods

+

+	_beforeUnloadHandler : function() {

+		var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg");

+

+		if (tinyMCE.getParam("fullscreen_is_enabled"))

+			return;

+

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (!tinyMCE.isInstance(inst))

+				continue;

+

+			if (inst.isDirty())

+				return msg;

+		}

+

+		return;

+	}

+};

+

+window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler;

+

+tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.AutoSavePlugin', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			window.onbeforeunload = tinymce.plugins.AutoSavePlugin._beforeUnloadHandler;
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Auto save',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private plugin internal methods
-
-		'static' : {
-			_beforeUnloadHandler : function() {
-				var msg;
-
-				tinymce.each(tinyMCE.editors, function(ed) {
-					if (ed.getParam("fullscreen_is_enabled"))
-						return;
-
-					if (ed.isDirty()) {
-						msg = ed.getLang("autosave.unload_msg");
-						return false;
-					}
-				});
-
-				return msg;
-			}
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSavePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/autosave/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/autosave/langs/en.js
@@ -1,6 +1,6 @@
-// EN lang variables
+// EN lang variables

+

+tinyMCE.addToLang('',{

+autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.'

+});

 
-tinyMCE.addToLang('',{
-autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/autosave/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/autosave/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.BBCodePlugin',{init:function(ed,url){var t=this,dialect=ed.getParam('bbcode_dialect','punbb').toLowerCase();ed.onBeforeSetContent.add(function(ed,o){o.content=t['_'+dialect+'_bbcode2html'](o.content);});ed.onPostProcess.add(function(ed,o){if(o.set)o.content=t['_'+dialect+'_bbcode2html'](o.content);if(o.get)o.content=t['_'+dialect+'_html2bbcode'](o.content);});},getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_punbb_html2bbcode:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");rep(/<u>/gi,"[u]");rep(/<blockquote[^>]*>/gi,"[quote]");rep(/<\/blockquote>/gi,"[/quote]");rep(/<br \/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/&nbsp;/gi," ");rep(/&quot;/gi,"\"");rep(/&lt;/gi,"<");rep(/&gt;/gi,">");rep(/&amp;/gi,"&");return s;},_punbb_bbcode2html:function(s){s=tinymce.trim(s);function rep(re,str){s=s.replace(re,str);};rep(/\n/gi,"<br />");rep(/\[b\]/gi,"<strong>");rep(/\[\/b\]/gi,"</strong>");rep(/\[i\]/gi,"<em>");rep(/\[\/i\]/gi,"</em>");rep(/\[u\]/gi,"<u>");rep(/\[\/u\]/gi,"</u>");rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");return s;}});tinymce.PluginManager.add('bbcode',tinymce.plugins.BBCodePlugin);})();
+var TinyMCE_BBCodePlugin={getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},cleanup:function(type,content){var dialect=tinyMCE.getParam('bbcode_dialect','punbb').toLowerCase();switch(type){case"insert_to_editor":content=this['_'+dialect+'_bbcode2html'](content);break;case"get_from_editor":content=this['_'+dialect+'_html2bbcode'](content);break}return content},_punbb_html2bbcode:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/<font>(.*?)<\/font>/gi,"$1");rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(/<u>/gi,"[u]");rep(/<br \/>/gi,"\n");rep(/<br\/>/gi,"\n");rep(/<br>/gi,"\n");rep(/<p>/gi,"");rep(/<\/p>/gi,"\n");rep(/&nbsp;/gi," ");rep(/&quot;/gi,"\"");rep(/&lt;/gi,"<");rep(/&gt;/gi,">");rep(/&amp;/gi,"&");rep(/&undefined;/gi,"'");return s},_punbb_bbcode2html:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/\n/gi,"<br />");rep(/\[b\]/gi,"<strong>");rep(/\[\/b\]/gi,"</strong>");rep(/\[i\]/gi,"<em>");rep(/\[\/i\]/gi,"</em>");rep(/\[u\]/gi,"<u>");rep(/\[\/u\]/gi,"</u>");rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");return s}};tinyMCE.addPlugin("bbcode",TinyMCE_BBCodePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js
@@ -1,117 +1,103 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+var TinyMCE_BBCodePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'BBCode Plugin',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	cleanup : function(type, content) {

+		var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase();

+

+		switch (type) {

+			case "insert_to_editor":

+				content = this['_' + dialect + '_bbcode2html'](content);

+				break;

+

+			case "get_from_editor":

+				content = this['_' + dialect + '_html2bbcode'](content);

+				break;

+		}

+

+		return content;

+	},

+

+	// Private methods

+

+	// HTML -> BBCode in PunBB dialect

+	_punbb_html2bbcode : function(s) {

+		s = tinyMCE.trim(s);

+

+		function rep(re, str) {

+			s = s.replace(re, str);

+		};

+

+		// example: <strong> to [b]

+		rep(/<a href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url]$1[/url]");

+		rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");

+		rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");

+		rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");

+		rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");

+		rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");

+		rep(/<font>(.*?)<\/font>/gi,"$1");

+		rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");

+		rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");

+		rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");

+		rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");

+		rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");

+		rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");

+		rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");

+		rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");

+		rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");

+		rep(/<\/(strong|b)>/gi,"[/b]");

+		rep(/<(strong|b)>/gi,"[b]");

+		rep(/<\/(em|i)>/gi,"[/i]");

+		rep(/<(em|i)>/gi,"[i]");

+		rep(/<\/u>/gi,"[/u]");

+		rep(/<u>/gi,"[u]");

+		rep(/<br \/>/gi,"\n");

+		rep(/<br\/>/gi,"\n");

+		rep(/<br>/gi,"\n");

+		rep(/<p>/gi,"");

+		rep(/<\/p>/gi,"\n");

+		rep(/&nbsp;/gi," ");

+		rep(/&quot;/gi,"\"");

+		rep(/&lt;/gi,"<");

+		rep(/&gt;/gi,">");

+		rep(/&amp;/gi,"&");

+		rep(/&undefined;/gi,"'"); // quickfix

+

+		return s; 

+	},

+

+	// BBCode -> HTML from PunBB dialect

+	_punbb_bbcode2html : function(s) {

+		s = tinyMCE.trim(s);

+

+		function rep(re, str) {

+			s = s.replace(re, str);

+		};

+

+		// example: [b] to <strong>

+		rep(/\n/gi,"<br />");

+		rep(/\[b\]/gi,"<strong>");

+		rep(/\[\/b\]/gi,"</strong>");

+		rep(/\[i\]/gi,"<em>");

+		rep(/\[\/i\]/gi,"</em>");

+		rep(/\[u\]/gi,"<u>");

+		rep(/\[\/u\]/gi,"</u>");

+		rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");

+		rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");

+		rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");

+		rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");

+		rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");

+

+		return s; 

+	}

+};

+

+tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.BBCodePlugin', {
-		init : function(ed, url) {
-			var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();
-
-			ed.onBeforeSetContent.add(function(ed, o) {
-				o.content = t['_' + dialect + '_bbcode2html'](o.content);
-			});
-
-			ed.onPostProcess.add(function(ed, o) {
-				if (o.set)
-					o.content = t['_' + dialect + '_bbcode2html'](o.content);
-
-				if (o.get)
-					o.content = t['_' + dialect + '_html2bbcode'](o.content);
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'BBCode Plugin',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		// HTML -> BBCode in PunBB dialect
-		_punbb_html2bbcode : function(s) {
-			s = tinymce.trim(s);
-
-			function rep(re, str) {
-				s = s.replace(re, str);
-			};
-
-			// example: <strong> to [b]
-			rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
-			rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
-			rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
-			rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
-			rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
-			rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
-			rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
-			rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
-			rep(/<font>(.*?)<\/font>/gi,"$1");
-			rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
-			rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
-			rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
-			rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
-			rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
-			rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
-			rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
-			rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
-			rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
-			rep(/<\/(strong|b)>/gi,"[/b]");
-			rep(/<(strong|b)>/gi,"[b]");
-			rep(/<\/(em|i)>/gi,"[/i]");
-			rep(/<(em|i)>/gi,"[i]");
-			rep(/<\/u>/gi,"[/u]");
-			rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
-			rep(/<u>/gi,"[u]");
-			rep(/<blockquote[^>]*>/gi,"[quote]");
-			rep(/<\/blockquote>/gi,"[/quote]");
-			rep(/<br \/>/gi,"\n");
-			rep(/<br\/>/gi,"\n");
-			rep(/<br>/gi,"\n");
-			rep(/<p>/gi,"");
-			rep(/<\/p>/gi,"\n");
-			rep(/&nbsp;/gi," ");
-			rep(/&quot;/gi,"\"");
-			rep(/&lt;/gi,"<");
-			rep(/&gt;/gi,">");
-			rep(/&amp;/gi,"&");
-
-			return s; 
-		},
-
-		// BBCode -> HTML from PunBB dialect
-		_punbb_bbcode2html : function(s) {
-			s = tinymce.trim(s);
-
-			function rep(re, str) {
-				s = s.replace(re, str);
-			};
-
-			// example: [b] to <strong>
-			rep(/\n/gi,"<br />");
-			rep(/\[b\]/gi,"<strong>");
-			rep(/\[\/b\]/gi,"</strong>");
-			rep(/\[i\]/gi,"<em>");
-			rep(/\[\/i\]/gi,"</em>");
-			rep(/\[u\]/gi,"<u>");
-			rep(/\[\/u\]/gi,"</u>");
-			rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
-			rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
-			rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
-			rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
-			rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
-			rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");
-
-			return s; 
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js
@@ -1,11 +1,11 @@
-/**
- * $Id: editor_plugin_src.js 162 2007-01-03 16:16:52Z spocke $
- *
- * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth.

+ *

+ * @author Moxiecode


+ */

+

+/* Dummy file since cleanup is now moved to core */

 
-/* Dummy file since cleanup is now moved to core */
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/cleanup/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/cleanup/readme.txt
@@ -1,2 +1,2 @@
-Dummy plugin since cleanup is now moved into core.
+Dummy plugin since cleanup is now moved into core.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/editor_plugin.js
@@ -1,51 +1,51 @@
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('codeprotect', 'en'); // <- Add a comma separated list of all supported languages
+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('codeprotect', 'en'); // <- Add a comma separated list of all supported languages

+

+/****

+ * 

+ * I'm not even gonna copyright this, that's just silly.

+ *

+ * Feel free to improve on this code and re-upload it.

+ * 

+ * Tijmen Schep, Holland, 9-10-2005

+ * 

+ * 

+ ****/

+

+

+

+/**

+ * Gets executed when contents is inserted / retrived.

+ */

+function TinyMCE_codeprotect_cleanup(type, content) {

+	switch (type) {

+		case "get_from_editor":

+

+content = content.replace(/<!--CODE/gi, "<?");

+content = content.replace(/CODE-->/gi, "?>");

+

+			break;

+

+		case "insert_to_editor":

+			

+content = content.replace(/<\?/gi, "<!--CODE");

+content = content.replace(/\?>/gi, "CODE-->");

+

+			break;

+

+		case "get_from_editor_dom":

+

+			// Do custom cleanup code here. THIS PLUGIN DOESN'T USE THIS

+

+			break;

+

+		case "insert_to_editor_dom":

+

+			// Do custom cleanup code here. BUT I LEFT IT IN ANYWAY..

+

+			break;

+	}

+

+	return content;

+}

 
-/****
- * 
- * I'm not even gonna copyright this, that's just silly.
- *
- * Feel free to improve on this code and re-upload it.
- * 
- * Tijmen Schep, Holland, 9-10-2005
- * 
- * 
- ****/
-
-
-
-/**
- * Gets executed when contents is inserted / retrived.
- */
-function TinyMCE_codeprotect_cleanup(type, content) {
-	switch (type) {
-		case "get_from_editor":
-
-content = content.replace(/<!--CODE/gi, "<?");
-content = content.replace(/CODE-->/gi, "?>");
-
-			break;
-
-		case "insert_to_editor":
-			
-content = content.replace(/<\?/gi, "<!--CODE");
-content = content.replace(/\?>/gi, "CODE-->");
-
-			break;
-
-		case "get_from_editor_dom":
-
-			// Do custom cleanup code here. THIS PLUGIN DOESN'T USE THIS
-
-			break;
-
-		case "insert_to_editor_dom":
-
-			// Do custom cleanup code here. BUT I LEFT IT IN ANYWAY..
-
-			break;
-	}
-
-	return content;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/da.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/da.js
@@ -1,9 +1,9 @@
-// DK lang variables contributed by Jan Moelgaard
+// DK lang variables contributed by Jan Moelgaard

+

+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */

+

+tinyMCE.addToLang('',{

+template_title : 'Dette er bare en pop-up-skabelon',

+template_desc : 'Dette er bare en testknap'

+});

 
-/* Remember to namespace the language parameters lang_<your plugin>_<some name> */
-
-tinyMCE.addToLang('',{
-template_title : 'Dette er bare en pop-up-skabelon',
-template_desc : 'Dette er bare en testknap'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/de.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/de.js
@@ -1,10 +1,10 @@
-// DE lang variables
+// DE lang variables

+

+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */


+

+tinyMCE.addToLang('',{

+template_title : 'Dies ist nur ein Beispiel-Popup',

+template_desc : 'Dies ist nur ein Beispiel-Button'

+});

 
-/* Remember to namespace the language parameters lang_<your plugin>_<some name> */

-
-tinyMCE.addToLang('',{
-template_title : 'Dies ist nur ein Beispiel-Popup',
-template_desc : 'Dies ist nur ein Beispiel-Button'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/en.js
@@ -1,9 +1,9 @@
-// UK lang variables
+// UK lang variables

+

+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */

+

+tinyMCE.addToLang('',{

+template_title : 'codeprotect settings',

+template_desc : 'codeprotect'

+});

 
-/* Remember to namespace the language parameters lang_<your plugin>_<some name> */
-
-tinyMCE.addToLang('',{
-template_title : 'codeprotect settings',
-template_desc : 'codeprotect'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/fr_ca.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/fr_ca.js
@@ -1,9 +1,9 @@
-// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15
+// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15

+

+/* Remember to namespace the language parameters <your plugin>_<some name> */

+

+tinyMCE.addToLang('',{

+template_title : 'Ceci est un exmple pour le gabarit de popup',

+template_desc : 'Ceci est un exmple pour le gabarit d\'un bouton'

+});

 
-/* Remember to namespace the language parameters <your plugin>_<some name> */
-
-tinyMCE.addToLang('',{
-template_title : 'Ceci est un exmple pour le gabarit de popup',
-template_desc : 'Ceci est un exmple pour le gabarit d\'un bouton'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/he.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/he.js
@@ -1,9 +1,9 @@
-// HE lang variables
+// HE lang variables

+

+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */

+

+tinyMCE.addToLang('',{



+});

 
-/* Remember to namespace the language parameters lang_<your plugin>_<some name> */
-
-tinyMCE.addToLang('',{


-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/hu.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/hu.js
@@ -1,9 +1,9 @@
-// HU lang variables
+// HU lang variables

+

+/* Remember to namespace the language parameters lang_<your plugin>_<some name> */

+

+tinyMCE.addToLang('',{



+});

 
-/* Remember to namespace the language parameters lang_<your plugin>_<some name> */
-
-tinyMCE.addToLang('',{


-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/zh_cn.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/langs/zh_cn.js
@@ -1,10 +1,10 @@
-// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com)

+// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com)


+

+/* Remember to namespace the language parameters <your plugin>_<some name> */

+

+tinyMCE.addToLang('',{



+});

 
-/* Remember to namespace the language parameters <your plugin>_<some name> */
-
-tinyMCE.addToLang('',{


-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/codeprotect/readme.txt
@@ -1,25 +1,25 @@
-ABOUT
-
-This simple plugin protects any code in the html you are editing, by turning 
-it's start- and end-tag into comment tags when the editor is started.
-
-<? becomes <!--CODE
-?> becomes CODE-->
-
-The plugin changes the tags back to normal when you save your html.
-
-If you need this plugin to be more complex, feel free to expand on this 
-plugin, it's easier than you think. If you do make it better, please 
-upload it to sourceforge.
-
-
-INSTALL
-
-To install, copy the codeprotect folder to the plugins directory and just 
-add the word "codeprotect" to the list of plugins in the "init" bit of your tinyMCE 
-page. The plugin doesn't have a button, so no need to worry about that.
-
-
-tested with tinyCME 2.0 rc3
-
+ABOUT

+

+This simple plugin protects any code in the html you are editing, by turning 

+it's start- and end-tag into comment tags when the editor is started.

+

+<? becomes <!--CODE

+?> becomes CODE-->

+

+The plugin changes the tags back to normal when you save your html.

+

+If you need this plugin to be more complex, feel free to expand on this 

+plugin, it's easier than you think. If you do make it better, please 

+upload it to sourceforge.

+

+

+INSTALL

+

+To install, copy the codeprotect folder to the plugins directory and just 

+add the word "codeprotect" to the list of plugins in the "init" bit of your tinyMCE 

+page. The plugin doesn't have a button, so no need to worry about that.

+

+

+tested with tinyCME 2.0 rc3

+

 Tijmen Schep, 9 october 2005

--- a/tinymce/2/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js
+++ /dev/null
@@ -1,1 +1,1 @@
-(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.Compat2x',{getInfo:function(){return{longname:'Compat2x',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};}});(function(){tinymce.extend(tinyMCE,{addToLang:function(p,l){each(l,function(v,k){tinyMCE.i18n[(tinyMCE.settings.language||'en')+'.'+(p?p+'_':'')+k]=v;});},getInstanceById:function(n){return this.get(n);}});})();(function(){var EditorManager=tinymce.EditorManager;tinyMCE.instances={};tinyMCE.plugins={};tinymce.PluginManager.onAdd.add(function(pm,n,p){tinyMCE.plugins[n]=p;});tinyMCE.majorVersion=tinymce.majorVersion;tinyMCE.minorVersion=tinymce.minorVersion;tinyMCE.releaseDate=tinymce.releaseDate;tinyMCE.baseURL=tinymce.baseURL;tinyMCE.isIE=tinyMCE.isMSIE=tinymce.isIE||tinymce.isOpera;tinyMCE.isMSIE5=tinymce.isIE;tinyMCE.isMSIE5_0=tinymce.isIE;tinyMCE.isMSIE7=tinymce.isIE;tinyMCE.isGecko=tinymce.isGecko;tinyMCE.isSafari=tinymce.isWebKit;tinyMCE.isOpera=tinymce.isOpera;tinyMCE.isMac=false;tinyMCE.isNS7=false;tinyMCE.isNS71=false;tinyMCE.compat=true;TinyMCE_Engine=tinyMCE;tinymce.extend(tinyMCE,{getParam:function(n,dv){return this.activeEditor.getParam(n,dv);},addEvent:function(e,na,f,sc){tinymce.dom.Event.add(e,na,f,sc||this);},getControlHTML:function(n){return EditorManager.activeEditor.controlManager.createControl(n);},loadCSS:function(u){tinymce.DOM.loadCSS(u);},importCSS:function(doc,u){if(doc==document)this.loadCSS(u);else new tinymce.dom.DOMUtils(doc).loadCSS(u);},log:function(){console.debug.apply(console,arguments);},getLang:function(n,dv){var v=EditorManager.activeEditor.getLang(n.replace(/^lang_/g,''),dv);if(/^[0-9\-.]+$/g.test(v))return parseInt(v);return v;},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.execCommand;},triggerNodeChange:function(){EditorManager.activeEditor.nodeChanged();},regexpReplace:function(in_str,reg_exp,replace_str,opts){var re;if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);},trim:function(s){return tinymce.trim(s);},xmlEncode:function(s){return tinymce.DOM.encode(s);},explode:function(s,d){var o=[];tinymce.each(s.split(d),function(v){if(v!='')o.push(v);});return o;},switchClass:function(id,cls){var b;if(/^mceButton/.test(cls)){b=EditorManager.activeEditor.controlManager.get(id);if(!b)return;switch(cls){case"mceButtonNormal":b.setDisabled(false);b.setActive(false);return;case"mceButtonDisabled":b.setDisabled(true);return;case"mceButtonSelected":b.setActive(true);b.setDisabled(false);return;}}},addCSSClass:function(e,n,b){return tinymce.DOM.addClass(e,n,b);},hasCSSClass:function(e,n){return tinymce.DOM.hasClass(e,n);},removeCSSClass:function(e,n){return tinymce.DOM.removeClass(e,n);},getCSSClasses:function(){var cl=EditorManager.activeEditor.dom.getClasses(),o=[];each(cl,function(c){o.push(c['class']);});return o;},setWindowArg:function(n,v){EditorManager.activeEditor.windowManager.params[n]=v;},getWindowArg:function(n,dv){var wm=EditorManager.activeEditor.windowManager,v;v=wm.getParam(n);if(v==='')return'';return v||wm.getFeature(n)||dv;},getParentNode:function(n,f){return this._getDOM().getParent(n,f);},selectElements:function(n,na,f){var i,a=[],nl,x;for(x=0,na=na.split(',');x<na.length;x++)for(i=0,nl=n.getElementsByTagName(na[x]);i<nl.length;i++)(!f||f(nl[i]))&&a.push(nl[i]);return a;},getNodeTree:function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn);},na?na:[]);},getAttrib:function(e,n,dv){return this._getDOM().getAttrib(e,n,dv);},setAttrib:function(e,n,v){return this._getDOM().setAttrib(e,n,v);},getElementsByAttributeValue:function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=[];for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i];}return o;},selectNodes:function(n,f,a){var i;if(!a)a=[];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;},getContent:function(){return EditorManager.activeEditor.getContent();},getParentElement:function(n,na,f){if(na)na=new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$','g');return this._getDOM().getParent(n,function(n){return n.nodeType==1&&(!na||na.test(n.nodeName))&&(!f||f(n));},this.activeEditor.getBody());},importPluginLanguagePack:function(n){tinymce.PluginManager.requireLangPack(n);},getButtonHTML:function(cn,lang,img,c,u,v){var ed=EditorManager.activeEditor;img=img.replace(/\{\$pluginurl\}/g,tinyMCE.pluginURL);img=img.replace(/\{\$themeurl\}/g,tinyMCE.themeURL);lang=lang.replace(/^lang_/g,'');return ed.controlManager.createButton(cn,{title:lang,command:c,ui:u,value:v,scope:this,'class':'compat',image:img});},addSelectAccessibility:function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w;}return false;},accessibleEventHandler:function(e){var elm,win=this._win;e=tinymce.isIE?win.event:e;elm=tinymce.isIE?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;},cancelEvent:function(e){return tinymce.dom.Event.cancel(e);},handleVisualAid:function(e){EditorManager.activeEditor.addVisual(e);},getAbsPosition:function(n,r){return tinymce.DOM.getPos(n,r);},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s;},getVisualAidClass:function(s){return s;},parseStyle:function(s){return this._getDOM().parseStyle(s);},serializeStyle:function(s){return this._getDOM().serializeStyle(s);},openWindow:function(tpl,args){var ed=EditorManager.activeEditor,o={},n;for(n in tpl)o[n]=tpl[n];tpl=o;args=args||{};tpl.url=new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);tpl.inline=tpl.inline||args.inline;ed.windowManager.open(tpl,args);},closeWindow:function(win){EditorManager.activeEditor.windowManager.close(win);},getOuterHTML:function(e){return tinymce.DOM.getOuterHTML(e);},setOuterHTML:function(e,h,d){return tinymce.DOM.setOuterHTML(e,h,d);},hasPlugin:function(n){return tinymce.PluginManager.get(n)!=null;},_setEventsEnabled:function(){},addPlugin:function(pn,f){var t=this;function PluginWrapper(ed){tinyMCE.selectedInstance=ed;ed.onInit.add(function(){t.settings=ed.settings;t.settings['base_href']=tinyMCE.documentBasePath;tinyMCE.settings=t.settings;tinyMCE.documentBasePath=ed.documentBasePath;if(f.initInstance)f.initInstance(ed);ed.contentDocument=ed.getDoc();ed.contentWindow=ed.getWin();ed.undoRedo=ed.undoManager;ed.startContent=ed.getContent({format:'raw'});tinyMCE.instances[ed.id]=ed;tinyMCE.loadedFiles=[];});ed.onActivate.add(function(){tinyMCE.settings=ed.settings;tinyMCE.selectedInstance=ed;});if(f.handleNodeChange){ed.onNodeChange.add(function(ed,cm,n){f.handleNodeChange(ed.id,n,0,0,false,!ed.selection.isCollapsed());});}if(f.onChange){ed.onChange.add(function(ed,n){return f.onChange(ed);});}if(f.cleanup){ed.onGetContent.add(function(){});}this.getInfo=function(){return f.getInfo();};this.createControl=function(n){tinyMCE.pluginURL=tinymce.baseURL+'/plugins/'+pn;tinyMCE.themeURL=tinymce.baseURL+'/themes/'+tinyMCE.activeEditor.settings.theme;if(f.getControlHTML)return f.getControlHTML(n);return null;};this.execCommand=function(cmd,ui,val){if(f.execCommand)return f.execCommand(ed.id,ed.getBody(),cmd,ui,val);return false;};};tinymce.PluginManager.add(pn,PluginWrapper);},_getDOM:function(){return tinyMCE.activeEditor?tinyMCE.activeEditor.dom:tinymce.DOM;},convertRelativeToAbsoluteURL:function(b,u){return new tinymce.util.URI(b).toAbsolute(u);},convertAbsoluteURLToRelativeURL:function(b,u){return new tinymce.util.URI(b).toRelative(u);}});tinymce.extend(tinymce.Editor.prototype,{getFocusElement:function(){return this.selection.getNode();},getData:function(n){if(!this.data)this.data=[];if(!this.data[n])this.data[n]=[];return this.data[n];},hasPlugin:function(n){return this.plugins[n]!=null;},getContainerWin:function(){return window;},getHTML:function(raw){return this.getContent({format:raw?'raw':'html'});},setHTML:function(h){this.setContent(h);},getSel:function(){return this.selection.getSel();},getRng:function(){return this.selection.getRng();},isHidden:function(){var s;if(!tinymce.isGecko)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},translate:function(s){var c=this.settings.language,o;if(!s)return s;o=tinymce.EditorManager.i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return tinymce.EditorManager.i18n[c+'.'+b]||'{#'+b+'}';});o=o.replace(/{\$lang_([^}]+)\}/g,function(a,b){return tinymce.EditorManager.i18n[c+'.'+b]||'{$lang_'+b+'}';});return o;},repaint:function(){this.execCommand('mceRepaint');}});tinymce.extend(tinymce.dom.Selection.prototype,{getSelectedText:function(){return this.getContent({format:'text'});},getSelectedHTML:function(){return this.getContent({format:'html'});},getFocusElement:function(){return this.getNode();},selectNode:function(node,collapse,select_text_node,to_start){var t=this;t.select(node,select_text_node||0);if(!is(collapse))collapse=true;if(collapse){if(!is(to_start))to_start=true;t.collapse(to_start);}}});}).call(this);tinymce.PluginManager.add('compat2x',tinymce.plugins.Compat2x);})();
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js
+++ /dev/null
@@ -1,617 +1,1 @@
-/**
- * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
- *
- * @author Moxiecode

- */
 
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
-
-	tinymce.create('tinymce.plugins.Compat2x', {
-		getInfo : function() {
-			return {
-				longname : 'Compat2x',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/compat2x',
-				version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-			};
-		}
-	});
-
-	(function() {
-		// Extend tinyMCE/EditorManager
-		tinymce.extend(tinyMCE, {
-			addToLang : function(p, l) {
-				each(l, function(v, k) {
-					tinyMCE.i18n[(tinyMCE.settings.language || 'en') + '.' + (p ? p + '_' : '') + k] = v;
-				});
-			},
-
-			getInstanceById : function(n) {
-				return this.get(n);
-			}
-		});
-	})();
-
-	(function() {
-		var EditorManager = tinymce.EditorManager;
-
-		tinyMCE.instances = {};
-		tinyMCE.plugins = {};
-		tinymce.PluginManager.onAdd.add(function(pm, n, p) {
-			tinyMCE.plugins[n] = p;
-		});
-
-		tinyMCE.majorVersion = tinymce.majorVersion;
-		tinyMCE.minorVersion = tinymce.minorVersion;
-		tinyMCE.releaseDate = tinymce.releaseDate;
-		tinyMCE.baseURL = tinymce.baseURL;
-		tinyMCE.isIE = tinyMCE.isMSIE = tinymce.isIE || tinymce.isOpera;
-		tinyMCE.isMSIE5 = tinymce.isIE;
-		tinyMCE.isMSIE5_0 = tinymce.isIE;
-		tinyMCE.isMSIE7 = tinymce.isIE;
-		tinyMCE.isGecko = tinymce.isGecko;
-		tinyMCE.isSafari = tinymce.isWebKit;
-		tinyMCE.isOpera = tinymce.isOpera;
-		tinyMCE.isMac = false;
-		tinyMCE.isNS7 = false;
-		tinyMCE.isNS71 = false;
-		tinyMCE.compat = true;
-
-		// Extend tinyMCE class
-		TinyMCE_Engine = tinyMCE;
-		tinymce.extend(tinyMCE, {
-			getParam : function(n, dv) {
-				return this.activeEditor.getParam(n, dv);
-			},
-
-			addEvent : function(e, na, f, sc) {
-				tinymce.dom.Event.add(e, na, f, sc || this);
-			},
-
-			getControlHTML : function(n) {
-				return EditorManager.activeEditor.controlManager.createControl(n);
-			},
-
-			loadCSS : function(u) {
-				tinymce.DOM.loadCSS(u);
-			},
-
-			importCSS : function(doc, u) {
-				if (doc == document)
-					this.loadCSS(u);
-				else
-					new tinymce.dom.DOMUtils(doc).loadCSS(u);
-			},
-
-			log : function() {
-				console.debug.apply(console, arguments);
-			},
-
-			getLang : function(n, dv) {
-				var v = EditorManager.activeEditor.getLang(n.replace(/^lang_/g, ''), dv);
-
-				// Is number
-				if (/^[0-9\-.]+$/g.test(v))
-					return parseInt(v);
-
-				return v;
-			},
-
-			isInstance : function(o) {
-				return o != null && typeof(o) == "object" && o.execCommand;
-			},
-
-			triggerNodeChange : function() {
-				EditorManager.activeEditor.nodeChanged();
-			},
-
-			regexpReplace : function(in_str, reg_exp, replace_str, opts) {
-				var re;
-
-				if (in_str == null)
-					return in_str;
-
-				if (typeof(opts) == "undefined")
-					opts = 'g';
-
-				re = new RegExp(reg_exp, opts);
-
-				return in_str.replace(re, replace_str);
-			},
-
-			trim : function(s) {
-				return tinymce.trim(s);
-			},
-
-			xmlEncode : function(s) {
-				return tinymce.DOM.encode(s);
-			},
-
-			explode : function(s, d) {
-				var o = [];
-
-				tinymce.each(s.split(d), function(v) {
-					if (v != '')
-						o.push(v);
-				});
-
-				return o;
-			},
-
-			switchClass : function(id, cls) {
-				var b;
-
-				if (/^mceButton/.test(cls)) {
-					b = EditorManager.activeEditor.controlManager.get(id);
-
-					if (!b)
-						return;
-
-					switch (cls) {
-						case "mceButtonNormal":
-							b.setDisabled(false);
-							b.setActive(false);
-							return;
-
-						case "mceButtonDisabled":
-							b.setDisabled(true);
-							return;
-
-						case "mceButtonSelected":
-							b.setActive(true);
-							b.setDisabled(false);
-							return;
-					}
-				}
-			},
-
-			addCSSClass : function(e, n, b) {
-				return tinymce.DOM.addClass(e, n, b);
-			},
-
-			hasCSSClass : function(e, n) {
-				return tinymce.DOM.hasClass(e, n);
-			},
-
-			removeCSSClass : function(e, n) {
-				return tinymce.DOM.removeClass(e, n);
-			},
-
-			getCSSClasses : function() {
-				var cl = EditorManager.activeEditor.dom.getClasses(), o = [];
-
-				each(cl, function(c) {
-					o.push(c['class']);
-				});
-
-				return o;
-			},
-
-			setWindowArg : function(n, v) {
-				EditorManager.activeEditor.windowManager.params[n] = v;
-			},
-
-			getWindowArg : function(n, dv) {
-				var wm = EditorManager.activeEditor.windowManager, v;
-
-				v = wm.getParam(n);
-				if (v === '')
-					return '';
-
-				return v || wm.getFeature(n) || dv;
-			},
-
-			getParentNode : function(n, f) {
-				return this._getDOM().getParent(n, f);
-			},
-
-			selectElements : function(n, na, f) {
-				var i, a = [], nl, x;
-
-				for (x=0, na = na.split(','); x<na.length; x++)
-					for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)
-						(!f || f(nl[i])) && a.push(nl[i]);
-
-				return a;
-			},
-
-			getNodeTree : function(n, na, t, nn) {
-				return this.selectNodes(n, function(n) {
-					return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);
-				}, na ? na : []);
-			},
-
-			getAttrib : function(e, n, dv) {
-				return this._getDOM().getAttrib(e, n, dv);
-			},
-
-			setAttrib : function(e, n, v) {
-				return this._getDOM().setAttrib(e, n, v);
-			},
-
-			getElementsByAttributeValue : function(n, e, a, v) {
-				var i, nl = n.getElementsByTagName(e), o = [];
-
-				for (i=0; i<nl.length; i++) {
-					if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)
-						o[o.length] = nl[i];
-				}
-
-				return o;
-			},
-
-			selectNodes : function(n, f, a) {
-				var i;
-
-				if (!a)
-					a = [];
-
-				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;
-			},
-
-			getContent : function() {
-				return EditorManager.activeEditor.getContent();
-			},
-
-			getParentElement : function(n, na, f) {
-				if (na)
-					na = new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$', 'g');
-
-				return this._getDOM().getParent(n, function(n) {
-					return n.nodeType == 1 && (!na || na.test(n.nodeName)) && (!f || f(n));
-				}, this.activeEditor.getBody());
-			},
-
-			importPluginLanguagePack : function(n) {
-				tinymce.PluginManager.requireLangPack(n);
-			},
-
-			getButtonHTML : function(cn, lang, img, c, u, v) {
-				var ed = EditorManager.activeEditor;
-
-				img = img.replace(/\{\$pluginurl\}/g, tinyMCE.pluginURL);
-				img = img.replace(/\{\$themeurl\}/g, tinyMCE.themeURL);
-				lang = lang.replace(/^lang_/g, '');
-
-				return ed.controlManager.createButton(cn, {
-					title : lang,
-					command : c,
-					ui : u,
-					value : v,
-					scope : this,
-					'class' : 'compat',
-					image : img
-				});
-			},
-
-			addSelectAccessibility : function(e, s, w) {
-				// Add event handlers 
-				if (!s._isAccessible) {
-					s.onkeydown = tinyMCE.accessibleEventHandler;
-					s.onblur = tinyMCE.accessibleEventHandler;
-					s._isAccessible = true;
-					s._win = w;
-				}
-
-				return false;
-			},
-
-			accessibleEventHandler : function(e) {
-				var elm, win = this._win;
-
-				e = tinymce.isIE ? win.event : e;
-				elm = tinymce.isIE ? e.srcElement : e.target;
-
-				// Unpiggyback onchange on blur
-				if (e.type == "blur") {
-					if (elm.oldonchange) {
-						elm.onchange = elm.oldonchange;
-						elm.oldonchange = null;
-					}
-
-					return true;
-				}
-
-				// Piggyback onchange
-				if (elm.nodeName == "SELECT" && !elm.oldonchange) {
-					elm.oldonchange = elm.onchange;
-					elm.onchange = null;
-				}
-
-				// Execute onchange and remove piggyback
-				if (e.keyCode == 13 || e.keyCode == 32) {
-					elm.onchange = elm.oldonchange;
-					elm.onchange();
-					elm.oldonchange = null;
-
-					tinyMCE.cancelEvent(e);
-					return false;
-				}
-
-				return true;
-			},
-
-			cancelEvent : function(e) {
-				return tinymce.dom.Event.cancel(e);
-			},
-
-			handleVisualAid : function(e) {
-				EditorManager.activeEditor.addVisual(e);
-			},
-
-			getAbsPosition : function(n, r) {
-				return tinymce.DOM.getPos(n, r);
-			},
-
-			cleanupEventStr : function(s) {
-				s = "" + s;
-				s = s.replace('function anonymous()\n{\n', '');
-				s = s.replace('\n}', '');
-				s = s.replace(/^return true;/gi, ''); // Remove event blocker
-
-				return s;
-			},
-
-			getVisualAidClass : function(s) {
-				// TODO: Implement
-				return s;
-			},
-
-			parseStyle : function(s) {
-				return this._getDOM().parseStyle(s);
-			},
-
-			serializeStyle : function(s) {
-				return this._getDOM().serializeStyle(s);
-			},
-
-			openWindow : function(tpl, args) {
-				var ed = EditorManager.activeEditor, o = {}, n;
-
-				// Convert name/value array to object
-				for (n in tpl)
-					o[n] = tpl[n];
-
-				tpl = o;
-
-				args = args || {};
-				tpl.url = new tinymce.util.URI(tinymce.ThemeManager.themeURLs[ed.settings.theme]).toAbsolute(tpl.file);
-				tpl.inline = tpl.inline || args.inline;
-
-				ed.windowManager.open(tpl, args);
-			},
-
-			closeWindow : function(win) {
-				EditorManager.activeEditor.windowManager.close(win);
-			},
-
-			getOuterHTML : function(e) {
-				return tinymce.DOM.getOuterHTML(e);
-			},
-
-			setOuterHTML : function(e, h, d) {
-				return tinymce.DOM.setOuterHTML(e, h, d);
-			},
-
-			hasPlugin : function(n) {
-				return tinymce.PluginManager.get(n) != null;
-			},
-
-			_setEventsEnabled : function() {
-				// Ignore it!!
-			},
-
-			addPlugin : function(pn, f) {
-				var t = this;
-
-				function PluginWrapper(ed) {
-					tinyMCE.selectedInstance = ed;
-
-					ed.onInit.add(function() {
-						t.settings = ed.settings;
-						t.settings['base_href'] = tinyMCE.documentBasePath;
-						tinyMCE.settings = t.settings;
-						tinyMCE.documentBasePath = ed.documentBasePath;
-						//ed.formElement = DOM.get(ed.id);
-
-						if (f.initInstance)
-							f.initInstance(ed);
-
-						ed.contentDocument = ed.getDoc();
-						ed.contentWindow = ed.getWin();
-						ed.undoRedo = ed.undoManager;
-						ed.startContent = ed.getContent({format : 'raw'});
-
-						tinyMCE.instances[ed.id] = ed;
-						tinyMCE.loadedFiles = [];
-					});
-
-					ed.onActivate.add(function() {
-						tinyMCE.settings = ed.settings;
-						tinyMCE.selectedInstance = ed;
-					});
-
-				/*	if (f.removeInstance) {
-						ed.onDestroy.add(function() {
-							return f.removeInstance(ed.id);
-						});
-					}*/
-
-					if (f.handleNodeChange) {
-						ed.onNodeChange.add(function(ed, cm, n) {
-							f.handleNodeChange(ed.id, n, 0, 0, false, !ed.selection.isCollapsed());
-						});
-					}
-
-					if (f.onChange) {
-						ed.onChange.add(function(ed, n) {
-							return f.onChange(ed);
-						});
-					}
-
-					if (f.cleanup) {
-						ed.onGetContent.add(function() {
-							//f.cleanup(type, content, inst);
-						});
-					}
-
-					this.getInfo = function() {
-						return f.getInfo();
-					};
-
-					this.createControl = function(n) {
-						tinyMCE.pluginURL = tinymce.baseURL + '/plugins/' + pn;
-						tinyMCE.themeURL = tinymce.baseURL + '/themes/' + tinyMCE.activeEditor.settings.theme;
-
-						if (f.getControlHTML)
-							return f.getControlHTML(n);
-
-						return null;
-					};
-
-					this.execCommand = function(cmd, ui, val) {
-						if (f.execCommand)
-							return f.execCommand(ed.id, ed.getBody(), cmd, ui, val);
-
-						return false;
-					};
-				};
-
-				tinymce.PluginManager.add(pn, PluginWrapper);
-			},
-
-			_getDOM : function() {
-				return tinyMCE.activeEditor ? tinyMCE.activeEditor.dom : tinymce.DOM;
-			},
-
-			convertRelativeToAbsoluteURL : function(b, u) {
-				return new tinymce.util.URI(b).toAbsolute(u);
-			},
-
-			convertAbsoluteURLToRelativeURL : function(b, u) {
-				return new tinymce.util.URI(b).toRelative(u);
-			}
-		});
-
-		// Extend Editor class
-		tinymce.extend(tinymce.Editor.prototype, {
-			getFocusElement : function() {
-				return this.selection.getNode();
-			},
-
-			getData : function(n) {
-				if (!this.data)
-					this.data = [];
-
-				if (!this.data[n])
-					this.data[n] = [];
-
-				return this.data[n];
-			},
-
-			hasPlugin : function(n) {
-				return this.plugins[n] != null;
-			},
-
-			getContainerWin : function() {
-				return window;
-			},
-
-			getHTML : function(raw) {
-				return this.getContent({ format : raw ? 'raw' : 'html'});
-			},
-
-			setHTML : function(h) {
-				this.setContent(h);
-			},
-
-			getSel : function() {
-				return this.selection.getSel();
-			},
-
-			getRng : function() {
-				return this.selection.getRng();
-			},
-
-			isHidden : function() {
-				var s;
-
-				if (!tinymce.isGecko)
-					return false;
-
-				s = this.getSel();
-
-				// Weird, wheres that cursor selection?
-				return (!s || !s.rangeCount || s.rangeCount == 0);
-			},
-
-			translate : function(s) {
-				var c = this.settings.language, o;
-
-				if (!s)
-					return s;
-
-				o = tinymce.EditorManager.i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
-					return tinymce.EditorManager.i18n[c + '.' + b] || '{#' + b + '}';
-				});
-
-				o = o.replace(/{\$lang_([^}]+)\}/g, function(a, b) {
-					return tinymce.EditorManager.i18n[c + '.' + b] || '{$lang_' + b + '}';
-				});
-
-				return o;
-			},
-
-			repaint : function() {
-				this.execCommand('mceRepaint');
-			}
-		});
-
-		// Extend selection
-		tinymce.extend(tinymce.dom.Selection.prototype, {
-			getSelectedText : function() {
-				return this.getContent({format : 'text'});
-			},
-
-			getSelectedHTML : function() {
-				return this.getContent({format : 'html'});
-			},
-
-			getFocusElement : function() {
-				return this.getNode();
-			},
-
-			selectNode : function(node, collapse, select_text_node, to_start) {
-				var t = this;
-
-				t.select(node, select_text_node || 0);
-
-				if (!is(collapse))
-					collapse = true;
-
-				if (collapse) {
-					if (!is(to_start))
-						to_start = true;
-
-					t.collapse(to_start);
-				}
-			}
-		});
-	}).call(this);
-
-	// Register plugin
-	tinymce.PluginManager.add('compat2x', tinymce.plugins.Compat2x);
-})();
-
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/contextmenu.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/contextmenu.css
@@ -1,61 +1,61 @@
-.contextMenuIEPopup {
-	padding: 0px;
-	margin: 0px;
-	border: 0px;
-	overflow: hidden;
-}
+.contextMenuIEPopup {

+	padding: 0px;

+	margin: 0px;

+	border: 0px;

+	overflow: hidden;

+}

+

+.contextMenu {

+	position: absolute;

+	cursor: default;

+	z-index: 1000;

+	border: 1px solid #D4D0C8;

+	background-color: #FFFFFF;

+}

+

+.contextMenuItem, .contextMenuItemOver {

+}

+

+.contextMenuItemOver {

+	background-color: #B6BDD2;

+}

+

+.contextMenuSeparator {

+	width: 100%;

+	background-color: #D4D0C8;

+	border: 0px;

+}

+

+.contextMenuImage, .contextMenuItemDisabled {

+	border: 0px;

+}

+

+.contextMenuIcon {

+	background-color: #F0F0EE;

+}

+

+.contextMenuItemOver .contextMenuIcon {

+	background-color: #B6BDD2;

+}

+

+.contextMenuIcon {

+	background-color: #F0F0EE;

+}

+

+.contextMenuItemDisabled img {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	-moz-opacity:0.3;

+	opacity: 0.3;

+}

+

+.contextMenuText {

+	font-family: Tahoma, Verdana, Arial, Helvetica;

+	font-size: 11px;

+	margin-left: 5px;

+	margin-right: 10px;

+}

+

+.contextMenuItemDisabled {

+	color: #AAAAAA;

+}

 
-.contextMenu {
-	position: absolute;
-	cursor: default;
-	z-index: 1000;
-	border: 1px solid #D4D0C8;
-	background-color: #FFFFFF;
-}
-
-.contextMenuItem, .contextMenuItemOver {
-}
-
-.contextMenuItemOver {
-	background-color: #B6BDD2;
-}
-
-.contextMenuSeparator {
-	width: 100%;
-	background-color: #D4D0C8;
-	border: 0px;
-}
-
-.contextMenuImage, .contextMenuItemDisabled {
-	border: 0px;
-}
-
-.contextMenuIcon {
-	background-color: #F0F0EE;
-}
-
-.contextMenuItemOver .contextMenuIcon {
-	background-color: #B6BDD2;
-}
-
-.contextMenuIcon {
-	background-color: #F0F0EE;
-}
-
-.contextMenuItemDisabled img {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	-moz-opacity:0.3;
-	opacity: 0.3;
-}
-
-.contextMenuText {
-	font-family: Tahoma, Verdana, Arial, Helvetica;
-	font-size: 11px;
-	margin-left: 5px;
-	margin-right: 10px;
-}
-
-.contextMenuItemDisabled {
-	color: #AAAAAA;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css
@@ -1,75 +1,75 @@
-.contextMenuIEPopup {
-	padding: 0;
-	margin: 0;
-	border: 0;
-	overflow: hidden;
-}
+.contextMenuIEPopup {

+	padding: 0;

+	margin: 0;

+	border: 0;

+	overflow: hidden;

+}

+

+.contextMenu {

+	position: absolute;

+	cursor: default;

+	z-index: 1000;

+	border: 1px solid #D4D0C8;

+	background-color: #FFFFFF;

+}

+

+.contextMenuItem, .contextMenuItemOver {

+}

+

+.contextMenuSeparator {

+	width: 100%;

+	background-color: #D4D0C8;

+	border: 0;

+}

+

+.contextMenuImage, .contextMenuItemDisabled {

+	border: 0;

+}

+

+.contextMenuIcon {

+	background-color: #F0F0EE;

+}

+

+.contextMenuItemOver .contextMenuIcon {

+	background-color: #B6BDD2;

+}

+

+.contextMenuIcon {

+	background-color: #F0F0EE;

+}

+

+.contextMenuItemDisabled img {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	-moz-opacity:0.3;

+	opacity: 0.3;

+}

+

+.contextMenuText {

+	font-family: Tahoma, Verdana, Arial, Helvetica;

+	font-size: 11px;

+	line-height: 20px;

+}

+

+.contextMenuItemDisabled {

+	color: #AAAAAA;

+}

+

+.contextMenuText a {

+	display: block;

+	line-height: 20px;

+	width: 100%;

+	text-decoration: none;

+	color: black;

+	font-weight: normal;

+	margin: 0;

+	padding: 0;

+}

+

+.contextMenuText a:hover {

+	background-color: #B6BDD2;

+	text-decoration: none !important;

+	font-weight: normal;

+	margin: 0;

+	padding: 0;

+}

 
-.contextMenu {
-	position: absolute;
-	cursor: default;
-	z-index: 1000;
-	border: 1px solid #D4D0C8;
-	background-color: #FFFFFF;
-}
-
-.contextMenuItem, .contextMenuItemOver {
-}
-
-.contextMenuSeparator {
-	width: 100%;
-	background-color: #D4D0C8;
-	border: 0;
-}
-
-.contextMenuImage, .contextMenuItemDisabled {
-	border: 0;
-}
-
-.contextMenuIcon {
-	background-color: #F0F0EE;
-}
-
-.contextMenuItemOver .contextMenuIcon {
-	background-color: #B6BDD2;
-}
-
-.contextMenuIcon {
-	background-color: #F0F0EE;
-}
-
-.contextMenuItemDisabled img {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	-moz-opacity:0.3;
-	opacity: 0.3;
-}
-
-.contextMenuText {
-	font-family: Tahoma, Verdana, Arial, Helvetica;
-	font-size: 11px;
-	line-height: 20px;
-}
-
-.contextMenuItemDisabled {
-	color: #AAAAAA;
-}
-
-.contextMenuText a {
-	display: block;
-	line-height: 20px;
-	width: 100%;
-	text-decoration: none;
-	color: black;
-	font-weight: normal;
-	margin: 0;
-	padding: 0;
-}
-
-.contextMenuText a:hover {
-	background-color: #B6BDD2;
-	text-decoration: none !important;
-	font-weight: normal;
-	margin: 0;
-	padding: 0;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var Event=tinymce.dom.Event,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.ContextMenu',{init:function(ed){var t=this;t.editor=ed;t.onContextMenu=new tinymce.util.Dispatcher(this);ed.onContextMenu.add(function(ed,e){if(!e.ctrlKey){t._getMenu(ed).showMenu(e.clientX,e.clientY);Event.add(ed.getDoc(),'click',hide);Event.cancel(e);}});function hide(){if(t._menu){t._menu.removeAll();t._menu.destroy();Event.remove(ed.getDoc(),'click',hide);}};ed.onMouseDown.add(hide);ed.onKeyDown.add(hide);},getInfo:function(){return{longname:'Contextmenu',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getMenu:function(ed){var t=this,m=t._menu,se=ed.selection,col=se.isCollapsed(),el=se.getNode()||ed.getBody(),am,p1,p2;if(m){m.removeAll();m.destroy();}p1=DOM.getPos(ed.getContentAreaContainer());p2=DOM.getPos(ed.getContainer());m=ed.controlManager.createDropMenu('contextmenu',{offset_x:p1.x+ed.getParam('contextmenu_offset_x',0),offset_y:p1.y+ed.getParam('contextmenu_offset_y',0),constrain:1});t._menu=m;m.add({title:'advanced.cut_desc',icon:'cut',cmd:'Cut'}).setDisabled(col);m.add({title:'advanced.copy_desc',icon:'copy',cmd:'Copy'}).setDisabled(col);m.add({title:'advanced.paste_desc',icon:'paste',cmd:'Paste'});if((el.nodeName=='A'&&!ed.dom.getAttrib(el,'name'))||!col){m.addSeparator();m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});}m.addSeparator();m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();am=m.addMenu({title:'contextmenu.align'});am.add({title:'contextmenu.left',icon:'justifyleft',cmd:'JustifyLeft'});am.add({title:'contextmenu.center',icon:'justifycenter',cmd:'JustifyCenter'});am.add({title:'contextmenu.right',icon:'justifyright',cmd:'JustifyRight'});am.add({title:'contextmenu.full',icon:'justifyfull',cmd:'JustifyFull'});t.onContextMenu.dispatch(t,m,el,col);return m;}});tinymce.PluginManager.add('contextmenu',tinymce.plugins.ContextMenu);})();
+if(!tinyMCE.settings['contextmenu_skip_plugin_css']){tinyMCE.loadCSS(tinyMCE.baseURL+"/plugins/contextmenu/css/contextmenu.css")}var TinyMCE_ContextMenuPlugin={_contextMenu:null,getInfo:function(){return{longname:'Context menus',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE5_0&&tinyMCE.isOpera)return;TinyMCE_ContextMenuPlugin._contextMenu=new TinyMCE_ContextMenu({commandhandler:"TinyMCE_ContextMenuPlugin._commandHandler",spacer_image:tinyMCE.baseURL+"/plugins/contextmenu/images/spacer.gif"});tinyMCE.addEvent(inst.getDoc(),"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"contextmenu",function(e){TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?inst.contentWindow.event:e,inst)})}else tinyMCE.addEvent(inst.getDoc(),"contextmenu",TinyMCE_ContextMenuPlugin._onContextMenu)},_onContextMenu:function(e){var elm=tinyMCE.isMSIE?e.srcElement:e.target;var targetInst,body;if((body=tinyMCE.getParentElement(elm,"body"))!=null){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(body==inst.getBody()){targetInst=inst;break}}return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?targetInst.contentWindow.event:e,targetInst)}},_showContextMenu:function(e,inst){if(e.ctrlKey)return true;function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}var x,y,elm,contextMenu;var pos=tinyMCE.getAbsPosition(inst.iframeElement);x=tinyMCE.isMSIE?e.screenX:pos.absLeft+(e.pageX-inst.getBody().scrollLeft);y=tinyMCE.isMSIE?e.screenY:pos.absTop+(e.pageY-inst.getBody().scrollTop);elm=tinyMCE.isMSIE?e.srcElement:e.target;contextMenu=this._contextMenu;contextMenu.inst=inst;window.setTimeout(function(){var theme=tinyMCE.getParam("theme");contextMenu.clearAll();var sel=inst.selection.getSelectedText().length!=0||elm.nodeName=="IMG";contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_cut_desc","Cut","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_copy_desc","Copy","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_paste_desc","Paste","",false);if(sel||(elm?(elm.nodeName=='A'&&tinyMCE.getAttrib(elm,'name')=='')||(elm.nodeName=='IMG'):false)){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/link.gif","$lang_link_desc",inst.hasPlugin("advlink")?"mceAdvLink":"mceLink");contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/unlink.gif","$lang_unlink_desc","unlink","",(elm?(elm.nodeName!='A')&&(elm.nodeName!='IMG'):true))}elm=tinyMCE.getParentElement(elm,"img,table,td"+(inst.hasPlugin("advhr")?',hr':''));if(elm){switch(elm.nodeName){case"IMG":contextMenu.addSeparator();if(tinyMCE.hasPlugin('flash')&&tinyMCE.getAttrib(elm,'class').indexOf('mceItemFlash')!=-1)contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_flash_props","mceFlash");else if(tinyMCE.hasPlugin('media')&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm,'class')))contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_media_title","mceMedia");else contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/image.gif","$lang_image_props_desc",inst.hasPlugin("advimage")?"mceAdvImage":"mceImage");break;case"HR":contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/advhr/images/advhr.gif","$lang_insert_advhr_desc","mceAdvancedHr");break;case"TABLE":case"TD":if(inst.hasPlugin("table")){var colspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"colspan");var rowspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_table_cut_row_desc","mceTableCutRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_table_copy_row_desc","mceTableCopyRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_before_desc","mceTablePasteRowBefore","",inst.tableRowClipboard==null);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_after_desc","mceTablePasteRowAfter","",inst.tableRowClipboard==null);contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_props_desc","mceInsertTable");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_cell_props.gif","$lang_table_cell_desc","mceTableCellProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete.gif","$lang_table_del","mceTableDelete");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_row_props.gif","$lang_table_row_desc","mceTableRowProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_before.gif","$lang_table_row_before_desc","mceTableInsertRowBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_after.gif","$lang_table_row_after_desc","mceTableInsertRowAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_row.gif","$lang_table_delete_row_desc","mceTableDeleteRow");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_before.gif","$lang_table_col_before_desc","mceTableInsertColBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_after.gif","$lang_table_col_after_desc","mceTableInsertColAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_col.gif","$lang_table_delete_col_desc","mceTableDeleteCol");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_split_cells.gif","$lang_table_split_cells_desc","mceTableSplitCells","",(colspan=="1"&&rowspan=="1"));contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_merge_cells.gif","$lang_table_merge_cells_desc","mceTableMergeCells","",false)}break}}else{if(inst.hasPlugin("table")){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert")}}contextMenu.show(x,y)},10);tinyMCE.cancelEvent(e);return false},_hideContextMenu:function(){if(TinyMCE_ContextMenuPlugin._contextMenu)TinyMCE_ContextMenuPlugin._contextMenu.hide()},_commandHandler:function(command,value){var cm=TinyMCE_ContextMenuPlugin._contextMenu;cm.hide();var ui=false;if(command=="mceInsertTable"||command=="mceTableCellProps"||command=="mceTableRowProps"||command=="mceTableMergeCells")ui=true;if(command=="Paste")value=null;if(tinyMCE.getParam("dialog_type")=="modal"&&tinyMCE.isMSIE){window.setTimeout(function(){cm.inst.execCommand(command,ui,value)},100)}else cm.inst.execCommand(command,ui,value)}};tinyMCE.addPlugin("contextmenu",TinyMCE_ContextMenuPlugin);function TinyMCE_ContextMenu(settings){var doc,self=this;function defParam(key,def_val){settings[key]=typeof(settings[key])!="undefined"?settings[key]:def_val}this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.contextMenuDiv=document.createElement("div");this.contextMenuDiv.className="contextMenu";this.contextMenuDiv.setAttribute("class","contextMenu");this.contextMenuDiv.style.display="none";this.contextMenuDiv.style.position='absolute';this.contextMenuDiv.style.zindex=1000;this.contextMenuDiv.style.left='0';this.contextMenuDiv.style.top='0';this.contextMenuDiv.unselectable="on";document.body.appendChild(this.contextMenuDiv);defParam("commandhandler","");defParam("spacer_image","images/spacer.gif");this.items=new Array();this.settings=settings;this.html="";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop=window.createPopup();doc=this.pop.document;doc.open();doc.write('<html><head><link href="'+tinyMCE.baseURL+'/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');doc.close()}};TinyMCE_ContextMenu.prototype={clearAll:function(){this.html="";this.contextMenuDiv.innerHTML=""},addSeparator:function(){this.html+='<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="'+this.settings['spacer_image']+'" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="'+this.settings['spacer_image']+'" /></td></tr>'},addItem:function(icon,title,command,value,disabled){if(title.charAt(0)=='$')title=tinyMCE.getLang(title.substring(1));var onMouseDown='';var html='';if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0)onMouseDown='contextMenu.execCommand(\''+command+'\', \''+value+'\');return false;';else onMouseDown=this.settings['commandhandler']+'(\''+command+'\', \''+value+'\');return false;';if(icon=="")icon=this.settings['spacer_image'];if(!disabled)html+='<tr class="contextMenuItem">';else html+='<tr class="contextMenuItemDisabled">';html+='<td class="contextMenuIcon"><img src="'+icon+'" width="20" height="20" class="contextMenuImage" /></td>';html+='<td><div class="contextMenuText">';html+='<a href="javascript:void(0);" onclick="'+onMouseDown+'" onmousedown="return false;">&#160;';html+=title;html+='&#160;</a>';html+='</div></td>';html+='</tr>';this.html+=html},show:function(x,y){var vp,width,height,yo;if(this.html=="")return;var html='';html+='<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';html+=this.html;html+='</table>';this.contextMenuDiv.innerHTML=html;this.contextMenuDiv.style.display="block";width=this.contextMenuDiv.offsetWidth;height=this.contextMenuDiv.offsetHeight;this.contextMenuDiv.style.display="none";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop.document.body.innerHTML='<div class="contextMenu">'+html+"</div>";this.pop.document.tinyMCE=tinyMCE;this.pop.document.contextMenu=this;this.pop.show(x,y,width,height)}else{vp=this.getViewPort();yo=tinyMCE.isMSIE5_0?document.body.scrollTop:self.pageYOffset;this.contextMenuDiv.style.left=(x>vp.left+vp.width-width?vp.left+vp.width-width:x)+'px';this.contextMenuDiv.style.top=(y>vp.top+vp.height-height?vp.top+vp.height-height:y)+'px';this.contextMenuDiv.style.display="block"}},getViewPort:function(){return{left:self.pageXOffset||self.document.documentElement.scrollLeft||self.document.body.scrollLeft,top:self.pageYOffset||self.document.documentElement.scrollTop||self.document.body.scrollTop,width:document.documentElement.offsetWidth||document.body.offsetWidth,height:self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},hide:function(){if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera)this.pop.hide();else this.contextMenuDiv.style.display="none"},execCommand:function(command,value){eval(this.settings['commandhandler']+"(command, value);")}};

--- a/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js
@@ -1,95 +1,361 @@
-/**
- * $Id: editor_plugin_src.js 848 2008-05-15 11:54:40Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+if (!tinyMCE.settings['contextmenu_skip_plugin_css']) {

+	tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css");

+}

+

+var TinyMCE_ContextMenuPlugin = {

+	// Private fields

+	_contextMenu : null,

+

+	getInfo : function() {

+		return {

+			longname : 'Context menus',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		// Is not working on MSIE 5.0 or Opera no contextmenu event

+		if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera)

+			return;

+

+		TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({

+			commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler",

+			spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif"

+		});

+

+		// Add hide event handles

+		tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu);

+		tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);

+		tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);

+		tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu);

+		tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu);

+		tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu);

+

+		// Attach contextmenu event

+		if (tinyMCE.isGecko) {

+			tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);});

+		} else

+			tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu);

+	},

+

+	// Private plugin internal methods

+

+	_onContextMenu : function(e) {

+		var elm = tinyMCE.isMSIE ? e.srcElement : e.target;

+		var targetInst, body;

+

+		// Find instance

+		if ((body = tinyMCE.getParentElement(elm, "body")) != null) {

+			for (var n in tinyMCE.instances) {

+				var inst = tinyMCE.instances[n];

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				if (body == inst.getBody()) {

+					targetInst = inst;

+					break;

+				}

+			}

+

+			return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst);

+		}

+	},

+

+	_showContextMenu : function(e, inst) {

+		if (e.ctrlKey)

+			return true;

+

+		function getAttrib(elm, name) {

+			return elm.getAttribute(name) ? elm.getAttribute(name) : "";

+		}

+

+		var x, y, elm, contextMenu;

+		var pos = tinyMCE.getAbsPosition(inst.iframeElement);

+

+		x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft);

+		y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop);

+		elm = tinyMCE.isMSIE ? e.srcElement : e.target;

+

+		contextMenu = this._contextMenu;

+		contextMenu.inst = inst;

+

+		// Mozilla needs some time

+		window.setTimeout(function () {

+			var theme = tinyMCE.getParam("theme");

+

+			contextMenu.clearAll();

+			var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG";

+

+			// Default items

+			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel);

+			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel);

+			contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false);

+

+			if (sel || (elm ? (elm.nodeName == 'A' && tinyMCE.getAttrib(elm, 'name') == '') || (elm.nodeName == 'IMG') : false)) {

+				contextMenu.addSeparator();

+				contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink");

+				contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true));

+			}

+

+			// Get element

+			elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : ''));

+			if (elm) {

+				switch (elm.nodeName) {

+					case "IMG":

+						contextMenu.addSeparator();

+

+						// If flash

+						if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1)

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash");

+						else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class')))

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia");

+						else

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage");

+						break;

+

+					case "HR":

+						contextMenu.addSeparator();

+						contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr");

+						break;

+

+					case "TABLE":

+					case "TD":

+						// Is table plugin loaded

+						if (inst.hasPlugin("table")) {

+							var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan");

+							var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan");

+

+							colspan = colspan == "" ? "1" : colspan;

+							rowspan = rowspan == "" ? "1" : rowspan;

+

+							contextMenu.addSeparator();

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow");

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow");

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null);

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null);

+

+	/*						contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false);

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false);

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false);

+							contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/

+							contextMenu.addSeparator();

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete");

+							contextMenu.addSeparator();

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow");

+							contextMenu.addSeparator();

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter");

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol");

+							contextMenu.addSeparator();

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1"));

+							contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false);

+						}

+						break;

+				}

+			}  else {

+				// Add table specific

+				if (inst.hasPlugin("table")) {

+					contextMenu.addSeparator();

+					contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert");

+				}

+			}

+

+			contextMenu.show(x, y);

+		}, 10);

+

+		// Cancel default handeling

+		tinyMCE.cancelEvent(e);

+		return false;

+	},

+

+	_hideContextMenu : function() {

+		if (TinyMCE_ContextMenuPlugin._contextMenu)

+			TinyMCE_ContextMenuPlugin._contextMenu.hide();

+	},

+

+	_commandHandler : function(command, value) {

+		var cm = TinyMCE_ContextMenuPlugin._contextMenu;

+

+		cm.hide();

+

+		// UI must be true on these

+		var ui = false;

+		if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells")

+			ui = true;

+

+		if (command == "Paste")

+			value = null;

+

+		if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) {

+			// Cell properties will generate access denied error is this isn't done?!

+			window.setTimeout(function() {

+				cm.inst.execCommand(command, ui, value);

+			}, 100);

+		} else

+			cm.inst.execCommand(command, ui, value);

+	}

+};

+

+tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin);

+

+// Context menu class

+

+function TinyMCE_ContextMenu(settings) {

+	var doc, self = this;

+

+	// Default value function

+	function defParam(key, def_val) {

+		settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val;

+	}

+

+	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");

+

+	// Setup contextmenu div

+	this.contextMenuDiv = document.createElement("div");

+	this.contextMenuDiv.className = "contextMenu";

+	this.contextMenuDiv.setAttribute("class", "contextMenu");

+	this.contextMenuDiv.style.display = "none";

+	this.contextMenuDiv.style.position = 'absolute';

+	this.contextMenuDiv.style.zindex = 1000;

+	this.contextMenuDiv.style.left = '0';

+	this.contextMenuDiv.style.top = '0';

+	this.contextMenuDiv.unselectable = "on";

+

+	document.body.appendChild(this.contextMenuDiv);

+

+	// Setup default values

+	defParam("commandhandler", "");

+	defParam("spacer_image", "images/spacer.gif");

+

+	this.items = new Array();

+	this.settings = settings;

+	this.html = "";

+

+	// IE Popup

+	if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {

+		this.pop = window.createPopup();

+		doc = this.pop.document;

+		doc.open();

+		doc.write('<html><head><link href="' + tinyMCE.baseURL + '/plugins/contextmenu/css/contextmenu.css" rel="stylesheet" type="text/css" /></head><body unselectable="yes" class="contextMenuIEPopup"></body></html>');

+		doc.close();

+	}

+};

+

+TinyMCE_ContextMenu.prototype = {

+	clearAll : function() {

+		this.html = "";

+		this.contextMenuDiv.innerHTML = "";

+	},

+

+	addSeparator : function() {

+		this.html += '<tr class="contextMenuItem"><td class="contextMenuIcon"><img src="' + this.settings['spacer_image'] + '" width="20" height="1" class="contextMenuImage" /></td><td><img class="contextMenuSeparator" width="1" height="1" src="' + this.settings['spacer_image'] + '" /></td></tr>';

+	},

+

+	addItem : function(icon, title, command, value, disabled) {

+		if (title.charAt(0) == '$')

+			title = tinyMCE.getLang(title.substring(1));

+

+		var onMouseDown = '';

+		var html = '';

+

+		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0)

+			onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;';

+		else

+			onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;';

+

+		if (icon == "")

+			icon = this.settings['spacer_image'];

+

+		if (!disabled)

+			html += '<tr class="contextMenuItem">';

+		else

+			html += '<tr class="contextMenuItemDisabled">';

+

+		html += '<td class="contextMenuIcon"><img src="' + icon + '" width="20" height="20" class="contextMenuImage" /></td>';

+		html += '<td><div class="contextMenuText">';

+		html += '<a href="javascript:void(0);" onclick="' + onMouseDown + '" onmousedown="return false;">&#160;';

+

+		// Add text

+		html += title;

+

+		html += '&#160;</a>';

+		html += '</div></td>';

+		html += '</tr>';

+

+		// Add to main

+		this.html += html;

+	},

+

+	show : function(x, y) {

+		var vp, width, height, yo;

+

+		if (this.html == "")

+			return;

+

+		var html = '';

+

+		html += '<a href="#"></a><table border="0" cellpadding="0" cellspacing="0">';

+		html += this.html;

+		html += '</table>';

+

+		this.contextMenuDiv.innerHTML = html;

+

+		// Get dimensions

+		this.contextMenuDiv.style.display = "block";

+		width = this.contextMenuDiv.offsetWidth;

+		height = this.contextMenuDiv.offsetHeight;

+		this.contextMenuDiv.style.display = "none";

+

+		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) {

+			// Setup popup and show

+			this.pop.document.body.innerHTML = '<div class="contextMenu">' + html + "</div>";

+			this.pop.document.tinyMCE = tinyMCE;

+			this.pop.document.contextMenu = this;

+			this.pop.show(x, y, width, height);

+		} else {

+			vp = this.getViewPort();

+			yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset;

+			this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px';

+			this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px';

+			this.contextMenuDiv.style.display = "block";

+		}

+	},

+

+	getViewPort : function() {

+		return {

+			left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft,

+			top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop,

+			width : document.documentElement.offsetWidth || document.body.offsetWidth,

+			height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight

+		};

+	},

+

+	hide : function() {

+		if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera)

+			this.pop.hide();

+		else

+			this.contextMenuDiv.style.display = "none";

+	},

+

+	execCommand : function(command, value) {

+		eval(this.settings['commandhandler'] + "(command, value);");

+	}

+};

 
-(function() {
-	var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;
-
-	tinymce.create('tinymce.plugins.ContextMenu', {
-		init : function(ed) {
-			var t = this;
-
-			t.editor = ed;
-			t.onContextMenu = new tinymce.util.Dispatcher(this);
-
-			ed.onContextMenu.add(function(ed, e) {
-				if (!e.ctrlKey) {
-					t._getMenu(ed).showMenu(e.clientX, e.clientY);
-					Event.add(ed.getDoc(), 'click', hide);
-					Event.cancel(e);
-				}
-			});
-
-			function hide() {
-				if (t._menu) {
-					t._menu.removeAll();
-					t._menu.destroy();
-					Event.remove(ed.getDoc(), 'click', hide);
-				}
-			};
-
-			ed.onMouseDown.add(hide);
-			ed.onKeyDown.add(hide);
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Contextmenu',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		_getMenu : function(ed) {
-			var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;
-
-			if (m) {
-				m.removeAll();
-				m.destroy();
-			}
-
-			p1 = DOM.getPos(ed.getContentAreaContainer());
-			p2 = DOM.getPos(ed.getContainer());
-
-			m = ed.controlManager.createDropMenu('contextmenu', {
-				offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),
-				offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),
-				constrain : 1
-			});
-
-			t._menu = m;
-
-			m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);
-			m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);
-			m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});
-
-			if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {
-				m.addSeparator();
-				m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
-				m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
-			}
-
-			m.addSeparator();
-			m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
-
-			m.addSeparator();
-			am = m.addMenu({title : 'contextmenu.align'});
-			am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});
-			am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});
-			am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});
-			am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});
-
-			t.onContextMenu.dispatch(t, m, el, col);
-
-			return m;
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/contextmenu/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/css/devkit.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/css/devkit.css
@@ -1,118 +1,118 @@
-body {
-	overflow: hidden;
-}
+body {

+	overflow: hidden;

+}

+

+h1 {

+	font-size: 14px;

+	margin: 0 0 10px 0;

+}

+

+h2 {

+	font-size: 12px;

+	margin: 3px 0 3px 0;

+}

+

+h3 {

+	font-size: 11px;

+	margin: 3px 0 3px 0;

+}

+

+#log {

+	font-family: Verdana;

+	border: 1px solid gray;

+	width: 100%; height: 240px;

+	overflow: scroll;

+	white-space: nowrap;

+}

+

+#log span {

+	display: block;

+}

+

+#log span.msg {

+	float: left;

+}

+

+#log span.time {

+	float: left;

+}

+

+#log br {

+	clear: both;

+}

+

+#logfilter {

+	width: 350px;

+}

+

+#logenabled {

+	border: 0;

+}

+

+#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span {

+	display: block;

+	margin: 5px 0 5px 0;

+}

+

+div.data {

+	width: 100%; height: 240px;

+	overflow: scroll;

+	border: 1px solid gray;

+}

+

+#misc_panel div.data {

+	height: 270px;

+}

+

+.data input {

+	width: 265px;

+	border: 0;

+}

+

+.data h2 {

+	margin-left: 5px;

+}

+

+.data h3 {

+	margin-left: 7px;

+}

+

+.data div {

+	margin-left: 7px;

+}

+

+.data table {

+	margin: 0 0 15px 15px;

+}

+

+.data p {

+	margin: 0; padding: 0;

+	margin-top: 5px;

+	margin-left: 5px;

+}

+

+table, td {

+	border: 1px solid gray;

+	border-collapse: collapse;

+}

+

+#flip {

+	position: absolute;

+	left: 295; top: 384px;

+}

+

+.bspec {

+	color: gray;

+}

+

+.dep {

+	color: #880000;

+}

+

+.col1 {

+	width: 265px;

+}

+

+div.undodata {

+}

 
-h1 {
-	font-size: 14px;
-	margin: 0 0 10px 0;
-}
-
-h2 {
-	font-size: 12px;
-	margin: 3px 0 3px 0;
-}
-
-h3 {
-	font-size: 11px;
-	margin: 3px 0 3px 0;
-}
-
-#log {
-	font-family: Verdana;
-	border: 1px solid gray;
-	width: 100%; height: 240px;
-	overflow: scroll;
-	white-space: nowrap;
-}
-
-#log span {
-	display: block;
-}
-
-#log span.msg {
-	float: left;
-}
-
-#log span.time {
-	float: left;
-}
-
-#log br {
-	clear: both;
-}
-
-#logfilter {
-	width: 350px;
-}
-
-#logenabled {
-	border: 0;
-}
-
-#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span {
-	display: block;
-	margin: 5px 0 5px 0;
-}
-
-div.data {
-	width: 100%; height: 240px;
-	overflow: scroll;
-	border: 1px solid gray;
-}
-
-#misc_panel div.data {
-	height: 270px;
-}
-
-.data input {
-	width: 265px;
-	border: 0;
-}
-
-.data h2 {
-	margin-left: 5px;
-}
-
-.data h3 {
-	margin-left: 7px;
-}
-
-.data div {
-	margin-left: 7px;
-}
-
-.data table {
-	margin: 0 0 15px 15px;
-}
-
-.data p {
-	margin: 0; padding: 0;
-	margin-top: 5px;
-	margin-left: 5px;
-}
-
-table, td {
-	border: 1px solid gray;
-	border-collapse: collapse;
-}
-
-#flip {
-	position: absolute;
-	left: 295; top: 384px;
-}
-
-.bspec {
-	color: gray;
-}
-
-.dep {
-	color: #880000;
-}
-
-.col1 {
-	width: 265px;
-}
-
-div.undodata {
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css
@@ -1,16 +1,16 @@
-#devkit {
-	position: absolute;
-	top: -385px; right: 0;
-	width: 640px; height: 390px;
-	border: 1px solid black;
-	z-index: 10000;
-}
+#devkit {

+	position: absolute;

+	top: -385px; right: 0;

+	width: 640px; height: 390px;

+	border: 1px solid black;

+	z-index: 10000;

+}

+

+.devkitup {

+	top: -385px !important;

+}

+

+.devkitdown {

+	top: 0 !important;

+}

 
-.devkitup {
-	top: -385px !important;
-}
-
-.devkitdown {
-	top: 0 !important;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/devkit.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/devkit.htm
@@ -1,141 +1,141 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{$lang_devkit_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/devkit.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/diff.js"></script>
-	<link href="css/devkit.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="devkit" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-    <form action="#">
-		<h1>{$lang_devkit_title}</h1>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_devkit_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/devkit.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/diff.js"></script>

+	<link href="css/devkit.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="devkit" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+    <form action="#">

+		<h1>{$lang_devkit_title}</h1>

+

+		<div class="tabs">

+			<ul>

+				<li id="log_tab" class="current"><span><a href="javascript:mcTabs.displayTab('log_tab','log_panel');" onmousedown="return false;">{$lang_devkit_log_tab}</a></span></li>

+				<li id="info_tab"><span><a href="javascript:mcTabs.displayTab('info_tab','info_panel');" onmousedown="return false;">{$lang_devkit_info_tab}</a></span></li>

+				<li id="settings_tab"><span><a href="javascript:mcTabs.displayTab('settings_tab','settings_panel');" onmousedown="return false;">{$lang_devkit_settings_tab}</a></span></li>

+				<li id="content_tab"><span><a href="javascript:mcTabs.displayTab('content_tab','content_panel');" onmousedown="return false;">{$lang_devkit_content_tab}</a></span></li>

+				<!-- <li id="command_states_tab"><span><a href="javascript:mcTabs.displayTab('command_states_tab','command_states_panel');" onmousedown="return false;">{$lang_devkit_command_states_tab}</a></span></li> -->

+				<li id="undo_redo_tab"><span><a href="javascript:mcTabs.displayTab('undo_redo_tab','undo_redo_panel');" onmousedown="return false;">{$lang_devkit_undo_redo_tab}</a></span></li>

+				<li id="misc_tab"><span><a href="javascript:mcTabs.displayTab('misc_tab','misc_panel');" onmousedown="return false;">{$lang_devkit_misc_tab}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="log_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_devkit_log_tab}</legend>

+

+					<div style="float: left">

+						<label>{$lang_devkit_filter} </label><input type="text" id="logfilter" name="logfilter" value="" onchange="changeFilter(this.value);" />

+					</div>

+

+					<div style="float: left">

+						<input type="checkbox" id="logenabled" name="logenabled" value="true" checked="checked" onclick="toggleLog(this.checked);" />

+					</div>

+

+					<div style="float: right">

+						<a href="javascript:clearLog();">[{$lang_devkit_clear_log}]</a>

+					</div>

+

+					<br style="clear: both" />

+

+					<div id="log">

+					</div>

+

+					<input type="checkbox" id="debug_events" name="debug_events" class="checkbox" onclick="toggleDebugEvents(this.checked);" /><label for="debug_events" onclick="toggleDebugEvents(this.form.debug_events.checked);">{$lang_devkit_debug_events}</label>

+				</fieldset>

+			</div>

+

+			<div id="info_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_devkit_info_tab}</legend>

+

+					<span><a href="javascript:renderInfo();">[{$lang_devkit_refresh}]</a></span>

+

+					<div id="info" class="data">

+						<p>{$lang_devkit_info_help}</p>

+					</div>

+				</fieldset>

+			</div>

+

+			<div id="settings_panel" class="panel">

+			<fieldset>

+					<legend>{$lang_devkit_settings_tab}</legend>

+

+					<span><a href="javascript:renderSettings();">[{$lang_devkit_refresh}]</a></span>

+

+					<div id="settings" class="data">

+						<p>{$lang_devkit_settings_help}</p>

+					</div>

+				</fieldset>

+			</div>

+

+			<div id="content_panel" class="panel">

+			<fieldset>

+					<legend>{$lang_devkit_content_tab}</legend>

+

+					<span><a href="javascript:renderContent();">[{$lang_devkit_refresh}]</a></span>

+

+					<div id="content" class="data">

+						<p>{$lang_devkit_content_help}</p>

+					</div>

+				</fieldset>

+			</div>

+

+			<div id="command_states_panel" class="panel">

+			<fieldset>

+					<legend>{$lang_devkit_command_states_tab}</legend>

+

+					<span><a href="javascript:renderCommandStates();">[{$lang_devkit_refresh}]</a></span>

+

+					<div id="command_states" class="data">

+						<p>{$lang_devkit_command_states_help}</p>

+					</div>

+				</fieldset>

+			</div>

+

+			<div id="undo_redo_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_devkit_undo_redo_tab}</legend>

+

+					<span><a href="javascript:renderUndoRedo();">[{$lang_devkit_refresh}]</a></span>

+

+					<div id="undo_redo" class="data">

+						<p>{$lang_devkit_undo_redo_help}</p>

+					</div>

+

+					<input type="checkbox" id="undo_diff" name="undo_diff" class="checkbox" /><label for="undo_diff">{$lang_devkit_undo_diff}</label>

+				</fieldset>

+			</div>

+

+			<div id="misc_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_devkit_misc_tab}</legend>

+

+					<div class="data">

+						<p>{$lang_devkit_misc_help}</p>

+						<hr />

+						<p>Selection: <a href="#" onmousedown="return storeSelection();">[Store selection]</a> <a href="#" onmousedown="return restoreSelection();">[Restore selection]</a></p>

+						<hr />

+						<div><strong>Insert custom HTML content</strong></div>

+						<div><textarea id="htmlcont" name="htmlcont" style="width: 90%" rows="5"></textarea></div>

+						<div><a href="#" onclick="return tinyMCE.execCommand('mceInsertContent',false,document.getElementById('htmlcont').value);">[Insert content]</a></div>

+						<hr />

+						<div><strong>Eval JS:</strong></div>

+						<div><textarea id="jscont" name="jscont" style="width: 90%" rows="5">tinyMCE.execCommand('Bold',false,null);</textarea></div>

+						<div><a href="#" onclick="return parent.window.eval(document.getElementById('jscont').value);">[Evaluate]</a></div>

+					</div>

+				</fieldset>

+			</div>

+		</div>

+    </form>

+

+	<div id="flip"><a href="javascript:toggleFlip();" onmousedown="return false;"><img id="flipbtn" src="images/flip_down.gif" border="0" /></a></div>

+</body>

+</html>

 
-		<div class="tabs">
-			<ul>
-				<li id="log_tab" class="current"><span><a href="javascript:mcTabs.displayTab('log_tab','log_panel');" onmousedown="return false;">{$lang_devkit_log_tab}</a></span></li>
-				<li id="info_tab"><span><a href="javascript:mcTabs.displayTab('info_tab','info_panel');" onmousedown="return false;">{$lang_devkit_info_tab}</a></span></li>
-				<li id="settings_tab"><span><a href="javascript:mcTabs.displayTab('settings_tab','settings_panel');" onmousedown="return false;">{$lang_devkit_settings_tab}</a></span></li>
-				<li id="content_tab"><span><a href="javascript:mcTabs.displayTab('content_tab','content_panel');" onmousedown="return false;">{$lang_devkit_content_tab}</a></span></li>
-				<!-- <li id="command_states_tab"><span><a href="javascript:mcTabs.displayTab('command_states_tab','command_states_panel');" onmousedown="return false;">{$lang_devkit_command_states_tab}</a></span></li> -->
-				<li id="undo_redo_tab"><span><a href="javascript:mcTabs.displayTab('undo_redo_tab','undo_redo_panel');" onmousedown="return false;">{$lang_devkit_undo_redo_tab}</a></span></li>
-				<li id="misc_tab"><span><a href="javascript:mcTabs.displayTab('misc_tab','misc_panel');" onmousedown="return false;">{$lang_devkit_misc_tab}</a></span></li>
-			</ul>
-		</div>
-
-		<div class="panel_wrapper">
-			<div id="log_panel" class="panel current">
-				<fieldset>
-					<legend>{$lang_devkit_log_tab}</legend>
-
-					<div style="float: left">
-						<label>{$lang_devkit_filter} </label><input type="text" id="logfilter" name="logfilter" value="" onchange="changeFilter(this.value);" />
-					</div>
-
-					<div style="float: left">
-						<input type="checkbox" id="logenabled" name="logenabled" value="true" checked="checked" onclick="toggleLog(this.checked);" />
-					</div>
-
-					<div style="float: right">
-						<a href="javascript:clearLog();">[{$lang_devkit_clear_log}]</a>
-					</div>
-
-					<br style="clear: both" />
-
-					<div id="log">
-					</div>
-
-					<input type="checkbox" id="debug_events" name="debug_events" class="checkbox" onclick="toggleDebugEvents(this.checked);" /><label for="debug_events" onclick="toggleDebugEvents(this.form.debug_events.checked);">{$lang_devkit_debug_events}</label>
-				</fieldset>
-			</div>
-
-			<div id="info_panel" class="panel">
-				<fieldset>
-					<legend>{$lang_devkit_info_tab}</legend>
-
-					<span><a href="javascript:renderInfo();">[{$lang_devkit_refresh}]</a></span>
-
-					<div id="info" class="data">
-						<p>{$lang_devkit_info_help}</p>
-					</div>
-				</fieldset>
-			</div>
-
-			<div id="settings_panel" class="panel">
-			<fieldset>
-					<legend>{$lang_devkit_settings_tab}</legend>
-
-					<span><a href="javascript:renderSettings();">[{$lang_devkit_refresh}]</a></span>
-
-					<div id="settings" class="data">
-						<p>{$lang_devkit_settings_help}</p>
-					</div>
-				</fieldset>
-			</div>
-
-			<div id="content_panel" class="panel">
-			<fieldset>
-					<legend>{$lang_devkit_content_tab}</legend>
-
-					<span><a href="javascript:renderContent();">[{$lang_devkit_refresh}]</a></span>
-
-					<div id="content" class="data">
-						<p>{$lang_devkit_content_help}</p>
-					</div>
-				</fieldset>
-			</div>
-
-			<div id="command_states_panel" class="panel">
-			<fieldset>
-					<legend>{$lang_devkit_command_states_tab}</legend>
-
-					<span><a href="javascript:renderCommandStates();">[{$lang_devkit_refresh}]</a></span>
-
-					<div id="command_states" class="data">
-						<p>{$lang_devkit_command_states_help}</p>
-					</div>
-				</fieldset>
-			</div>
-
-			<div id="undo_redo_panel" class="panel">
-				<fieldset>
-					<legend>{$lang_devkit_undo_redo_tab}</legend>
-
-					<span><a href="javascript:renderUndoRedo();">[{$lang_devkit_refresh}]</a></span>
-
-					<div id="undo_redo" class="data">
-						<p>{$lang_devkit_undo_redo_help}</p>
-					</div>
-
-					<input type="checkbox" id="undo_diff" name="undo_diff" class="checkbox" /><label for="undo_diff">{$lang_devkit_undo_diff}</label>
-				</fieldset>
-			</div>
-
-			<div id="misc_panel" class="panel">
-				<fieldset>
-					<legend>{$lang_devkit_misc_tab}</legend>
-
-					<div class="data">
-						<p>{$lang_devkit_misc_help}</p>
-						<hr />
-						<p>Selection: <a href="#" onmousedown="return storeSelection();">[Store selection]</a> <a href="#" onmousedown="return restoreSelection();">[Restore selection]</a></p>
-						<hr />
-						<div><strong>Insert custom HTML content</strong></div>
-						<div><textarea id="htmlcont" name="htmlcont" style="width: 90%" rows="5"></textarea></div>
-						<div><a href="#" onclick="return tinyMCE.execCommand('mceInsertContent',false,document.getElementById('htmlcont').value);">[Insert content]</a></div>
-						<hr />
-						<div><strong>Eval JS:</strong></div>
-						<div><textarea id="jscont" name="jscont" style="width: 90%" rows="5">tinyMCE.execCommand('Bold',false,null);</textarea></div>
-						<div><a href="#" onclick="return parent.window.eval(document.getElementById('jscont').value);">[Evaluate]</a></div>
-					</div>
-				</fieldset>
-			</div>
-		</div>
-    </form>
-
-	<div id="flip"><a href="javascript:toggleFlip();" onmousedown="return false;"><img id="flipbtn" src="images/flip_down.gif" border="0" /></a></div>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js
@@ -1,326 +1,326 @@
-/**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode


+ */

+

+tinyMCE.importPluginLanguagePack('devkit');

+

+var TinyMCE_DevKitPlugin = {

+	_logFilter : '\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',

+	_logPadding : '',

+	_startTime : null,

+	_benchMark : false,

+	_winLoaded : false,

+	_isDebugEvents : false,

+

+	getInfo : function() {

+		return {

+			longname : 'Development Kit',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		this._setup();

+	},

+

+	_setup : function() {

+		if (this._loaded)

+			return;

+

+		this._loaded = true;

+

+		// Register a document reference for more easy access in the FF DOM inspector

+		document.___TinyMCE = tinyMCE;

+

+		// Setup devkit by settings

+		this._logFilter = tinyMCE.getParam('devkit_log_filter', this._logFilter);

+		this._benchMark = tinyMCE.getParam('devkit_bench_mark', false);

+

+		var ifr = document.createElement('iframe');

+

+		ifr.setAttribute("id", "devkit");

+		ifr.setAttribute("frameBorder", "0");

+		ifr.setAttribute("src", tinyMCE.baseURL + '/plugins/devkit/devkit.htm');

+

+		document.body.appendChild(ifr);

+

+		// Workaround for strange IE reload bug

+		//if (tinyMCE.isRealIE)

+		//	document.getElementById('devkit').outerHTML = document.getElementById('devkit').outerHTML;

+

+		tinyMCE.importCSS(document, tinyMCE.baseURL + '/plugins/devkit/css/devkit_ui.css');

+	},

+

+	_start : function() {

+		this._logPadding += '\u00a0';

+

+		return new Date().getTime();

+	},

+

+	_end : function(st) {

+		if (this._logPadding.length > 0)

+			this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);

+

+		if (this._benchMark)

+			this._log("benchmark", "Execution time: " + (new Date().getTime() - st));

+	},

+

+	_log : function(t) {

+		var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime();

+

+		if (!this._startTime)

+			this._startTime = now;

+

+		m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] ';

+

+		a = this._log.arguments;

+		for (i=1; i<a.length; i++) {

+			if (typeof(a[i]) == 'undefined')

+				continue;

+

+			if (i > 1)

+				m += ', ';

+

+			m += a[i];

+		}

+

+		if (!new RegExp(this._logFilter, 'gi').test(m)) {

+			if (this._logPadding.length > 0)

+				this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);

+

+			return;

+		}

+

+		if (!this._winLoaded)

+			tinyMCE.log[tinyMCE.log.length] = m;

+		else

+			e.contentWindow.debug(m);

+	},

+

+	_debugEvents : function(s) {

+		var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive',

+				'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved',

+				'RadioStateChange','blur','broadcast','change','click','close','command',

+				'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit',

+				'draggesture','dragover','focus','input','keydown','keypress','keyup','load',

+				'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden',

+				'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference',

+				'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate',

+				'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint',

+				'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut',

+				'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave',

+				'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout',

+				'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel',

+				'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize',

+				'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll',

+				'selectionchange','selectstart','start','stop','submit'];

+		// mousemove

+

+		if (TinyMCE_DevKitPlugin._isDebugEvents == s)

+			return;

+

+		TinyMCE_DevKitPlugin._isDebugEvents = s;

+

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld)

+				continue;

+

+			ld = inst.getDoc();

+

+			for (i=0; i<ev.length; i++) {

+				if (s)

+					tinyMCE.addEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);

+				else

+					tinyMCE.removeEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);

+			}

+		}

+	},

+

+	_debugEvent : function(e) {

+		var t;

+

+		e = e ? e : tinyMCE.selectedInstance.getWin().event;

+		t = e.srcElement ? e.srcElement : e.target;

+

+		tinyMCE.debug(e.type, t ? t.nodeName : '');

+	},

+

+	_serialize : function(o) {

+		var i, v, s = TinyMCE_DevKitPlugin._serialize;

+

+		if (o == null)

+			return 'null';

+

+		switch (typeof o) {

+			case 'string':

+				v = '\bb\tt\nn\ff\rr\""\'\'\\\\';

+

+				return '"' + o.replace(new RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])', 'g'), function(a, b) {

+					i = v.indexOf(b);

+

+					if (i+1)

+						return '\\' + v.charAt(i + 1);

+

+					a = b.charCodeAt().toString(16);

+

+					return '\\u' + '0000'.substring(a.length) + a;

+				}) + '"';

+

+			case 'object':

+				if (o instanceof Array) {

+					for (i=0, v = '['; i<o.length; i++)

+						v += (i > 0 ? ',' : '') + s(o[i]);

+

+					return v + ']';

+				}

+

+				v = '{';

+

+				for (i in o)

+					v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';

+

+				return v + '}';

+		}

+

+		return '' + o;

+	}

+};

+

+// Patch and piggy back functions

+tinyMCE.__debug = tinyMCE.debug;

+tinyMCE.debug = function() {

+	var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime;

+

+	if (!start)

+		TinyMCE_DevKitPlugin._startTime = start = now;

+

+	a = this.debug.arguments;

+	for (i=0; i<a.length; i++) {

+		if (typeof(a[i]) == 'undefined')

+			continue;

+

+		if (i > 0)

+			m += ', ';

+

+		m += a[i];

+	}

+

+	TinyMCE_DevKitPlugin._log('debug', m);

+};

+

+tinyMCE.dump = function(o) {

+	tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o));

+};

+

+tinyMCE.sleep = function(t) {

+	var s = new Date().getTime(), b;

+

+	while (new Date().getTime() - s < t) b=1;

+};

+

+tinyMCE.__execCommand = tinyMCE.execCommand;

+tinyMCE.execCommand = function(command, user_interface, value) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('execCommand', command, user_interface, value);

+	r = tinyMCE.__execCommand(command, user_interface, value);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand;

+tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('execInstanceCommand', editor_id, command, user_interface, value);

+	r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value);

+	dk._end(st);

+

+	return r;

+};

+

+TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent;

+TinyMCE_Engine.prototype.handleEvent = function(e) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('handleEvent', e.type);

+	r = tinyMCE.__handleEvent(e);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.__importCSS = tinyMCE.importCSS;

+tinyMCE.importCSS = function(doc, css) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('importCSS', doc, css);

+	r = tinyMCE.__importCSS(doc, css);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange;

+tinyMCE.triggerNodeChange = function(focus, setup_content) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('triggerNodeChange', focus, setup_content);

+	r = tinyMCE.__triggerNodeChange(focus, setup_content);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback;

+tinyMCE.dispatchCallback = function(i, p, n) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('dispatchCallback', i, p, n);

+	r = tinyMCE.__dispatchCallback(i, p, n);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.__executeCallback = tinyMCE.executeCallback;

+tinyMCE.executeCallback = function(i, p, n) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('executeCallback', i, p, n);

+	r = tinyMCE.__executeCallback(i, p, n);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback;

+tinyMCE.execCommandCallback = function(i, p, n) {

+	var r, st, dk = TinyMCE_DevKitPlugin;

+

+	st = dk._start();

+	dk._log('execCommandCallback', i, p, n);

+	r = tinyMCE.__execCommandCallback(i, p, n);

+	dk._end(st);

+

+	return r;

+};

+

+tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin);

 
-tinyMCE.importPluginLanguagePack('devkit');
-
-var TinyMCE_DevKitPlugin = {
-	_logFilter : '\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',
-	_logPadding : '',
-	_startTime : null,
-	_benchMark : false,
-	_winLoaded : false,
-	_isDebugEvents : false,
-
-	getInfo : function() {
-		return {
-			longname : 'Development Kit',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		this._setup();
-	},
-
-	_setup : function() {
-		if (this._loaded)
-			return;
-
-		this._loaded = true;
-
-		// Register a document reference for more easy access in the FF DOM inspector
-		document.___TinyMCE = tinyMCE;
-
-		// Setup devkit by settings
-		this._logFilter = tinyMCE.getParam('devkit_log_filter', this._logFilter);
-		this._benchMark = tinyMCE.getParam('devkit_bench_mark', false);
-
-		var ifr = document.createElement('iframe');
-
-		ifr.setAttribute("id", "devkit");
-		ifr.setAttribute("frameBorder", "0");
-		ifr.setAttribute("src", tinyMCE.baseURL + '/plugins/devkit/devkit.htm');
-
-		document.body.appendChild(ifr);
-
-		// Workaround for strange IE reload bug
-		//if (tinyMCE.isRealIE)
-		//	document.getElementById('devkit').outerHTML = document.getElementById('devkit').outerHTML;
-
-		tinyMCE.importCSS(document, tinyMCE.baseURL + '/plugins/devkit/css/devkit_ui.css');
-	},
-
-	_start : function() {
-		this._logPadding += '\u00a0';
-
-		return new Date().getTime();
-	},
-
-	_end : function(st) {
-		if (this._logPadding.length > 0)
-			this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);
-
-		if (this._benchMark)
-			this._log("benchmark", "Execution time: " + (new Date().getTime() - st));
-	},
-
-	_log : function(t) {
-		var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime();
-
-		if (!this._startTime)
-			this._startTime = now;
-
-		m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] ';
-
-		a = this._log.arguments;
-		for (i=1; i<a.length; i++) {
-			if (typeof(a[i]) == 'undefined')
-				continue;
-
-			if (i > 1)
-				m += ', ';
-
-			m += a[i];
-		}
-
-		if (!new RegExp(this._logFilter, 'gi').test(m)) {
-			if (this._logPadding.length > 0)
-				this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1);
-
-			return;
-		}
-
-		if (!this._winLoaded)
-			tinyMCE.log[tinyMCE.log.length] = m;
-		else
-			e.contentWindow.debug(m);
-	},
-
-	_debugEvents : function(s) {
-		var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive',
-				'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved',
-				'RadioStateChange','blur','broadcast','change','click','close','command',
-				'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit',
-				'draggesture','dragover','focus','input','keydown','keypress','keyup','load',
-				'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden',
-				'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference',
-				'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate',
-				'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint',
-				'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut',
-				'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave',
-				'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout',
-				'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel',
-				'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize',
-				'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll',
-				'selectionchange','selectstart','start','stop','submit'];
-		// mousemove
-
-		if (TinyMCE_DevKitPlugin._isDebugEvents == s)
-			return;
-
-		TinyMCE_DevKitPlugin._isDebugEvents = s;
-
-		for (n in tinyMCE.instances) {
-			inst = tinyMCE.instances[n];
-
-			if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld)
-				continue;
-
-			ld = inst.getDoc();
-
-			for (i=0; i<ev.length; i++) {
-				if (s)
-					tinyMCE.addEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
-				else
-					tinyMCE.removeEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
-			}
-		}
-	},
-
-	_debugEvent : function(e) {
-		var t;
-
-		e = e ? e : tinyMCE.selectedInstance.getWin().event;
-		t = e.srcElement ? e.srcElement : e.target;
-
-		tinyMCE.debug(e.type, t ? t.nodeName : '');
-	},
-
-	_serialize : function(o) {
-		var i, v, s = TinyMCE_DevKitPlugin._serialize;
-
-		if (o == null)
-			return 'null';
-
-		switch (typeof o) {
-			case 'string':
-				v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
-
-				return '"' + o.replace(new RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])', 'g'), function(a, b) {
-					i = v.indexOf(b);
-
-					if (i+1)
-						return '\\' + v.charAt(i + 1);
-
-					a = b.charCodeAt().toString(16);
-
-					return '\\u' + '0000'.substring(a.length) + a;
-				}) + '"';
-
-			case 'object':
-				if (o instanceof Array) {
-					for (i=0, v = '['; i<o.length; i++)
-						v += (i > 0 ? ',' : '') + s(o[i]);
-
-					return v + ']';
-				}
-
-				v = '{';
-
-				for (i in o)
-					v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';
-
-				return v + '}';
-		}
-
-		return '' + o;
-	}
-};
-
-// Patch and piggy back functions
-tinyMCE.__debug = tinyMCE.debug;
-tinyMCE.debug = function() {
-	var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime;
-
-	if (!start)
-		TinyMCE_DevKitPlugin._startTime = start = now;
-
-	a = this.debug.arguments;
-	for (i=0; i<a.length; i++) {
-		if (typeof(a[i]) == 'undefined')
-			continue;
-
-		if (i > 0)
-			m += ', ';
-
-		m += a[i];
-	}
-
-	TinyMCE_DevKitPlugin._log('debug', m);
-};
-
-tinyMCE.dump = function(o) {
-	tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o));
-};
-
-tinyMCE.sleep = function(t) {
-	var s = new Date().getTime(), b;
-
-	while (new Date().getTime() - s < t) b=1;
-};
-
-tinyMCE.__execCommand = tinyMCE.execCommand;
-tinyMCE.execCommand = function(command, user_interface, value) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('execCommand', command, user_interface, value);
-	r = tinyMCE.__execCommand(command, user_interface, value);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand;
-tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('execInstanceCommand', editor_id, command, user_interface, value);
-	r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value);
-	dk._end(st);
-
-	return r;
-};
-
-TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent;
-TinyMCE_Engine.prototype.handleEvent = function(e) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('handleEvent', e.type);
-	r = tinyMCE.__handleEvent(e);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.__importCSS = tinyMCE.importCSS;
-tinyMCE.importCSS = function(doc, css) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('importCSS', doc, css);
-	r = tinyMCE.__importCSS(doc, css);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange;
-tinyMCE.triggerNodeChange = function(focus, setup_content) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('triggerNodeChange', focus, setup_content);
-	r = tinyMCE.__triggerNodeChange(focus, setup_content);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback;
-tinyMCE.dispatchCallback = function(i, p, n) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('dispatchCallback', i, p, n);
-	r = tinyMCE.__dispatchCallback(i, p, n);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.__executeCallback = tinyMCE.executeCallback;
-tinyMCE.executeCallback = function(i, p, n) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('executeCallback', i, p, n);
-	r = tinyMCE.__executeCallback(i, p, n);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback;
-tinyMCE.execCommandCallback = function(i, p, n) {
-	var r, st, dk = TinyMCE_DevKitPlugin;
-
-	st = dk._start();
-	dk._log('execCommandCallback', i, p, n);
-	r = tinyMCE.__execCommandCallback(i, p, n);
-	dk._end(st);
-
-	return r;
-};
-
-tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js
@@ -1,331 +1,331 @@
-var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null;
-
-function init() {
-	var log, i, f = document.forms[0];
-
-	devkit._winLoaded = true;
-
-	log = tinyMCE.log;
-
-	for (i=0; i<log.length; i++)
-		debug(log[i]);
-
-	f.logfilter.value = devkit._logFilter;
+var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null;

+

+function init() {

+	var log, i, f = document.forms[0];

+

+	devkit._winLoaded = true;

+

+	log = tinyMCE.log;

+

+	for (i=0; i<log.length; i++)

+		debug(log[i]);

+

+	f.logfilter.value = devkit._logFilter;

+}

+

+function changeFilter(f) {

+	devkit._logFilter = f;

+}

+

+function toggleLog(s) {

+	logEnabled = s;

+}

+

+function toggleFlip() {

+	document.getElementById('flipbtn').src = flip ? 'images/flip_down.gif' : 'images/flip_up.gif';

+

+	if (flip)

+		parent.document.getElementById('devkit').className = 'devkitup';

+	else

+		parent.document.getElementById('devkit').className = 'devkitdown';

+

+	flip = !flip;

+}

+

+function debug(s) {

+	var d, l, n;

+

+	if (!logEnabled || !new RegExp(devkit._logFilter, 'gi').test(s))

+		return;

+

+	d = document;

+	l = d.getElementById('log');

+	n = d.createElement('span');

+

+	n.innerHTML = tinyMCE.xmlEncode(s);

+

+	l.appendChild(n);

+	l.scrollTop = l.scrollHeight;

+}

+

+function renderInfo() {

+	var se = document.getElementById('info'), n, sn, inst, h = '', sel, rng, instCount = 0, rc;

+

+	h += '<h2>Browser info:</h2>';

+

+	h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';

+	h += addRenderInfo('navigator.userAgent', navigator.userAgent);

+	h += addRenderInfo('navigator.appName', navigator.appName);

+	h += addRenderInfo('navigator.platform', navigator.platform);

+	h += addRenderInfo('navigator.language', navigator.language, 'bspec');

+	h += addRenderInfo('navigator.browserLanguage', navigator.browserLanguage, 'bspec');

+	h += addRenderInfo('navigator.systemLanguage', navigator.systemLanguage, 'bspec');

+	h += addRenderInfo('navigator.userLanguage', navigator.userLanguage, 'bspec');

+	h += addRenderInfo('opera.buildNumber("inconspicuous")', typeof(opera) != 'undefined' && opera.buildNumber ? opera.buildNumber('inconspicuous') : null, 'bspec');

+	h += addRenderInfo('window.innerWidth', parent.window.innerWidth, 'bspec');

+	h += addRenderInfo('window.innerHeight', parent.window.innerHeight, 'bspec');

+	h += addRenderInfo('document.body.offsetWidth', parent.document.body.offsetWidth);

+	h += addRenderInfo('document.body.offsetHeight', parent.document.body.offsetHeight);

+	h += addRenderInfo('screen.width', screen.width);

+	h += addRenderInfo('screen.height', screen.height);

+	h += addRenderInfo('screen.availWidth', screen.availWidth);

+	h += addRenderInfo('screen.availHeight', screen.availHeight);

+	h += addRenderInfo('screen.colorDepth', screen.colorDepth);

+	h += addRenderInfo('screen.pixelDepth', screen.pixelDepth, 'bspec');

+	h += addRenderInfo('document.contentType', document.contentType, 'bspec');

+	h += '</table>';

+

+	h += '<h2>TinyMCE_Engine info:</h2>';

+

+	h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';

+	h += addRenderInfo('baseURL', tinyMCE.baseURL);

+	h += addRenderInfo('selectedInstance.editorId', tinyMCE.selectedInstance ? tinyMCE.selectedInstance.editorId : null);

+	h += addRenderInfo('selectedElement.nodeName', tinyMCE.selectedElement ? tinyMCE.selectedElement.nodeName : null, 'dep');

+	h += addRenderInfo('loadedFiles',tinyMCE.loadedFiles.join(','));

+	h += addRenderInfo('isMSIE', tinyMCE.isMSIE);

+	h += addRenderInfo('isMSIE5', tinyMCE.isMSIE5);

+	h += addRenderInfo('isMSIE5_0', tinyMCE.isMSIE5_0);

+	h += addRenderInfo('isMSIE7', tinyMCE.isMSIE7);

+	h += addRenderInfo('isGecko', tinyMCE.isGecko);

+	h += addRenderInfo('isSafari', tinyMCE.isSafari);

+	h += addRenderInfo('isOpera', tinyMCE.isOpera);

+	h += addRenderInfo('isMac', tinyMCE.isMac);

+	h += addRenderInfo('isNS7', tinyMCE.isNS7);

+	h += addRenderInfo('isNS71', tinyMCE.isNS71);

+	h += addRenderInfo('idCounter', tinyMCE.idCounter);

+	h += addRenderInfo('currentConfig', tinyMCE.currentConfig);

+	h += addRenderInfo('majorVersion', tinyMCE.majorVersion);

+	h += addRenderInfo('minorVersion', tinyMCE.minorVersion);

+	h += addRenderInfo('releaseDate', tinyMCE.releaseDate);

+	h += addRenderInfo('documentBasePath', tinyMCE.documentBasePath);

+	h += addRenderInfo('documentURL', tinyMCE.documentURL);

+	h += '</table>';

+

+	for (n in tinyMCE.instances) {

+		inst = tinyMCE.instances[n];

+

+		if (!tinyMCE.isInstance(inst))

+			continue;

+

+		sel = inst.selection.getSel();

+		rng = inst.selection.getRng();

+

+		h += '<h2>TinyMCE_Control(' + (instCount++) + ') id: ' + inst.editorId + '</h2>';

+		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';

+

+		h += addRenderInfo('editorId', inst.editorId);

+		h += addRenderInfo('visualAid', inst.visualAid);

+		h += addRenderInfo('foreColor', inst.foreColor);

+		h += addRenderInfo('backColor', inst.backColor);

+		h += addRenderInfo('formTargetElementId', inst.formTargetElementId);

+		h += addRenderInfo('formElement', inst.formElement ? inst.formElement.nodeName : null);

+		h += addRenderInfo('oldTargetElement', inst.oldTargetElement ? inst.oldTargetElement.nodeName : null);

+		h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep');

+		h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep');

+		h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep');

+		h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null);

+		h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null);

+		h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null);

+		h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null);

+		h += addRenderInfo('startContent', inst.startContent);

+		h += addRenderInfo('isHidden()', inst.isHidden());

+		h += addRenderInfo('isDirty()', inst.isDirty());

+		h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length);

+		h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex);

+		h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML());

+		h += addRenderInfo('selection.isCollapsed()', inst.selection.isCollapsed() || 'false');

+		h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText());

+		h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName);

+		h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement()));

+

+		if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) {

+			h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec');

+			h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec');

+			h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec');

+			h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec');

+			h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec');

+			h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec');

+			h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec');

+			h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec');

+		}

+

+		if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') {

+			if (!rng.item) {

+				h += addRenderInfo('selection.getSel().type', sel.type, 'bspec');

+				h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec');

+				h += addRenderInfo('selection.getRng().text', rng.text, 'bspec');

+			} else

+				h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec');

+		}

+

+		h += '</table>';

+	}

+

+	h += '<p>Fields marked in <strong class="bspec">gray</strong> is not cross browser and should be used with care.</p>';

+	h += '<p>Fields marked <strong class="dep">red</strong> are marked deprecated and will be removed in the future.</p><br />';

+

+	se.innerHTML = h;

+}

+

+function addRenderInfo(n, v, c) {

+	return '<tr><td' + (c ? ' class="' + c + '"' : '')+ '>' + n + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v != null ? ('' + v).replace(/[\r\n]/g, '') : 'null') + '" /></td></tr>';

+}

+

+function renderSettings() {

+	var se = document.getElementById('settings'), n, sn, inst, h = '', v;

+

+	for (n in tinyMCE.instances) {

+		inst = tinyMCE.instances[n];

+

+		if (!tinyMCE.isInstance(inst))

+			continue;

+

+		h += '<h2>Instance id: ' + inst.editorId + '</h2>';

+		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';

+

+		for (sn in inst.settings) {

+			v = inst.settings[sn];

+

+			h += '<tr><td class="col1">' + tinyMCE.xmlEncode(sn) + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';

+		}

+

+		h += '</table>';

+	}

+

+	se.innerHTML = h;

+}

+

+function renderContent() {

+	var se = document.getElementById('content'), n, inst, h = '';

+

+	for (n in tinyMCE.instances) {

+		inst = tinyMCE.instances[n];

+

+		if (!tinyMCE.isInstance(inst))

+			continue;

+

+		h += '<h2>Instance id: ' + inst.editorId + '</h2>';

+

+		h += '<h3>Start content - inst.startContent:</h3>';

+		h += '<div>' + tinyMCE.xmlEncode(inst.startContent) + '</div>';

+

+		h += '<h3>Raw content - inst.getBody().innerHTML or inst.getHTML(true):</h3>';

+		h += '<div>' + tinyMCE.xmlEncode(inst.getHTML(true)) + '</div>';

+

+		h += '<h3>Cleaned content - inst.getHTML():</h3>';

+		h += '<div>' + tinyMCE.xmlEncode(inst.getHTML()) + '</div>';

+

+		if (inst.serializedHTML) {

+			h += '<h3>Serialized HTML content - inst.serializedHTML:</h3>';

+			h += '<div>' + tinyMCE.xmlEncode(inst.serializedHTML) + '</div>';

+		}

+	}

+

+	se.innerHTML = h;

+}

+

+function renderCommandStates() {

+	var se = document.getElementById('command_states'), n, inst, h = '', v, ex;

+	var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','SizeToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i;

+

+	for (n in tinyMCE.instances) {

+		inst = tinyMCE.instances[n];

+

+		if (!tinyMCE.isInstance(inst))

+			continue;

+

+		h += '<h2>Instance id: ' + inst.editorId + '</h2>';

+		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';

+

+		for (i=0; i<cmds.length; i++) {

+			v = null;

+

+			try {

+				v = tinyMCE.isGecko || inst.getDoc().queryCommandSupported(cmds[i]);

+				v = v ? inst.queryCommandState(cmds[i]) : 'Not supported';

+			} catch (ex) {

+				v = 'Not supported';

+			}

+

+			h += '<tr><td><input type="text" value="' + tinyMCE.xmlEncode(cmds[i]) + '" /></td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';

+		}

+

+		h += '</table>';

+	}

+

+	se.innerHTML = h;

+}

+

+function renderUndoRedo() {

+	var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur;

+	var f = document.forms[0];	

+

+	if (tinyMCE.undoLevels) {

+		le = tinyMCE.undoLevels;

+

+		h += '<h2>Global undo/redo</h2>';

+		h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';

+		h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';

+		h += '<tr><td>undoIndex</td><td>' + tinyMCE.undoIndex + '</td></tr>';

+		h += '</table>';

+

+		for (i=0; i<le.length; i++)

+			h += '<h3>Level: ' + i + ', Instance: ' + (le[i] ? le[i].editorId : 'null') + '</h3>';

+	}

+

+	for (n in tinyMCE.instances) {

+		inst = tinyMCE.instances[n];

+

+		if (!tinyMCE.isInstance(inst))

+			continue;

+

+		ur = inst.undoRedo;

+		le = ur.undoLevels;

+

+		h += '<hr /><h2>Instance id: ' + inst.editorId + '</h2>';

+		h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';

+		h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';

+		h += '<tr><td>undoIndex</td><td>' + ur.undoIndex + '</td></tr>';

+		h += '<tr><td>typingUndoIndex</td><td>' + ur.typingUndoIndex + '</td></tr>';

+		h += '<tr><td>undoRedo</td><td>' + ur.undoRedo + '</td></tr>';

+		h += '</table>';

+

+		for (i=0; i<le.length; i++) {

+			h += '<h3>Level: ' + i + (!le[i].bookmark ? "" : " [bookmark]") + '</h3>';

+			h += '<div class="undodata">' + tinyMCE.xmlEncode(le[i].content) + '</div>';

+

+			if (i > 0 && f.undo_diff.checked) {

+				d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false);

+				diff_cleanup_semantic(d);

+				h += '<h3>Diff ' + (i-1) + ',' + i + '</h3><div class="undodata">' + diff_prettyhtml(d) + '</div>';

+			}

+		}

+	}

+

+	se.innerHTML = h;

+}

+

+function clearLog() {

+	document.getElementById('log').innerHTML = '';

+	devkit._startTime = null;

+}

+

+function cancelAction() {

+	parent.document.getElementById('devkit').style.display = 'none';

+}

+

+function toggleDebugEvents(s) {

+	devkit._debugEvents(s);

+}

+

+function storeSelection() {

+	book = tinyMCE.selectedInstance.selection.getBookmark();

+

+	return false;

+}

+

+function restoreSelection() {

+	tinyMCE.selectedInstance.selection.moveToBookmark(book);

+

+	return false;

 }
-
-function changeFilter(f) {
-	devkit._logFilter = f;
-}
-
-function toggleLog(s) {
-	logEnabled = s;
-}
-
-function toggleFlip() {
-	document.getElementById('flipbtn').src = flip ? 'images/flip_down.gif' : 'images/flip_up.gif';
-
-	if (flip)
-		parent.document.getElementById('devkit').className = 'devkitup';
-	else
-		parent.document.getElementById('devkit').className = 'devkitdown';
-
-	flip = !flip;
-}
-
-function debug(s) {
-	var d, l, n;
-
-	if (!logEnabled || !new RegExp(devkit._logFilter, 'gi').test(s))
-		return;
-
-	d = document;
-	l = d.getElementById('log');
-	n = d.createElement('span');
-
-	n.innerHTML = tinyMCE.xmlEncode(s);
-
-	l.appendChild(n);
-	l.scrollTop = l.scrollHeight;
-}
-
-function renderInfo() {
-	var se = document.getElementById('info'), n, sn, inst, h = '', sel, rng, instCount = 0, rc;
-
-	h += '<h2>Browser info:</h2>';
-
-	h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
-	h += addRenderInfo('navigator.userAgent', navigator.userAgent);
-	h += addRenderInfo('navigator.appName', navigator.appName);
-	h += addRenderInfo('navigator.platform', navigator.platform);
-	h += addRenderInfo('navigator.language', navigator.language, 'bspec');
-	h += addRenderInfo('navigator.browserLanguage', navigator.browserLanguage, 'bspec');
-	h += addRenderInfo('navigator.systemLanguage', navigator.systemLanguage, 'bspec');
-	h += addRenderInfo('navigator.userLanguage', navigator.userLanguage, 'bspec');
-	h += addRenderInfo('opera.buildNumber("inconspicuous")', typeof(opera) != 'undefined' && opera.buildNumber ? opera.buildNumber('inconspicuous') : null, 'bspec');
-	h += addRenderInfo('window.innerWidth', parent.window.innerWidth, 'bspec');
-	h += addRenderInfo('window.innerHeight', parent.window.innerHeight, 'bspec');
-	h += addRenderInfo('document.body.offsetWidth', parent.document.body.offsetWidth);
-	h += addRenderInfo('document.body.offsetHeight', parent.document.body.offsetHeight);
-	h += addRenderInfo('screen.width', screen.width);
-	h += addRenderInfo('screen.height', screen.height);
-	h += addRenderInfo('screen.availWidth', screen.availWidth);
-	h += addRenderInfo('screen.availHeight', screen.availHeight);
-	h += addRenderInfo('screen.colorDepth', screen.colorDepth);
-	h += addRenderInfo('screen.pixelDepth', screen.pixelDepth, 'bspec');
-	h += addRenderInfo('document.contentType', document.contentType, 'bspec');
-	h += '</table>';
-
-	h += '<h2>TinyMCE_Engine info:</h2>';
-
-	h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
-	h += addRenderInfo('baseURL', tinyMCE.baseURL);
-	h += addRenderInfo('selectedInstance.editorId', tinyMCE.selectedInstance ? tinyMCE.selectedInstance.editorId : null);
-	h += addRenderInfo('selectedElement.nodeName', tinyMCE.selectedElement ? tinyMCE.selectedElement.nodeName : null, 'dep');
-	h += addRenderInfo('loadedFiles',tinyMCE.loadedFiles.join(','));
-	h += addRenderInfo('isMSIE', tinyMCE.isMSIE);
-	h += addRenderInfo('isMSIE5', tinyMCE.isMSIE5);
-	h += addRenderInfo('isMSIE5_0', tinyMCE.isMSIE5_0);
-	h += addRenderInfo('isMSIE7', tinyMCE.isMSIE7);
-	h += addRenderInfo('isGecko', tinyMCE.isGecko);
-	h += addRenderInfo('isSafari', tinyMCE.isSafari);
-	h += addRenderInfo('isOpera', tinyMCE.isOpera);
-	h += addRenderInfo('isMac', tinyMCE.isMac);
-	h += addRenderInfo('isNS7', tinyMCE.isNS7);
-	h += addRenderInfo('isNS71', tinyMCE.isNS71);
-	h += addRenderInfo('idCounter', tinyMCE.idCounter);
-	h += addRenderInfo('currentConfig', tinyMCE.currentConfig);
-	h += addRenderInfo('majorVersion', tinyMCE.majorVersion);
-	h += addRenderInfo('minorVersion', tinyMCE.minorVersion);
-	h += addRenderInfo('releaseDate', tinyMCE.releaseDate);
-	h += addRenderInfo('documentBasePath', tinyMCE.documentBasePath);
-	h += addRenderInfo('documentURL', tinyMCE.documentURL);
-	h += '</table>';
-
-	for (n in tinyMCE.instances) {
-		inst = tinyMCE.instances[n];
-
-		if (!tinyMCE.isInstance(inst))
-			continue;
-
-		sel = inst.selection.getSel();
-		rng = inst.selection.getRng();
-
-		h += '<h2>TinyMCE_Control(' + (instCount++) + ') id: ' + inst.editorId + '</h2>';
-		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
-
-		h += addRenderInfo('editorId', inst.editorId);
-		h += addRenderInfo('visualAid', inst.visualAid);
-		h += addRenderInfo('foreColor', inst.foreColor);
-		h += addRenderInfo('backColor', inst.backColor);
-		h += addRenderInfo('formTargetElementId', inst.formTargetElementId);
-		h += addRenderInfo('formElement', inst.formElement ? inst.formElement.nodeName : null);
-		h += addRenderInfo('oldTargetElement', inst.oldTargetElement ? inst.oldTargetElement.nodeName : null);
-		h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep');
-		h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep');
-		h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep');
-		h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null);
-		h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null);
-		h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null);
-		h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null);
-		h += addRenderInfo('startContent', inst.startContent);
-		h += addRenderInfo('isHidden()', inst.isHidden());
-		h += addRenderInfo('isDirty()', inst.isDirty());
-		h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length);
-		h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex);
-		h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML());
-		h += addRenderInfo('selection.isCollapsed()', inst.selection.isCollapsed() || 'false');
-		h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText());
-		h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName);
-		h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement()));
-
-		if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) {
-			h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec');
-			h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec');
-			h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec');
-			h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec');
-			h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec');
-			h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec');
-			h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec');
-			h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec');
-		}
-
-		if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') {
-			if (!rng.item) {
-				h += addRenderInfo('selection.getSel().type', sel.type, 'bspec');
-				h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec');
-				h += addRenderInfo('selection.getRng().text', rng.text, 'bspec');
-			} else
-				h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec');
-		}
-
-		h += '</table>';
-	}
-
-	h += '<p>Fields marked in <strong class="bspec">gray</strong> is not cross browser and should be used with care.</p>';
-	h += '<p>Fields marked <strong class="dep">red</strong> are marked deprecated and will be removed in the future.</p><br />';
-
-	se.innerHTML = h;
-}
-
-function addRenderInfo(n, v, c) {
-	return '<tr><td' + (c ? ' class="' + c + '"' : '')+ '>' + n + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v != null ? ('' + v).replace(/[\r\n]/g, '') : 'null') + '" /></td></tr>';
-}
-
-function renderSettings() {
-	var se = document.getElementById('settings'), n, sn, inst, h = '', v;
-
-	for (n in tinyMCE.instances) {
-		inst = tinyMCE.instances[n];
-
-		if (!tinyMCE.isInstance(inst))
-			continue;
-
-		h += '<h2>Instance id: ' + inst.editorId + '</h2>';
-		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
-
-		for (sn in inst.settings) {
-			v = inst.settings[sn];
-
-			h += '<tr><td class="col1">' + tinyMCE.xmlEncode(sn) + '</td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';
-		}
-
-		h += '</table>';
-	}
-
-	se.innerHTML = h;
-}
-
-function renderContent() {
-	var se = document.getElementById('content'), n, inst, h = '';
-
-	for (n in tinyMCE.instances) {
-		inst = tinyMCE.instances[n];
-
-		if (!tinyMCE.isInstance(inst))
-			continue;
-
-		h += '<h2>Instance id: ' + inst.editorId + '</h2>';
-
-		h += '<h3>Start content - inst.startContent:</h3>';
-		h += '<div>' + tinyMCE.xmlEncode(inst.startContent) + '</div>';
-
-		h += '<h3>Raw content - inst.getBody().innerHTML or inst.getHTML(true):</h3>';
-		h += '<div>' + tinyMCE.xmlEncode(inst.getHTML(true)) + '</div>';
-
-		h += '<h3>Cleaned content - inst.getHTML():</h3>';
-		h += '<div>' + tinyMCE.xmlEncode(inst.getHTML()) + '</div>';
-
-		if (inst.serializedHTML) {
-			h += '<h3>Serialized HTML content - inst.serializedHTML:</h3>';
-			h += '<div>' + tinyMCE.xmlEncode(inst.serializedHTML) + '</div>';
-		}
-	}
-
-	se.innerHTML = h;
-}
-
-function renderCommandStates() {
-	var se = document.getElementById('command_states'), n, inst, h = '', v, ex;
-	var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','SizeToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i;
-
-	for (n in tinyMCE.instances) {
-		inst = tinyMCE.instances[n];
-
-		if (!tinyMCE.isInstance(inst))
-			continue;
-
-		h += '<h2>Instance id: ' + inst.editorId + '</h2>';
-		h += '<table border="0" cellpadding="0" cellspacing="0" class="data">';
-
-		for (i=0; i<cmds.length; i++) {
-			v = null;
-
-			try {
-				v = tinyMCE.isGecko || inst.getDoc().queryCommandSupported(cmds[i]);
-				v = v ? inst.queryCommandState(cmds[i]) : 'Not supported';
-			} catch (ex) {
-				v = 'Not supported';
-			}
-
-			h += '<tr><td><input type="text" value="' + tinyMCE.xmlEncode(cmds[i]) + '" /></td><td><input type="text" value="' + tinyMCE.xmlEncode(v) + '" /></td></tr>';
-		}
-
-		h += '</table>';
-	}
-
-	se.innerHTML = h;
-}
-
-function renderUndoRedo() {
-	var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur;
-	var f = document.forms[0];	
-
-	if (tinyMCE.undoLevels) {
-		le = tinyMCE.undoLevels;
-
-		h += '<h2>Global undo/redo</h2>';
-		h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';
-		h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';
-		h += '<tr><td>undoIndex</td><td>' + tinyMCE.undoIndex + '</td></tr>';
-		h += '</table>';
-
-		for (i=0; i<le.length; i++)
-			h += '<h3>Level: ' + i + ', Instance: ' + (le[i] ? le[i].editorId : 'null') + '</h3>';
-	}
-
-	for (n in tinyMCE.instances) {
-		inst = tinyMCE.instances[n];
-
-		if (!tinyMCE.isInstance(inst))
-			continue;
-
-		ur = inst.undoRedo;
-		le = ur.undoLevels;
-
-		h += '<hr /><h2>Instance id: ' + inst.editorId + '</h2>';
-		h += '<table border="0" cellpadding="0" cellspacing="0" width="50%" class="data">';
-		h += '<tr><td>undoLevels.length</td><td>' + le.length + '</td></tr>';
-		h += '<tr><td>undoIndex</td><td>' + ur.undoIndex + '</td></tr>';
-		h += '<tr><td>typingUndoIndex</td><td>' + ur.typingUndoIndex + '</td></tr>';
-		h += '<tr><td>undoRedo</td><td>' + ur.undoRedo + '</td></tr>';
-		h += '</table>';
-
-		for (i=0; i<le.length; i++) {
-			h += '<h3>Level: ' + i + (!le[i].bookmark ? "" : " [bookmark]") + '</h3>';
-			h += '<div class="undodata">' + tinyMCE.xmlEncode(le[i].content) + '</div>';
-
-			if (i > 0 && f.undo_diff.checked) {
-				d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false);
-				diff_cleanup_semantic(d);
-				h += '<h3>Diff ' + (i-1) + ',' + i + '</h3><div class="undodata">' + diff_prettyhtml(d) + '</div>';
-			}
-		}
-	}
-
-	se.innerHTML = h;
-}
-
-function clearLog() {
-	document.getElementById('log').innerHTML = '';
-	devkit._startTime = null;
-}
-
-function cancelAction() {
-	parent.document.getElementById('devkit').style.display = 'none';
-}
-
-function toggleDebugEvents(s) {
-	devkit._debugEvents(s);
-}
-
-function storeSelection() {
-	book = tinyMCE.selectedInstance.selection.getBookmark();
-
-	return false;
-}
-
-function restoreSelection() {
-	tinyMCE.selectedInstance.selection.moveToBookmark(book);
-
-	return false;
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js
@@ -1,1193 +1,1193 @@
-// Diff_Match_Patch v1.3
-// Computes the difference between two texts to create a patch.
-// Applies the patch onto another text, allowing for errors.
-// Copyright (C) 2006 Neil Fraser
-// http://neil.fraser.name/software/diff_match_patch/
+// Diff_Match_Patch v1.3

+// Computes the difference between two texts to create a patch.

+// Applies the patch onto another text, allowing for errors.

+// Copyright (C) 2006 Neil Fraser

+// http://neil.fraser.name/software/diff_match_patch/

+

+// This program is free software; you can redistribute it and/or

+// modify it under the terms of the GNU General Public License

+// as published by the Free Software Foundation.

+

+// This program is distributed in the hope that it will be useful,

+// but WITHOUT ANY WARRANTY; without even the implied warranty of

+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

+// GNU General Public License (www.gnu.org) for more details.

+

+

+// Constants.

+// Redefine these in your program to override the defaults.

+

+// Number of seconds to map a diff before giving up.  (0 for infinity)

+var DIFF_TIMEOUT = 1.0;

+// Cost of an empty edit operation in terms of edit characters.

+var DIFF_EDIT_COST = 4;

+// Tweak the relative importance (0.0 = accuracy, 1.0 = proximity)

+var MATCH_BALANCE = 0.5;

+// At what point is no match declared (0.0 = perfection, 1.0 = very loose)

+var MATCH_THRESHOLD = 0.5;

+// The min and max cutoffs used when computing text lengths.

+var MATCH_MINLENGTH = 100;

+var MATCH_MAXLENGTH = 1000;

+// Chunk size for context length.

+var PATCH_MARGIN = 4;

+

+

+  //////////////////////////////////////////////////////////////////////

+ //  Diff                                                            //

+//////////////////////////////////////////////////////////////////////

+

+// The data structure representing a diff is an array of tuples:

+// [[-1, "Hello"], [1, "Goodbye"], [0, " world."]]

+// which means: delete "Hello", add "Goodbye" and keep " world."

+

+

+function diff_main(text1, text2, checklines) {

+  // Find the differences between two texts.  Return an array of changes.

+  // If checklines is present and false, then don't run a line-level diff first to identify the changed areas.

+  // Check for equality (speedup)

+  if (text1 == text2)

+    return [[0, text1]];

+

+  if (typeof checklines == 'undefined')

+    checklines = true;

+

+  var a;

+  // Trim off common prefix (speedup)

+  a = diff_prefix(text1, text2);

+  text1 = a[0];

+  text2 = a[1];

+  var commonprefix = a[2];

+

+  // Trim off common suffix (speedup)

+  a = diff_suffix(text1, text2);

+  text1 = a[0];

+  text2 = a[1];

+  var commonsuffix = a[2];

+

+  var diff, i;

+  var longtext = text1.length > text2.length ? text1 : text2;

+  var shorttext = text1.length > text2.length ? text2 : text1;

+

+  if (!text1) {  // Just add some text (speedup)

+    diff = [[1, text2]];

+  } else if (!text2) { // Just delete some text (speedup)

+    diff = [[-1, text1]];

+  } else if ((i = longtext.indexOf(shorttext)) != -1) {

+    // Shorter text is inside the longer text (speedup)

+    diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]];

+    // Swap insertions for deletions if diff is reversed.

+    if (text1.length > text2.length)

+      diff[0][0] = diff[2][0] = -1;

+  } else {

+    longtext = shorttext = null; // Garbage collect

+    // Check to see if the problem can be split in two.

+    var hm = diff_halfmatch(text1, text2);

+    if (hm) {

+      // A half-match was found, sort out the return data.

+      var text1_a = hm[0];

+      var text1_b = hm[1];

+      var text2_a = hm[2];

+      var text2_b = hm[3];

+      var mid_common = hm[4];

+      // Send both pairs off for separate processing.

+      var diff_a = diff_main(text1_a, text2_a, checklines);

+      var diff_b = diff_main(text1_b, text2_b, checklines);

+      // Merge the results.

+      diff = diff_a.concat([[0, mid_common]], diff_b);

+    } else {

+      // Perform a real diff.

+      if (checklines && text1.length + text2.length < 250)

+        checklines = false; // Too trivial for the overhead.

+      if (checklines) {

+        // Scan the text on a line-by-line basis first.

+        a = diff_lines2chars(text1, text2);

+        text1 = a[0];

+        text2 = a[1];

+        var linearray = a[2];

+      }

+      diff = diff_map(text1, text2);

+      if (!diff) // No acceptable result.

+        diff = [[-1, text1], [1, text2]];

+      if (checklines) {

+        diff_chars2lines(diff, linearray); // Convert the diff back to original text.

+        diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines)

+

+        // Rediff any replacement blocks, this time on character-by-character basis.

+        diff.push([0, '']);  // Add a dummy entry at the end.

+        var pointer = 0;

+        var count_delete = 0;

+        var count_insert = 0;

+        var text_delete = '';

+        var text_insert = '';

+        while(pointer < diff.length) {

+          if (diff[pointer][0] == 1) {

+            count_insert++;

+            text_insert += diff[pointer][1];

+          } else if (diff[pointer][0] == -1) {

+            count_delete++;

+            text_delete += diff[pointer][1];

+          } else {  // Upon reaching an equality, check for prior redundancies.

+            if (count_delete >= 1 && count_insert >= 1) {

+              // Delete the offending records and add the merged ones.

+              a = diff_main(text_delete, text_insert, false);

+              diff.splice(pointer - count_delete - count_insert, count_delete + count_insert);

+              pointer = pointer - count_delete - count_insert;

+              for (i=a.length-1; i>=0; i--)

+                diff.splice(pointer, 0, a[i]);

+              pointer = pointer + a.length;

+            }

+            count_insert = 0;

+            count_delete = 0;

+            text_delete = '';

+            text_insert = '';

+          }

+          pointer++;

+        }

+        diff.pop();  // Remove the dummy entry at the end.

+

+      }

+    }

+  }

+

+  if (commonprefix)

+    diff.unshift([0, commonprefix]);

+  if (commonsuffix)

+    diff.push([0, commonsuffix]);

+  diff_cleanup_merge(diff);

+  return diff;

+}

+

+

+function diff_lines2chars(text1, text2) {

+  // Split text into an array of strings.

+  // Reduce the texts to a string of hashes where each character represents one line.

+  var linearray = new Array();  // linearray[4] == "Hello\n"

+  var linehash = new Object();  // linehash["Hello\n"] == 4

+

+  // "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098)

+  // So we'll insert a junk entry to avoid generating a null character.

+  linearray.push('');

+

+  function diff_lines2chars_munge(text) {

+    // My first ever closure!

+    var i, line;

+    var chars = '';

+    while (text) {

+      i = text.indexOf('\n');

+      if (i == -1)

+        i = text.length;

+      line = text.substring(0, i+1);

+      text = text.substring(i+1);

+      if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) {

+        chars += String.fromCharCode(linehash[line]);

+      } else {

+        linearray.push(line);

+        linehash[line] = linearray.length - 1;

+        chars += String.fromCharCode(linearray.length - 1);

+      }

+    }

+    return chars;

+  }

+

+  var chars1 = diff_lines2chars_munge(text1);

+  var chars2 = diff_lines2chars_munge(text2);

+  return [chars1, chars2, linearray];

+}

+

+

+function diff_chars2lines(diff, linearray) {

+  // Rehydrate the text in a diff from a string of line hashes to real lines of text.

+  var chars, text;

+  for (var x=0; x<diff.length; x++) {

+    chars = diff[x][1];

+    text = '';

+    for (var y=0; y<chars.length; y++)

+      text += linearray[chars.charCodeAt(y)];

+    diff[x][1] = text;

+  }

+}

+

+

+function diff_map(text1, text2) {

+  // Explore the intersection points between the two texts.

+  var now = new Date();

+  var ms_end = now.getTime() + DIFF_TIMEOUT * 1000; // Don't run for too long.

+  var max = (text1.length + text2.length) / 2;

+  var v_map1 = new Array();

+  var v_map2 = new Array();

+  var v1 = new Object();

+  var v2 = new Object();

+  v1[1] = 0;

+  v2[1] = 0;

+  var x, y;

+  var footstep; // Used to track overlapping paths.

+  var footsteps = new Object();

+  var done = false;

+  var hasOwnProperty = !!(footsteps.hasOwnProperty);

+  // If the total number of characters is odd, then the front path will collide with the reverse path.

+  var front = (text1.length + text2.length) % 2;

+  for (var d=0; d<max; d++) {

+    now = new Date();

+    if (DIFF_TIMEOUT > 0 && now.getTime() > ms_end) // Timeout reached

+      return null;

+

+    // Walk the front path one step.

+    v_map1[d] = new Object();

+    for (var k=-d; k<=d; k+=2) {

+      if (k == -d || k != d && v1[k-1] < v1[k+1])

+        x = v1[k+1];

+      else

+        x = v1[k-1]+1;

+      y = x - k;

+      footstep = x+","+y;

+      if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))

+        done = true;

+      if (!front)

+        footsteps[footstep] = d;

+      while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) {

+        x++; y++;

+        footstep = x+","+y;

+        if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))

+          done = true;

+        if (!front)

+          footsteps[footstep] = d;

+      }

+      v1[k] = x;

+      v_map1[d][x+","+y] = true;

+      if (done) {

+        // Front path ran over reverse path.

+        v_map2 = v_map2.slice(0, footsteps[footstep]+1);

+        var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y));

+        return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y)));

+      }

+    }

+

+    // Walk the reverse path one step.

+    v_map2[d] = new Object();

+    for (var k=-d; k<=d; k+=2) {

+      if (k == -d || k != d && v2[k-1] < v2[k+1])

+        x = v2[k+1];

+      else

+        x = v2[k-1]+1;

+      y = x - k;

+      footstep = (text1.length-x)+","+(text2.length-y);

+      if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))

+        done = true;

+      if (front)

+        footsteps[footstep] = d;

+      while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) {

+        x++; y++;

+        footstep = (text1.length-x)+","+(text2.length-y);

+        if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))

+          done = true;

+        if (front)

+          footsteps[footstep] = d;

+      }

+      v2[k] = x;

+      v_map2[d][x+","+y] = true;

+      if (done) {

+        // Reverse path ran over front path.

+        v_map1 = v_map1.slice(0, footsteps[footstep]+1);

+        var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y));

+        return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y)));

+      }

+    }

+  }

+  // Number of diffs equals number of characters, no commonality at all.

+  return null;

+}

+

+

+function diff_path1(v_map, text1, text2) {

+  // Work from the middle back to the start to determine the path.

+  var path = [];

+  var x = text1.length;

+  var y = text2.length;

+  var last_op = null;

+  for (var d=v_map.length-2; d>=0; d--) {

+    while(1) {

+      if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {

+        x--;

+        if (last_op === -1)

+          path[0][1] = text1.charAt(x) + path[0][1];

+        else

+          path.unshift([-1, text1.charAt(x)]);

+        last_op = -1;

+        break;

+      } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {

+        y--;

+        if (last_op === 1)

+          path[0][1] = text2.charAt(y) + path[0][1];

+        else

+          path.unshift([1, text2.charAt(y)]);

+        last_op = 1;

+        break;

+      } else {

+        x--;

+        y--;

+        //if (text1.charAt(x) != text2.charAt(y))

+        //  return alert("No diagonal.  Can't happen. (diff_path1)");

+        if (last_op === 0)

+          path[0][1] = text1.charAt(x) + path[0][1];

+        else

+          path.unshift([0, text1.charAt(x)]);

+        last_op = 0;

+      }

+    }

+  }

+  return path;

+}

+

+

+function diff_path2(v_map, text1, text2) {

+  // Work from the middle back to the end to determine the path.

+  var path = [];

+  var x = text1.length;

+  var y = text2.length;

+  var last_op = null;

+  for (var d=v_map.length-2; d>=0; d--) {

+    while(1) {

+      if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {

+        x--;

+        if (last_op === -1)

+          path[path.length-1][1] += text1.charAt(text1.length-x-1);

+        else

+          path.push([-1, text1.charAt(text1.length-x-1)]);

+        last_op = -1;

+        break;

+      } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {

+        y--;

+        if (last_op === 1)

+          path[path.length-1][1] += text2.charAt(text2.length-y-1);

+        else

+          path.push([1, text2.charAt(text2.length-y-1)]);

+        last_op = 1;

+        break;

+      } else {

+        x--;

+        y--;

+        //if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1))

+        //  return alert("No diagonal.  Can't happen. (diff_path2)");

+        if (last_op === 0)

+          path[path.length-1][1] += text1.charAt(text1.length-x-1);

+        else

+          path.push([0, text1.charAt(text1.length-x-1)]);

+        last_op = 0;

+      }

+    }

+  }

+  return path;

+}

+

+

+function diff_prefix(text1, text2) {

+  // Trim off common prefix

+  var pointermin = 0;

+  var pointermax = Math.min(text1.length, text2.length);

+  var pointermid = pointermax;

+  while(pointermin < pointermid) {

+    if (text1.substring(0, pointermid) == text2.substring(0, pointermid))

+      pointermin = pointermid;

+    else

+      pointermax = pointermid;

+    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);

+  }

+  var commonprefix = text1.substring(0, pointermid);

+  text1 = text1.substring(pointermid);

+  text2 = text2.substring(pointermid);

+  return [text1, text2, commonprefix];

+}

+

+

+function diff_suffix(text1, text2) {

+  // Trim off common suffix

+  var pointermin = 0;

+  var pointermax = Math.min(text1.length, text2.length);

+  var pointermid = pointermax;

+  while(pointermin < pointermid) {

+    if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid))

+      pointermin = pointermid;

+    else

+      pointermax = pointermid;

+    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);

+  }

+  var commonsuffix = text1.substring(text1.length-pointermid);

+  text1 = text1.substring(0, text1.length-pointermid);

+  text2 = text2.substring(0, text2.length-pointermid);

+  return [text1, text2, commonsuffix];

+}

+

+

+function diff_halfmatch(text1, text2) {

+  // Do the two texts share a substring which is at least half the length of the longer text?

+  var longtext = text1.length > text2.length ? text1 : text2;

+  var shorttext = text1.length > text2.length ? text2 : text1;

+  if (longtext.length < 10 || shorttext.length < 1)

+    return null; // Pointless.

+

+  function diff_halfmatch_i(longtext, shorttext, i) {

+    // Start with a 1/4 length substring at position i as a seed.

+    var seed = longtext.substring(i, i+Math.floor(longtext.length/4));

+    var j = -1;

+    var best_common = '';

+    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;

+    while ((j = shorttext.indexOf(seed, j+1)) != -1) {

+      var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j));

+      var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j));

+      if (best_common.length < (my_suffix[2] + my_prefix[2]).length) {

+        best_common = my_suffix[2] + my_prefix[2];

+        best_longtext_a = my_suffix[0];

+        best_longtext_b = my_prefix[0];

+        best_shorttext_a = my_suffix[1];

+        best_shorttext_b = my_prefix[1];

+      }

+    }

+    if (best_common.length >= longtext.length/2)

+      return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];

+    else

+      return null;

+  }

+

+  // First check if the second quarter is the seed for a half-match.

+  var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4));

+  // Check again based on the third quarter.

+  var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2));

+  var hm;

+  if (!hm1 && !hm2)

+    return null;

+  else if (!hm2)

+    hm = hm1;

+  else if (!hm1)

+    hm = hm2;

+  else // Both matched.  Select the longest.

+    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;

+

+  // A half-match was found, sort out the return data.

+  if (text1.length > text2.length) {

+    var text1_a = hm[0];

+    var text1_b = hm[1];

+    var text2_a = hm[2];

+    var text2_b = hm[3];

+  } else {

+    var text2_a = hm[0];

+    var text2_b = hm[1];

+    var text1_a = hm[2];

+    var text1_b = hm[3];

+  }

+  var mid_common = hm[4];

+  return [text1_a, text1_b, text2_a, text2_b, mid_common];

+}

+

+

+function diff_cleanup_semantic(diff) {

+  // Reduce the number of edits by eliminating semantically trivial equalities.

+  var changes = false;

+  var equalities = []; // Stack of indices where equalities are found.

+  var lastequality = null; // Always equal to equalities[equalities.length-1][1]

+  var pointer = 0; // Index of current position.

+  var length_changes1 = 0; // Number of characters that changed prior to the equality.

+  var length_changes2 = 0; // Number of characters that changed after the equality.

+  while (pointer < diff.length) {

+    if (diff[pointer][0] == 0) { // equality found

+      equalities.push(pointer);

+      length_changes1 = length_changes2;

+      length_changes2 = 0;

+      lastequality = diff[pointer][1];

+    } else { // an insertion or deletion

+      length_changes2 += diff[pointer][1].length;

+      if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) {

+        //alert("Splitting: '"+lastequality+"'");

+        diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record

+        diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.

+        equalities.pop();  // Throw away the equality we just deleted;

+        equalities.pop();  // Throw away the previous equality;

+        pointer = equalities.length ? equalities[equalities.length-1] : -1;

+        length_changes1 = 0; // Reset the counters.

+        length_changes2 = 0;

+        lastequality = null;

+        changes = true;

+      }

+    }

+    pointer++;

+  }

+

+  if (changes)

+    diff_cleanup_merge(diff);

+}

+

+

+function diff_cleanup_efficiency(diff) {

+  // Reduce the number of edits by eliminating operationally trivial equalities.

+  var changes = false;

+  var equalities = []; // Stack of indices where equalities are found.

+  var lastequality = ''; // Always equal to equalities[equalities.length-1][1]

+  var pointer = 0; // Index of current position.

+  var pre_ins = false; // Is there an insertion operation before the last equality.

+  var pre_del = false; // Is there an deletion operation before the last equality.

+  var post_ins = false; // Is there an insertion operation after the last equality.

+  var post_del = false; // Is there an deletion operation after the last equality.

+  while (pointer < diff.length) {

+    if (diff[pointer][0] == 0) { // equality found

+      if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) {

+        // Candidate found.

+        equalities.push(pointer);

+        pre_ins = post_ins;

+        pre_del = post_del;

+        lastequality = diff[pointer][1];

+      } else {

+        // Not a candidate, and can never become one.

+        equalities = [];

+        lastequality = '';

+      }

+      post_ins = post_del = false;

+    } else { // an insertion or deletion

+      if (diff[pointer][0] == -1)

+        post_del = true;

+      else

+        post_ins = true;

+      // Five types to be split:

+      // <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>

+      // <ins>A</ins>X<ins>C</ins><del>D</del>

+      // <ins>A</ins><del>B</del>X<ins>C</ins>

+      // <ins>A</del>X<ins>C</ins><del>D</del>

+      // <ins>A</ins><del>B</del>X<del>C</del>

+      if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) {

+        //alert("Splitting: '"+lastequality+"'");

+        diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record

+        diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.

+        equalities.pop();  // Throw away the equality we just deleted;

+        lastequality = '';

+        if (pre_ins && pre_del) {

+          // No changes made which could affect previous entry, keep going.

+          post_ins = post_del = true;

+          equalities = [];

+        } else {

+          equalities.pop();  // Throw away the previous equality;

+          pointer = equalities.length ? equalities[equalities.length-1] : -1;

+          post_ins = post_del = false;

+        }

+        changes = true;

+      }

+    }

+    pointer++;

+  }

+

+  if (changes)

+    diff_cleanup_merge(diff);

+}

+

+

+function diff_cleanup_merge(diff) {

+  // Reorder and merge like edit sections.  Merge equalities.

+  // Any edit section can move as long as it doesn't cross an equality.

+  diff.push([0, '']);  // Add a dummy entry at the end.

+  var pointer = 0;

+  var count_delete = 0;

+  var count_insert = 0;

+  var text_delete = '';

+  var text_insert = '';

+  var record_insert, record_delete;

+  var my_xfix;

+  while(pointer < diff.length) {

+    if (diff[pointer][0] == 1) {

+      count_insert++;

+      text_insert += diff[pointer][1];

+      pointer++;

+    } else if (diff[pointer][0] == -1) {

+      count_delete++;

+      text_delete += diff[pointer][1];

+      pointer++;

+    } else {  // Upon reaching an equality, check for prior redundancies.

+      if (count_delete > 1 || count_insert > 1) {

+        if (count_delete > 1 && count_insert > 1) {

+          // Factor out any common prefixies.

+          my_xfix = diff_prefix(text_insert, text_delete);

+          if (my_xfix[2] != '') {

+            if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) {

+              text_insert = my_xfix[0];

+              text_delete = my_xfix[1];

+              diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2];

+            }

+          }

+          // Factor out any common suffixies.

+          my_xfix = diff_suffix(text_insert, text_delete);

+          if (my_xfix[2] != '') {

+            text_insert = my_xfix[0];

+            text_delete = my_xfix[1];

+            diff[pointer][1] = my_xfix[2] + diff[pointer][1];

+          }

+        }

+        // Delete the offending records and add the merged ones.

+        if (count_delete == 0)

+          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]);

+        else if (count_insert == 0)

+          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]);

+        else

+          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]);

+        pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;

+      } else if (pointer != 0 && diff[pointer-1][0] == 0) {

+        // Merge this equality with the previous one.

+        diff[pointer-1][1] += diff[pointer][1];

+        diff.splice(pointer, 1);

+      } else {

+        pointer++;

+      }

+      count_insert = 0;

+      count_delete = 0;

+      text_delete = '';

+      text_insert = '';

+    }

+  }

+  if (diff[diff.length-1][1] == '')

+    diff.pop();  // Remove the dummy entry at the end.

+}

+

+

+function diff_addindex(diff) {

+  // Add an index to each tuple, represents where the tuple is located in text2.

+  // e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]]

+  var i = 0;

+  for (var x=0; x<diff.length; x++) {

+    diff[x].push(i);

+    if (diff[x][0] != -1)

+      i += diff[x][1].length;

+  }

+}

+

+

+function diff_xindex(diff, loc) {

+  // loc is a location in text1, compute and return the equivalent location in text2.

+  // e.g. "The cat" vs "The big cat", 1->1, 5->8

+  var chars1 = 0;

+  var chars2 = 0;

+  var last_chars1 = 0;

+  var last_chars2 = 0;

+  for (var x=0; x<diff.length; x++) {

+    if (diff[x][0] != 1) // Equality or deletion.

+      chars1 += diff[x][1].length;

+    if (diff[x][0] != -1) // Equality or insertion.

+      chars2 += diff[x][1].length;

+    if (chars1 > loc) // Overshot the location.

+      break;

+    last_chars1 = chars1;

+    last_chars2 = chars2;

+  }

+  if (diff.length != x && diff[x][0] == -1) // The location was deleted.

+    return last_chars2;

+  // Add the remaining character length.

+  return last_chars2 + (loc - last_chars1);

+}

+

+

+function diff_prettyhtml(diff) {

+  // Convert a diff array into a pretty HTML report.

+  diff_addindex(diff);

+  var html = '';

+  for (var x=0; x<diff.length; x++) {

+    var m = diff[x][0]; // Mode (-1=delete, 0=copy, 1=add)

+    var t = diff[x][1]; // Text of change.

+    var i = diff[x][2]; // Index of change.

+    t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");

+    t = t.replace(/\n/g, "&para;<BR>");

+    if (m == -1)

+      html += "<DEL STYLE='background:#FFE6E6;' TITLE='i="+i+"'>"+t+"</DEL>";

+    else if (m == 1)

+      html += "<INS STYLE='background:#E6FFE6;' TITLE='i="+i+"'>"+t+"</INS>";

+    else

+      html += "<SPAN TITLE='i="+i+"'>"+t+"</SPAN>";

+  }

+  return html;

+}

+

+

+  //////////////////////////////////////////////////////////////////////

+ //  Match                                                           //

+//////////////////////////////////////////////////////////////////////

+

+

+function match_getmaxbits() {

+  // Compute the number of bits in an int.

+  // The normal answer for JavaScript is 32.

+  var maxbits = 0;

+  var oldi = 1;

+  var newi = 2;

+  while (oldi != newi) {

+    maxbits++;

+    oldi = newi;

+    newi = newi << 1;

+  }

+  return maxbits;

+}

+var MATCH_MAXBITS = match_getmaxbits();

+

+

+function match_main(text, pattern, loc) {

+  // Locate the best instance of 'pattern' in 'text' near 'loc'.

+  loc = Math.max(0, Math.min(loc, text.length-pattern.length));

+  if (text == pattern) {

+    // Shortcut (potentially not guaranteed by the algorithm)

+    return 0;

+  } else if (text.length == 0) {

+    // Nothing to match.

+    return null;

+  } else if (text.substring(loc, loc + pattern.length) == pattern) {

+    // Perfect match at the perfect spot!  (Includes case of null pattern)

+    return loc;

+  } else {

+    // Do a fuzzy compare.

+    var match = match_bitap(text, pattern, loc);

+    return match;

+  }

+}

+

+

+function match_bitap(text, pattern, loc) {

+  // Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm.

+  if (pattern.length > MATCH_MAXBITS)

+    return alert("Pattern too long for this browser.");

+

+  // Initialise the alphabet.

+  var s = match_alphabet(pattern);

+

+  var score_text_length = text.length;

+  // Coerce the text length between reasonable maximums and minimums.

+  score_text_length = Math.max(score_text_length, MATCH_MINLENGTH);

+  score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH);

+

+  function match_bitap_score (e, x) {

+    // Compute and return the score for a match with e errors and x location.

+    var d = Math.abs(loc-x);

+    return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE));

+  }

+

+  // Highest score beyond which we give up.

+  var score_threshold = MATCH_THRESHOLD;

+  // Is there a nearby exact match? (speedup)

+  var best_loc = text.indexOf(pattern, loc);

+  if (best_loc != -1)

+    score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);

+  // What about in the other direction? (speedup)

+  best_loc = text.lastIndexOf(pattern, loc+pattern.length);

+  if (best_loc != -1)

+    score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);

+

+  // Initialise the bit arrays.

+  var r = Array();

+  var d = -1;

+  var matchmask = Math.pow(2, pattern.length-1);

+  best_loc = null;

+

+  var bin_min, bin_mid;

+  var bin_max = Math.max(loc+loc, text.length);

+  var last_rd;

+  for (var d=0; d<pattern.length; d++) {

+    // Scan for the best match; each iteration allows for one more error.

+    var rd = Array(text.length);

+

+    // Run a binary search to determine how far from 'loc' we can stray at this error level.

+    bin_min = loc;

+    bin_mid = bin_max;

+    while(bin_min < bin_mid) {

+      if (match_bitap_score(d, bin_mid) < score_threshold)

+        bin_min = bin_mid;

+      else

+        bin_max = bin_mid;

+      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);

+    }

+    bin_max = bin_mid; // Use the result from this iteration as the maximum for the next.

+    var start = Math.max(0, loc - (bin_mid - loc) - 1);

+    var finish = Math.min(text.length-1, pattern.length + bin_mid);

+

+    if (text.charAt(finish) == pattern.charAt(pattern.length-1))

+      rd[finish] = Math.pow(2, d+1)-1;

+    else

+      rd[finish] = Math.pow(2, d)-1;

+    for (var j=finish-1; j>=start; j--) {

+      // The alphabet (s) is a sparse hash, so the following lines generate warnings.

+      if (d == 0) // First pass: exact match.

+        rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)];

+      else // Subsequent passes: fuzzy match.

+        rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1];

+      if (rd[j] & matchmask) {

+        var score = match_bitap_score(d, j);

+        // This match will almost certainly be better than any existing match.  But check anyway.

+        if (score <= score_threshold) {

+          // Told you so.

+          score_threshold = score;

+          best_loc = j;

+          if (j > loc) {

+            // When passing loc, don't exceed our current distance from loc.

+            start = Math.max(0, loc - (j - loc));

+          } else {

+            // Already passed loc, downhill from here on in.

+            break;

+          }

+        }

+      }

+    }

+    if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels.

+      break;

+    last_rd = rd;

+  }

+  return best_loc;

+}

+

+

+function match_alphabet(pattern) {

+  // Initialise the alphabet for the Bitap algorithm.

+  var s = Object();

+  for (var i=0; i<pattern.length; i++)

+    s[pattern.charAt(i)] = 0;

+  for (var i=0; i<pattern.length; i++)

+    s[pattern.charAt(i)] |= Math.pow(2, pattern.length-i-1);

+  return s;

+}

+

+

+  //////////////////////////////////////////////////////////////////////

+ //  Patch                                                           //

+//////////////////////////////////////////////////////////////////////

+

+

+function patch_obj() {

+  // Constructor for a patch object.

+  this.diffs = [];

+  this.start1 = null;

+  this.start2 = null;

+  this.length1 = 0;

+  this.length2 = 0;

+

+  this.toString = function() {

+    // Emmulate GNU diff's format.

+    // Header: @@ -382,8 +481,9 @@

+    // Indicies are printed as 1-based, not 0-based.

+    var coords1, coords2;

+    if (this.length1 == 0)

+      coords1 = this.start1+",0";

+    else if (this.length1 == 1)

+      coords1 = this.start1+1;

+    else

+      coords1 = (this.start1+1)+","+this.length1;

+    if (this.length2 == 0)

+      coords2 = this.start2+",0";

+    else if (this.length2 == 1)

+      coords2 = this.start2+1;

+    else

+      coords2 = (this.start2+1)+","+this.length2;

+    var txt = "@@ -"+coords1+" +"+coords2+" @@\n";

+    // Escape the body of the patch with %xx notation.

+    for (var x=0; x<this.diffs.length; x++)

+      txt += ("- +".charAt(this.diffs[x][0]+1)) + encodeURI(this.diffs[x][1]) + "\n";

+    return txt.replace(/%20/g, ' ');

+  }

+

+  this.text1 = function() {

+    // Compute and return the source text (all equalities and deletions).

+    var txt = '';

+    for (var x=0; x<this.diffs.length; x++)

+      if (this.diffs[x][0] == 0 || this.diffs[x][0] == -1)

+        txt += this.diffs[x][1];

+    return txt;

+  }

+

+  this.text2 = function() {

+    // Compute and return the destination text (all equalities and insertions).

+    var txt = '';

+    for (var x=0; x<this.diffs.length; x++)

+      if (this.diffs[x][0] == 0 || this.diffs[x][0] == 1)

+        txt += this.diffs[x][1];

+    return txt;

+  }

+}

+

+

+function patch_addcontext(patch, text) {

+  var pattern = text.substring(patch.start2, patch.start2+patch.length1);

+  var padding = 0;

+  // Increase the context until we're unique (but don't let the pattern expand beyond MATCH_MAXBITS).

+  while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < MATCH_MAXBITS-PATCH_MARGIN-PATCH_MARGIN) {

+    padding += PATCH_MARGIN;

+    pattern = text.substring(patch.start2 - padding, patch.start2+patch.length1 + padding);

+  }

+  // Add one chunk for good luck.

+  padding += PATCH_MARGIN;

+  // Add the prefix.

+  var prefix = text.substring(patch.start2 - padding, patch.start2);

+  if (prefix != '')

+    patch.diffs.unshift([0, prefix]);

+  // Add the suffix

+  var suffix = text.substring(patch.start2+patch.length1, patch.start2+patch.length1 + padding);

+  if (suffix != '')

+    patch.diffs.push([0, suffix]);

+

+  // Roll back the start points.

+  patch.start1 -= prefix.length;

+  patch.start2 -= prefix.length;

+  // Extend the lengths.

+  patch.length1 += prefix.length + suffix.length;

+  patch.length2 += prefix.length + suffix.length;

+}

+

+

+function patch_make(text1, text2, diff) {

+  // Compute a list of patches to turn text1 into text2.

+  // Use diff if provided, otherwise compute it ourselves.

+  if (typeof diff == 'undefined') {

+    diff = diff_main(text1, text2, true);

+    if (diff.length > 2) {

+      diff_cleanup_semantic(diff);

+      diff_cleanup_efficiency(diff);

+    }

+  }

+  if (diff.length == 0)

+    return []; // Get rid of the null case.

+  var patches = [];

+  var patch = new patch_obj();

+  var char_count1 = 0; // Number of characters into the text1 string.

+  var char_count2 = 0; // Number of characters into the text2 string.

+  var last_type = null;

+  var prepatch_text = text1; // Recreate the patches to determine context info.

+  var postpatch_text = text1;

+  for (var x=0; x<diff.length; x++) {

+    var diff_type = diff[x][0];

+    var diff_text = diff[x][1];

+

+    if (patch.diffs.length == 0 && diff_type != 0) {

+      // A new patch starts here.

+      patch.start1 = char_count1;

+      patch.start2 = char_count2;

+    }

+

+    if (diff_type == 1) {

+      // Insertion

+      patch.diffs.push(diff[x]);

+      patch.length2 += diff_text.length;

+      postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);

+    } else if (diff_type == -1) {

+      // Deletion.

+      patch.length1 += diff_text.length;

+      patch.diffs.push(diff[x]);

+      postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);

+    } else if (diff_type == 0 && diff_text.length <= 2*PATCH_MARGIN && patch.diffs.length != 0 && diff.length != x+1) {

+      // Small equality inside a patch.

+      patch.diffs.push(diff[x]);

+      patch.length1 += diff_text.length;

+      patch.length2 += diff_text.length;

+    }

+

+    last_type = diff_type;

+    if (diff_type == 0 && diff_text.length >= 2*PATCH_MARGIN) {

+      // Time for a new patch.

+      if (patch.diffs.length != 0) {

+        patch_addcontext(patch, prepatch_text);

+        patches.push(patch);

+        var patch = new patch_obj();

+        last_type = null;

+        prepatch_text = postpatch_text;

+      }

+    }

+

+    // Update the current character count.

+    if (diff_type != 1)

+      char_count1 += diff_text.length;

+    if (diff_type != -1)

+      char_count2 += diff_text.length;

+  }

+  // Pick up the leftover patch if not empty.

+  if (patch.diffs.length != 0) {

+    patch_addcontext(patch, prepatch_text);

+    patches.push(patch);

+  }

+

+  return patches;

+}

+

+

+function patch_apply(patches, text) {

+  // Merge a set of patches onto the text.

+  // Return a patched text, as well as a list of true/false values indicating which patches were applied.

+  patch_splitmax(patches);

+  var results = [];

+  var delta = 0;

+  var expected_loc, start_loc;

+  var text1, text2;

+  var diff, mod, index1, index2;

+  for (var x=0; x<patches.length; x++) {

+    expected_loc = patches[x].start2 + delta;

+    text1 = patches[x].text1();

+    start_loc = match_main(text, text1, expected_loc);

+    if (start_loc == null) {

+      // No match found.  :(

+      results.push(false);

+    } else {

+      // Found a match.  :)

+      results.push(true);

+      delta = start_loc - expected_loc;

+      text2 = text.substring(start_loc, start_loc + text1.length);

+      if (text1 == text2) {

+        // Perfect match, just shove the replacement text in.

+        text = text.substring(0, start_loc) + patches[x].text2() + text.substring(start_loc + text1.length);

+      } else {

+        // Imperfect match.  Run a diff to get a framework of equivalent indicies.

+        diff = diff_main(text1, text2, false);

+        index1 = 0;

+        for (var y=0; y<patches[x].diffs.length; y++) {

+          mod = patches[x].diffs[y];

+          if (mod[0] != 0)

+            index2 = diff_xindex(diff, index1);

+          if (mod[0] == 1) // Insertion

+            text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);

+          else if (mod[0] == -1) // Deletion

+            text = text.substring(0, start_loc + index2) + text.substring(start_loc + diff_xindex(diff, index1 + mod[1].length));

+          if (mod[0] != -1)

+            index1 += mod[1].length;

+        }

+      }

+    }

+  }

+  return [text, results];

+}

+

+

+function patch_splitmax(patches) {

+  // Look through the patches and break up any which are longer than the maximum limit of the match algorithm.

+  var bigpatch, patch, patch_size, start1, start2, diff_type, diff_text, precontext, postcontext, empty;

+  for (var x=0; x<patches.length; x++) {

+    if (patches[x].length1 > MATCH_MAXBITS) {

+      bigpatch = patches[x];

+      // Remove the big old patch.

+      patches.splice(x, 1);

+      patch_size = MATCH_MAXBITS;

+      start1 = bigpatch.start1;

+      start2 = bigpatch.start2;

+      precontext = '';

+      while (bigpatch.diffs.length != 0) {

+        // Create one of several smaller patches.

+        patch = new patch_obj();

+        empty = true;

+        patch.start1 = start1 - precontext.length;

+        patch.start2 = start2 - precontext.length;

+        if (precontext  != '') {

+          patch.length1 = patch.length2 = precontext.length;

+          patch.diffs.push([0, precontext]);

+        }

+        while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) {

+          diff_type = bigpatch.diffs[0][0];

+          diff_text = bigpatch.diffs[0][1];

+          if (diff_type == 1) {

+            // Insertions are harmless.

+            patch.length2 += diff_text.length;

+            start2 += diff_text.length;

+            patch.diffs.push(bigpatch.diffs.shift());

+            empty = false;

+          } else {

+            // Deletion or equality.  Only take as much as we can stomach.

+            diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN);

+            patch.length1 += diff_text.length;

+            start1 += diff_text.length;

+            if (diff_type == 0) {

+              patch.length2 += diff_text.length;

+              start2 += diff_text.length;

+            } else {

+              empty = false;

+            }

+            patch.diffs.push([diff_type, diff_text]);

+            if (diff_text == bigpatch.diffs[0][1])

+              bigpatch.diffs.shift();

+            else

+              bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);

+          }

+        }

+        // Compute the head context for the next patch.

+        precontext = patch.text2();

+        precontext = precontext.substring(precontext.length - PATCH_MARGIN);

+        // Append the end context for this patch.

+        postcontext = bigpatch.text1().substring(0, PATCH_MARGIN);

+        if (postcontext  != '') {

+          patch.length1 += postcontext.length;

+          patch.length2 += postcontext.length;

+          if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0)

+            patch.diffs[patch.diffs.length-1][1] += postcontext;

+          else

+            patch.diffs.push([0, postcontext]);

+        }

+        if (!empty)

+          patches.splice(x++, 0, patch);

+      }

+    }

+  }

+}

+

+

+function patch_totext(patches) {

+  // Take a list of patches and return a textual representation.

+  var text = '';

+  for (var x=0; x<patches.length; x++)

+    text += patches[x];

+  return text;

+}

+

+

+function patch_fromtext(text) {

+  // Take a textual representation of patches and return a list of patch objects.

+  var patches = [];

+  text = text.split('\n');

+  var patch, m, chars1, chars2, sign, line;

+  while (text.length != 0) {

+    m = text[0].match(/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/);

+    if (!m)

+      return alert("Invalid patch string:\n"+text[0]);

+    patch = new patch_obj();

+    patches.push(patch);

+    patch.start1 = parseInt(m[1]);

+    if (m[2] == '') {

+      patch.start1--;

+      patch.length1 = 1;

+    } else if (m[2] == '0') {

+      patch.length1 = 0;

+    } else {

+      patch.start1--;

+      patch.length1 = parseInt(m[2]);

+    }

+

+    patch.start2 = parseInt(m[3]);

+    if (m[4] == '') {

+      patch.start2--;

+      patch.length2 = 1;

+    } else if (m[4] == '0') {

+      patch.length2 = 0;

+    } else {

+      patch.start2--;

+      patch.length2 = parseInt(m[4]);

+    }

+    text.shift();

+

+    while (text.length != 0) {

+      sign = text[0].charAt(0);

+      line = decodeURIComponent(text[0].substring(1));

+      if (sign == '-') {

+        // Deletion.

+        patch.diffs.push([-1, line]);

+      } else if (sign == '+') {

+        // Insertion.

+        patch.diffs.push([1, line]);

+      } else if (sign == ' ') {

+        // Minor equality.

+        patch.diffs.push([0, line]);

+      } else if (sign == '@') {

+        // Start of next patch.

+        break;

+      } else if (sign == '') {

+        // Blank line?  Whatever.

+      } else {

+        // WTF?

+        return alert("Invalid patch mode: '"+sign+"'\n"+line);

+      }

+      text.shift();

+    }

+  }

+  return patches;

+}

+

+// EOF

 
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License (www.gnu.org) for more details.
-
-
-// Constants.
-// Redefine these in your program to override the defaults.
-
-// Number of seconds to map a diff before giving up.  (0 for infinity)
-var DIFF_TIMEOUT = 1.0;
-// Cost of an empty edit operation in terms of edit characters.
-var DIFF_EDIT_COST = 4;
-// Tweak the relative importance (0.0 = accuracy, 1.0 = proximity)
-var MATCH_BALANCE = 0.5;
-// At what point is no match declared (0.0 = perfection, 1.0 = very loose)
-var MATCH_THRESHOLD = 0.5;
-// The min and max cutoffs used when computing text lengths.
-var MATCH_MINLENGTH = 100;
-var MATCH_MAXLENGTH = 1000;
-// Chunk size for context length.
-var PATCH_MARGIN = 4;
-
-
-  //////////////////////////////////////////////////////////////////////
- //  Diff                                                            //
-//////////////////////////////////////////////////////////////////////
-
-// The data structure representing a diff is an array of tuples:
-// [[-1, "Hello"], [1, "Goodbye"], [0, " world."]]
-// which means: delete "Hello", add "Goodbye" and keep " world."
-
-
-function diff_main(text1, text2, checklines) {
-  // Find the differences between two texts.  Return an array of changes.
-  // If checklines is present and false, then don't run a line-level diff first to identify the changed areas.
-  // Check for equality (speedup)
-  if (text1 == text2)
-    return [[0, text1]];
-
-  if (typeof checklines == 'undefined')
-    checklines = true;
-
-  var a;
-  // Trim off common prefix (speedup)
-  a = diff_prefix(text1, text2);
-  text1 = a[0];
-  text2 = a[1];
-  var commonprefix = a[2];
-
-  // Trim off common suffix (speedup)
-  a = diff_suffix(text1, text2);
-  text1 = a[0];
-  text2 = a[1];
-  var commonsuffix = a[2];
-
-  var diff, i;
-  var longtext = text1.length > text2.length ? text1 : text2;
-  var shorttext = text1.length > text2.length ? text2 : text1;
-
-  if (!text1) {  // Just add some text (speedup)
-    diff = [[1, text2]];
-  } else if (!text2) { // Just delete some text (speedup)
-    diff = [[-1, text1]];
-  } else if ((i = longtext.indexOf(shorttext)) != -1) {
-    // Shorter text is inside the longer text (speedup)
-    diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]];
-    // Swap insertions for deletions if diff is reversed.
-    if (text1.length > text2.length)
-      diff[0][0] = diff[2][0] = -1;
-  } else {
-    longtext = shorttext = null; // Garbage collect
-    // Check to see if the problem can be split in two.
-    var hm = diff_halfmatch(text1, text2);
-    if (hm) {
-      // A half-match was found, sort out the return data.
-      var text1_a = hm[0];
-      var text1_b = hm[1];
-      var text2_a = hm[2];
-      var text2_b = hm[3];
-      var mid_common = hm[4];
-      // Send both pairs off for separate processing.
-      var diff_a = diff_main(text1_a, text2_a, checklines);
-      var diff_b = diff_main(text1_b, text2_b, checklines);
-      // Merge the results.
-      diff = diff_a.concat([[0, mid_common]], diff_b);
-    } else {
-      // Perform a real diff.
-      if (checklines && text1.length + text2.length < 250)
-        checklines = false; // Too trivial for the overhead.
-      if (checklines) {
-        // Scan the text on a line-by-line basis first.
-        a = diff_lines2chars(text1, text2);
-        text1 = a[0];
-        text2 = a[1];
-        var linearray = a[2];
-      }
-      diff = diff_map(text1, text2);
-      if (!diff) // No acceptable result.
-        diff = [[-1, text1], [1, text2]];
-      if (checklines) {
-        diff_chars2lines(diff, linearray); // Convert the diff back to original text.
-        diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines)
-
-        // Rediff any replacement blocks, this time on character-by-character basis.
-        diff.push([0, '']);  // Add a dummy entry at the end.
-        var pointer = 0;
-        var count_delete = 0;
-        var count_insert = 0;
-        var text_delete = '';
-        var text_insert = '';
-        while(pointer < diff.length) {
-          if (diff[pointer][0] == 1) {
-            count_insert++;
-            text_insert += diff[pointer][1];
-          } else if (diff[pointer][0] == -1) {
-            count_delete++;
-            text_delete += diff[pointer][1];
-          } else {  // Upon reaching an equality, check for prior redundancies.
-            if (count_delete >= 1 && count_insert >= 1) {
-              // Delete the offending records and add the merged ones.
-              a = diff_main(text_delete, text_insert, false);
-              diff.splice(pointer - count_delete - count_insert, count_delete + count_insert);
-              pointer = pointer - count_delete - count_insert;
-              for (i=a.length-1; i>=0; i--)
-                diff.splice(pointer, 0, a[i]);
-              pointer = pointer + a.length;
-            }
-            count_insert = 0;
-            count_delete = 0;
-            text_delete = '';
-            text_insert = '';
-          }
-          pointer++;
-        }
-        diff.pop();  // Remove the dummy entry at the end.
-
-      }
-    }
-  }
-
-  if (commonprefix)
-    diff.unshift([0, commonprefix]);
-  if (commonsuffix)
-    diff.push([0, commonsuffix]);
-  diff_cleanup_merge(diff);
-  return diff;
-}
-
-
-function diff_lines2chars(text1, text2) {
-  // Split text into an array of strings.
-  // Reduce the texts to a string of hashes where each character represents one line.
-  var linearray = new Array();  // linearray[4] == "Hello\n"
-  var linehash = new Object();  // linehash["Hello\n"] == 4
-
-  // "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098)
-  // So we'll insert a junk entry to avoid generating a null character.
-  linearray.push('');
-
-  function diff_lines2chars_munge(text) {
-    // My first ever closure!
-    var i, line;
-    var chars = '';
-    while (text) {
-      i = text.indexOf('\n');
-      if (i == -1)
-        i = text.length;
-      line = text.substring(0, i+1);
-      text = text.substring(i+1);
-      if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) {
-        chars += String.fromCharCode(linehash[line]);
-      } else {
-        linearray.push(line);
-        linehash[line] = linearray.length - 1;
-        chars += String.fromCharCode(linearray.length - 1);
-      }
-    }
-    return chars;
-  }
-
-  var chars1 = diff_lines2chars_munge(text1);
-  var chars2 = diff_lines2chars_munge(text2);
-  return [chars1, chars2, linearray];
-}
-
-
-function diff_chars2lines(diff, linearray) {
-  // Rehydrate the text in a diff from a string of line hashes to real lines of text.
-  var chars, text;
-  for (var x=0; x<diff.length; x++) {
-    chars = diff[x][1];
-    text = '';
-    for (var y=0; y<chars.length; y++)
-      text += linearray[chars.charCodeAt(y)];
-    diff[x][1] = text;
-  }
-}
-
-
-function diff_map(text1, text2) {
-  // Explore the intersection points between the two texts.
-  var now = new Date();
-  var ms_end = now.getTime() + DIFF_TIMEOUT * 1000; // Don't run for too long.
-  var max = (text1.length + text2.length) / 2;
-  var v_map1 = new Array();
-  var v_map2 = new Array();
-  var v1 = new Object();
-  var v2 = new Object();
-  v1[1] = 0;
-  v2[1] = 0;
-  var x, y;
-  var footstep; // Used to track overlapping paths.
-  var footsteps = new Object();
-  var done = false;
-  var hasOwnProperty = !!(footsteps.hasOwnProperty);
-  // If the total number of characters is odd, then the front path will collide with the reverse path.
-  var front = (text1.length + text2.length) % 2;
-  for (var d=0; d<max; d++) {
-    now = new Date();
-    if (DIFF_TIMEOUT > 0 && now.getTime() > ms_end) // Timeout reached
-      return null;
-
-    // Walk the front path one step.
-    v_map1[d] = new Object();
-    for (var k=-d; k<=d; k+=2) {
-      if (k == -d || k != d && v1[k-1] < v1[k+1])
-        x = v1[k+1];
-      else
-        x = v1[k-1]+1;
-      y = x - k;
-      footstep = x+","+y;
-      if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
-        done = true;
-      if (!front)
-        footsteps[footstep] = d;
-      while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) {
-        x++; y++;
-        footstep = x+","+y;
-        if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
-          done = true;
-        if (!front)
-          footsteps[footstep] = d;
-      }
-      v1[k] = x;
-      v_map1[d][x+","+y] = true;
-      if (done) {
-        // Front path ran over reverse path.
-        v_map2 = v_map2.slice(0, footsteps[footstep]+1);
-        var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y));
-        return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y)));
-      }
-    }
-
-    // Walk the reverse path one step.
-    v_map2[d] = new Object();
-    for (var k=-d; k<=d; k+=2) {
-      if (k == -d || k != d && v2[k-1] < v2[k+1])
-        x = v2[k+1];
-      else
-        x = v2[k-1]+1;
-      y = x - k;
-      footstep = (text1.length-x)+","+(text2.length-y);
-      if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
-        done = true;
-      if (front)
-        footsteps[footstep] = d;
-      while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) {
-        x++; y++;
-        footstep = (text1.length-x)+","+(text2.length-y);
-        if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined)))
-          done = true;
-        if (front)
-          footsteps[footstep] = d;
-      }
-      v2[k] = x;
-      v_map2[d][x+","+y] = true;
-      if (done) {
-        // Reverse path ran over front path.
-        v_map1 = v_map1.slice(0, footsteps[footstep]+1);
-        var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y));
-        return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y)));
-      }
-    }
-  }
-  // Number of diffs equals number of characters, no commonality at all.
-  return null;
-}
-
-
-function diff_path1(v_map, text1, text2) {
-  // Work from the middle back to the start to determine the path.
-  var path = [];
-  var x = text1.length;
-  var y = text2.length;
-  var last_op = null;
-  for (var d=v_map.length-2; d>=0; d--) {
-    while(1) {
-      if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {
-        x--;
-        if (last_op === -1)
-          path[0][1] = text1.charAt(x) + path[0][1];
-        else
-          path.unshift([-1, text1.charAt(x)]);
-        last_op = -1;
-        break;
-      } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {
-        y--;
-        if (last_op === 1)
-          path[0][1] = text2.charAt(y) + path[0][1];
-        else
-          path.unshift([1, text2.charAt(y)]);
-        last_op = 1;
-        break;
-      } else {
-        x--;
-        y--;
-        //if (text1.charAt(x) != text2.charAt(y))
-        //  return alert("No diagonal.  Can't happen. (diff_path1)");
-        if (last_op === 0)
-          path[0][1] = text1.charAt(x) + path[0][1];
-        else
-          path.unshift([0, text1.charAt(x)]);
-        last_op = 0;
-      }
-    }
-  }
-  return path;
-}
-
-
-function diff_path2(v_map, text1, text2) {
-  // Work from the middle back to the end to determine the path.
-  var path = [];
-  var x = text1.length;
-  var y = text2.length;
-  var last_op = null;
-  for (var d=v_map.length-2; d>=0; d--) {
-    while(1) {
-      if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) {
-        x--;
-        if (last_op === -1)
-          path[path.length-1][1] += text1.charAt(text1.length-x-1);
-        else
-          path.push([-1, text1.charAt(text1.length-x-1)]);
-        last_op = -1;
-        break;
-      } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) {
-        y--;
-        if (last_op === 1)
-          path[path.length-1][1] += text2.charAt(text2.length-y-1);
-        else
-          path.push([1, text2.charAt(text2.length-y-1)]);
-        last_op = 1;
-        break;
-      } else {
-        x--;
-        y--;
-        //if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1))
-        //  return alert("No diagonal.  Can't happen. (diff_path2)");
-        if (last_op === 0)
-          path[path.length-1][1] += text1.charAt(text1.length-x-1);
-        else
-          path.push([0, text1.charAt(text1.length-x-1)]);
-        last_op = 0;
-      }
-    }
-  }
-  return path;
-}
-
-
-function diff_prefix(text1, text2) {
-  // Trim off common prefix
-  var pointermin = 0;
-  var pointermax = Math.min(text1.length, text2.length);
-  var pointermid = pointermax;
-  while(pointermin < pointermid) {
-    if (text1.substring(0, pointermid) == text2.substring(0, pointermid))
-      pointermin = pointermid;
-    else
-      pointermax = pointermid;
-    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
-  }
-  var commonprefix = text1.substring(0, pointermid);
-  text1 = text1.substring(pointermid);
-  text2 = text2.substring(pointermid);
-  return [text1, text2, commonprefix];
-}
-
-
-function diff_suffix(text1, text2) {
-  // Trim off common suffix
-  var pointermin = 0;
-  var pointermax = Math.min(text1.length, text2.length);
-  var pointermid = pointermax;
-  while(pointermin < pointermid) {
-    if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid))
-      pointermin = pointermid;
-    else
-      pointermax = pointermid;
-    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
-  }
-  var commonsuffix = text1.substring(text1.length-pointermid);
-  text1 = text1.substring(0, text1.length-pointermid);
-  text2 = text2.substring(0, text2.length-pointermid);
-  return [text1, text2, commonsuffix];
-}
-
-
-function diff_halfmatch(text1, text2) {
-  // Do the two texts share a substring which is at least half the length of the longer text?
-  var longtext = text1.length > text2.length ? text1 : text2;
-  var shorttext = text1.length > text2.length ? text2 : text1;
-  if (longtext.length < 10 || shorttext.length < 1)
-    return null; // Pointless.
-
-  function diff_halfmatch_i(longtext, shorttext, i) {
-    // Start with a 1/4 length substring at position i as a seed.
-    var seed = longtext.substring(i, i+Math.floor(longtext.length/4));
-    var j = -1;
-    var best_common = '';
-    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
-    while ((j = shorttext.indexOf(seed, j+1)) != -1) {
-      var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j));
-      var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j));
-      if (best_common.length < (my_suffix[2] + my_prefix[2]).length) {
-        best_common = my_suffix[2] + my_prefix[2];
-        best_longtext_a = my_suffix[0];
-        best_longtext_b = my_prefix[0];
-        best_shorttext_a = my_suffix[1];
-        best_shorttext_b = my_prefix[1];
-      }
-    }
-    if (best_common.length >= longtext.length/2)
-      return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];
-    else
-      return null;
-  }
-
-  // First check if the second quarter is the seed for a half-match.
-  var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4));
-  // Check again based on the third quarter.
-  var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2));
-  var hm;
-  if (!hm1 && !hm2)
-    return null;
-  else if (!hm2)
-    hm = hm1;
-  else if (!hm1)
-    hm = hm2;
-  else // Both matched.  Select the longest.
-    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
-
-  // A half-match was found, sort out the return data.
-  if (text1.length > text2.length) {
-    var text1_a = hm[0];
-    var text1_b = hm[1];
-    var text2_a = hm[2];
-    var text2_b = hm[3];
-  } else {
-    var text2_a = hm[0];
-    var text2_b = hm[1];
-    var text1_a = hm[2];
-    var text1_b = hm[3];
-  }
-  var mid_common = hm[4];
-  return [text1_a, text1_b, text2_a, text2_b, mid_common];
-}
-
-
-function diff_cleanup_semantic(diff) {
-  // Reduce the number of edits by eliminating semantically trivial equalities.
-  var changes = false;
-  var equalities = []; // Stack of indices where equalities are found.
-  var lastequality = null; // Always equal to equalities[equalities.length-1][1]
-  var pointer = 0; // Index of current position.
-  var length_changes1 = 0; // Number of characters that changed prior to the equality.
-  var length_changes2 = 0; // Number of characters that changed after the equality.
-  while (pointer < diff.length) {
-    if (diff[pointer][0] == 0) { // equality found
-      equalities.push(pointer);
-      length_changes1 = length_changes2;
-      length_changes2 = 0;
-      lastequality = diff[pointer][1];
-    } else { // an insertion or deletion
-      length_changes2 += diff[pointer][1].length;
-      if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) {
-        //alert("Splitting: '"+lastequality+"'");
-        diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record
-        diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.
-        equalities.pop();  // Throw away the equality we just deleted;
-        equalities.pop();  // Throw away the previous equality;
-        pointer = equalities.length ? equalities[equalities.length-1] : -1;
-        length_changes1 = 0; // Reset the counters.
-        length_changes2 = 0;
-        lastequality = null;
-        changes = true;
-      }
-    }
-    pointer++;
-  }
-
-  if (changes)
-    diff_cleanup_merge(diff);
-}
-
-
-function diff_cleanup_efficiency(diff) {
-  // Reduce the number of edits by eliminating operationally trivial equalities.
-  var changes = false;
-  var equalities = []; // Stack of indices where equalities are found.
-  var lastequality = ''; // Always equal to equalities[equalities.length-1][1]
-  var pointer = 0; // Index of current position.
-  var pre_ins = false; // Is there an insertion operation before the last equality.
-  var pre_del = false; // Is there an deletion operation before the last equality.
-  var post_ins = false; // Is there an insertion operation after the last equality.
-  var post_del = false; // Is there an deletion operation after the last equality.
-  while (pointer < diff.length) {
-    if (diff[pointer][0] == 0) { // equality found
-      if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) {
-        // Candidate found.
-        equalities.push(pointer);
-        pre_ins = post_ins;
-        pre_del = post_del;
-        lastequality = diff[pointer][1];
-      } else {
-        // Not a candidate, and can never become one.
-        equalities = [];
-        lastequality = '';
-      }
-      post_ins = post_del = false;
-    } else { // an insertion or deletion
-      if (diff[pointer][0] == -1)
-        post_del = true;
-      else
-        post_ins = true;
-      // Five types to be split:
-      // <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
-      // <ins>A</ins>X<ins>C</ins><del>D</del>
-      // <ins>A</ins><del>B</del>X<ins>C</ins>
-      // <ins>A</del>X<ins>C</ins><del>D</del>
-      // <ins>A</ins><del>B</del>X<del>C</del>
-      if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) {
-        //alert("Splitting: '"+lastequality+"'");
-        diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record
-        diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert.
-        equalities.pop();  // Throw away the equality we just deleted;
-        lastequality = '';
-        if (pre_ins && pre_del) {
-          // No changes made which could affect previous entry, keep going.
-          post_ins = post_del = true;
-          equalities = [];
-        } else {
-          equalities.pop();  // Throw away the previous equality;
-          pointer = equalities.length ? equalities[equalities.length-1] : -1;
-          post_ins = post_del = false;
-        }
-        changes = true;
-      }
-    }
-    pointer++;
-  }
-
-  if (changes)
-    diff_cleanup_merge(diff);
-}
-
-
-function diff_cleanup_merge(diff) {
-  // Reorder and merge like edit sections.  Merge equalities.
-  // Any edit section can move as long as it doesn't cross an equality.
-  diff.push([0, '']);  // Add a dummy entry at the end.
-  var pointer = 0;
-  var count_delete = 0;
-  var count_insert = 0;
-  var text_delete = '';
-  var text_insert = '';
-  var record_insert, record_delete;
-  var my_xfix;
-  while(pointer < diff.length) {
-    if (diff[pointer][0] == 1) {
-      count_insert++;
-      text_insert += diff[pointer][1];
-      pointer++;
-    } else if (diff[pointer][0] == -1) {
-      count_delete++;
-      text_delete += diff[pointer][1];
-      pointer++;
-    } else {  // Upon reaching an equality, check for prior redundancies.
-      if (count_delete > 1 || count_insert > 1) {
-        if (count_delete > 1 && count_insert > 1) {
-          // Factor out any common prefixies.
-          my_xfix = diff_prefix(text_insert, text_delete);
-          if (my_xfix[2] != '') {
-            if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) {
-              text_insert = my_xfix[0];
-              text_delete = my_xfix[1];
-              diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2];
-            }
-          }
-          // Factor out any common suffixies.
-          my_xfix = diff_suffix(text_insert, text_delete);
-          if (my_xfix[2] != '') {
-            text_insert = my_xfix[0];
-            text_delete = my_xfix[1];
-            diff[pointer][1] = my_xfix[2] + diff[pointer][1];
-          }
-        }
-        // Delete the offending records and add the merged ones.
-        if (count_delete == 0)
-          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]);
-        else if (count_insert == 0)
-          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]);
-        else
-          diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]);
-        pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;
-      } else if (pointer != 0 && diff[pointer-1][0] == 0) {
-        // Merge this equality with the previous one.
-        diff[pointer-1][1] += diff[pointer][1];
-        diff.splice(pointer, 1);
-      } else {
-        pointer++;
-      }
-      count_insert = 0;
-      count_delete = 0;
-      text_delete = '';
-      text_insert = '';
-    }
-  }
-  if (diff[diff.length-1][1] == '')
-    diff.pop();  // Remove the dummy entry at the end.
-}
-
-
-function diff_addindex(diff) {
-  // Add an index to each tuple, represents where the tuple is located in text2.
-  // e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]]
-  var i = 0;
-  for (var x=0; x<diff.length; x++) {
-    diff[x].push(i);
-    if (diff[x][0] != -1)
-      i += diff[x][1].length;
-  }
-}
-
-
-function diff_xindex(diff, loc) {
-  // loc is a location in text1, compute and return the equivalent location in text2.
-  // e.g. "The cat" vs "The big cat", 1->1, 5->8
-  var chars1 = 0;
-  var chars2 = 0;
-  var last_chars1 = 0;
-  var last_chars2 = 0;
-  for (var x=0; x<diff.length; x++) {
-    if (diff[x][0] != 1) // Equality or deletion.
-      chars1 += diff[x][1].length;
-    if (diff[x][0] != -1) // Equality or insertion.
-      chars2 += diff[x][1].length;
-    if (chars1 > loc) // Overshot the location.
-      break;
-    last_chars1 = chars1;
-    last_chars2 = chars2;
-  }
-  if (diff.length != x && diff[x][0] == -1) // The location was deleted.
-    return last_chars2;
-  // Add the remaining character length.
-  return last_chars2 + (loc - last_chars1);
-}
-
-
-function diff_prettyhtml(diff) {
-  // Convert a diff array into a pretty HTML report.
-  diff_addindex(diff);
-  var html = '';
-  for (var x=0; x<diff.length; x++) {
-    var m = diff[x][0]; // Mode (-1=delete, 0=copy, 1=add)
-    var t = diff[x][1]; // Text of change.
-    var i = diff[x][2]; // Index of change.
-    t = t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
-    t = t.replace(/\n/g, "&para;<BR>");
-    if (m == -1)
-      html += "<DEL STYLE='background:#FFE6E6;' TITLE='i="+i+"'>"+t+"</DEL>";
-    else if (m == 1)
-      html += "<INS STYLE='background:#E6FFE6;' TITLE='i="+i+"'>"+t+"</INS>";
-    else
-      html += "<SPAN TITLE='i="+i+"'>"+t+"</SPAN>";
-  }
-  return html;
-}
-
-
-  //////////////////////////////////////////////////////////////////////
- //  Match                                                           //
-//////////////////////////////////////////////////////////////////////
-
-
-function match_getmaxbits() {
-  // Compute the number of bits in an int.
-  // The normal answer for JavaScript is 32.
-  var maxbits = 0;
-  var oldi = 1;
-  var newi = 2;
-  while (oldi != newi) {
-    maxbits++;
-    oldi = newi;
-    newi = newi << 1;
-  }
-  return maxbits;
-}
-var MATCH_MAXBITS = match_getmaxbits();
-
-
-function match_main(text, pattern, loc) {
-  // Locate the best instance of 'pattern' in 'text' near 'loc'.
-  loc = Math.max(0, Math.min(loc, text.length-pattern.length));
-  if (text == pattern) {
-    // Shortcut (potentially not guaranteed by the algorithm)
-    return 0;
-  } else if (text.length == 0) {
-    // Nothing to match.
-    return null;
-  } else if (text.substring(loc, loc + pattern.length) == pattern) {
-    // Perfect match at the perfect spot!  (Includes case of null pattern)
-    return loc;
-  } else {
-    // Do a fuzzy compare.
-    var match = match_bitap(text, pattern, loc);
-    return match;
-  }
-}
-
-
-function match_bitap(text, pattern, loc) {
-  // Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm.
-  if (pattern.length > MATCH_MAXBITS)
-    return alert("Pattern too long for this browser.");
-
-  // Initialise the alphabet.
-  var s = match_alphabet(pattern);
-
-  var score_text_length = text.length;
-  // Coerce the text length between reasonable maximums and minimums.
-  score_text_length = Math.max(score_text_length, MATCH_MINLENGTH);
-  score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH);
-
-  function match_bitap_score (e, x) {
-    // Compute and return the score for a match with e errors and x location.
-    var d = Math.abs(loc-x);
-    return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE));
-  }
-
-  // Highest score beyond which we give up.
-  var score_threshold = MATCH_THRESHOLD;
-  // Is there a nearby exact match? (speedup)
-  var best_loc = text.indexOf(pattern, loc);
-  if (best_loc != -1)
-    score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);
-  // What about in the other direction? (speedup)
-  best_loc = text.lastIndexOf(pattern, loc+pattern.length);
-  if (best_loc != -1)
-    score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold);
-
-  // Initialise the bit arrays.
-  var r = Array();
-  var d = -1;
-  var matchmask = Math.pow(2, pattern.length-1);
-  best_loc = null;
-
-  var bin_min, bin_mid;
-  var bin_max = Math.max(loc+loc, text.length);
-  var last_rd;
-  for (var d=0; d<pattern.length; d++) {
-    // Scan for the best match; each iteration allows for one more error.
-    var rd = Array(text.length);
-
-    // Run a binary search to determine how far from 'loc' we can stray at this error level.
-    bin_min = loc;
-    bin_mid = bin_max;
-    while(bin_min < bin_mid) {
-      if (match_bitap_score(d, bin_mid) < score_threshold)
-        bin_min = bin_mid;
-      else
-        bin_max = bin_mid;
-      bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
-    }
-    bin_max = bin_mid; // Use the result from this iteration as the maximum for the next.
-    var start = Math.max(0, loc - (bin_mid - loc) - 1);
-    var finish = Math.min(text.length-1, pattern.length + bin_mid);
-
-    if (text.charAt(finish) == pattern.charAt(pattern.length-1))
-      rd[finish] = Math.pow(2, d+1)-1;
-    else
-      rd[finish] = Math.pow(2, d)-1;
-    for (var j=finish-1; j>=start; j--) {
-      // The alphabet (s) is a sparse hash, so the following lines generate warnings.
-      if (d == 0) // First pass: exact match.
-        rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)];
-      else // Subsequent passes: fuzzy match.
-        rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1];
-      if (rd[j] & matchmask) {
-        var score = match_bitap_score(d, j);
-        // This match will almost certainly be better than any existing match.  But check anyway.
-        if (score <= score_threshold) {
-          // Told you so.
-          score_threshold = score;
-          best_loc = j;
-          if (j > loc) {
-            // When passing loc, don't exceed our current distance from loc.
-            start = Math.max(0, loc - (j - loc));
-          } else {
-            // Already passed loc, downhill from here on in.
-            break;
-          }
-        }
-      }
-    }
-    if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels.
-      break;
-    last_rd = rd;
-  }
-  return best_loc;
-}
-
-
-function match_alphabet(pattern) {
-  // Initialise the alphabet for the Bitap algorithm.
-  var s = Object();
-  for (var i=0; i<pattern.length; i++)
-    s[pattern.charAt(i)] = 0;
-  for (var i=0; i<pattern.length; i++)
-    s[pattern.charAt(i)] |= Math.pow(2, pattern.length-i-1);
-  return s;
-}
-
-
-  //////////////////////////////////////////////////////////////////////
- //  Patch                                                           //
-//////////////////////////////////////////////////////////////////////
-
-
-function patch_obj() {
-  // Constructor for a patch object.
-  this.diffs = [];
-  this.start1 = null;
-  this.start2 = null;
-  this.length1 = 0;
-  this.length2 = 0;
-
-  this.toString = function() {
-    // Emmulate GNU diff's format.
-    // Header: @@ -382,8 +481,9 @@
-    // Indicies are printed as 1-based, not 0-based.
-    var coords1, coords2;
-    if (this.length1 == 0)
-      coords1 = this.start1+",0";
-    else if (this.length1 == 1)
-      coords1 = this.start1+1;
-    else
-      coords1 = (this.start1+1)+","+this.length1;
-    if (this.length2 == 0)
-      coords2 = this.start2+",0";
-    else if (this.length2 == 1)
-      coords2 = this.start2+1;
-    else
-      coords2 = (this.start2+1)+","+this.length2;
-    var txt = "@@ -"+coords1+" +"+coords2+" @@\n";
-    // Escape the body of the patch with %xx notation.
-    for (var x=0; x<this.diffs.length; x++)
-      txt += ("- +".charAt(this.diffs[x][0]+1)) + encodeURI(this.diffs[x][1]) + "\n";
-    return txt.replace(/%20/g, ' ');
-  }
-
-  this.text1 = function() {
-    // Compute and return the source text (all equalities and deletions).
-    var txt = '';
-    for (var x=0; x<this.diffs.length; x++)
-      if (this.diffs[x][0] == 0 || this.diffs[x][0] == -1)
-        txt += this.diffs[x][1];
-    return txt;
-  }
-
-  this.text2 = function() {
-    // Compute and return the destination text (all equalities and insertions).
-    var txt = '';
-    for (var x=0; x<this.diffs.length; x++)
-      if (this.diffs[x][0] == 0 || this.diffs[x][0] == 1)
-        txt += this.diffs[x][1];
-    return txt;
-  }
-}
-
-
-function patch_addcontext(patch, text) {
-  var pattern = text.substring(patch.start2, patch.start2+patch.length1);
-  var padding = 0;
-  // Increase the context until we're unique (but don't let the pattern expand beyond MATCH_MAXBITS).
-  while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length < MATCH_MAXBITS-PATCH_MARGIN-PATCH_MARGIN) {
-    padding += PATCH_MARGIN;
-    pattern = text.substring(patch.start2 - padding, patch.start2+patch.length1 + padding);
-  }
-  // Add one chunk for good luck.
-  padding += PATCH_MARGIN;
-  // Add the prefix.
-  var prefix = text.substring(patch.start2 - padding, patch.start2);
-  if (prefix != '')
-    patch.diffs.unshift([0, prefix]);
-  // Add the suffix
-  var suffix = text.substring(patch.start2+patch.length1, patch.start2+patch.length1 + padding);
-  if (suffix != '')
-    patch.diffs.push([0, suffix]);
-
-  // Roll back the start points.
-  patch.start1 -= prefix.length;
-  patch.start2 -= prefix.length;
-  // Extend the lengths.
-  patch.length1 += prefix.length + suffix.length;
-  patch.length2 += prefix.length + suffix.length;
-}
-
-
-function patch_make(text1, text2, diff) {
-  // Compute a list of patches to turn text1 into text2.
-  // Use diff if provided, otherwise compute it ourselves.
-  if (typeof diff == 'undefined') {
-    diff = diff_main(text1, text2, true);
-    if (diff.length > 2) {
-      diff_cleanup_semantic(diff);
-      diff_cleanup_efficiency(diff);
-    }
-  }
-  if (diff.length == 0)
-    return []; // Get rid of the null case.
-  var patches = [];
-  var patch = new patch_obj();
-  var char_count1 = 0; // Number of characters into the text1 string.
-  var char_count2 = 0; // Number of characters into the text2 string.
-  var last_type = null;
-  var prepatch_text = text1; // Recreate the patches to determine context info.
-  var postpatch_text = text1;
-  for (var x=0; x<diff.length; x++) {
-    var diff_type = diff[x][0];
-    var diff_text = diff[x][1];
-
-    if (patch.diffs.length == 0 && diff_type != 0) {
-      // A new patch starts here.
-      patch.start1 = char_count1;
-      patch.start2 = char_count2;
-    }
-
-    if (diff_type == 1) {
-      // Insertion
-      patch.diffs.push(diff[x]);
-      patch.length2 += diff_text.length;
-      postpatch_text = postpatch_text.substring(0, char_count2) + diff_text + postpatch_text.substring(char_count2);
-    } else if (diff_type == -1) {
-      // Deletion.
-      patch.length1 += diff_text.length;
-      patch.diffs.push(diff[x]);
-      postpatch_text = postpatch_text.substring(0, char_count2) + postpatch_text.substring(char_count2 + diff_text.length);
-    } else if (diff_type == 0 && diff_text.length <= 2*PATCH_MARGIN && patch.diffs.length != 0 && diff.length != x+1) {
-      // Small equality inside a patch.
-      patch.diffs.push(diff[x]);
-      patch.length1 += diff_text.length;
-      patch.length2 += diff_text.length;
-    }
-
-    last_type = diff_type;
-    if (diff_type == 0 && diff_text.length >= 2*PATCH_MARGIN) {
-      // Time for a new patch.
-      if (patch.diffs.length != 0) {
-        patch_addcontext(patch, prepatch_text);
-        patches.push(patch);
-        var patch = new patch_obj();
-        last_type = null;
-        prepatch_text = postpatch_text;
-      }
-    }
-
-    // Update the current character count.
-    if (diff_type != 1)
-      char_count1 += diff_text.length;
-    if (diff_type != -1)
-      char_count2 += diff_text.length;
-  }
-  // Pick up the leftover patch if not empty.
-  if (patch.diffs.length != 0) {
-    patch_addcontext(patch, prepatch_text);
-    patches.push(patch);
-  }
-
-  return patches;
-}
-
-
-function patch_apply(patches, text) {
-  // Merge a set of patches onto the text.
-  // Return a patched text, as well as a list of true/false values indicating which patches were applied.
-  patch_splitmax(patches);
-  var results = [];
-  var delta = 0;
-  var expected_loc, start_loc;
-  var text1, text2;
-  var diff, mod, index1, index2;
-  for (var x=0; x<patches.length; x++) {
-    expected_loc = patches[x].start2 + delta;
-    text1 = patches[x].text1();
-    start_loc = match_main(text, text1, expected_loc);
-    if (start_loc == null) {
-      // No match found.  :(
-      results.push(false);
-    } else {
-      // Found a match.  :)
-      results.push(true);
-      delta = start_loc - expected_loc;
-      text2 = text.substring(start_loc, start_loc + text1.length);
-      if (text1 == text2) {
-        // Perfect match, just shove the replacement text in.
-        text = text.substring(0, start_loc) + patches[x].text2() + text.substring(start_loc + text1.length);
-      } else {
-        // Imperfect match.  Run a diff to get a framework of equivalent indicies.
-        diff = diff_main(text1, text2, false);
-        index1 = 0;
-        for (var y=0; y<patches[x].diffs.length; y++) {
-          mod = patches[x].diffs[y];
-          if (mod[0] != 0)
-            index2 = diff_xindex(diff, index1);
-          if (mod[0] == 1) // Insertion
-            text = text.substring(0, start_loc + index2) + mod[1] + text.substring(start_loc + index2);
-          else if (mod[0] == -1) // Deletion
-            text = text.substring(0, start_loc + index2) + text.substring(start_loc + diff_xindex(diff, index1 + mod[1].length));
-          if (mod[0] != -1)
-            index1 += mod[1].length;
-        }
-      }
-    }
-  }
-  return [text, results];
-}
-
-
-function patch_splitmax(patches) {
-  // Look through the patches and break up any which are longer than the maximum limit of the match algorithm.
-  var bigpatch, patch, patch_size, start1, start2, diff_type, diff_text, precontext, postcontext, empty;
-  for (var x=0; x<patches.length; x++) {
-    if (patches[x].length1 > MATCH_MAXBITS) {
-      bigpatch = patches[x];
-      // Remove the big old patch.
-      patches.splice(x, 1);
-      patch_size = MATCH_MAXBITS;
-      start1 = bigpatch.start1;
-      start2 = bigpatch.start2;
-      precontext = '';
-      while (bigpatch.diffs.length != 0) {
-        // Create one of several smaller patches.
-        patch = new patch_obj();
-        empty = true;
-        patch.start1 = start1 - precontext.length;
-        patch.start2 = start2 - precontext.length;
-        if (precontext  != '') {
-          patch.length1 = patch.length2 = precontext.length;
-          patch.diffs.push([0, precontext]);
-        }
-        while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) {
-          diff_type = bigpatch.diffs[0][0];
-          diff_text = bigpatch.diffs[0][1];
-          if (diff_type == 1) {
-            // Insertions are harmless.
-            patch.length2 += diff_text.length;
-            start2 += diff_text.length;
-            patch.diffs.push(bigpatch.diffs.shift());
-            empty = false;
-          } else {
-            // Deletion or equality.  Only take as much as we can stomach.
-            diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN);
-            patch.length1 += diff_text.length;
-            start1 += diff_text.length;
-            if (diff_type == 0) {
-              patch.length2 += diff_text.length;
-              start2 += diff_text.length;
-            } else {
-              empty = false;
-            }
-            patch.diffs.push([diff_type, diff_text]);
-            if (diff_text == bigpatch.diffs[0][1])
-              bigpatch.diffs.shift();
-            else
-              bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length);
-          }
-        }
-        // Compute the head context for the next patch.
-        precontext = patch.text2();
-        precontext = precontext.substring(precontext.length - PATCH_MARGIN);
-        // Append the end context for this patch.
-        postcontext = bigpatch.text1().substring(0, PATCH_MARGIN);
-        if (postcontext  != '') {
-          patch.length1 += postcontext.length;
-          patch.length2 += postcontext.length;
-          if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0)
-            patch.diffs[patch.diffs.length-1][1] += postcontext;
-          else
-            patch.diffs.push([0, postcontext]);
-        }
-        if (!empty)
-          patches.splice(x++, 0, patch);
-      }
-    }
-  }
-}
-
-
-function patch_totext(patches) {
-  // Take a list of patches and return a textual representation.
-  var text = '';
-  for (var x=0; x<patches.length; x++)
-    text += patches[x];
-  return text;
-}
-
-
-function patch_fromtext(text) {
-  // Take a textual representation of patches and return a list of patch objects.
-  var patches = [];
-  text = text.split('\n');
-  var patch, m, chars1, chars2, sign, line;
-  while (text.length != 0) {
-    m = text[0].match(/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/);
-    if (!m)
-      return alert("Invalid patch string:\n"+text[0]);
-    patch = new patch_obj();
-    patches.push(patch);
-    patch.start1 = parseInt(m[1]);
-    if (m[2] == '') {
-      patch.start1--;
-      patch.length1 = 1;
-    } else if (m[2] == '0') {
-      patch.length1 = 0;
-    } else {
-      patch.start1--;
-      patch.length1 = parseInt(m[2]);
-    }
-
-    patch.start2 = parseInt(m[3]);
-    if (m[4] == '') {
-      patch.start2--;
-      patch.length2 = 1;
-    } else if (m[4] == '0') {
-      patch.length2 = 0;
-    } else {
-      patch.start2--;
-      patch.length2 = parseInt(m[4]);
-    }
-    text.shift();
-
-    while (text.length != 0) {
-      sign = text[0].charAt(0);
-      line = decodeURIComponent(text[0].substring(1));
-      if (sign == '-') {
-        // Deletion.
-        patch.diffs.push([-1, line]);
-      } else if (sign == '+') {
-        // Insertion.
-        patch.diffs.push([1, line]);
-      } else if (sign == ' ') {
-        // Minor equality.
-        patch.diffs.push([0, line]);
-      } else if (sign == '@') {
-        // Start of next patch.
-        break;
-      } else if (sign == '') {
-        // Blank line?  Whatever.
-      } else {
-        // WTF?
-        return alert("Invalid patch mode: '"+sign+"'\n"+line);
-      }
-      text.shift();
-    }
-  }
-  return patches;
-}
-
-// EOF
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/devkit/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/devkit/langs/en.js
@@ -1,24 +1,24 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('devkit',{

+title : 'TinyMCE Development Kit',

+info_tab : 'Info',

+settings_tab : 'Settings',

+log_tab : 'Log',

+content_tab : 'Content',

+command_states_tab : 'Commands',

+undo_redo_tab : 'Undo/Redo',

+misc_tab : 'Misc',

+filter : 'Filter:',

+clear_log : 'Clear log',

+refresh : 'Refresh',

+info_help : 'Press Refresh to view info.',

+settings_help : 'Press Refresh to display the settings array for each TinyMCE_Control instance.',

+content_help : 'Press Refresh to display the raw and cleaned HTML content for each TinyMCE_Control instance.',

+command_states_help : 'Press Refresh to display the current command states from inst.queryCommandState. This list will also mark unsupported commands.',

+undo_redo_help : 'Press Refresh to display the global and instance undo/redo levels.',

+misc_help : 'Here are various tools for debugging and development purposes.',

+debug_events : 'Debug events',

+undo_diff : 'Diff undo levels'

+});

 
-tinyMCE.addToLang('devkit',{
-title : 'TinyMCE Development Kit',
-info_tab : 'Info',
-settings_tab : 'Settings',
-log_tab : 'Log',
-content_tab : 'Content',
-command_states_tab : 'Commands',
-undo_redo_tab : 'Undo/Redo',
-misc_tab : 'Misc',
-filter : 'Filter:',
-clear_log : 'Clear log',
-refresh : 'Refresh',
-info_help : 'Press Refresh to view info.',
-settings_help : 'Press Refresh to display the settings array for each TinyMCE_Control instance.',
-content_help : 'Press Refresh to display the raw and cleaned HTML content for each TinyMCE_Control instance.',
-command_states_help : 'Press Refresh to display the current command states from inst.queryCommandState. This list will also mark unsupported commands.',
-undo_redo_help : 'Press Refresh to display the global and instance undo/redo levels.',
-misc_help : 'Here are various tools for debugging and development purposes.',
-debug_events : 'Debug events',
-undo_diff : 'Diff undo levels'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.Directionality',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceDirectionLTR',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="ltr")ed.dom.setAttrib(e,"dir","ltr");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addCommand('mceDirectionRTL',function(){var e=ed.dom.getParent(ed.selection.getNode(),ed.dom.isBlock);if(e){if(ed.dom.getAttrib(e,"dir")!="rtl")ed.dom.setAttrib(e,"dir","rtl");else ed.dom.setAttrib(e,"dir","");}ed.nodeChanged();});ed.addButton('ltr',{title:'directionality.ltr_desc',cmd:'mceDirectionLTR'});ed.addButton('rtl',{title:'directionality.rtl_desc',cmd:'mceDirectionRTL'});ed.onNodeChange.add(t._nodeChange,t);},getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var dom=ed.dom,dir;n=dom.getParent(n,dom.isBlock);if(!n){cm.setDisabled('ltr',1);cm.setDisabled('rtl',1);return;}dir=dom.getAttrib(n,'dir');cm.setActive('ltr',dir=="ltr");cm.setDisabled('ltr',0);cm.setActive('rtl',dir=="rtl");cm.setDisabled('rtl',0);}});tinymce.PluginManager.add('directionality',tinymce.plugins.Directionality);})();
+tinyMCE.importPluginLanguagePack('directionality');var TinyMCE_DirectionalityPlugin={getInfo:function(){return{longname:'Directionality',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"ltr":return tinyMCE.getButtonHTML(cn,'lang_directionality_ltr_desc','{$pluginurl}/images/ltr.gif','mceDirectionLTR');case"rtl":return tinyMCE.getButtonHTML(cn,'lang_directionality_rtl_desc','{$pluginurl}/images/rtl.gif','mceDirectionRTL')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceDirectionLTR":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","ltr");tinyMCE.triggerNodeChange(false);return true;case"mceDirectionRTL":var inst=tinyMCE.getInstanceById(editor_id);var elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","rtl");tinyMCE.triggerNodeChange(false);return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}if(node==null)return;var elm=tinyMCE.getParentElement(node,"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!elm){tinyMCE.switchClass(editor_id+'_ltr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_rtl','mceButtonDisabled');return true}tinyMCE.switchClass(editor_id+'_ltr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_rtl','mceButtonNormal');var dir=getAttrib(elm,"dir");if(dir=="ltr"||dir=="")tinyMCE.switchClass(editor_id+'_ltr','mceButtonSelected');else tinyMCE.switchClass(editor_id+'_rtl','mceButtonSelected');return true}};tinyMCE.addPlugin("directionality",TinyMCE_DirectionalityPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js
@@ -1,79 +1,91 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('directionality');

+

+var TinyMCE_DirectionalityPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Directionality',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "ltr":

+				return tinyMCE.getButtonHTML(cn, 'lang_directionality_ltr_desc', '{$pluginurl}/images/ltr.gif', 'mceDirectionLTR');

+

+			case "rtl":

+				return tinyMCE.getButtonHTML(cn, 'lang_directionality_rtl_desc', '{$pluginurl}/images/rtl.gif', 'mceDirectionRTL');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceDirectionLTR":

+				var inst = tinyMCE.getInstanceById(editor_id);

+				var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");

+

+				if (elm)

+					elm.setAttribute("dir", "ltr");

+

+				tinyMCE.triggerNodeChange(false);

+				return true;

+

+			case "mceDirectionRTL":

+				var inst = tinyMCE.getInstanceById(editor_id);

+				var elm = tinyMCE.getParentElement(inst.getFocusElement(), "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");

+

+				if (elm)

+					elm.setAttribute("dir", "rtl");

+

+				tinyMCE.triggerNodeChange(false);

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		function getAttrib(elm, name) {

+			return elm.getAttribute(name) ? elm.getAttribute(name) : "";

+		}

+

+		if (node == null)

+			return;

+

+		var elm = tinyMCE.getParentElement(node, "p,div,td,h1,h2,h3,h4,h5,h6,pre,address");

+		if (!elm) {

+			tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonDisabled');

+			tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonDisabled');

+			return true;

+		}

+

+		tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonNormal');

+

+		var dir = getAttrib(elm, "dir");

+		if (dir == "ltr" || dir == "")

+			tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonSelected');

+		else

+			tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonSelected');

+

+		return true;

+	}

+};

+

+tinyMCE.addPlugin("directionality", TinyMCE_DirectionalityPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.Directionality', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			ed.addCommand('mceDirectionLTR', function() {
-				var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
-
-				if (e) {
-					if (ed.dom.getAttrib(e, "dir") != "ltr")
-						ed.dom.setAttrib(e, "dir", "ltr");
-					else
-						ed.dom.setAttrib(e, "dir", "");
-				}
-
-				ed.nodeChanged();
-			});
-
-			ed.addCommand('mceDirectionRTL', function() {
-				var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
-
-				if (e) {
-					if (ed.dom.getAttrib(e, "dir") != "rtl")
-						ed.dom.setAttrib(e, "dir", "rtl");
-					else
-						ed.dom.setAttrib(e, "dir", "");
-				}
-
-				ed.nodeChanged();
-			});
-
-			ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
-			ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
-
-			ed.onNodeChange.add(t._nodeChange, t);
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Directionality',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_nodeChange : function(ed, cm, n) {
-			var dom = ed.dom, dir;
-
-			n = dom.getParent(n, dom.isBlock);
-			if (!n) {
-				cm.setDisabled('ltr', 1);
-				cm.setDisabled('rtl', 1);
-				return;
-			}
-
-			dir = dom.getAttrib(n, 'dir');
-			cm.setActive('ltr', dir == "ltr");
-			cm.setDisabled('ltr', 0);
-			cm.setActive('rtl', dir == "rtl");
-			cm.setDisabled('rtl', 0);
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/directionality/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/directionality/langs/en.js
@@ -1,7 +1,7 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+directionality_ltr_desc : 'Direction left to right',

+directionality_rtl_desc : 'Direction right to left'

+});

 
-tinyMCE.addToLang('',{
-directionality_ltr_desc : 'Direction left to right',
-directionality_rtl_desc : 'Direction right to left'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/directionality/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/directionality/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.EmotionsPlugin',{init:function(ed,url){ed.addCommand('mceEmotion',function(){ed.windowManager.open({file:url+'/emotions.htm',width:250+parseInt(ed.getLang('emotions.delta_width',0)),height:160+parseInt(ed.getLang('emotions.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('emotions',{title:'emotions.emotions_desc',cmd:'mceEmotion'});},getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('emotions',tinymce.plugins.EmotionsPlugin);})();
+tinyMCE.importPluginLanguagePack('emotions');var TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"emotions":return tinyMCE.getButtonHTML(cn,'lang_emotions_desc','{$pluginurl}/images/emotions.gif','mceEmotion')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false}};tinyMCE.addPlugin('emotions',TinyMCE_EmotionsPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js
@@ -1,40 +1,64 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('emotions');

+

+// Plucin static class

+var TinyMCE_EmotionsPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Emotions',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	/**

+	 * Returns the HTML contents of the emotions control.

+	 */

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "emotions":

+				return tinyMCE.getButtonHTML(cn, 'lang_emotions_desc', '{$pluginurl}/images/emotions.gif', 'mceEmotion');

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes the mceEmotion command.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceEmotion":

+				var template = new Array();

+

+				template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme

+				template['width'] = 250;

+				template['height'] = 160;

+

+				// Language specific width and height addons

+				template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0);

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});

+

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	}

+};

+

+// Register plugin

+tinyMCE.addPlugin('emotions', TinyMCE_EmotionsPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.EmotionsPlugin', {
-		init : function(ed, url) {
-			// Register commands
-			ed.addCommand('mceEmotion', function() {
-				ed.windowManager.open({
-					file : url + '/emotions.htm',
-					width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),
-					height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			// Register buttons
-			ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Emotions',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/emotions.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/emotions.htm
@@ -1,42 +1,41 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#emotions_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/emotions.js"></script>
-	<base target="_self" />
-</head>
-<body style="display: none">
-	<div align="center">
-		<div class="title">{#emotions_dlg.title}:<br /><br /></div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_emotions_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+	<div align="center">

+		<div class="title">{$lang_emotions_title}:<br /><br /></div>

+

+		<table border="0" cellspacing="0" cellpadding="4">

+		  <tr>

+			<td><a href="javascript:insertEmotion('smiley-cool.gif','lang_emotions_cool');"><img src="images/smiley-cool.gif" width="18" height="18" border="0" alt="{$lang_emotions_cool}" title="{$lang_emotions_cool}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-cry.gif','lang_emotions_cry');"><img src="images/smiley-cry.gif" width="18" height="18" border="0" alt="{$lang_emotions_cry}" title="{$lang_emotions_cry}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-embarassed.gif','lang_emotions_embarassed');"><img src="images/smiley-embarassed.gif" width="18" height="18" border="0" alt="{$lang_emotions_embarassed}" title="{$lang_emotions_embarassed}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-foot-in-mouth.gif','lang_emotions_foot_in_mouth');"><img src="images/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_foot_in_mouth}" title="{$lang_emotions_foot_in_mouth}" /></a></td>

+		  </tr>

+		  <tr>

+			<td><a href="javascript:insertEmotion('smiley-frown.gif','lang_emotions_frown');"><img src="images/smiley-frown.gif" width="18" height="18" border="0" alt="{$lang_emotions_frown}" title="{$lang_emotions_frown}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-innocent.gif','lang_emotions_innocent');"><img src="images/smiley-innocent.gif" width="18" height="18" border="0" alt="{$lang_emotions_innocent}" title="{$lang_emotions_innocent}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-kiss.gif','lang_emotions_kiss');"><img src="images/smiley-kiss.gif" width="18" height="18" border="0" alt="{$lang_emotions_kiss}" title="{$lang_emotions_kiss}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-laughing.gif','lang_emotions_laughing');"><img src="images/smiley-laughing.gif" width="18" height="18" border="0" alt="{$lang_emotions_laughing}" title="{$lang_emotions_laughing}" /></a></td>

+		  </tr>

+		  <tr>

+			<td><a href="javascript:insertEmotion('smiley-money-mouth.gif','lang_emotions_money_mouth');"><img src="images/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{$lang_emotions_money_mouth}" title="{$lang_emotions_money_mouth}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-sealed.gif','lang_emotions_sealed');"><img src="images/smiley-sealed.gif" width="18" height="18" border="0" alt="{$lang_emotions_sealed}" title="{$lang_emotions_sealed}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-smile.gif','lang_emotions_smile');"><img src="images/smiley-smile.gif" width="18" height="18" border="0" alt="{$lang_emotions_smile}" title="{$lang_emotions_smile}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-surprised.gif','lang_emotions_surprised');"><img src="images/smiley-surprised.gif" width="18" height="18" border="0" alt="{$lang_emotions_surprised}" title="{$lang_emotions_surprised}" /></a></td>

+		  </tr>

+		  <tr>

+			<td><a href="javascript:insertEmotion('smiley-tongue-out.gif','lang_emotions_tongue_out');"><img src="images/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{$lang_emotions_tongue-out}" title="{$lang_emotions_tongue_out}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-undecided.gif','lang_emotions_undecided');"><img src="images/smiley-undecided.gif" width="18" height="18" border="0" alt="{$lang_emotions_undecided}" title="{$lang_emotions_undecided}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-wink.gif','lang_emotions_wink');"><img src="images/smiley-wink.gif" width="18" height="18" border="0" alt="{$lang_emotions_wink}" title="{$lang_emotions_wink}" /></a></td>

+			<td><a href="javascript:insertEmotion('smiley-yell.gif','lang_emotions_yell');"><img src="images/smiley-yell.gif" width="18" height="18" border="0" alt="{$lang_emotions_yell}" title="{$lang_emotions_yell}" /></a></td>

+		  </tr>

+		</table>

+	</div>

+</body>

+</html>

 
-		<table border="0" cellspacing="0" cellpadding="4">
-		  <tr>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}" title="{#emotions_dlg.cool}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}" title="{#emotions_dlg.cry}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}" title="{#emotions_dlg.embarassed}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>
-		  </tr>
-		  <tr>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}" title="{#emotions_dlg.frown}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}" title="{#emotions_dlg.innocent}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}" title="{#emotions_dlg.kiss}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}" title="{#emotions_dlg.laughing}" /></a></td>
-		  </tr>
-		  <tr>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}" title="{#emotions_dlg.money_mouth}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}" title="{#emotions_dlg.sealed}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}" title="{#emotions_dlg.smile}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}" title="{#emotions_dlg.surprised}" /></a></td>
-		  </tr>
-		  <tr>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}" title="{#emotions_dlg.tongue_out}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}" title="{#emotions_dlg.undecided}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}" title="{#emotions_dlg.wink}" /></a></td>
-			<td><a href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}" title="{#emotions_dlg.yell}" /></a></td>
-		  </tr>
-		</table>
-	</div>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/images/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/images/readme.txt
@@ -1,3 +1,3 @@
-These emotions where taken from Mozilla Thunderbird.
-I hope they don't get angry if I use them here after all this is a open source project aswell.
+These emotions where taken from Mozilla Thunderbird.

+I hope they don't get angry if I use them here after all this is a open source project aswell.

 

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/js/emotions.js
+++ /dev/null
@@ -1,23 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var EmotionsDialog = {
-	init : function(ed) {
-		tinyMCEPopup.resizeToInnerSize();
-	},
-
-	insert : function(file, title) {
-		var ed = tinyMCEPopup.editor, dom = ed.dom;
-
-		tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
-			src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
-			alt : ed.getLang(title),
-			title : ed.getLang(title),
-			border : 0
-		}));
-
-		tinyMCEPopup.close();
-	}
-};
-
-tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js
@@ -1,22 +1,22 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-}
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+}

+

+function insertEmotion(file_name, title) {

+	title = tinyMCE.getLang(title);

+

+	if (title == null)

+		title = "";

+

+	// XML encode

+	title = title.replace(/&/g, '&amp;');

+	title = title.replace(/\"/g, '&quot;');

+	title = title.replace(/</g, '&lt;');

+	title = title.replace(/>/g, '&gt;');

+

+	var html = '<img src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" mce_src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" border="0" alt="' + title + '" title="' + title + '" />';

+

+	tinyMCE.execCommand('mceInsertContent', false, html);

+	tinyMCEPopup.close();

+}

 
-function insertEmotion(file_name, title) {
-	title = tinyMCE.getLang(title);
-
-	if (title == null)
-		title = "";
-
-	// XML encode
-	title = title.replace(/&/g, '&amp;');
-	title = title.replace(/\"/g, '&quot;');
-	title = title.replace(/</g, '&lt;');
-	title = title.replace(/>/g, '&gt;');
-
-	var html = '<img src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" mce_src="' + tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '" border="0" alt="' + title + '" title="' + title + '" />';
-
-	tinyMCE.execCommand('mceInsertContent', false, html);
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/langs/en.js
@@ -1,23 +1,23 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('emotions',{

+title : 'Insert emotion',

+desc : 'Emotions',

+cool : 'Cool',

+cry : 'Cry',

+embarassed : 'Embarassed',

+foot_in_mouth : 'Foot in mouth',

+frown : 'Frown',

+innocent : 'Innocent',

+kiss : 'Kiss',

+laughing : 'Laughing',

+money_mouth : 'Money mouth',

+sealed : 'Sealed',

+smile : 'Smile',

+surprised : 'Surprised',

+tongue_out : 'Tongue out',

+undecided : 'Undecided',

+wink : 'Wink',

+yell : 'Yell'

+});

 
-tinyMCE.addToLang('emotions',{
-title : 'Insert emotion',
-desc : 'Emotions',
-cool : 'Cool',
-cry : 'Cry',
-embarassed : 'Embarassed',
-foot_in_mouth : 'Foot in mouth',
-frown : 'Frown',
-innocent : 'Innocent',
-kiss : 'Kiss',
-laughing : 'Laughing',
-money_mouth : 'Money mouth',
-sealed : 'Sealed',
-smile : 'Smile',
-surprised : 'Surprised',
-tongue_out : 'Tongue out',
-undecided : 'Undecided',
-wink : 'Wink',
-yell : 'Yell'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js
+++ /dev/null
@@ -1,20 +1,1 @@
-tinyMCE.addI18n('en.emotions_dlg',{
-title:"Insert emotion",
-desc:"Emotions",
-cool:"Cool",
-cry:"Cry",
-embarassed:"Embarassed",
-foot_in_mouth:"Foot in mouth",
-frown:"Frown",
-innocent:"Innocent",
-kiss:"Kiss",
-laughing:"Laughing",
-money_mouth:"Money mouth",
-sealed:"Sealed",
-smile:"Smile",
-surprised:"Surprised",
-tongue_out:"Tongue out",
-undecided:"Undecided",
-wink:"Wink",
-yell:"Yell"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/emotions/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/emotions/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/example/dialog.htm
+++ /dev/null
@@ -1,28 +1,1 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#example_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/dialog.js"></script>
-</head>
-<body>
 
-<form onsubmit="ExampleDialog.insert();return false;" action="#">
-	<p>Here is a example dialog.</p>
-	<p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
-	<p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/example/editor_plugin.js
+++ /dev/null
@@ -1,1 +1,1 @@
-(function(){tinymce.PluginManager.requireLangPack('example');tinymce.create('tinymce.plugins.ExamplePlugin',{init:function(ed,url){ed.addCommand('mceExample',function(){ed.windowManager.open({file:url+'/dialog.htm',width:320+parseInt(ed.getLang('example.delta_width',0)),height:120+parseInt(ed.getLang('example.delta_height',0)),inline:1},{plugin_url:url,some_custom_arg:'custom arg'});});ed.addButton('example',{title:'example.desc',cmd:'mceExample',image:url+'/img/example.gif'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('example',n.nodeName=='IMG');});},createControl:function(n,cm){return null;},getInfo:function(){return{longname:'Example plugin',author:'Some author',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',version:"1.0"};}});tinymce.PluginManager.add('example',tinymce.plugins.ExamplePlugin);})();
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/example/editor_plugin_src.js
+++ /dev/null
@@ -1,81 +1,1 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
 
-(function() {
-	// Load plugin specific language pack
-	tinymce.PluginManager.requireLangPack('example');
-
-	tinymce.create('tinymce.plugins.ExamplePlugin', {
-		/**
-		 * Initializes the plugin, this will be executed after the plugin has been created.
-		 * This call is done before the editor instance has finished it's initialization so use the onInit event
-		 * of the editor instance to intercept that event.
-		 *
-		 * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
-		 * @param {string} url Absolute URL to where the plugin is located.
-		 */
-		init : function(ed, url) {
-			// Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
-			ed.addCommand('mceExample', function() {
-				ed.windowManager.open({
-					file : url + '/dialog.htm',
-					width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
-					height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url, // Plugin absolute URL
-					some_custom_arg : 'custom arg' // Custom argument
-				});
-			});
-
-			// Register example button
-			ed.addButton('example', {
-				title : 'example.desc',
-				cmd : 'mceExample',
-				image : url + '/img/example.gif'
-			});
-
-			// Add a node change handler, selects the button in the UI when a image is selected
-			ed.onNodeChange.add(function(ed, cm, n) {
-				cm.setActive('example', n.nodeName == 'IMG');
-			});
-		},
-
-		/**
-		 * Creates control instances based in the incomming name. This method is normally not
-		 * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
-		 * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
-		 * method can be used to create those.
-		 *
-		 * @param {String} n Name of the control to create.
-		 * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
-		 * @return {tinymce.ui.Control} New control instance or null if no control was created.
-		 */
-		createControl : function(n, cm) {
-			return null;
-		},
-
-		/**
-		 * Returns information about the plugin as a name/value array.
-		 * The current keys are longname, author, authorurl, infourl and version.
-		 *
-		 * @return {Object} Name/value array containing information about the plugin.
-		 */
-		getInfo : function() {
-			return {
-				longname : 'Example plugin',
-				author : 'Some author',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
-				version : "1.0"
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
-})();

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/example/img/example.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/example/js/dialog.js
+++ /dev/null
@@ -1,20 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var ExampleDialog = {
-	init : function() {
-		var f = document.forms[0];
-
-		// Get the selected contents as text and place it in the input
-		f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
-		f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
-	},
-
-	insert : function() {
-		// Insert the contents from the input into the document
-		tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
-		tinyMCEPopup.close();
-	}
-};
-
-tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/example/langs/en.js
+++ /dev/null
@@ -1,4 +1,1 @@
-tinyMCE.addI18n('en.example',{
-	desc : 'This is just a template button'
-});
 

--- a/tinymce/2/jscripts/tiny_mce/plugins/example/langs/en_dlg.js
+++ /dev/null
@@ -1,4 +1,1 @@
-tinyMCE.addI18n('en.example_dlg',{
-	title : 'This is just a example title'
-});
 

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/css/content.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/css/content.css
@@ -1,8 +1,8 @@
-.mceItemFlash {
-	border: 1px dotted #cc0000;
-	background-image: url('../images/flash.gif');
-	background-position: center;
-	background-repeat: no-repeat;
-	background-color: #ffffcc;
-}
+.mceItemFlash {

+	border: 1px dotted #cc0000;

+	background-image: url('../images/flash.gif');

+	background-position: center;

+	background-repeat: no-repeat;

+	background-color: #ffffcc;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/css/flash.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/css/flash.css
@@ -1,12 +1,12 @@
-.panel_wrapper div.current {
-	height: 100px;
-}
+.panel_wrapper div.current {

+	height: 100px;

+}

+

+#width, #height {

+	width: 50px;

+}

+

+#file {

+	width: 250px;

+}

 
-#width, #height {
-	width: 50px;
-}
-
-#file {
-	width: 250px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js
@@ -1,286 +1,286 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('flash');

+

+var TinyMCE_FlashPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Flash',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		if (!tinyMCE.settings['flash_skip_plugin_css'])

+			tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/flash/css/content.css");

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "flash":

+				return tinyMCE.getButtonHTML(cn, 'lang_flash_desc', '{$pluginurl}/images/flash.gif', 'mceFlash');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceFlash":

+				var name = "", swffile = "", swfwidth = "", swfheight = "", action = "insert";

+				var template = new Array();

+				var inst = tinyMCE.getInstanceById(editor_id);

+				var focusElm = inst.getFocusElement();

+

+				template['file']   = '../../plugins/flash/flash.htm'; // Relative to theme

+				template['width']  = 430;

+				template['height'] = 175;

+

+				template['width'] += tinyMCE.getLang('lang_flash_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_flash_delta_height', 0);

+

+				// Is selection a image

+				if (focusElm != null && focusElm.nodeName.toLowerCase() == "img") {

+					name = tinyMCE.getAttrib(focusElm, 'class');

+

+					if (name.indexOf('mceItemFlash') == -1) // Not a Flash

+						return true;

+

+					// Get rest of Flash items

+					swffile = tinyMCE.getAttrib(focusElm, 'alt');

+

+					if (tinyMCE.getParam('convert_urls'))

+						swffile = eval(tinyMCE.settings['urlconverter_callback'] + "(swffile, null, true);");

+

+					swfwidth = tinyMCE.getAttrib(focusElm, 'width');

+					swfheight = tinyMCE.getAttrib(focusElm, 'height');

+					action = "update";

+				}

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, action : action});

+			return true;

+	   }

+

+	   // Pass to next handler in chain

+	   return false;

+	},

+

+	cleanup : function(type, content) {

+		switch (type) {

+			case "insert_to_editor_dom":

+				// Force relative/absolute

+				if (tinyMCE.getParam('convert_urls')) {

+					var imgs = content.getElementsByTagName("img");

+					for (var i=0; i<imgs.length; i++) {

+						if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {

+							var src = tinyMCE.getAttrib(imgs[i], "alt");

+

+							if (tinyMCE.getParam('convert_urls'))

+								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");

+

+							imgs[i].setAttribute('alt', src);

+							imgs[i].setAttribute('title', src);

+						}

+					}

+				}

+				break;

+

+			case "get_from_editor_dom":

+				var imgs = content.getElementsByTagName("img");

+				for (var i=0; i<imgs.length; i++) {

+					if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {

+						var src = tinyMCE.getAttrib(imgs[i], "alt");

+

+						if (tinyMCE.getParam('convert_urls'))

+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");

+

+						imgs[i].setAttribute('alt', src);

+						imgs[i].setAttribute('title', src);

+					}

+				}

+				break;

+

+			case "insert_to_editor":

+				var startPos = 0;

+				var embedList = new Array();

+

+				// Fix the embed and object elements

+				content = content.replace(new RegExp('<[ ]*embed','gi'),'<embed');

+				content = content.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');

+				content = content.replace(new RegExp('<[ ]*object','gi'),'<object');

+				content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');

+

+				// Parse all embed tags

+				while ((startPos = content.indexOf('<embed', startPos+1)) != -1) {

+					var endPos = content.indexOf('>', startPos);

+					var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos));

+					embedList[embedList.length] = attribs;

+				}

+

+				// Parse all object tags and replace them with images from the embed data

+				var index = 0;

+				while ((startPos = content.indexOf('<object', startPos)) != -1) {

+					if (index >= embedList.length)

+						break;

+

+					var attribs = embedList[index];

+

+					// Find end of object

+					endPos = content.indexOf('</object>', startPos);

+					endPos += 9;

+

+					// Insert image

+					var contentAfter = content.substring(endPos);

+					content = content.substring(0, startPos);

+					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';

+					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';

+					content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);

+					content += contentAfter;

+					index++;

+

+					startPos++;

+				}

+

+				// Parse all embed tags and replace them with images from the embed data

+				var index = 0;

+				while ((startPos = content.indexOf('<embed', startPos)) != -1) {

+					if (index >= embedList.length)

+						break;

+

+					var attribs = embedList[index];

+

+					// Find end of embed

+					endPos = content.indexOf('>', startPos);

+					endPos += 9;

+

+					// Insert image

+					var contentAfter = content.substring(endPos);

+					content = content.substring(0, startPos);

+					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';

+					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';

+					content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);

+					content += contentAfter;

+					index++;

+

+					startPos++;

+				}

+

+				break;

+

+			case "get_from_editor":

+				// Parse all img tags and replace them with object+embed

+				var startPos = -1;

+

+				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {

+					var endPos = content.indexOf('/>', startPos);

+					var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos));

+

+					// Is not flash, skip it

+					if (attribs['class'] != "mceItemFlash")

+						continue;

+

+					endPos += 2;

+

+					var embedHTML = '';

+					var wmode = tinyMCE.getParam("flash_wmode", "");

+					var quality = tinyMCE.getParam("flash_quality", "high");

+					var menu = tinyMCE.getParam("flash_menu", "false");

+

+					// Insert object + embed

+					embedHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';

+					embedHTML += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';

+					embedHTML += ' width="' + attribs["width"] + '" height="' + attribs["height"] + '">';

+					embedHTML += '<param name="movie" value="' + attribs["title"] + '" />';

+					embedHTML += '<param name="quality" value="' + quality + '" />';

+					embedHTML += '<param name="menu" value="' + menu + '" />';

+					embedHTML += '<param name="wmode" value="' + wmode + '" />';

+					embedHTML += '<embed src="' + attribs["title"] + '" wmode="' + wmode + '" quality="' + quality + '" menu="' + menu + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + attribs["width"] + '" height="' + attribs["height"] + '"></embed></object>';

+

+					// Insert embed/object chunk

+					chunkBefore = content.substring(0, startPos);

+					chunkAfter = content.substring(endPos);

+					content = chunkBefore + embedHTML + chunkAfter;

+				}

+				break;

+		}

+

+		// Pass through to next handler in chain

+		return content;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		if (node == null)

+			return;

+

+		do {

+			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) {

+				tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected');

+				return true;

+			}

+		} while ((node = node.parentNode));

+

+		tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal');

+

+		return true;

+	},

+

+	// Private plugin internal functions

+

+	_parseAttributes : function(attribute_string) {

+		var attributeName = "";

+		var attributeValue = "";

+		var withInName;

+		var withInValue;

+		var attributes = new Array();

+		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');

+

+		if (attribute_string == null || attribute_string.length < 2)

+			return null;

+

+		withInName = withInValue = false;

+

+		for (var i=0; i<attribute_string.length; i++) {

+			var chr = attribute_string.charAt(i);

+

+			if ((chr == '"' || chr == "'") && !withInValue)

+				withInValue = true;

+			else if ((chr == '"' || chr == "'") && withInValue) {

+				withInValue = false;

+

+				var pos = attributeName.lastIndexOf(' ');

+				if (pos != -1)

+					attributeName = attributeName.substring(pos+1);

+

+				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);

+

+				attributeName = "";

+				attributeValue = "";

+			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)

+				withInName = true;

+

+			if (chr == '=' && withInName)

+				withInName = false;

+

+			if (withInName)

+				attributeName += chr;

+

+			if (withInValue)

+				attributeValue += chr;

+		}

+

+		return attributes;

+	}

+};

+

+tinyMCE.addPlugin("flash", TinyMCE_FlashPlugin);

 
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('flash');
-
-var TinyMCE_FlashPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Flash',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	initInstance : function(inst) {
-		if (!tinyMCE.settings['flash_skip_plugin_css'])
-			tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/flash/css/content.css");
-	},
-
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "flash":
-				return tinyMCE.getButtonHTML(cn, 'lang_flash_desc', '{$pluginurl}/images/flash.gif', 'mceFlash');
-		}
-
-		return "";
-	},
-
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceFlash":
-				var name = "", swffile = "", swfwidth = "", swfheight = "", action = "insert";
-				var template = new Array();
-				var inst = tinyMCE.getInstanceById(editor_id);
-				var focusElm = inst.getFocusElement();
-
-				template['file']   = '../../plugins/flash/flash.htm'; // Relative to theme
-				template['width']  = 430;
-				template['height'] = 175;
-
-				template['width'] += tinyMCE.getLang('lang_flash_delta_width', 0);
-				template['height'] += tinyMCE.getLang('lang_flash_delta_height', 0);
-
-				// Is selection a image
-				if (focusElm != null && focusElm.nodeName.toLowerCase() == "img") {
-					name = tinyMCE.getAttrib(focusElm, 'class');
-
-					if (name.indexOf('mceItemFlash') == -1) // Not a Flash
-						return true;
-
-					// Get rest of Flash items
-					swffile = tinyMCE.getAttrib(focusElm, 'alt');
-
-					if (tinyMCE.getParam('convert_urls'))
-						swffile = eval(tinyMCE.settings['urlconverter_callback'] + "(swffile, null, true);");
-
-					swfwidth = tinyMCE.getAttrib(focusElm, 'width');
-					swfheight = tinyMCE.getAttrib(focusElm, 'height');
-					action = "update";
-				}
-
-				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, action : action});
-			return true;
-	   }
-
-	   // Pass to next handler in chain
-	   return false;
-	},
-
-	cleanup : function(type, content) {
-		switch (type) {
-			case "insert_to_editor_dom":
-				// Force relative/absolute
-				if (tinyMCE.getParam('convert_urls')) {
-					var imgs = content.getElementsByTagName("img");
-					for (var i=0; i<imgs.length; i++) {
-						if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
-							var src = tinyMCE.getAttrib(imgs[i], "alt");
-
-							if (tinyMCE.getParam('convert_urls'))
-								src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
-
-							imgs[i].setAttribute('alt', src);
-							imgs[i].setAttribute('title', src);
-						}
-					}
-				}
-				break;
-
-			case "get_from_editor_dom":
-				var imgs = content.getElementsByTagName("img");
-				for (var i=0; i<imgs.length; i++) {
-					if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
-						var src = tinyMCE.getAttrib(imgs[i], "alt");
-
-						if (tinyMCE.getParam('convert_urls'))
-							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null, true);");
-
-						imgs[i].setAttribute('alt', src);
-						imgs[i].setAttribute('title', src);
-					}
-				}
-				break;
-
-			case "insert_to_editor":
-				var startPos = 0;
-				var embedList = new Array();
-
-				// Fix the embed and object elements
-				content = content.replace(new RegExp('<[ ]*embed','gi'),'<embed');
-				content = content.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');
-				content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
-				content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');
-
-				// Parse all embed tags
-				while ((startPos = content.indexOf('<embed', startPos+1)) != -1) {
-					var endPos = content.indexOf('>', startPos);
-					var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos));
-					embedList[embedList.length] = attribs;
-				}
-
-				// Parse all object tags and replace them with images from the embed data
-				var index = 0;
-				while ((startPos = content.indexOf('<object', startPos)) != -1) {
-					if (index >= embedList.length)
-						break;
-
-					var attribs = embedList[index];
-
-					// Find end of object
-					endPos = content.indexOf('</object>', startPos);
-					endPos += 9;
-
-					// Insert image
-					var contentAfter = content.substring(endPos);
-					content = content.substring(0, startPos);
-					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
-					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';
-					content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);
-					content += contentAfter;
-					index++;
-
-					startPos++;
-				}
-
-				// Parse all embed tags and replace them with images from the embed data
-				var index = 0;
-				while ((startPos = content.indexOf('<embed', startPos)) != -1) {
-					if (index >= embedList.length)
-						break;
-
-					var attribs = embedList[index];
-
-					// Find end of embed
-					endPos = content.indexOf('>', startPos);
-					endPos += 9;
-
-					// Insert image
-					var contentAfter = content.substring(endPos);
-					content = content.substring(0, startPos);
-					content += '<img width="' + attribs["width"] + '" height="' + attribs["height"] + '"';
-					content += ' src="' + (tinyMCE.getParam("theme_href") + '/images/spacer.gif') + '" title="' + attribs["src"] + '"';
-					content += ' alt="' + attribs["src"] + '" class="mceItemFlash" />' + content.substring(endPos);
-					content += contentAfter;
-					index++;
-
-					startPos++;
-				}
-
-				break;
-
-			case "get_from_editor":
-				// Parse all img tags and replace them with object+embed
-				var startPos = -1;
-
-				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
-					var endPos = content.indexOf('/>', startPos);
-					var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos));
-
-					// Is not flash, skip it
-					if (attribs['class'] != "mceItemFlash")
-						continue;
-
-					endPos += 2;
-
-					var embedHTML = '';
-					var wmode = tinyMCE.getParam("flash_wmode", "");
-					var quality = tinyMCE.getParam("flash_quality", "high");
-					var menu = tinyMCE.getParam("flash_menu", "false");
-
-					// Insert object + embed
-					embedHTML += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
-					embedHTML += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"';
-					embedHTML += ' width="' + attribs["width"] + '" height="' + attribs["height"] + '">';
-					embedHTML += '<param name="movie" value="' + attribs["title"] + '" />';
-					embedHTML += '<param name="quality" value="' + quality + '" />';
-					embedHTML += '<param name="menu" value="' + menu + '" />';
-					embedHTML += '<param name="wmode" value="' + wmode + '" />';
-					embedHTML += '<embed src="' + attribs["title"] + '" wmode="' + wmode + '" quality="' + quality + '" menu="' + menu + '" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + attribs["width"] + '" height="' + attribs["height"] + '"></embed></object>';
-
-					// Insert embed/object chunk
-					chunkBefore = content.substring(0, startPos);
-					chunkAfter = content.substring(endPos);
-					content = chunkBefore + embedHTML + chunkAfter;
-				}
-				break;
-		}
-
-		// Pass through to next handler in chain
-		return content;
-	},
-
-	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-		if (node == null)
-			return;
-
-		do {
-			if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) {
-				tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected');
-				return true;
-			}
-		} while ((node = node.parentNode));
-
-		tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal');
-
-		return true;
-	},
-
-	// Private plugin internal functions
-
-	_parseAttributes : function(attribute_string) {
-		var attributeName = "";
-		var attributeValue = "";
-		var withInName;
-		var withInValue;
-		var attributes = new Array();
-		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
-
-		if (attribute_string == null || attribute_string.length < 2)
-			return null;
-
-		withInName = withInValue = false;
-
-		for (var i=0; i<attribute_string.length; i++) {
-			var chr = attribute_string.charAt(i);
-
-			if ((chr == '"' || chr == "'") && !withInValue)
-				withInValue = true;
-			else if ((chr == '"' || chr == "'") && withInValue) {
-				withInValue = false;
-
-				var pos = attributeName.lastIndexOf(' ');
-				if (pos != -1)
-					attributeName = attributeName.substring(pos+1);
-
-				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
-
-				attributeName = "";
-				attributeValue = "";
-			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
-				withInName = true;
-
-			if (chr == '=' && withInName)
-				withInName = false;
-
-			if (withInName)
-				attributeName += chr;
-
-			if (withInValue)
-				attributeValue += chr;
-		}
-
-		return attributes;
-	}
-};
-
-tinyMCE.addPlugin("flash", TinyMCE_FlashPlugin);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/flash.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/flash.htm
@@ -1,71 +1,71 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{$lang_flash_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/flash.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
-	<link href="css/flash.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
-    <form onsubmit="insertFlash();return false;" action="#">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_flash_general}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_flash_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/flash.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<link href="css/flash.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+    <form onsubmit="insertFlash();return false;" action="#">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_flash_general}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_flash_general}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+							<tr>

+							<td nowrap="nowrap"><label for="file">{$lang_flash_file}</label></td>

+							  <td nowrap="nowrap">

+									<table border="0" cellspacing="0" cellpadding="0">

+									  <tr>

+										<td><input id="file" name="file" type="text" value="" onfocus="this.select();" /></td>

+										<td id="filebrowsercontainer">&nbsp;</td>

+									  </tr>

+									</table>

+								</td>

+							</tr>

+							<tr id="linklistrow">

+								<td><label for="linklist">{$lang_flash_list}</label></td>

+								<td id="linklistcontainer">&nbsp;</td>

+							</tr>

+							<tr>

+								<td nowrap="nowrap"><label>{$lang_flash_size}</label></td>

+								<td nowrap="nowrap">

+									<input type="text" id="width" name="width" value="" onfocus="this.select();" />

+									<select name="width2" id="width2" style="width: 50px">

+										<option value="">px</option>

+										<option value="%">%</option>

+									</select>&nbsp;x&nbsp;<input id="height" name="height" type="text"  value="" onfocus="this.select();" />

+									<select name="height2" id="height2" style="width: 50px">

+										<option value="">px</option>

+										<option value="%">%</option>

+									</select>

+								</td>

+							</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertFlash();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-					<legend>{$lang_flash_general}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-							<tr>
-							<td nowrap="nowrap"><label for="file">{$lang_flash_file}</label></td>
-							  <td nowrap="nowrap">
-									<table border="0" cellspacing="0" cellpadding="0">
-									  <tr>
-										<td><input id="file" name="file" type="text" value="" onfocus="this.select();" /></td>
-										<td id="filebrowsercontainer">&nbsp;</td>
-									  </tr>
-									</table>
-								</td>
-							</tr>
-							<tr id="linklistrow">
-								<td><label for="linklist">{$lang_flash_list}</label></td>
-								<td id="linklistcontainer">&nbsp;</td>
-							</tr>
-							<tr>
-								<td nowrap="nowrap"><label>{$lang_flash_size}</label></td>
-								<td nowrap="nowrap">
-									<input type="text" id="width" name="width" value="" onfocus="this.select();" />
-									<select name="width2" id="width2" style="width: 50px">
-										<option value="">px</option>
-										<option value="%">%</option>
-									</select>&nbsp;x&nbsp;<input id="height" name="height" type="text"  value="" onfocus="this.select();" />
-									<select name="height2" id="height2" style="width: 50px">
-										<option value="">px</option>
-										<option value="%">%</option>
-									</select>
-								</td>
-							</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertFlash();" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/jscripts/flash.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/jscripts/flash.js
@@ -1,108 +1,108 @@
-var url = tinyMCE.getParam("flash_external_list_url");
-if (url != null) {
-	// Fix relative
-	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-		url = tinyMCE.documentBasePath + "/" + url;
+var url = tinyMCE.getParam("flash_external_list_url");

+if (url != null) {

+	// Fix relative

+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+		url = tinyMCE.documentBasePath + "/" + url;

+

+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash');

+

+	// Image list outsrc

+	var html = getFlashListHTML('filebrowser','file','flash','flash');

+	if (html == "")

+		document.getElementById("linklistrow").style.display = 'none';

+	else

+		document.getElementById("linklistcontainer").innerHTML = html;

+

+	var formObj = document.forms[0];

+	var swffile   = tinyMCE.getWindowArg('swffile');

+	var swfwidth  = '' + tinyMCE.getWindowArg('swfwidth');

+	var swfheight = '' + tinyMCE.getWindowArg('swfheight');

+

+	if (swfwidth.indexOf('%')!=-1) {

+		formObj.width2.value = "%";

+		formObj.width.value  = swfwidth.substring(0,swfwidth.length-1);

+	} else {

+		formObj.width2.value = "px";

+		formObj.width.value  = swfwidth;

+	}

+

+	if (swfheight.indexOf('%')!=-1) {

+		formObj.height2.value = "%";

+		formObj.height.value  = swfheight.substring(0,swfheight.length-1);

+	} else {

+		formObj.height2.value = "px";

+		formObj.height.value  = swfheight;

+	}

+

+	formObj.file.value = swffile;

+	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);

+

+	selectByValue(formObj, 'linklist', swffile);

+

+	// Handle file browser

+	if (isVisible('filebrowser'))

+		document.getElementById('file').style.width = '230px';

+

+	// Auto select flash in list

+	if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {

+		for (var i=0; i<formObj.linklist.length; i++) {

+			if (formObj.linklist.options[i].value == tinyMCE.getWindowArg('swffile'))

+				formObj.linklist.options[i].selected = true;

+		}

+	}

+}

+

+function getFlashListHTML() {

+	if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {

+		var html = "";

+

+		html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.file.value=this.options[this.selectedIndex].value;">';

+		html += '<option value="">---</option>';

+

+		for (var i=0; i<tinyMCEFlashList.length; i++)

+			html += '<option value="' + tinyMCEFlashList[i][1] + '">' + tinyMCEFlashList[i][0] + '</option>';

+

+		html += '</select>';

+

+		return html;

+	}

+

+	return "";

+}

+

+function insertFlash() {

+	var formObj = document.forms[0];

+	var html      = '';

+	var file      = formObj.file.value;

+	var width     = formObj.width.value;

+	var height    = formObj.height.value;

+	if (formObj.width2.value=='%') {

+		width = width + '%';

+	}

+	if (formObj.height2.value=='%') {

+		height = height + '%';

+	}

+

+	if (width == "")

+		width = 100;

+

+	if (height == "")

+		height = 100;

+

+	html += ''

+		+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '

+		+ 'width="' + width + '" height="' + height + '" '

+		+ 'border="0" alt="' + file + '" title="' + file + '" class="mceItemFlash" />';

+

+	tinyMCEPopup.execCommand("mceInsertContent", true, html);

+	tinyMCE.selectedInstance.repaint();

+

+	tinyMCEPopup.close();

+}

 
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash');
-
-	// Image list outsrc
-	var html = getFlashListHTML('filebrowser','file','flash','flash');
-	if (html == "")
-		document.getElementById("linklistrow").style.display = 'none';
-	else
-		document.getElementById("linklistcontainer").innerHTML = html;
-
-	var formObj = document.forms[0];
-	var swffile   = tinyMCE.getWindowArg('swffile');
-	var swfwidth  = '' + tinyMCE.getWindowArg('swfwidth');
-	var swfheight = '' + tinyMCE.getWindowArg('swfheight');
-
-	if (swfwidth.indexOf('%')!=-1) {
-		formObj.width2.value = "%";
-		formObj.width.value  = swfwidth.substring(0,swfwidth.length-1);
-	} else {
-		formObj.width2.value = "px";
-		formObj.width.value  = swfwidth;
-	}
-
-	if (swfheight.indexOf('%')!=-1) {
-		formObj.height2.value = "%";
-		formObj.height.value  = swfheight.substring(0,swfheight.length-1);
-	} else {
-		formObj.height2.value = "px";
-		formObj.height.value  = swfheight;
-	}
-
-	formObj.file.value = swffile;
-	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
-
-	selectByValue(formObj, 'linklist', swffile);
-
-	// Handle file browser
-	if (isVisible('filebrowser'))
-		document.getElementById('file').style.width = '230px';
-
-	// Auto select flash in list
-	if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
-		for (var i=0; i<formObj.linklist.length; i++) {
-			if (formObj.linklist.options[i].value == tinyMCE.getWindowArg('swffile'))
-				formObj.linklist.options[i].selected = true;
-		}
-	}
-}
-
-function getFlashListHTML() {
-	if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
-		var html = "";
-
-		html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.file.value=this.options[this.selectedIndex].value;">';
-		html += '<option value="">---</option>';
-
-		for (var i=0; i<tinyMCEFlashList.length; i++)
-			html += '<option value="' + tinyMCEFlashList[i][1] + '">' + tinyMCEFlashList[i][0] + '</option>';
-
-		html += '</select>';
-
-		return html;
-	}
-
-	return "";
-}
-
-function insertFlash() {
-	var formObj = document.forms[0];
-	var html      = '';
-	var file      = formObj.file.value;
-	var width     = formObj.width.value;
-	var height    = formObj.height.value;
-	if (formObj.width2.value=='%') {
-		width = width + '%';
-	}
-	if (formObj.height2.value=='%') {
-		height = height + '%';
-	}
-
-	if (width == "")
-		width = 100;
-
-	if (height == "")
-		height = 100;
-
-	html += ''
-		+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" mce_src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
-		+ 'width="' + width + '" height="' + height + '" '
-		+ 'border="0" alt="' + file + '" title="' + file + '" class="mceItemFlash" />';
-
-	tinyMCEPopup.execCommand("mceInsertContent", true, html);
-	tinyMCE.selectedInstance.repaint();
-
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/langs/en.js
@@ -1,12 +1,12 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('flash',{

+title : 'Insert / edit Flash Movie',

+desc : 'Insert / edit Flash Movie',

+file : 'Flash-File (.swf)',

+size : 'Size',

+list : 'Flash files',

+props : 'Flash properties',

+general : 'General'

+});

 
-tinyMCE.addToLang('flash',{
-title : 'Insert / edit Flash Movie',
-desc : 'Insert / edit Flash Movie',
-file : 'Flash-File (.swf)',
-size : 'Size',
-list : 'Flash files',
-props : 'Flash properties',
-general : 'General'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/flash/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/flash/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/blank.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/blank.htm
@@ -1,10 +1,10 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>blank_page</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-</head>
-<body onload="parent.setupIframe(document);">
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>blank_page</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

+</head>

+<body onload="parent.setupIframe(document);">

+

+</body>

+</html>

 
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css
@@ -1,182 +1,176 @@
-/* Hide the advanced tab */
-#advanced_tab {
-	display: none;
+/* Hide the advanced tab */

+#advanced_tab {

+	display: none;

+}

+

+#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {

+	width: 280px;

+}

+

+#doctype, #docencoding {

+	width: 200px;

+}

+

+#langcode {

+	width: 30px;

+}

+

+#bgimage {

+	width: 220px;	

+}

+

+#fontface {

+	width: 240px;

+}

+

+#leftmargin, #rightmargin, #topmargin, #bottommargin {

+	width: 50px;

+}

+

+.panel_wrapper div.current {

+	height: 400px;

+}

+

+#stylesheet, #style {

+	width: 240px;

+}

+

+/* Head list classes */

+

+.headlistwrapper {

+	width: 100%;

+}

+

+.addbutton, .removebutton, .moveupbutton, .movedownbutton {

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: default;

+	display: block;

+	width: 20px;

+	height: 20px;

+}

+

+.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {

+	border: 1px solid #0A246A;

+	background-color: #B6BDD2;

+}

+

+.addbutton {

+	background-image: url('../images/add.gif');

+	float: left;

+	margin-right: 3px;

+}

+

+.removebutton {

+	background-image: url('../images/remove.gif');

+	float: left;

+}

+

+.moveupbutton {

+	background-image: url('../images/move_up.gif');

+	float: left;

+	margin-right: 3px;

+}

+

+.movedownbutton {

+	background-image: url('../images/move_down.gif');

+	float: left;

+}

+

+.selected {

+	border: 1px solid #0A246A;

+	background-color: #B6BDD2;

+}

+

+.toolbar {

+	width: 100%;

+}

+

+#headlist {

+	width: 100%;

+	margin-top: 3px;

+	font-size: 11px;

+}

+

+#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {

+	display: none;

+}

+

+#addmenu {

+	position: absolute;

+	border: 1px solid gray;

+	display: none;

+	z-index: 100;

+	background-color: white;

+}

+

+#addmenu a {

+	display: block;

+	width: 100%;

+	line-height: 20px;

+	text-decoration: none;

+	background-color: white;

+}

+

+#addmenu a:hover {

+	background-color: #B6BDD2;

+	color: black;

+}

+

+#addmenu span {

+	padding-left: 10px;

+	padding-right: 10px;

+}

+

+#updateElementPanel {

+	display: none;

+}

+

+#script_element .panel_wrapper div.current {

+	height: 108px;

+}

+

+#style_element .panel_wrapper div.current {

+	height: 108px;

+}

+

+#link_element  .panel_wrapper div.current {

+	height: 140px;

+}

+

+#element_script_value {

+	width: 100%;

+	height: 100px;

+}

+

+#element_comment_value {

+	width: 100%;

+	height: 120px;

+}

+

+#element_style_value {

+	width: 100%;

+	height: 100px;

+}

+

+#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {

+	width: 250px;

+}

+

+.updateElementButton {

+	margin-top: 3px;

+}

+

+/* MSIE specific styles */

+

+* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {

+	width: 22px;

+	height: 22px;

+}

+

+textarea {

+	height: 55px;

 }
-
-#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
-	width: 280px;
-}
-
-#doctype, #docencoding {
-	width: 200px;
-}
-
-#langcode {
-	width: 30px;
-}
-
-#bgimage {
-	width: 220px;	
-}
-
-#fontface {
-	width: 240px;
-}
-
-#leftmargin, #rightmargin, #topmargin, #bottommargin {
-	width: 50px;
-}
-
-.panel_wrapper div.current {
-	height: 400px;
-}
-
-#stylesheet, #style {
-	width: 240px;
-}
-
-/* Head list classes */
-
-.headlistwrapper {
-	width: 100%;
-}
-
-.addbutton, .removebutton, .moveupbutton, .movedownbutton {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: default;
-	display: block;
-	width: 20px;
-	height: 20px;
-}
-
-#doctypes {
-	width: 200px;
-}
-
-.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
-	border: 1px solid #0A246A;
-	background-color: #B6BDD2;
-}
-
-.addbutton {
-	background-image: url('../images/add.gif');
-	float: left;
-	margin-right: 3px;
-}
-
-.removebutton {
-	background-image: url('../images/remove.gif');
-	float: left;
-}
-
-.moveupbutton {
-	background-image: url('../images/move_up.gif');
-	float: left;
-	margin-right: 3px;
-}
-
-.movedownbutton {
-	background-image: url('../images/move_down.gif');
-	float: left;
-}
-
-.selected {
-	border: 1px solid #0A246A;
-	background-color: #B6BDD2;
-}
-
-.toolbar {
-	width: 100%;
-}
-
-#headlist {
-	width: 100%;
-	margin-top: 3px;
-	font-size: 11px;
-}
-
-#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
-	display: none;
-}
-
-#addmenu {
-	position: absolute;
-	border: 1px solid gray;
-	display: none;
-	z-index: 100;
-	background-color: white;
-}
-
-#addmenu a {
-	display: block;
-	width: 100%;
-	line-height: 20px;
-	text-decoration: none;
-	background-color: white;
-}
-
-#addmenu a:hover {
-	background-color: #B6BDD2;
-	color: black;
-}
-
-#addmenu span {
-	padding-left: 10px;
-	padding-right: 10px;
-}
-
-#updateElementPanel {
-	display: none;
-}
-
-#script_element .panel_wrapper div.current {
-	height: 108px;
-}
-
-#style_element .panel_wrapper div.current {
-	height: 108px;
-}
-
-#link_element  .panel_wrapper div.current {
-	height: 140px;
-}
-
-#element_script_value {
-	width: 100%;
-	height: 100px;
-}
-
-#element_comment_value {
-	width: 100%;
-	height: 120px;
-}
-
-#element_style_value {
-	width: 100%;
-	height: 100px;
-}
-
-#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
-	width: 250px;
-}
-
-.updateElementButton {
-	margin-top: 3px;
-}
-
-/* MSIE specific styles */
-
-* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
-	width: 22px;
-	height: 22px;
-}
-
-textarea {
-	height: 55px;
-}
-
-.panel_wrapper div.current {height:420px;}

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.FullPagePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceFullPageProperties',function(){ed.windowManager.open({file:url+'/fullpage.htm',width:430+parseInt(ed.getLang('fullpage.delta_width',0)),height:495+parseInt(ed.getLang('fullpage.delta_height',0)),inline:1},{plugin_url:url,head_html:t.head});});ed.addButton('fullpage',{title:'fullpage.desc',cmd:'mceFullPageProperties'});ed.onBeforeSetContent.add(t._setContent,t);ed.onSetContent.add(t._setBodyAttribs,t);ed.onGetContent.add(t._getContent,t);},getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_setBodyAttribs:function(ed,o){var bdattr,i,len,kv,k,v,t,attr=this.head.match(/body(.*?)>/i);if(attr&&attr[1]){bdattr=attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);for(i=0,len=bdattr.length;i<len;i++){kv=bdattr[i].split('=');k=kv[0].replace(/\s/,'');v=kv[1];if(v){v=v.replace(/^\s+/,'').replace(/\s+$/,'');t=v.match(/^["'](.*)["']$/);if(t)v=t[1];}else v=k;ed.dom.setAttrib(ed.getBody(),'style',v);}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true});},_setContent:function(ed,o){var t=this,sp,ep,c=o.content,v,st='';c=c.replace(/<(\/?)BODY/gi,'<$1body');sp=c.indexOf('<body');if(sp!=-1){sp=c.indexOf('>',sp);t.head=c.substring(0,sp+1);ep=c.indexOf('</body',sp);if(ep==-1)ep=c.indexOf('</body',ep);o.content=c.substring(sp+1,ep);t.foot=c.substring(ep);function low(s){return s.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase();})};t.head=low(t.head);t.foot=low(t.foot);}else{t.head='';if(ed.getParam('fullpage_default_xml_pi'))t.head+='<?xml version="1.0" encoding="'+ed.getParam('fullpage_default_encoding','ISO-8859-1')+'" ?>\n';t.head+=ed.getParam('fullpage_default_doctype','<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');t.head+='\n<html>\n<head>\n<title>'+ed.getParam('fullpage_default_title','Untitled document')+'</title>\n';if(v=ed.getParam('fullpage_default_encoding'))t.head+='<meta http-equiv="Content-Type" content="'+v+'" />\n';if(v=ed.getParam('fullpage_default_font_family'))st+='font-family: '+v+';';if(v=ed.getParam('fullpage_default_font_size'))st+='font-size: '+v+';';if(v=ed.getParam('fullpage_default_text_color'))st+='color: '+v+';';t.head+='</head>\n<body'+(st?' style="'+st+'"':'')+'>\n';t.foot='\n</body>\n</html>';}},_getContent:function(ed,o){var t=this;o.content=tinymce.trim(t.head)+'\n'+tinymce.trim(o.content)+'\n'+tinymce.trim(t.foot);}});tinymce.PluginManager.add('fullpage',tinymce.plugins.FullPagePlugin);})();
+tinyMCE.importPluginLanguagePack('fullpage');var TinyMCE_FullPagePlugin={getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"fullpage":return tinyMCE.getButtonHTML(cn,'lang_fullpage_desc','{$pluginurl}/images/fullpage.gif','mceFullPageProperties')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullPageProperties":var template=new Array();template['file']='../../plugins/fullpage/fullpage.htm';template['width']=430;template['height']=485+(tinyMCE.isOpera?5:0);template['width']+=tinyMCE.getLang('lang_fullpage_delta_width',0);template['height']+=tinyMCE.getLang('lang_fullpage_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceFullPageUpdate":TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));return true}return false},cleanup:function(type,content,inst){switch(type){case"insert_to_editor":var tmp=content.toLowerCase();var pos=tmp.indexOf('<body'),pos2;if(pos!=-1){pos=tmp.indexOf('>',pos);pos2=tmp.lastIndexOf('</body>');inst.fullpageTopContent=content.substring(0,pos+1);content=content.substring(pos+1,pos2);}else{if(!inst.fullpageTopContent){var docType=tinyMCE.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');var enc=tinyMCE.getParam("fullpage_default_encoding",'utf-8');var title=tinyMCE.getParam("fullpage_default_title",'Untitled document');var lang=tinyMCE.getParam("fullpage_default_langcode",'en');var pi=tinyMCE.getParam("fullpage_default_xml_pi",true);var ff=tinyMCE.getParam("fullpage_default_font_family","");var fz=tinyMCE.getParam("fullpage_default_font_size","");var ds=tinyMCE.getParam("fullpage_default_style","");var dtc=tinyMCE.getParam("fullpage_default_text_color","");title=title.replace(/&/g,'&amp;');title=title.replace(/\"/g,'&quot;');title=title.replace(/</g,'&lt;');title=title.replace(/>/g,'&gt;');tmp='';if(pi)tmp+='<?xml version="1.0" encoding="'+enc+'"?>\n';tmp+=docType+'\n';tmp+='<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="'+lang+'" xml:lang="'+lang+'">\n';tmp+='<head>\n';tmp+='\t<title>'+title+'</title>\n';tmp+='\t<meta http-equiv="Content-Type" content="text/html; charset='+enc+'" />\n';tmp+='</head>\n';tmp+='<body';if(ff!=''||fz!=''){tmp+=' style="';if(ds!='')tmp+=ds+";";if(ff!='')tmp+='font-family: '+ff+";";if(fz!='')tmp+='font-size: '+fz+";";tmp+='"'}if(dtc!='')tmp+=' text="'+dtc+'"';tmp+='>\n';inst.fullpageTopContent=tmp}}this._addToHead(inst);break;case"get_from_editor":if(inst.fullpageTopContent&&!tinyMCE.getParam("fullpage_hide_in_source_view",false)){content=content.replace(/(\s)?mce\_[a-z_]+\=[^\s>]+(\s|\>)/i,'');content=inst.fullpageTopContent+content+"\n</body>\n</html>"}break;case"submit_content":if(inst.fullpageTopContent&&tinyMCE.getParam("fullpage_hide_in_source_view",false))content=inst.fullpageTopContent+content+"\n</body>\n</html>";break}return content},_addToHead:function(inst){var doc=inst.getDoc();var head=doc.getElementsByTagName("head")[0];var body=doc.body;var h=inst.fullpageTopContent;var e=doc.createElement("body");var nl,i,le,tmp;h=h.replace(/(\r|\n)/gi,'');h=h.replace(/<\?[^\>]*\>/gi,'');h=h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi,'');h=h.replace(/<script(.*?)<\/script>/gi,'');h=h.replace(/<title(.*?)<\/title>/gi,'');h=h.replace(/<(meta|base)[^>]*>/gi,'');h=h.replace(/<link([^>]*)\/>/gi,'<pre mce_type="link" $1></pre>');h=h.replace(/<body/gi,'<div mce_type="body"');h+='</div>';e.innerHTML=h;body.vLink=body.aLink=body.link=body.text='';body.style.cssText='';nl=head.getElementsByTagName('link');for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],'mce_head')=="true")nl[i].parentNode.removeChild(nl[i])}nl=e.getElementsByTagName('pre');for(i=0;i<nl.length;i++){tmp=tinyMCE.getAttrib(nl[i],'media');if(tinyMCE.getAttrib(nl[i],'mce_type')=="link"&&(tmp==""||tmp=="screen"||tmp=="all")&&tinyMCE.getAttrib(nl[i],'rel')=="stylesheet"){le=doc.createElement("link");le.rel="stylesheet";le.href=tinyMCE.getAttrib(nl[i],'href');le.setAttribute("mce_head","true");head.appendChild(le)}}nl=e.getElementsByTagName('div');if(nl.length>0){body.style.cssText=tinyMCE.getAttrib(nl[0],'style');if((tmp=tinyMCE.getAttrib(nl[0],'leftmargin'))!=''&&body.style.marginLeft=='')body.style.marginLeft=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'rightmargin'))!=''&&body.style.marginRight=='')body.style.marginRight=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'topmargin'))!=''&&body.style.marginTop=='')body.style.marginTop=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'bottommargin'))!=''&&body.style.marginBottom=='')body.style.marginBottom=tmp+"px";body.dir=tinyMCE.getAttrib(nl[0],'dir');body.vLink=tinyMCE.getAttrib(nl[0],'vlink');body.aLink=tinyMCE.getAttrib(nl[0],'alink');body.link=tinyMCE.getAttrib(nl[0],'link');body.text=tinyMCE.getAttrib(nl[0],'text');if((tmp=tinyMCE.getAttrib(nl[0],'background'))!='')body.style.backgroundImage="url('"+tmp+"')";if((tmp=tinyMCE.getAttrib(nl[0],'bgcolor'))!='')body.style.backgroundColor=tmp}}};tinyMCE.addPlugin("fullpage",TinyMCE_FullPagePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
@@ -1,140 +1,236 @@
-/**
- * $Id: editor_plugin_src.js 827 2008-04-29 15:02:42Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('fullpage');

+

+var TinyMCE_FullPagePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Fullpage',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "fullpage":

+				return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceFullPageProperties":

+				var template = new Array();

+

+				template['file']   = '../../plugins/fullpage/fullpage.htm';

+				template['width']  = 430;

+				template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0);

+

+				template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0);

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});

+			return true;

+

+			case "mceFullPageUpdate":

+				TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));

+				return true;

+	   }

+

+	   // Pass to next handler in chain

+	   return false;

+	},

+

+	cleanup : function(type, content, inst) {

+		switch (type) {

+			case "insert_to_editor":

+				var tmp = content.toLowerCase();

+				var pos = tmp.indexOf('<body'), pos2;

+

+				// Split page in header and body chunks

+				if (pos != -1) {

+					pos = tmp.indexOf('>', pos);

+					pos2 = tmp.lastIndexOf('</body>');

+					inst.fullpageTopContent = content.substring(0, pos + 1);

+					content = content.substring(pos + 1, pos2);

+					// tinyMCE.debug(inst.fullpageTopContent, content);

+				} else {

+					if (!inst.fullpageTopContent) {

+						var docType = tinyMCE.getParam("fullpage_default_doctype", '<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');

+						var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8');

+						var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document');

+						var lang = tinyMCE.getParam("fullpage_default_langcode", 'en');

+						var pi = tinyMCE.getParam("fullpage_default_xml_pi", true);

+						var ff = tinyMCE.getParam("fullpage_default_font_family", "");

+						var fz = tinyMCE.getParam("fullpage_default_font_size", "");

+						var ds = tinyMCE.getParam("fullpage_default_style", "");

+						var dtc = tinyMCE.getParam("fullpage_default_text_color", "");

+

+						// Xml encode it

+						title = title.replace(/&/g, '&amp;');

+						title = title.replace(/\"/g, '&quot;');

+						title = title.replace(/</g, '&lt;');

+						title = title.replace(/>/g, '&gt;');

+

+						tmp = '';

+

+						// Make default chunk

+						if (pi)

+							tmp += '<?xml version="1.0" encoding="' + enc + '"?>\n';

+

+						tmp += docType + '\n';

+						tmp += '<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="' + lang + '" xml:lang="' + lang + '">\n';

+						tmp += '<head>\n';

+						tmp += '\t<title>' + title + '</title>\n';

+						tmp += '\t<meta http-equiv="Content-Type" content="text/html; charset=' + enc + '" />\n';

+						tmp += '</head>\n';

+						tmp += '<body';

+

+						if (ff != '' || fz != '') {

+							tmp += ' style="';

+

+							if (ds != '')

+								tmp += ds + ";";

+

+							if (ff != '')

+								tmp += 'font-family: ' + ff + ";";

+

+							if (fz != '')

+								tmp += 'font-size: ' + fz + ";";

+

+							tmp += '"';

+						}

+

+						if (dtc != '')

+							tmp += ' text="' + dtc + '"';

+

+						tmp += '>\n';

+

+						inst.fullpageTopContent = tmp;

+					}

+				}

+

+				this._addToHead(inst);

+

+				break;

+

+			case "get_from_editor":

+				if (inst.fullpageTopContent && !tinyMCE.getParam("fullpage_hide_in_source_view", false)) {

+					content = content.replace(/(\s)?mce\_[a-z_]+\=[^\s>]+(\s|\>)/i, ''); // Remove internal stuff

+					content = inst.fullpageTopContent + content + "\n</body>\n</html>";

+				}

+

+				break;

+

+			case "submit_content":

+				if (inst.fullpageTopContent && tinyMCE.getParam("fullpage_hide_in_source_view", false))

+					content = inst.fullpageTopContent + content + "\n</body>\n</html>";

+

+				break;

+		}

+

+		// Pass through to next handler in chain

+		return content;

+	},

+

+	// Private plugin internal methods

+

+	_addToHead : function(inst) {

+		var doc = inst.getDoc();

+		var head = doc.getElementsByTagName("head")[0];

+		var body = doc.body;

+		var h = inst.fullpageTopContent;

+		var e = doc.createElement("body");

+		var nl, i, le, tmp;

+

+		// Remove stuff we don't want

+		h = h.replace(/(\r|\n)/gi, '');

+		h = h.replace(/<\?[^\>]*\>/gi, '');

+		h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, '');

+		h = h.replace(/<script(.*?)<\/script>/gi, '');

+		h = h.replace(/<title(.*?)<\/title>/gi, '');

+		h = h.replace(/<(meta|base)[^>]*>/gi, '');

+

+		// Make link and style elements into pre

+		h = h.replace(/<link([^>]*)\/>/gi, '<pre mce_type="link" $1></pre>');

+		//h = h.replace(/<style([^>]*)>(.*?)<\/style>/gi, '<pre mce_type="style" $1>$2</pre>');

+

+		// Make body a div

+		h = h.replace(/<body/gi, '<div mce_type="body"');

+		h += '</div>';

+

+		// Now crapy MSIE can parse it

+		e.innerHTML = h;

+

+		// Reset all body attributes

+		body.vLink = body.aLink = body.link = body.text = '';

+		body.style.cssText = '';

+

+		// Delete all old links

+		nl = head.getElementsByTagName('link');

+		for (i=0; i<nl.length; i++) {

+			if (tinyMCE.getAttrib(nl[i], 'mce_head') == "true")

+				nl[i].parentNode.removeChild(nl[i]);

+		}

+

+		// Add link elements

+		nl = e.getElementsByTagName('pre');

+		for (i=0; i<nl.length; i++) {

+			tmp = tinyMCE.getAttrib(nl[i], 'media');

+			if (tinyMCE.getAttrib(nl[i], 'mce_type') == "link" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(nl[i], 'rel') == "stylesheet") {

+				le = doc.createElement("link");

+

+				le.rel = "stylesheet";

+				le.href = tinyMCE.getAttrib(nl[i], 'href');

+				le.setAttribute("mce_head", "true");

+

+				head.appendChild(le);

+			}

+		}

+

+		// Add body attributes

+		nl = e.getElementsByTagName('div');

+		if (nl.length > 0) {

+			body.style.cssText = tinyMCE.getAttrib(nl[0], 'style');

+

+			if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '')

+				body.style.marginLeft = tmp + "px";

+

+			if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '')

+				body.style.marginRight = tmp + "px";

+

+			if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '')

+				body.style.marginTop = tmp + "px";

+

+			if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '')

+				body.style.marginBottom = tmp + "px";

+

+			body.dir = tinyMCE.getAttrib(nl[0], 'dir');

+			body.vLink = tinyMCE.getAttrib(nl[0], 'vlink');

+			body.aLink = tinyMCE.getAttrib(nl[0], 'alink');

+			body.link = tinyMCE.getAttrib(nl[0], 'link');

+			body.text = tinyMCE.getAttrib(nl[0], 'text');

+

+			if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '')

+				body.style.backgroundImage = "url('" + tmp + "')";

+

+			if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '')

+				body.style.backgroundColor = tmp;

+		}

+	}

+};

+

+tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.FullPagePlugin', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceFullPageProperties', function() {
-				ed.windowManager.open({
-					file : url + '/fullpage.htm',
-					width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
-					height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url,
-					head_html : t.head
-				});
-			});
-
-			// Register buttons
-			ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
-
-			ed.onBeforeSetContent.add(t._setContent, t);
-			ed.onSetContent.add(t._setBodyAttribs, t);
-			ed.onGetContent.add(t._getContent, t);
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Fullpage',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private plugin internal methods
-
-		_setBodyAttribs : function(ed, o) {
-			var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i);
-
-			if (attr && attr[1]) {
-				bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);
-
-				for(i = 0, len = bdattr.length; i < len; i++) {
-					kv = bdattr[i].split('=');
-					k = kv[0].replace(/\s/,'');
-					v = kv[1];
-
-					if (v) {
-						v = v.replace(/^\s+/,'').replace(/\s+$/,'');
-						t = v.match(/^["'](.*)["']$/);
-
-						if (t)
-							v = t[1];
-					} else
-						v = k;
-
-					ed.dom.setAttrib(ed.getBody(), 'style', v);
-				}
-			}
-		},
-
-		_createSerializer : function() {
-			return new tinymce.dom.Serializer({
-				dom : this.editor.dom,
-				apply_source_formatting : true
-			});
-		},
-
-		_setContent : function(ed, o) {
-			var t = this, sp, ep, c = o.content, v, st = '';
-
-			// Parse out head, body and footer
-			c = c.replace(/<(\/?)BODY/gi, '<$1body');
-			sp = c.indexOf('<body');
-
-			if (sp != -1) {
-				sp = c.indexOf('>', sp);
-				t.head = c.substring(0, sp + 1);
-
-				ep = c.indexOf('</body', sp);
-				if (ep == -1)
-					ep = c.indexOf('</body', ep);
-
-				o.content = c.substring(sp + 1, ep);
-				t.foot = c.substring(ep);
-
-				function low(s) {
-					return s.replace(/<\/?[A-Z]+/g, function(a) {
-						return a.toLowerCase();
-					})
-				};
-
-				t.head = low(t.head);
-				t.foot = low(t.foot);
-			} else {
-				t.head = '';
-				if (ed.getParam('fullpage_default_xml_pi'))
-					t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
-
-				t.head += ed.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
-				t.head += '\n<html>\n<head>\n<title>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n';
-
-				if (v = ed.getParam('fullpage_default_encoding'))
-					t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n';
-
-				if (v = ed.getParam('fullpage_default_font_family'))
-					st += 'font-family: ' + v + ';';
-
-				if (v = ed.getParam('fullpage_default_font_size'))
-					st += 'font-size: ' + v + ';';
-
-				if (v = ed.getParam('fullpage_default_text_color'))
-					st += 'color: ' + v + ';';
-
-				t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n';
-				t.foot = '\n</body>\n</html>';
-			}
-		},
-
-		_getContent : function(ed, o) {
-			var t = this;
-
-			o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
@@ -1,578 +1,578 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#fullpage_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="js/fullpage.js"></script>
-	<link href="css/fullpage.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="advlink" style="display: none">
-    <form onsubmit="updateAction();return false;" name="fullpage" action="#">
-		<div class="tabs">
-			<ul>
-				<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>
-				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_tab}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_fullpage_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mclayer.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/fullpage.js"></script>

+	<link href="css/fullpage.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="advlink" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+    <form onsubmit="updateAction();return false;" name="fullpage" action="#">

+		<div class="tabs">

+			<ul>

+				<li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{$lang_fullpage_meta_tab}</a></span></li>

+				<li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{$lang_fullpage_appearance_tab}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_tab}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="meta_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_fullpage_meta_props}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td nowrap="nowrap"><label for="metatitle">{$lang_fullpage_meta_title}</label>&nbsp;</td>

+							<td><input type="text" id="metatitle" name="metatitle" value="" /></td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="metakeywords">{$lang_fullpage_meta_keywords}</label>&nbsp;</td>

+							<td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="metadescription">{$lang_fullpage_meta_description}</label>&nbsp;</td>

+							<td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="metaauthor">{$lang_fullpage_author}</label>&nbsp;</td>

+							<td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="metacopyright">{$lang_fullpage_copyright}</label>&nbsp;</td>

+							<td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="metarobots">{$lang_fullpage_meta_robots}</label>&nbsp;</td>

+							<td>

+<select id="metarobots" name="metarobots">

+			<option value="">{$lang_not_set}</option> 

+			<option value="index,follow">{$lang_fullpage_meta_index_follow}</option>

+			<option value="index,nofollow">{$lang_fullpage_meta_index_nofollow}</option>

+			<option value="noindex,follow">{$lang_fullpage_meta_noindex_follow}</option>

+			<option value="noindex,nofollow">{$lang_fullpage_meta_noindex_nofollow}</option>

+</select>

+							</td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_fullpage_langprops}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="docencoding">{$lang_fullpage_encoding}</label></td> 

+							<td>

+								<select id="docencoding" name="docencoding"> 

+										<option value="">{$lang_not_set}</option>

+								</select>

+							</td> 

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="doctypes">{$lang_fullpage_doctypes}</label>&nbsp;</td>

+							<td>

+								<select id="doctypes" name="doctypes">

+										<option value="">{$lang_not_set}</option>

+								</select>

+							</td>

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="langcode">{$lang_fullpage_langcode}</label>&nbsp;</td>

+							<td><input type="text" id="langcode" name="langcode" value="" /></td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="langdir">{$lang_fullpage_langdir}</label></td> 

+							<td>

+								<select id="langdir" name="langdir"> 

+										<option value="">{$lang_not_set}</option> 

+										<option value="ltr">{$lang_fullpage_ltr}</option> 

+										<option value="rtl">{$lang_fullpage_rtl}</option> 

+								</select>

+							</td> 

+						</tr>

+						<tr>

+							<td nowrap="nowrap"><label for="xml_pi">{$lang_fullpage_xml_pi}</label>&nbsp;</td>

+							<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="appearance_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_fullpage_appearance_textprops}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="fontface">{$lang_fullpage_fontface}</label></td> 

+							<td>

+								<select id="fontface" name="fontface" onchange="changedStyleField(this);">

+										<option value="">{$lang_not_set}</option>

+								</select>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="fontsize">{$lang_fullpage_fontsize}</label></td> 

+							<td>

+								<select id="fontsize" name="fontsize" onchange="changedStyleField(this);">

+										<option value="">{$lang_not_set}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="textcolor">{$lang_fullpage_textcolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>

+										<td id="textcolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_fullpage_appearance_bgprops}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="bgimage">{$lang_fullpage_bgimage}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>

+										<td id="bgimage_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="bgcolor">{$lang_fullpage_bgcolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>

+										<td id="bgcolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_fullpage_appearance_marginprops}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="leftmargin">{$lang_fullpage_left_margin}</label></td> 

+							<td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>

+							<td class="column1"><label for="rightmargin">{$lang_fullpage_right_margin}</label></td> 

+							<td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="topmargin">{$lang_fullpage_top_margin}</label></td> 

+							<td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>

+							<td class="column1"><label for="bottommargin">{$lang_fullpage_bottom_margin}</label></td> 

+							<td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_fullpage_appearance_linkprops}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="link_color">{$lang_fullpage_link_color}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>

+										<td id="link_color_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+

+							<td class="column1"><label for="visited_color">{$lang_fullpage_visited_color}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>

+										<td id="visited_color_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="active_color">{$lang_fullpage_active_color}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>

+										<td id="active_color_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+

+							<td>&nbsp;</td>

+							<td>&nbsp;</td>

+

+<!--							<td class="column1"><label for="hover_color">{$lang_fullpage_hover_color}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>

+										<td id="hover_color_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> -->

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_fullpage_appearance_style}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="stylesheet">{$lang_fullpage_stylesheet}</label></td> 

+							<td><table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>

+										<td id="stylesheet_browsercontainer">&nbsp;</td>

+									</tr>

+								</table></td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="style">{$lang_fullpage_style}</label></td> 

+							<td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+				<div id="addmenu">

+					<table border="0" cellpadding="0" cellspacing="0">

+						<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{$lang_fullpage_add_title}</span></a></td></tr>

+						<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{$lang_fullpage_add_meta}</span></a></td></tr>

+						<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{$lang_fullpage_add_script}</span></a></td></tr>

+						<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{$lang_fullpage_add_style}</span></a></td></tr>

+						<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{$lang_fullpage_add_link}</span></a></td></tr>

+						<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{$lang_fullpage_add_base}</span></a></td></tr>

+						<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{$lang_fullpage_add_comment}</span></a></td></tr>

+					</table>

+				</div>

+

+				<fieldset>

+					<legend>{$lang_fullpage_head_elements}</legend>

+

+					<div class="headlistwrapper">

+						<div class="toolbar">

+							<div style="float: left">

+								<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{$lang_fullpage_add}"></a>

+								<a href="#" onmousedown="return false;" class="removebutton" title="{$lang_fullpage_remove}"></a>

+							</div>

+							<div style="float: right">

+								<a href="#" onmousedown="return false;" class="moveupbutton" title="{$lang_fullpage_moveup}"></a>

+								<a href="#" onmousedown="return false;" class="movedownbutton" title="{$lang_fullpage_movedown}"></a>

+							</div>

+							<br style="clear: both" />

+						</div>

+						<select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">

+							<option value="title_0">&lt;title&gt;Some title bla bla bla&lt;/title&gt;</option>

+							<option value="meta_1">&lt;meta name="keywords"&gt;Some bla bla bla&lt;/meta&gt;</option>

+							<option value="meta_2">&lt;meta name="description"&gt;Some bla bla bla bla bla bla bla bla bla&lt;/meta&gt;</option>

+							<option value="script_3">&lt;script language=&quot;javascript&quot;&gt;...&lt;/script&gt;</option>

+							<option value="style_4">&lt;style&gt;...&lt;/style&gt;</option>

+							<option value="base_5">&lt;base href="." /&gt;</option>

+							<option value="comment_6">&lt;!-- ... --&gt;</option>

+							<option value="link_7">&lt;link href="." /&gt;</option>

+						</select>

+					</div>

+				</fieldset>

+

+				<fieldset id="meta_element">

+					<legend>{$lang_fullpage_meta_element}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="element_meta_type">{$lang_fullpage_type}</label></td> 

+							<td><select id="element_meta_type">

+										<option value="name">name</option>

+										<option value="http-equiv">http-equiv</option>

+								</select></td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="element_meta_name">{$lang_fullpage_name}</label></td> 

+							<td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="element_meta_content">{$lang_fullpage_content}</label></td> 

+							<td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>

+						</tr>

+					</table>

+

+					<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+

+				<fieldset id="title_element">

+					<legend>{$lang_fullpage_title_element}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="element_title">{$lang_fullpage_meta_title}</label></td> 

+							<td><input id="element_title" name="element_title" type="text" value="" /></td>

+						</tr>

+					</table>

+

+					<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+

+				<fieldset id="script_element">

+					<legend>{$lang_fullpage_script_element}</legend>

+

+					<div class="tabs">

+						<ul>

+							<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>

+							<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>

+						</ul>

+					</div>

+

+					<br style="clear: both" />

+

+					<div class="panel_wrapper">

+						<div id="script_props_panel" class="panel current">

+							<table border="0" cellpadding="4" cellspacing="0">

+								<tr>

+									<td class="column1"><label for="element_script_type">{$lang_fullpage_type}</label></td> 

+									<td><select id="element_script_type">

+										<option value="text/javascript">text/javascript</option>

+										<option value="text/jscript">text/jscript</option>

+										<option value="text/vbscript">text/vbscript</option>

+										<option value="text/vbs">text/vbs</option>

+										<option value="text/ecmascript">text/ecmascript</option>

+										<option value="text/xml">text/xml</option>

+									</select></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_script_src">{$lang_fullpage_src}</label></td> 

+									<td><table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>

+										<td id="script_src_pickcontainer">&nbsp;</td>

+									</tr>

+								</table></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_script_charset">{$lang_fullpage_charset}</label></td> 

+									<td><select id="element_script_charset"><option value="">{$lang_not_set}</option></select></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_script_defer">{$lang_fullpage_defer}</label></td> 

+									<td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>

+								</tr>

+							</table>

+						</div>

+

+						<div id="script_value_panel" class="panel">

+							<textarea id="element_script_value"></textarea>

+						</div>

+					</div>

+

+					<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+

+				<fieldset id="style_element">

+					<legend>{$lang_fullpage_style_element}</legend>

+

+					<div class="tabs">

+						<ul>

+							<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{$lang_fullpage_properties}</a></span></li>

+							<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{$lang_fullpage_value}</a></span></li>

+						</ul>

+					</div>

+

+					<br style="clear: both" />

+

+					<div class="panel_wrapper">

+						<div id="style_props_panel" class="panel current">

+							<table border="0" cellpadding="4" cellspacing="0">

+								<tr>

+									<td class="column1"><label for="element_style_type">{$lang_fullpage_type}</label></td> 

+									<td><select id="element_style_type">

+										<option value="text/css">text/css</option>

+									</select></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_style_media">{$lang_fullpage_media}</label></td> 

+									<td><select id="element_style_media"></select></td>

+								</tr>

+							</table>

+						</div>

+

+						<div id="style_value_panel" class="panel">

+							<textarea id="element_style_value"></textarea>

+						</div>

+					</div>

+

+					<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+

+				<fieldset id="base_element">

+					<legend>{$lang_fullpage_base_element}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td class="column1"><label for="element_base_href">{$lang_fullpage_href}</label></td> 

+							<td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>

+						</tr>

+						<tr>

+							<td class="column1"><label for="element_base_target">{$lang_fullpage_target}</label></td> 

+							<td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>

+						</tr>

+					</table>

+

+					<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+

+				<fieldset id="link_element">

+					<legend>{$lang_fullpage_link_element}</legend>

+

+					<div class="tabs">

+						<ul>

+							<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{$lang_fullpage_general_props}</a></span></li>

+							<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{$lang_fullpage_advanced_props}</a></span></li>

+						</ul>

+					</div>

+

+					<br style="clear: both" />

+

+					<div class="panel_wrapper">

+						<div id="link_general_panel" class="panel current">

+							<table border="0" cellpadding="4" cellspacing="0">

+								<tr>

+									<td class="column1"><label for="element_link_href">{$lang_fullpage_href}</label></td> 

+									<td><table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>

+										<td id="link_href_pickcontainer">&nbsp;</td>

+									</tr>

+								</table></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_link_title">{$lang_fullpage_meta_title}</label></td> 

+									<td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_link_type">{$lang_fullpage_type}</label></td> 

+									<td><select id="element_link_type" name="element_link_type">

+										<option value="text/css">text/css</option>

+										<option value="text/javascript">text/javascript</option>

+									</select></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_link_media">{$lang_fullpage_media}</label></td> 

+									<td><select id="element_link_media" name="element_link_media"></select></td>

+								</tr>

+								<tr>

+									<td><label for="element_style_rel">{$lang_fullpage_rel}</label></td>

+									<td><select id="element_style_rel" name="element_style_rel"> 

+											<option value="">{$lang_not_set}</option> 

+											<option value="stylesheet">Stylesheet</option>

+											<option value="alternate">Alternate</option>

+											<option value="designates">Designates</option>

+											<option value="start">Start</option>

+											<option value="next">Next</option>

+											<option value="prev">Prev</option>

+											<option value="contents">Contents</option>

+											<option value="index">Index</option>

+											<option value="glossary">Glossary</option>

+											<option value="copyright">Copyright</option>

+											<option value="chapter">Chapter</option>

+											<option value="subsection">Subsection</option>

+											<option value="appendix">Appendix</option>

+											<option value="help">Help</option>

+											<option value="bookmark">Bookmark</option>

+										</select> 

+									</td>

+								</tr>

+							</table>

+						</div>

+

+						<div id="link_advanced_panel" class="panel">

+							<table border="0" cellpadding="4" cellspacing="0">

+								<tr>

+									<td class="column1"><label for="element_link_charset">{$lang_fullpage_charset}</label></td> 

+									<td><select id="element_link_charset"><option value="">{$lang_not_set}</option></select></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_link_hreflang">{$lang_fullpage_hreflang}</label></td> 

+									<td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>

+								</tr>

+								<tr>

+									<td class="column1"><label for="element_link_target">{$lang_fullpage_target}</label></td> 

+									<td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>

+								</tr>

+								<tr>

+									<td><label for="element_style_rev">{$lang_fullpage_rev}</label></td>

+									<td><select id="element_style_rev" name="element_style_rev"> 

+											<option value="">{$lang_not_set}</option> 

+											<option value="alternate">Alternate</option> 

+											<option value="designates">Designates</option> 

+											<option value="stylesheet">Stylesheet</option> 

+											<option value="start">Start</option> 

+											<option value="next">Next</option> 

+											<option value="prev">Prev</option> 

+											<option value="contents">Contents</option> 

+											<option value="index">Index</option> 

+											<option value="glossary">Glossary</option> 

+											<option value="copyright">Copyright</option> 

+											<option value="chapter">Chapter</option> 

+											<option value="subsection">Subsection</option> 

+											<option value="appendix">Appendix</option> 

+											<option value="help">Help</option> 

+											<option value="bookmark">Bookmark</option> 

+										</select> 

+									</td>

+								</tr>

+							</table>

+						</div>

+					</div>

+

+					<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+

+				<fieldset id="comment_element">

+					<legend>{$lang_fullpage_comment_element}</legend>

+

+					<textarea id="element_comment_value"></textarea>

+

+					<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{$lang_update}" onclick="updateElement();" />

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="update" value="{$lang_update}" onclick="updateAction();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+    </form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="meta_panel" class="panel current">
-				<fieldset>
-					<legend>{#fullpage_dlg.meta_props}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td nowrap="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>
-							<td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>
-							<td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>
-							<td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>
-							<td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>
-							<td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>
-							<td>
-								<select id="metarobots" name="metarobots">
-											<option value="">{#not_set}</option> 
-											<option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>
-											<option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>
-											<option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>
-											<option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>
-								</select>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#fullpage_dlg.langprops}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td> 
-							<td>
-								<select id="docencoding" name="docencoding"> 
-										<option value="">{#not_set}</option>
-								</select>
-							</td> 
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label>&nbsp;</td>
-							<td>
-								<select id="doctypes" name="doctypes">
-										<option value="">{#not_set}</option>
-								</select>
-							</td>
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>
-							<td><input type="text" id="langcode" name="langcode" value="" /></td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td> 
-							<td>
-								<select id="langdir" name="langdir"> 
-										<option value="">{#not_set}</option> 
-										<option value="ltr">{#fullpage_dlg.ltr}</option> 
-										<option value="rtl">{#fullpage_dlg.rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-						<tr>
-							<td nowrap="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>
-							<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="appearance_panel" class="panel">
-				<fieldset>
-					<legend>{#fullpage_dlg.appearance_textprops}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td> 
-							<td>
-								<select id="fontface" name="fontface" onchange="changedStyleField(this);">
-										<option value="">{#not_set}</option>
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td> 
-							<td>
-								<select id="fontsize" name="fontsize" onchange="changedStyleField(this);">
-										<option value="">{#not_set}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>
-										<td id="textcolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#fullpage_dlg.appearance_bgprops}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>
-										<td id="bgimage_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>
-										<td id="bgcolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#fullpage_dlg.appearance_marginprops}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td> 
-							<td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
-							<td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td> 
-							<td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td> 
-							<td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
-							<td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td> 
-							<td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#fullpage_dlg.appearance_linkprops}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>
-										<td id="link_color_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-
-							<td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>
-										<td id="visited_color_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>
-										<td id="active_color_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-
-							<td>&nbsp;</td>
-							<td>&nbsp;</td>
-
-<!--							<td class="column1"><label for="hover_color">{#fullpage_dlg.hover_color}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>
-										<td id="hover_color_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> -->
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#fullpage_dlg.appearance_style}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td> 
-							<td><table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
-										<td id="stylesheet_browsercontainer">&nbsp;</td>
-									</tr>
-								</table></td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="style">{#fullpage_dlg.style}</label></td> 
-							<td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-				<div id="addmenu">
-					<table border="0" cellpadding="0" cellspacing="0">
-						<tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{#fullpage_dlg.add_title}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{#fullpage_dlg.add_meta}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{#fullpage_dlg.add_script}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{#fullpage_dlg.add_style}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{#fullpage_dlg.add_link}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{#fullpage_dlg.add_base}</span></a></td></tr>
-						<tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{#fullpage_dlg.add_comment}</span></a></td></tr>
-					</table>
-				</div>
-
-				<fieldset>
-					<legend>{#fullpage_dlg.head_elements}</legend>
-
-					<div class="headlistwrapper">
-						<div class="toolbar">
-							<div style="float: left">
-								<a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{#fullpage_dlg.add}"></a>
-								<a href="#" onmousedown="return false;" class="removebutton" title="{#fullpage_dlg.remove}"></a>
-							</div>
-							<div style="float: right">
-								<a href="#" onmousedown="return false;" class="moveupbutton" title="{#fullpage_dlg.moveup}"></a>
-								<a href="#" onmousedown="return false;" class="movedownbutton" title="{#fullpage_dlg.movedown}"></a>
-							</div>
-							<br style="clear: both" />
-						</div>
-						<select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">
-							<option value="title_0">&lt;title&gt;Some title bla bla bla&lt;/title&gt;</option>
-							<option value="meta_1">&lt;meta name="keywords"&gt;Some bla bla bla&lt;/meta&gt;</option>
-							<option value="meta_2">&lt;meta name="description"&gt;Some bla bla bla bla bla bla bla bla bla&lt;/meta&gt;</option>
-							<option value="script_3">&lt;script language=&quot;javascript&quot;&gt;...&lt;/script&gt;</option>
-							<option value="style_4">&lt;style&gt;...&lt;/style&gt;</option>
-							<option value="base_5">&lt;base href="." /&gt;</option>
-							<option value="comment_6">&lt;!-- ... --&gt;</option>
-							<option value="link_7">&lt;link href="." /&gt;</option>
-						</select>
-					</div>
-				</fieldset>
-
-				<fieldset id="meta_element">
-					<legend>{#fullpage_dlg.meta_element}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="element_meta_type">{#fullpage_dlg.type}</label></td> 
-							<td><select id="element_meta_type">
-										<option value="name">name</option>
-										<option value="http-equiv">http-equiv</option>
-								</select></td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="element_meta_name">{#fullpage_dlg.name}</label></td> 
-							<td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="element_meta_content">{#fullpage_dlg.content}</label></td> 
-							<td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>
-						</tr>
-					</table>
-
-					<input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-
-				<fieldset id="title_element">
-					<legend>{#fullpage_dlg.title_element}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="element_title">{#fullpage_dlg.meta_title}</label></td> 
-							<td><input id="element_title" name="element_title" type="text" value="" /></td>
-						</tr>
-					</table>
-
-					<input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-
-				<fieldset id="script_element">
-					<legend>{#fullpage_dlg.script_element}</legend>
-
-					<div class="tabs">
-						<ul>
-							<li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
-							<li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
-						</ul>
-					</div>
-
-					<br style="clear: both" />
-
-					<div class="panel_wrapper">
-						<div id="script_props_panel" class="panel current">
-							<table border="0" cellpadding="4" cellspacing="0">
-								<tr>
-									<td class="column1"><label for="element_script_type">{#fullpage_dlg.type}</label></td> 
-									<td><select id="element_script_type">
-										<option value="text/javascript">text/javascript</option>
-										<option value="text/jscript">text/jscript</option>
-										<option value="text/vbscript">text/vbscript</option>
-										<option value="text/vbs">text/vbs</option>
-										<option value="text/ecmascript">text/ecmascript</option>
-										<option value="text/xml">text/xml</option>
-									</select></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_script_src">{#fullpage_dlg.src}</label></td> 
-									<td><table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>
-										<td id="script_src_pickcontainer">&nbsp;</td>
-									</tr>
-								</table></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_script_charset">{#fullpage_dlg.charset}</label></td> 
-									<td><select id="element_script_charset"><option value="">{#not_set}</option></select></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_script_defer">{#fullpage_dlg.defer}</label></td> 
-									<td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>
-								</tr>
-							</table>
-						</div>
-
-						<div id="script_value_panel" class="panel">
-							<textarea id="element_script_value"></textarea>
-						</div>
-					</div>
-
-					<input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-
-				<fieldset id="style_element">
-					<legend>{#fullpage_dlg.style_element}</legend>
-
-					<div class="tabs">
-						<ul>
-							<li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
-							<li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
-						</ul>
-					</div>
-
-					<br style="clear: both" />
-
-					<div class="panel_wrapper">
-						<div id="style_props_panel" class="panel current">
-							<table border="0" cellpadding="4" cellspacing="0">
-								<tr>
-									<td class="column1"><label for="element_style_type">{#fullpage_dlg.type}</label></td> 
-									<td><select id="element_style_type">
-										<option value="text/css">text/css</option>
-									</select></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_style_media">{#fullpage_dlg.media}</label></td> 
-									<td><select id="element_style_media"></select></td>
-								</tr>
-							</table>
-						</div>
-
-						<div id="style_value_panel" class="panel">
-							<textarea id="element_style_value"></textarea>
-						</div>
-					</div>
-
-					<input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-
-				<fieldset id="base_element">
-					<legend>{#fullpage_dlg.base_element}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td class="column1"><label for="element_base_href">{#fullpage_dlg.href}</label></td> 
-							<td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>
-						</tr>
-						<tr>
-							<td class="column1"><label for="element_base_target">{#fullpage_dlg.target}</label></td> 
-							<td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>
-						</tr>
-					</table>
-
-					<input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-
-				<fieldset id="link_element">
-					<legend>{#fullpage_dlg.link_element}</legend>
-
-					<div class="tabs">
-						<ul>
-							<li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{#fullpage_dlg.general_props}</a></span></li>
-							<li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_props}</a></span></li>
-						</ul>
-					</div>
-
-					<br style="clear: both" />
-
-					<div class="panel_wrapper">
-						<div id="link_general_panel" class="panel current">
-							<table border="0" cellpadding="4" cellspacing="0">
-								<tr>
-									<td class="column1"><label for="element_link_href">{#fullpage_dlg.href}</label></td> 
-									<td><table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>
-										<td id="link_href_pickcontainer">&nbsp;</td>
-									</tr>
-								</table></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_link_title">{#fullpage_dlg.meta_title}</label></td> 
-									<td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_link_type">{#fullpage_dlg.type}</label></td> 
-									<td><select id="element_link_type" name="element_link_type">
-										<option value="text/css">text/css</option>
-										<option value="text/javascript">text/javascript</option>
-									</select></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_link_media">{#fullpage_dlg.media}</label></td> 
-									<td><select id="element_link_media" name="element_link_media"></select></td>
-								</tr>
-								<tr>
-									<td><label for="element_style_rel">{#fullpage_dlg.rel}</label></td>
-									<td><select id="element_style_rel" name="element_style_rel"> 
-											<option value="">{#not_set}</option> 
-											<option value="stylesheet">Stylesheet</option>
-											<option value="alternate">Alternate</option>
-											<option value="designates">Designates</option>
-											<option value="start">Start</option>
-											<option value="next">Next</option>
-											<option value="prev">Prev</option>
-											<option value="contents">Contents</option>
-											<option value="index">Index</option>
-											<option value="glossary">Glossary</option>
-											<option value="copyright">Copyright</option>
-											<option value="chapter">Chapter</option>
-											<option value="subsection">Subsection</option>
-											<option value="appendix">Appendix</option>
-											<option value="help">Help</option>
-											<option value="bookmark">Bookmark</option>
-										</select> 
-									</td>
-								</tr>
-							</table>
-						</div>
-
-						<div id="link_advanced_panel" class="panel">
-							<table border="0" cellpadding="4" cellspacing="0">
-								<tr>
-									<td class="column1"><label for="element_link_charset">{#fullpage_dlg.charset}</label></td> 
-									<td><select id="element_link_charset"><option value="">{#not_set}</option></select></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_link_hreflang">{#fullpage_dlg.hreflang}</label></td> 
-									<td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>
-								</tr>
-								<tr>
-									<td class="column1"><label for="element_link_target">{#fullpage_dlg.target}</label></td> 
-									<td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>
-								</tr>
-								<tr>
-									<td><label for="element_style_rev">{#fullpage_dlg.rev}</label></td>
-									<td><select id="element_style_rev" name="element_style_rev"> 
-											<option value="">{#not_set}</option> 
-											<option value="alternate">Alternate</option> 
-											<option value="designates">Designates</option> 
-											<option value="stylesheet">Stylesheet</option> 
-											<option value="start">Start</option> 
-											<option value="next">Next</option> 
-											<option value="prev">Prev</option> 
-											<option value="contents">Contents</option> 
-											<option value="index">Index</option> 
-											<option value="glossary">Glossary</option> 
-											<option value="copyright">Copyright</option> 
-											<option value="chapter">Chapter</option> 
-											<option value="subsection">Subsection</option> 
-											<option value="appendix">Appendix</option> 
-											<option value="help">Help</option> 
-											<option value="bookmark">Bookmark</option> 
-										</select> 
-									</td>
-								</tr>
-							</table>
-						</div>
-					</div>
-
-					<input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-
-				<fieldset id="comment_element">
-					<legend>{#fullpage_dlg.comment_element}</legend>
-
-					<textarea id="element_comment_value"></textarea>
-
-					<input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" id="insert" name="update" value="{#update}" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-    </form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js
+++ /dev/null
@@ -1,463 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var doc;
-
-var defaultDocTypes = 
-	'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
-	'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
-	'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
-	'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
-	'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
-	'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
-	'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
-
-var defaultEncodings = 
-	'Western european (iso-8859-1)=iso-8859-1,' +
-	'Central European (iso-8859-2)=iso-8859-2,' +
-	'Unicode (UTF-8)=utf-8,' +
-	'Chinese traditional (Big5)=big5,' +
-	'Cyrillic (iso-8859-5)=iso-8859-5,' +
-	'Japanese (iso-2022-jp)=iso-2022-jp,' +
-	'Greek (iso-8859-7)=iso-8859-7,' +
-	'Korean (iso-2022-kr)=iso-2022-kr,' +
-	'ASCII (us-ascii)=us-ascii';
-
-var defaultMediaTypes = 
-	'all=all,' +
-	'screen=screen,' +
-	'print=print,' +
-	'tty=tty,' +
-	'tv=tv,' +
-	'projection=projection,' +
-	'handheld=handheld,' +
-	'braille=braille,' +
-	'aural=aural';
-
-var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
-var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
-
-function init() {
-	var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style;
-
-	// Setup doctype select box
-	doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(',');
-	for (i=0; i<doctypes.length; i++) {
-		p = doctypes[i].split('=');
-
-		if (p.length > 1)
-			addSelectValue(f, 'doctypes', p[0], p[1]);
-	}
-
-	// Setup fonts select box
-	fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';');
-	for (i=0; i<fonts.length; i++) {
-		p = fonts[i].split('=');
-
-		if (p.length > 1)
-			addSelectValue(f, 'fontface', p[0], p[1]);
-	}
-
-	// Setup fontsize select box
-	fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
-	for (i=0; i<fonts.length; i++)
-		addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
-
-	// Setup mediatype select boxs
-	mediaTypes = ed.getParam("fullpage_media_types", defaultMediaTypes).split(',');
-	for (i=0; i<mediaTypes.length; i++) {
-		p = mediaTypes[i].split('=');
-
-		if (p.length > 1) {
-			addSelectValue(f, 'element_style_media', p[0], p[1]);
-			addSelectValue(f, 'element_link_media', p[0], p[1]);
-		}
-	}
-
-	// Setup encodings select box
-	encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(',');
-	for (i=0; i<encodings.length; i++) {
-		p = encodings[i].split('=');
-
-		if (p.length > 1) {
-			addSelectValue(f, 'docencoding', p[0], p[1]);
-			addSelectValue(f, 'element_script_charset', p[0], p[1]);
-			addSelectValue(f, 'element_link_charset', p[0], p[1]);
-		}
-	}
-
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-	document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
-	//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
-	document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
-	document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
-	document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
-	document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
-	document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
-	document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
-	document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
-
-	// Resize some elements
-	if (isVisible('stylesheetbrowser'))
-		document.getElementById('stylesheet').style.width = '220px';
-
-	if (isVisible('link_href_browser'))
-		document.getElementById('element_link_href').style.width = '230px';
-
-	if (isVisible('bgimage_browser'))
-		document.getElementById('bgimage').style.width = '210px';
-
-	// Add iframe
-	dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}});
-	doc = dom.get('documentIframe').contentWindow.document;
-	h = tinyMCEPopup.getWindowArg('head_html');
-
-	// Preprocess the HTML disable scripts and urls
-	h = h.replace(/<script>/gi, '<script type="text/javascript">');
-	h = h.replace(/type=([\"\'])?/gi, 'type=$1-mce-');
-	h = h.replace(/(src=|href=)/g, 'mce_$1');
-
-	// Write in the content in the iframe
-	doc.write(h + '</body></html>');
-	doc.close();
-
-	// Parse xml and doctype
-	xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
-	xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
-	docType = getReItem(/<\!DOCTYPE.*?>/gi, h, 0);
-	f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1);
-
-	// Parse title
-	if (e = doc.getElementsByTagName('title')[0])
-		el.metatitle.value = e.textContent || e.text;
-
-	// Parse meta
-	tinymce.each(doc.getElementsByTagName('meta'), function(n) {
-		var na = (n.getAttribute('name', 2) || '').toLowerCase(), va = n.getAttribute('content', 2), eq = n.getAttribute('httpEquiv', 2) || '';
-
-		e = el['meta' + na];
-
-		if (na == 'robots') {
-			selectByValue(f, 'metarobots', tinymce.trim(va), true, true);
-			return;
-		}
-
-		switch (eq.toLowerCase()) {
-			case "content-type":
-				tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1);
-
-				// Override XML encoding
-				if (tmp != "")
-					xmlEnc = tmp;
-
-				return;
-		}
-
-		if (e)
-			e.value = va;
-	});
-
-	selectByValue(f, 'doctypes', docType, true, true);
-	selectByValue(f, 'docencoding', xmlEnc, true, true);
-	selectByValue(f, 'langdir', doc.body.getAttribute('dir', 2) || '', true, true);
-
-	if (xmlVer != '')
-		el.xml_pi.checked = true;
-
-	// Parse appearance
-
-	// Parse primary stylesheet
-	tinymce.each(doc.getElementsByTagName("link"), function(l) {
-		var m = l.getAttribute('media', 2) || '', t = l.getAttribute('type', 2) || '';
-
-		if (t == "-mce-text/css" && (m == "" || m == "screen" || m == "all") && (l.getAttribute('rel', 2) || '') == "stylesheet") {
-			f.stylesheet.value = l.getAttribute('mce_href', 2) || '';
-			return false;
-		}
-	});
-
-	// Get from style elements
-	tinymce.each(doc.getElementsByTagName("style"), function(st) {
-		var tmp = parseStyleElement(st);
-
-		for (x=0; x<tmp.length; x++) {
-			if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
-				f.visited_color.value = tmp[x].data['color'];
-
-			if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
-				f.link_color.value = tmp[x].data['color'];
-
-			if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
-				f.active_color.value = tmp[x].data['color'];
-		}
-	});
-
-	f.textcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "text");
-	f.active_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "alink");
-	f.link_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "link");
-	f.visited_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "vlink");
-	f.bgcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "bgcolor");
-	f.bgimage.value = tinyMCEPopup.dom.getAttrib(doc.body, "background");
-
-	// Get from style info
-	style = tinyMCEPopup.dom.parseStyle(tinyMCEPopup.dom.getAttrib(doc.body, 'style'));
-
-	if (style['font-family'])
-		selectByValue(f, 'fontface', style['font-family'], true, true);
-	else
-		selectByValue(f, 'fontface', ed.getParam("fullpage_default_fontface", ""), true, true);
-
-	if (style['font-size'])
-		selectByValue(f, 'fontsize', style['font-size'], true, true);
-	else
-		selectByValue(f, 'fontsize', ed.getParam("fullpage_default_fontsize", ""), true, true);
-
-	if (style['color'])
-		f.textcolor.value = convertRGBToHex(style['color']);
-
-	if (style['background-image'])
-		f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-
-	if (style['background-color'])
-		f.bgcolor.value = style['background-color'];
-
-	if (style['margin']) {
-		tmp = style['margin'].replace(/[^0-9 ]/g, '');
-		tmp = tmp.split(/ +/);
-		f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
-		f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
-		f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
-		f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
-	}
-
-	if (style['margin-left'])
-		f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
-
-	if (style['margin-right'])
-		f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
-
-	if (style['margin-top'])
-		f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
-
-	if (style['margin-bottom'])
-		f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
-
-	f.style.value = tinyMCEPopup.dom.serializeStyle(style);
-
-	// Update colors
-	updateColor('textcolor_pick', 'textcolor');
-	updateColor('bgcolor_pick', 'bgcolor');
-	updateColor('visited_color_pick', 'visited_color');
-	updateColor('active_color_pick', 'active_color');
-	updateColor('link_color_pick', 'link_color');
-}
-
-function getReItem(r, s, i) {
-	var c = r.exec(s);
-
-	if (c && c.length > i)
-		return c[i];
-
-	return '';
-}
-
-function updateAction() {
-	var f = document.forms[0], nl, i, h, v, s, head, html, l, tmp, addlink = true, ser;
-
-	head = doc.getElementsByTagName('head')[0];
-
-	// Fix scripts without a type
-	nl = doc.getElementsByTagName('script');
-	for (i=0; i<nl.length; i++) {
-		if (tinyMCEPopup.dom.getAttrib(nl[i], 'mce_type') == '')
-			nl[i].setAttribute('mce_type', 'text/javascript');
-	}
-
-	// Get primary stylesheet
-	nl = doc.getElementsByTagName("link");
-	for (i=0; i<nl.length; i++) {
-		l = nl[i];
-
-		tmp = tinyMCEPopup.dom.getAttrib(l, 'media');
-
-		if (tinyMCEPopup.dom.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCEPopup.dom.getAttrib(l, 'rel') == "stylesheet") {
-			addlink = false;
-
-			if (f.stylesheet.value == '')
-				l.parentNode.removeChild(l);
-			else
-				l.setAttribute('mce_href', f.stylesheet.value);
-
-			break;
-		}
-	}
-
-	// Add new link
-	if (f.stylesheet.value != '') {
-		l = doc.createElement('link');
-
-		l.setAttribute('type', 'text/css');
-		l.setAttribute('mce_href', f.stylesheet.value);
-		l.setAttribute('rel', 'stylesheet');
-
-		head.appendChild(l);
-	}
-
-	setMeta(head, 'keywords', f.metakeywords.value);
-	setMeta(head, 'description', f.metadescription.value);
-	setMeta(head, 'author', f.metaauthor.value);
-	setMeta(head, 'copyright', f.metacopyright.value);
-	setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
-	setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
-
-	doc.body.dir = getSelectValue(f, 'langdir');
-	doc.body.style.cssText = f.style.value;
-
-	doc.body.setAttribute('vLink', f.visited_color.value);
-	doc.body.setAttribute('link', f.link_color.value);
-	doc.body.setAttribute('text', f.textcolor.value);
-	doc.body.setAttribute('aLink', f.active_color.value);
-
-	doc.body.style.fontFamily = getSelectValue(f, 'fontface');
-	doc.body.style.fontSize = getSelectValue(f, 'fontsize');
-	doc.body.style.backgroundColor = f.bgcolor.value;
-
-	if (f.leftmargin.value != '')
-		doc.body.style.marginLeft = f.leftmargin.value + 'px';
-
-	if (f.rightmargin.value != '')
-		doc.body.style.marginRight = f.rightmargin.value + 'px';
-
-	if (f.bottommargin.value != '')
-		doc.body.style.marginBottom = f.bottommargin.value + 'px';
-
-	if (f.topmargin.value != '')
-		doc.body.style.marginTop = f.topmargin.value + 'px';
-
-	html = doc.getElementsByTagName('html')[0];
-	html.setAttribute('lang', f.langcode.value);
-	html.setAttribute('xml:lang', f.langcode.value);
-
-	if (f.bgimage.value != '')
-		doc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
-	else
-		doc.body.style.backgroundImage = '';
-
-	ser = tinyMCEPopup.editor.plugins.fullpage._createSerializer();
-	ser.setRules('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml::lang|xmlns],body[style|dir|vlink|link|text|alink],head');
-
-	h = ser.serialize(doc.documentElement);
-	h = h.substring(0, h.lastIndexOf('</body>'));
-
-	if (h.indexOf('<title>') == -1)
-		h = h.replace(/<head.*?>/, '$&\n' + '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
-	else
-		h = h.replace(/<title>(.*?)<\/title>/, '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
-
-	if ((v = getSelectValue(f, 'doctypes')) != '')
-		h = v + '\n' + h;
-
-	if (f.xml_pi.checked) {
-		s = '<?xml version="1.0"';
-
-		if ((v = getSelectValue(f, 'docencoding')) != '')
-			s += ' encoding="' + v + '"';
-
-		s += '?>\n';
-		h = s + h;
-	}
-
-	h = h.replace(/type=\"\-mce\-/gi, 'type="');
-
-	tinyMCEPopup.editor.plugins.fullpage.head = h;
-	tinyMCEPopup.editor.plugins.fullpage._setBodyAttribs(tinyMCEPopup.editor, {});
-	tinyMCEPopup.close();
-}
-
-function changedStyleField(field) {
-	//alert(field.id);
-}
-
-function setMeta(he, k, v) {
-	var nl, i, m;
-
-	nl = he.getElementsByTagName('meta');
-	for (i=0; i<nl.length; i++) {
-		if (k == 'Content-Type' && tinyMCEPopup.dom.getAttrib(nl[i], 'http-equiv') == k) {
-			if (v == '')
-				nl[i].parentNode.removeChild(nl[i]);
-			else
-				nl[i].setAttribute('content', "text/html; charset=" + v);
-
-			return;
-		}
-
-		if (tinyMCEPopup.dom.getAttrib(nl[i], 'name') == k) {
-			if (v == '')
-				nl[i].parentNode.removeChild(nl[i]);
-			else
-				nl[i].setAttribute('content', v);
-			return;
-		}
-	}
-
-	if (v == '')
-		return;
-
-	m = doc.createElement('meta');
-
-	if (k == 'Content-Type')
-		m.httpEquiv = k;
-	else
-		m.setAttribute('name', k);
-
-	m.setAttribute('content', v);
-	he.appendChild(m);
-}
-
-function parseStyleElement(e) {
-	var v = e.innerHTML;
-	var p, i, r;
-
-	v = v.replace(/<!--/gi, '');
-	v = v.replace(/-->/gi, '');
-	v = v.replace(/[\n\r]/gi, '');
-	v = v.replace(/\s+/gi, ' ');
-
-	r = [];
-	p = v.split(/{|}/);
-
-	for (i=0; i<p.length; i+=2) {
-		if (p[i] != "")
-			r[r.length] = {rule : tinymce.trim(p[i]), data : tinyMCEPopup.dom.parseStyle(p[i+1])};
-	}
-
-	return r;
-}
-
-function serializeStyleElement(d) {
-	var i, s, st;
-
-	s = '<!--\n';
-
-	for (i=0; i<d.length; i++) {
-		s += d[i].rule + ' {\n';
-
-		st = tinyMCE.serializeStyle(d[i].data);
-
-		if (st != '')
-			st += ';';
-
-		s += st.replace(/;/g, ';\n');
-		s += '}\n';
-
-		if (i != d.length - 1)
-			s += '\n';
-	}
-
-	s += '\n-->';
-
-	return s;
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js
@@ -1,580 +1,580 @@
-//
-
-var defaultDocTypes = 
-	'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
-	'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
-	'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
-	'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">">,' +
-	'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
-	'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
-	'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
-
-var defaultEncodings = 
-	'Western european (iso-8859-1)=iso-8859-1,' +
-	'Central European (iso-8859-2)=iso-8859-2,' +
-	'Unicode (UTF-8)=utf-8,' +
-	'Chinese traditional (Big5)=big5,' +
-	'Cyrillic (iso-8859-5)=iso-8859-5,' +
-	'Japanese (iso-2022-jp)=iso-2022-jp,' +
-	'Greek (iso-8859-7)=iso-8859-7,' +
-	'Korean (iso-2022-kr)=iso-2022-kr,' +
-	'ASCII (us-ascii)=us-ascii';
-
-var defaultMediaTypes = 
-	'all=all,' +
-	'screen=screen,' +
-	'print=print,' +
-	'tty=tty,' +
-	'tv=tv,' +
-	'projection=projection,' +
-	'handheld=handheld,' +
-	'braille=braille,' +
-	'aural=aural';
-
-var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
-var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
-
-var addMenuLayer = new MCLayer("addmenu");
-var lastElementType = null;
-var topDoc;
-
-function init() {
-	var f = document.forms['fullpage'];
-	var i, p, doctypes, encodings, mediaTypes, fonts;
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-
-	// Setup doctype select box
-	doctypes = tinyMCE.getParam("fullpage_doctypes", defaultDocTypes).split(',');
-	for (i=0; i<doctypes.length; i++) {
-		p = doctypes[i].split('=');
-
-		if (p.length > 1)
-			addSelectValue(f, 'doctypes', p[0], p[1]);
-	}
-
-	// Setup fonts select box
-	fonts = tinyMCE.getParam("fullpage_fonts", defaultFontNames).split(';');
-	for (i=0; i<fonts.length; i++) {
-		p = fonts[i].split('=');
-
-		if (p.length > 1)
-			addSelectValue(f, 'fontface', p[0], p[1]);
-	}
-
-	// Setup fontsize select box
-	fonts = tinyMCE.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
-	for (i=0; i<fonts.length; i++)
-		addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
-
-	// Setup mediatype select boxs
-	mediaTypes = tinyMCE.getParam("fullpage_media_types", defaultMediaTypes).split(',');
-	for (i=0; i<mediaTypes.length; i++) {
-		p = mediaTypes[i].split('=');
-
-		if (p.length > 1) {
-			addSelectValue(f, 'element_style_media', p[0], p[1]);
-			addSelectValue(f, 'element_link_media', p[0], p[1]);
-		}
-	}
-
-	// Setup encodings select box
-	encodings = tinyMCE.getParam("fullpage_encodings", defaultEncodings).split(',');
-	for (i=0; i<encodings.length; i++) {
-		p = encodings[i].split('=');
-
-		if (p.length > 1) {
-			addSelectValue(f, 'docencoding', p[0], p[1]);
-			addSelectValue(f, 'element_script_charset', p[0], p[1]);
-			addSelectValue(f, 'element_link_charset', p[0], p[1]);
-		}
-	}
-
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-	document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
-	//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
-	document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
-	document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
-	document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
-	document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
-	document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
-	document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
-	document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
-
-	// Resize some elements
-	if (isVisible('stylesheetbrowser'))
-		document.getElementById('stylesheet').style.width = '220px';
-
-	if (isVisible('link_href_browser'))
-		document.getElementById('element_link_href').style.width = '230px';
-
-	if (isVisible('bgimage_browser'))
-		document.getElementById('bgimage').style.width = '210px';
-
-	// Create iframe
-	var iframe = document.createElement('iframe');
-
-	iframe.id = 'tempFrame';
-	iframe.style.display = 'none';
-	iframe.src = tinyMCE.baseURL + "/plugins/fullpage/blank.htm";
-
-	document.body.appendChild(iframe);
-
-	tinyMCEPopup.resizeToInnerSize();
+//

+

+var defaultDocTypes = 

+	'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +

+	'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +

+	'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +

+	'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +

+	'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +

+	'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +

+	'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';

+

+var defaultEncodings = 

+	'Western european (iso-8859-1)=iso-8859-1,' +

+	'Central European (iso-8859-2)=iso-8859-2,' +

+	'Unicode (UTF-8)=utf-8,' +

+	'Chinese traditional (Big5)=big5,' +

+	'Cyrillic (iso-8859-5)=iso-8859-5,' +

+	'Japanese (iso-2022-jp)=iso-2022-jp,' +

+	'Greek (iso-8859-7)=iso-8859-7,' +

+	'Korean (iso-2022-kr)=iso-2022-kr,' +

+	'ASCII (us-ascii)=us-ascii';

+

+var defaultMediaTypes = 

+	'all=all,' +

+	'screen=screen,' +

+	'print=print,' +

+	'tty=tty,' +

+	'tv=tv,' +

+	'projection=projection,' +

+	'handheld=handheld,' +

+	'braille=braille,' +

+	'aural=aural';

+

+var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';

+var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';

+

+var addMenuLayer = new MCLayer("addmenu");

+var lastElementType = null;

+var topDoc;

+

+function init() {

+	var f = document.forms['fullpage'];

+	var i, p, doctypes, encodings, mediaTypes, fonts;

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+

+	// Setup doctype select box

+	doctypes = tinyMCE.getParam("fullpage_doctypes", defaultDocTypes).split(',');

+	for (i=0; i<doctypes.length; i++) {

+		p = doctypes[i].split('=');

+

+		if (p.length > 1)

+			addSelectValue(f, 'doctypes', p[0], p[1]);

+	}

+

+	// Setup fonts select box

+	fonts = tinyMCE.getParam("fullpage_fonts", defaultFontNames).split(';');

+	for (i=0; i<fonts.length; i++) {

+		p = fonts[i].split('=');

+

+		if (p.length > 1)

+			addSelectValue(f, 'fontface', p[0], p[1]);

+	}

+

+	// Setup fontsize select box

+	fonts = tinyMCE.getParam("fullpage_fontsizes", defaultFontSizes).split(',');

+	for (i=0; i<fonts.length; i++)

+		addSelectValue(f, 'fontsize', fonts[i], fonts[i]);

+

+	// Setup mediatype select boxs

+	mediaTypes = tinyMCE.getParam("fullpage_media_types", defaultMediaTypes).split(',');

+	for (i=0; i<mediaTypes.length; i++) {

+		p = mediaTypes[i].split('=');

+

+		if (p.length > 1) {

+			addSelectValue(f, 'element_style_media', p[0], p[1]);

+			addSelectValue(f, 'element_link_media', p[0], p[1]);

+		}

+	}

+

+	// Setup encodings select box

+	encodings = tinyMCE.getParam("fullpage_encodings", defaultEncodings).split(',');

+	for (i=0; i<encodings.length; i++) {

+		p = encodings[i].split('=');

+

+		if (p.length > 1) {

+			addSelectValue(f, 'docencoding', p[0], p[1]);

+			addSelectValue(f, 'element_script_charset', p[0], p[1]);

+			addSelectValue(f, 'element_link_charset', p[0], p[1]);

+		}

+	}

+

+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');

+	document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');

+	//document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');

+	document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');

+	document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');

+	document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');

+	document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');

+	document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');

+	document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');

+	document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');

+

+	// Resize some elements

+	if (isVisible('stylesheetbrowser'))

+		document.getElementById('stylesheet').style.width = '220px';

+

+	if (isVisible('link_href_browser'))

+		document.getElementById('element_link_href').style.width = '230px';

+

+	if (isVisible('bgimage_browser'))

+		document.getElementById('bgimage').style.width = '210px';

+

+	// Create iframe

+	var iframe = document.createElement('iframe');

+

+	iframe.id = 'tempFrame';

+	iframe.style.display = 'none';

+	iframe.src = tinyMCE.baseURL + "/plugins/fullpage/blank.htm";

+

+	document.body.appendChild(iframe);

+

+	tinyMCEPopup.resizeToInnerSize();

+}

+

+function setupIframe(doc) {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var hc = inst.fullpageTopContent;

+	var f = document.forms[0];

+	var xmlVer, xmlEnc, docType;

+	var nodes, i, x, name, value, tmp, l;

+

+	// Keep it from not loading/executing stuff

+	hc = hc.replace(/<script>/gi, '<script type="text/javascript">');

+	hc = hc.replace(/\ssrc=/gi, " mce_src=");

+	hc = hc.replace(/\shref=/gi, " mce_href=");

+	hc = hc.replace(/\stype=/gi, " mce_type=");

+	hc = hc.replace(/<script/gi, '<script type="text/unknown" ');

+

+	// Add end to make it DOM parseable

+	hc += '</body></html>';

+

+	topDoc = doc;

+	doc.open();

+	doc.write(hc);

+	doc.close();

+

+	// ------- Setup options for genral tab

+

+	// Parse xml and doctype

+	xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);

+	xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);

+	docType = getReItem(/<\!DOCTYPE.*?>/gi, hc, 0);

+	f.langcode.value = getReItem(/lang="(.*?)"/gi, hc, 1);

+

+	// Get title

+	f.metatitle.value = tinyMCE.entityDecode(getReItem(/<title>(.*?)<\/title>/gi, hc, 1));

+

+	// Check for meta encoding

+	nodes = doc.getElementsByTagName("meta");

+	for (i=0; i<nodes.length; i++) {

+		name = tinyMCE.getAttrib(nodes[i], 'name');

+		value = tinyMCE.getAttrib(nodes[i], 'content');

+		httpEquiv = tinyMCE.getAttrib(nodes[i], 'httpEquiv');

+

+		switch (name.toLowerCase()) {

+			case "keywords":

+				f.metakeywords.value = value;

+				break;

+

+			case "description":

+				f.metadescription.value = value;

+				break;

+

+			case "author":

+				f.metaauthor.value = value;

+				break;

+

+			case "copyright":

+				f.metacopyright.value = value;

+				break;

+

+			case "robots":

+				selectByValue(f, 'metarobots', value, true, true);

+				break;

+		}

+

+		switch (httpEquiv.toLowerCase()) {

+			case "content-type":

+				tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1);

+

+				// Override XML encoding

+				if (tmp != "")

+					xmlEnc = tmp;

+

+				break;

+		}

+	}

+

+	selectByValue(f, 'doctypes', docType, true, true);

+	selectByValue(f, 'docencoding', xmlEnc, true, true);

+	selectByValue(f, 'langdir', tinyMCE.getAttrib(doc.body, 'dir'), true, true);

+

+	if (xmlVer != '')

+		f.xml_pi.checked = true;

+

+	// ------- Setup options for appearance tab

+

+	// Get primary stylesheet

+	nodes = doc.getElementsByTagName("link");

+	for (i=0; i<nodes.length; i++) {

+		l = nodes[i];

+		tmp = tinyMCE.getAttrib(l, 'media');

+

+		if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {

+			f.stylesheet.value = tinyMCE.getAttrib(l, 'mce_href');

+			break;

+		}

+	}

+

+	// Get from style elements

+	nodes = doc.getElementsByTagName("style");

+	for (i=0; i<nodes.length; i++) {

+		tmp = parseStyleElement(nodes[i]);

+

+		for (x=0; x<tmp.length; x++) {

+		//	if (tmp[x].rule.indexOf('a:hover') != -1 && tmp[x].data['color'])

+		//		f.hover_color.value = tmp[x].data['color'];

+

+			if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])

+				f.visited_color.value = tmp[x].data['color'];

+

+			if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])

+				f.link_color.value = tmp[x].data['color'];

+

+			if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])

+				f.active_color.value = tmp[x].data['color'];

+		}

+	}

+

+	// Get from body attribs

+

+/*	f.leftmargin.value = tinyMCE.getAttrib(doc.body, "leftmargin");

+	f.rightmargin.value = tinyMCE.getAttrib(doc.body, "rightmargin");

+	f.topmargin.value = tinyMCE.getAttrib(doc.body, "topmargin");

+	f.bottommargin.value = tinyMCE.getAttrib(doc.body, "bottommargin");*/

+	f.textcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "text"));

+	f.active_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "alink"));

+	f.link_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "link"));

+	f.visited_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "vlink"));

+	f.bgcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "bgcolor"));

+	f.bgimage.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "background"));

+

+	// Get from style info

+	var style = tinyMCE.parseStyle(tinyMCE.getAttrib(doc.body, 'style'));

+

+	if (style['font-family'])

+		selectByValue(f, 'fontface', style['font-family'], true, true);

+	else

+		selectByValue(f, 'fontface', tinyMCE.getParam("fullpage_default_fontface", ""), true, true);

+

+	if (style['font-size'])

+		selectByValue(f, 'fontsize', style['font-size'], true, true);

+	else

+		selectByValue(f, 'fontsize', tinyMCE.getParam("fullpage_default_fontsize", ""), true, true);

+

+	if (style['color'])

+		f.textcolor.value = convertRGBToHex(style['color']);

+

+	if (style['background-image'])

+		f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");

+

+	if (style['background-color'])

+		f.bgcolor.value = convertRGBToHex(style['background-color']);

+

+	if (style['margin']) {

+		tmp = style['margin'].replace(/[^0-9 ]/g, '');

+		tmp = tmp.split(/ +/);

+		f.topmargin.value = tmp.length > 0 ? tmp[0] : '';

+		f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];

+		f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];

+		f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];

+	}

+

+	if (style['margin-left'])

+		f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');

+

+	if (style['margin-right'])

+		f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');

+

+	if (style['margin-top'])

+		f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');

+

+	if (style['margin-bottom'])

+		f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');

+

+	f.style.value = tinyMCE.serializeStyle(style);

+

+	updateColor('textcolor_pick', 'textcolor');

+	updateColor('bgcolor_pick', 'bgcolor');

+	updateColor('visited_color_pick', 'visited_color');

+	updateColor('active_color_pick', 'active_color');

+	updateColor('link_color_pick', 'link_color');

+	//updateColor('hover_color_pick', 'hover_color');

+}

+

+function updateAction() {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var f = document.forms[0];

+	var nl, i, h, v, s, head, html, l, tmp, addlink = true;

+

+	head = topDoc.getElementsByTagName('head')[0];

+

+	// Fix scripts without a type

+	nl = topDoc.getElementsByTagName('script');

+	for (i=0; i<nl.length; i++) {

+		if (tinyMCE.getAttrib(nl[i], 'mce_type') == '')

+			nl[i].setAttribute('mce_type', 'text/javascript');

+	}

+

+	// Get primary stylesheet

+	nl = topDoc.getElementsByTagName("link");

+	for (i=0; i<nl.length; i++) {

+		l = nl[i];

+

+		tmp = tinyMCE.getAttrib(l, 'media');

+

+		if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {

+			addlink = false;

+

+			if (f.stylesheet.value == '')

+				l.parentNode.removeChild(l);

+			else

+				l.setAttribute('mce_href', f.stylesheet.value);

+

+			break;

+		}

+	}

+

+	// Add new link

+	if (f.stylesheet.value != '') {

+		l = topDoc.createElement('link');

+

+		l.setAttribute('mce_type', 'text/css');

+		l.setAttribute('mce_href', f.stylesheet.value);

+		l.setAttribute('rel', 'stylesheet');

+

+		head.appendChild(l);

+	}

+

+	setMeta(head, 'keywords', f.metakeywords.value);

+	setMeta(head, 'description', f.metadescription.value);

+	setMeta(head, 'author', f.metaauthor.value);

+	setMeta(head, 'copyright', f.metacopyright.value);

+	setMeta(head, 'robots', getSelectValue(f, 'metarobots'));

+	setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));

+

+	topDoc.body.dir = getSelectValue(f, 'langdir');

+	topDoc.body.style.cssText = f.style.value;

+

+	topDoc.body.setAttribute('vLink', f.visited_color.value);

+	topDoc.body.setAttribute('link', f.link_color.value);

+	topDoc.body.setAttribute('text', f.textcolor.value);

+	topDoc.body.setAttribute('aLink', f.active_color.value);

+

+	topDoc.body.style.fontFamily = getSelectValue(f, 'fontface');

+	topDoc.body.style.fontSize = getSelectValue(f, 'fontsize');

+	topDoc.body.style.backgroundColor = f.bgcolor.value;

+

+	if (f.leftmargin.value != '')

+		topDoc.body.style.marginLeft = f.leftmargin.value + 'px';

+

+	if (f.rightmargin.value != '')

+		topDoc.body.style.marginRight = f.rightmargin.value + 'px';

+

+	if (f.bottommargin.value != '')

+		topDoc.body.style.marginBottom = f.bottommargin.value + 'px';

+

+	if (f.topmargin.value != '')

+		topDoc.body.style.marginTop = f.topmargin.value + 'px';

+

+	html = topDoc.getElementsByTagName('html')[0];

+	html.setAttribute('lang', f.langcode.value);

+	html.setAttribute('xml:lang', f.langcode.value);

+

+	if (f.bgimage.value != '')

+		topDoc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";

+	else

+		topDoc.body.style.backgroundImage = '';

+

+	inst.cleanup.addRuleStr('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml:lang|xmlns],body[style|dir|vlink|link|text|alink],head');

+

+	h = inst.cleanup.serializeNodeAsHTML(topDoc.documentElement);

+

+	h = h.substring(0, h.lastIndexOf('</body>'));

+

+	if (h.indexOf('<title>') == -1)

+		h = h.replace(/<head.*?>/, '$&\n' + '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');

+	else

+		h = h.replace(/<title>(.*?)<\/title>/, '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');

+

+	if ((v = getSelectValue(f, 'doctypes')) != '')

+		h = v + '\n' + h;

+

+	if (f.xml_pi.checked) {

+		s = '<?xml version="1.0"';

+

+		if ((v = getSelectValue(f, 'docencoding')) != '')

+			s += ' encoding="' + v + '"';

+

+		s += '?>\n';

+		h = s + h;

+	}

+

+	inst.fullpageTopContent = h;

+

+	tinyMCEPopup.execCommand('mceFullPageUpdate', false, '');

+	tinyMCEPopup.close();

+}

+

+function setMeta(he, k, v) {

+	var nl, i, m;

+

+	nl = he.getElementsByTagName('meta');

+	for (i=0; i<nl.length; i++) {

+		if (k == 'Content-Type' && tinyMCE.getAttrib(nl[i], 'http-equiv') == k) {

+			if (v == '')

+				nl[i].parentNode.removeChild(nl[i]);

+			else

+				nl[i].setAttribute('content', "text/html; charset=" + v);

+

+			return;

+		}

+

+		if (tinyMCE.getAttrib(nl[i], 'name') == k) {

+			if (v == '')

+				nl[i].parentNode.removeChild(nl[i]);

+			else

+				nl[i].setAttribute('content', v);

+			return;

+		}

+	}

+

+	if (v == '')

+		return;

+

+	m = topDoc.createElement('meta');

+

+	if (k == 'Content-Type')

+		m.httpEquiv = k;

+	else

+		m.setAttribute('name', k);

+

+	m.setAttribute('content', v);

+	he.appendChild(m);

+}

+

+function parseStyleElement(e) {

+	var v = e.innerHTML;

+	var p, i, r;

+

+	v = v.replace(/<!--/gi, '');

+	v = v.replace(/-->/gi, '');

+	v = v.replace(/[\n\r]/gi, '');

+	v = v.replace(/\s+/gi, ' ');

+

+	r = new Array();

+	p = v.split(/{|}/);

+

+	for (i=0; i<p.length; i+=2) {

+		if (p[i] != "")

+			r[r.length] = {rule : tinyMCE.trim(p[i]), data : tinyMCE.parseStyle(p[i+1])};

+	}

+

+	return r;

+}

+

+function serializeStyleElement(d) {

+	var i, s, st;

+

+	s = '<!--\n';

+

+	for (i=0; i<d.length; i++) {

+		s += d[i].rule + ' {\n';

+

+		st = tinyMCE.serializeStyle(d[i].data);

+

+		if (st != '')

+			st += ';';

+

+		s += st.replace(/;/g, ';\n');

+		s += '}\n';

+

+		if (i != d.length - 1)

+			s += '\n';

+	}

+

+	s += '\n-->';

+

+	return s;

+}

+

+function getReItem(r, s, i) {

+	var c = r.exec(s);

+

+	if (c && c.length > i)

+		return c[i];

+

+	return '';

+}

+

+function changedStyleField(field) {

+	//alert(field.id);

+}

+

+function showAddMenu() {

+	var re = document.getElementById('addbutton');

+

+	addMenuLayer.moveRelativeTo(re, 'tr');

+	if (addMenuLayer.isMSIE)

+		addMenuLayer.moveBy(2, 0);

+

+	addMenuLayer.show();

+	addMenuLayer.setAutoHide(true, hideAddMenu);

+	addMenuLayer.addCSSClass(re, 'selected');

+}

+

+function hideAddMenu(l, e, mx, my) {

+	var re = document.getElementById('addbutton');

+	addMenuLayer.removeCSSClass(re, 'selected');

+}

+

+function addHeadElm(type) {

+	var le = document.getElementById('headlist');

+	var re = document.getElementById('addbutton');

+	var te = document.getElementById(type + '_element');

+

+	if (lastElementType)

+		lastElementType.style.display = 'none';

+

+	te.style.display = 'block';

+

+	lastElementType = te;

+

+	addMenuLayer.hide();

+	addMenuLayer.removeCSSClass(re, 'selected');

+

+	document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_insert', 'Insert', true);

+

+	le.size = 10;

+}

+

+function updateHeadElm(item) {

+	var type = item.substring(0, item.indexOf('_'));

+	var le = document.getElementById('headlist');

+	var re = document.getElementById('addbutton');

+	var te = document.getElementById(type + '_element');

+

+	if (lastElementType)

+		lastElementType.style.display = 'none';

+

+	te.style.display = 'block';

+

+	lastElementType = te;

+

+	addMenuLayer.hide();

+	addMenuLayer.removeCSSClass(re, 'selected');

+

+	document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_update', 'Update', true);

+

+	le.size = 10;

+}

+

+function cancelElementUpdate() {

+	var le = document.getElementById('headlist');

+

+	if (lastElementType)

+		lastElementType.style.display = 'none';

+

+	le.size = 26;

 }
-
-function setupIframe(doc) {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var hc = inst.fullpageTopContent;
-	var f = document.forms[0];
-	var xmlVer, xmlEnc, docType;
-	var nodes, i, x, name, value, tmp, l;
-
-	// Keep it from not loading/executing stuff
-	hc = hc.replace(/<script>/gi, '<script type="text/javascript">');
-	hc = hc.replace(/\ssrc=/gi, " mce_src=");
-	hc = hc.replace(/\shref=/gi, " mce_href=");
-	hc = hc.replace(/\stype=/gi, " mce_type=");
-	hc = hc.replace(/<script/gi, '<script type="text/unknown" ');
-
-	// Add end to make it DOM parseable
-	hc += '</body></html>';
-
-	topDoc = doc;
-	doc.open();
-	doc.write(hc);
-	doc.close();
-
-	// ------- Setup options for genral tab
-
-	// Parse xml and doctype
-	xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);
-	xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, hc, 1);
-	docType = getReItem(/<\!DOCTYPE.*?>/gi, hc, 0);
-	f.langcode.value = getReItem(/lang="(.*?)"/gi, hc, 1);
-
-	// Get title
-	f.metatitle.value = tinyMCE.entityDecode(getReItem(/<title>(.*?)<\/title>/gi, hc, 1));
-
-	// Check for meta encoding
-	nodes = doc.getElementsByTagName("meta");
-	for (i=0; i<nodes.length; i++) {
-		name = tinyMCE.getAttrib(nodes[i], 'name');
-		value = tinyMCE.getAttrib(nodes[i], 'content');
-		httpEquiv = tinyMCE.getAttrib(nodes[i], 'httpEquiv');
-
-		switch (name.toLowerCase()) {
-			case "keywords":
-				f.metakeywords.value = value;
-				break;
-
-			case "description":
-				f.metadescription.value = value;
-				break;
-
-			case "author":
-				f.metaauthor.value = value;
-				break;
-
-			case "copyright":
-				f.metacopyright.value = value;
-				break;
-
-			case "robots":
-				selectByValue(f, 'metarobots', value, true, true);
-				break;
-		}
-
-		switch (httpEquiv.toLowerCase()) {
-			case "content-type":
-				tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1);
-
-				// Override XML encoding
-				if (tmp != "")
-					xmlEnc = tmp;
-
-				break;
-		}
-	}
-
-	selectByValue(f, 'doctypes', docType, true, true);
-	selectByValue(f, 'docencoding', xmlEnc, true, true);
-	selectByValue(f, 'langdir', tinyMCE.getAttrib(doc.body, 'dir'), true, true);
-
-	if (xmlVer != '')
-		f.xml_pi.checked = true;
-
-	// ------- Setup options for appearance tab
-
-	// Get primary stylesheet
-	nodes = doc.getElementsByTagName("link");
-	for (i=0; i<nodes.length; i++) {
-		l = nodes[i];
-		tmp = tinyMCE.getAttrib(l, 'media');
-
-		if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
-			f.stylesheet.value = tinyMCE.getAttrib(l, 'mce_href');
-			break;
-		}
-	}
-
-	// Get from style elements
-	nodes = doc.getElementsByTagName("style");
-	for (i=0; i<nodes.length; i++) {
-		tmp = parseStyleElement(nodes[i]);
-
-		for (x=0; x<tmp.length; x++) {
-		//	if (tmp[x].rule.indexOf('a:hover') != -1 && tmp[x].data['color'])
-		//		f.hover_color.value = tmp[x].data['color'];
-
-			if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
-				f.visited_color.value = tmp[x].data['color'];
-
-			if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
-				f.link_color.value = tmp[x].data['color'];
-
-			if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
-				f.active_color.value = tmp[x].data['color'];
-		}
-	}
-
-	// Get from body attribs
-
-/*	f.leftmargin.value = tinyMCE.getAttrib(doc.body, "leftmargin");
-	f.rightmargin.value = tinyMCE.getAttrib(doc.body, "rightmargin");
-	f.topmargin.value = tinyMCE.getAttrib(doc.body, "topmargin");
-	f.bottommargin.value = tinyMCE.getAttrib(doc.body, "bottommargin");*/
-	f.textcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "text"));
-	f.active_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "alink"));
-	f.link_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "link"));
-	f.visited_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "vlink"));
-	f.bgcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "bgcolor"));
-	f.bgimage.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "background"));
-
-	// Get from style info
-	var style = tinyMCE.parseStyle(tinyMCE.getAttrib(doc.body, 'style'));
-
-	if (style['font-family'])
-		selectByValue(f, 'fontface', style['font-family'], true, true);
-	else
-		selectByValue(f, 'fontface', tinyMCE.getParam("fullpage_default_fontface", ""), true, true);
-
-	if (style['font-size'])
-		selectByValue(f, 'fontsize', style['font-size'], true, true);
-	else
-		selectByValue(f, 'fontsize', tinyMCE.getParam("fullpage_default_fontsize", ""), true, true);
-
-	if (style['color'])
-		f.textcolor.value = convertRGBToHex(style['color']);
-
-	if (style['background-image'])
-		f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-
-	if (style['background-color'])
-		f.bgcolor.value = convertRGBToHex(style['background-color']);
-
-	if (style['margin']) {
-		tmp = style['margin'].replace(/[^0-9 ]/g, '');
-		tmp = tmp.split(/ +/);
-		f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
-		f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
-		f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
-		f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
-	}
-
-	if (style['margin-left'])
-		f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
-
-	if (style['margin-right'])
-		f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
-
-	if (style['margin-top'])
-		f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
-
-	if (style['margin-bottom'])
-		f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
-
-	f.style.value = tinyMCE.serializeStyle(style);
-
-	updateColor('textcolor_pick', 'textcolor');
-	updateColor('bgcolor_pick', 'bgcolor');
-	updateColor('visited_color_pick', 'visited_color');
-	updateColor('active_color_pick', 'active_color');
-	updateColor('link_color_pick', 'link_color');
-	//updateColor('hover_color_pick', 'hover_color');
-}
-
-function updateAction() {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var f = document.forms[0];
-	var nl, i, h, v, s, head, html, l, tmp, addlink = true;
-
-	head = topDoc.getElementsByTagName('head')[0];
-
-	// Fix scripts without a type
-	nl = topDoc.getElementsByTagName('script');
-	for (i=0; i<nl.length; i++) {
-		if (tinyMCE.getAttrib(nl[i], 'mce_type') == '')
-			nl[i].setAttribute('mce_type', 'text/javascript');
-	}
-
-	// Get primary stylesheet
-	nl = topDoc.getElementsByTagName("link");
-	for (i=0; i<nl.length; i++) {
-		l = nl[i];
-
-		tmp = tinyMCE.getAttrib(l, 'media');
-
-		if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
-			addlink = false;
-
-			if (f.stylesheet.value == '')
-				l.parentNode.removeChild(l);
-			else
-				l.setAttribute('mce_href', f.stylesheet.value);
-
-			break;
-		}
-	}
-
-	// Add new link
-	if (f.stylesheet.value != '') {
-		l = topDoc.createElement('link');
-
-		l.setAttribute('mce_type', 'text/css');
-		l.setAttribute('mce_href', f.stylesheet.value);
-		l.setAttribute('rel', 'stylesheet');
-
-		head.appendChild(l);
-	}
-
-	setMeta(head, 'keywords', f.metakeywords.value);
-	setMeta(head, 'description', f.metadescription.value);
-	setMeta(head, 'author', f.metaauthor.value);
-	setMeta(head, 'copyright', f.metacopyright.value);
-	setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
-	setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
-
-	topDoc.body.dir = getSelectValue(f, 'langdir');
-	topDoc.body.style.cssText = f.style.value;
-
-	topDoc.body.setAttribute('vLink', f.visited_color.value);
-	topDoc.body.setAttribute('link', f.link_color.value);
-	topDoc.body.setAttribute('text', f.textcolor.value);
-	topDoc.body.setAttribute('aLink', f.active_color.value);
-
-	topDoc.body.style.fontFamily = getSelectValue(f, 'fontface');
-	topDoc.body.style.fontSize = getSelectValue(f, 'fontsize');
-	topDoc.body.style.backgroundColor = f.bgcolor.value;
-
-	if (f.leftmargin.value != '')
-		topDoc.body.style.marginLeft = f.leftmargin.value + 'px';
-
-	if (f.rightmargin.value != '')
-		topDoc.body.style.marginRight = f.rightmargin.value + 'px';
-
-	if (f.bottommargin.value != '')
-		topDoc.body.style.marginBottom = f.bottommargin.value + 'px';
-
-	if (f.topmargin.value != '')
-		topDoc.body.style.marginTop = f.topmargin.value + 'px';
-
-	html = topDoc.getElementsByTagName('html')[0];
-	html.setAttribute('lang', f.langcode.value);
-	html.setAttribute('xml:lang', f.langcode.value);
-
-	if (f.bgimage.value != '')
-		topDoc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
-	else
-		topDoc.body.style.backgroundImage = '';
-
-	inst.cleanup.addRuleStr('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml:lang|xmlns],body[style|dir|vlink|link|text|alink],head');
-
-	h = inst.cleanup.serializeNodeAsHTML(topDoc.documentElement);
-
-	h = h.substring(0, h.lastIndexOf('</body>'));
-
-	if (h.indexOf('<title>') == -1)
-		h = h.replace(/<head.*?>/, '$&\n' + '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
-	else
-		h = h.replace(/<title>(.*?)<\/title>/, '<title>' + inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
-
-	if ((v = getSelectValue(f, 'doctypes')) != '')
-		h = v + '\n' + h;
-
-	if (f.xml_pi.checked) {
-		s = '<?xml version="1.0"';
-
-		if ((v = getSelectValue(f, 'docencoding')) != '')
-			s += ' encoding="' + v + '"';
-
-		s += '?>\n';
-		h = s + h;
-	}
-
-	inst.fullpageTopContent = h;
-
-	tinyMCEPopup.execCommand('mceFullPageUpdate', false, '');
-	tinyMCEPopup.close();
-}
-
-function setMeta(he, k, v) {
-	var nl, i, m;
-
-	nl = he.getElementsByTagName('meta');
-	for (i=0; i<nl.length; i++) {
-		if (k == 'Content-Type' && tinyMCE.getAttrib(nl[i], 'http-equiv') == k) {
-			if (v == '')
-				nl[i].parentNode.removeChild(nl[i]);
-			else
-				nl[i].setAttribute('content', "text/html; charset=" + v);
-
-			return;
-		}
-
-		if (tinyMCE.getAttrib(nl[i], 'name') == k) {
-			if (v == '')
-				nl[i].parentNode.removeChild(nl[i]);
-			else
-				nl[i].setAttribute('content', v);
-			return;
-		}
-	}
-
-	if (v == '')
-		return;
-
-	m = topDoc.createElement('meta');
-
-	if (k == 'Content-Type')
-		m.httpEquiv = k;
-	else
-		m.setAttribute('name', k);
-
-	m.setAttribute('content', v);
-	he.appendChild(m);
-}
-
-function parseStyleElement(e) {
-	var v = e.innerHTML;
-	var p, i, r;
-
-	v = v.replace(/<!--/gi, '');
-	v = v.replace(/-->/gi, '');
-	v = v.replace(/[\n\r]/gi, '');
-	v = v.replace(/\s+/gi, ' ');
-
-	r = new Array();
-	p = v.split(/{|}/);
-
-	for (i=0; i<p.length; i+=2) {
-		if (p[i] != "")
-			r[r.length] = {rule : tinyMCE.trim(p[i]), data : tinyMCE.parseStyle(p[i+1])};
-	}
-
-	return r;
-}
-
-function serializeStyleElement(d) {
-	var i, s, st;
-
-	s = '<!--\n';
-
-	for (i=0; i<d.length; i++) {
-		s += d[i].rule + ' {\n';
-
-		st = tinyMCE.serializeStyle(d[i].data);
-
-		if (st != '')
-			st += ';';
-
-		s += st.replace(/;/g, ';\n');
-		s += '}\n';
-
-		if (i != d.length - 1)
-			s += '\n';
-	}
-
-	s += '\n-->';
-
-	return s;
-}
-
-function getReItem(r, s, i) {
-	var c = r.exec(s);
-
-	if (c && c.length > i)
-		return c[i];
-
-	return '';
-}
-
-function changedStyleField(field) {
-	//alert(field.id);
-}
-
-function showAddMenu() {
-	var re = document.getElementById('addbutton');
-
-	addMenuLayer.moveRelativeTo(re, 'tr');
-	if (addMenuLayer.isMSIE)
-		addMenuLayer.moveBy(2, 0);
-
-	addMenuLayer.show();
-	addMenuLayer.setAutoHide(true, hideAddMenu);
-	addMenuLayer.addCSSClass(re, 'selected');
-}
-
-function hideAddMenu(l, e, mx, my) {
-	var re = document.getElementById('addbutton');
-	addMenuLayer.removeCSSClass(re, 'selected');
-}
-
-function addHeadElm(type) {
-	var le = document.getElementById('headlist');
-	var re = document.getElementById('addbutton');
-	var te = document.getElementById(type + '_element');
-
-	if (lastElementType)
-		lastElementType.style.display = 'none';
-
-	te.style.display = 'block';
-
-	lastElementType = te;
-
-	addMenuLayer.hide();
-	addMenuLayer.removeCSSClass(re, 'selected');
-
-	document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_insert', 'Insert', true);
-
-	le.size = 10;
-}
-
-function updateHeadElm(item) {
-	var type = item.substring(0, item.indexOf('_'));
-	var le = document.getElementById('headlist');
-	var re = document.getElementById('addbutton');
-	var te = document.getElementById(type + '_element');
-
-	if (lastElementType)
-		lastElementType.style.display = 'none';
-
-	te.style.display = 'block';
-
-	lastElementType = te;
-
-	addMenuLayer.hide();
-	addMenuLayer.removeCSSClass(re, 'selected');
-
-	document.getElementById(type + '_updateelement').value = tinyMCE.getLang('lang_update', 'Update', true);
-
-	le.size = 10;
-}
-
-function cancelElementUpdate() {
-	var le = document.getElementById('headlist');
-
-	if (lastElementType)
-		lastElementType.style.display = 'none';
-
-	le.size = 26;
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullpage/langs/en.js
@@ -1,93 +1,93 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('fullpage',{

+	title : 'Document properties',

+	desc : 'Document properties',

+	meta_tab : 'General',

+	appearance_tab : 'Appearance',

+	advanced_tab : 'Advanced',

+	meta_props : 'Meta information',

+	langprops : 'Language and encoding',

+	meta_title : 'Title',

+	meta_keywords : 'Keywords',

+	meta_description : 'Description',

+	meta_robots : 'Robots',

+	doctypes : 'Doctype',

+	langcode : 'Language code',

+	langdir : 'Language direction',

+	ltr : 'Left to right',

+	rtl : 'Right to left',

+	xml_pi : 'XML declaration',

+	encoding : 'Character encoding',

+	appearance_bgprops : 'Background properties',

+	appearance_marginprops : 'Body margins',

+	appearance_linkprops : 'Link colors',

+	appearance_textprops : 'Text properties',

+	bgcolor : 'Background color',

+	bgimage : 'Background image',

+	left_margin : 'Left margin',

+	right_margin : 'Right margin',

+	top_margin : 'Top margin',

+	bottom_margin : 'Bottom margin',

+	text_color : 'Text color',

+	font_size : 'Font size',

+	font_face : 'Font face',

+	link_color : 'Link color',

+	hover_color : 'Hover color',

+	visited_color : 'Visited color',

+	active_color : 'Active color',

+	textcolor : 'Color',

+	fontsize : 'Font size',

+	fontface : 'Font family',

+	meta_index_follow : 'Index and follow the links',

+	meta_index_nofollow : 'Index and don\'t follow the links',

+	meta_noindex_follow : 'Do not index but follow the links',

+	meta_noindex_nofollow : 'Do not index and don\'t follow the links',

+	appearance_style : 'Stylesheet and style properties',

+	stylesheet : 'Stylesheet',

+	style : 'Style',

+	author : 'Author',

+	copyright : 'Copyright',

+	add : 'Add new element',

+	remove : 'Remove selected element',

+	moveup : 'Move selected element up',

+	movedown : 'Move selected element down',

+	head_elements : 'Head elements',

+	info : 'Information',

+	info_text : '',

+	add_title : 'Title element',

+	add_meta : 'Meta element',

+	add_script : 'Script element',

+	add_style : 'Style element',

+	add_link : 'Link element',

+	add_base : 'Base element',

+	add_comment : 'Comment node',

+	title_element : 'Title element',

+	script_element : 'Script element',

+	style_element : 'Style element',

+	base_element : 'Base element',

+	link_element : 'Link element',

+	meta_element : 'Meta element',

+	comment_element : 'Comment',

+	src : 'Src',

+	language : 'Language',

+	href : 'Href',

+	target : 'Target',

+	rel : 'Rel',

+	type : 'Type',

+	charset : 'Charset',

+	defer : 'Defer',

+	media : 'Media',

+	properties : 'Properties',

+	name : 'Name',

+	value : 'Value',

+	content : 'Content',

+	rel : 'Rel',

+	rev : 'Rev',

+	hreflang : 'Href lang',

+	general_props : 'General',

+	advanced_props : 'Advanced',

+	delta_width : 0,

+	delta_height : 0

+});

 
-tinyMCE.addToLang('fullpage',{
-	title : 'Document properties',
-	desc : 'Document properties',
-	meta_tab : 'General',
-	appearance_tab : 'Appearance',
-	advanced_tab : 'Advanced',
-	meta_props : 'Meta information',
-	langprops : 'Language and encoding',
-	meta_title : 'Title',
-	meta_keywords : 'Keywords',
-	meta_description : 'Description',
-	meta_robots : 'Robots',
-	doctypes : 'Doctype',
-	langcode : 'Language code',
-	langdir : 'Language direction',
-	ltr : 'Left to right',
-	rtl : 'Right to left',
-	xml_pi : 'XML declaration',
-	encoding : 'Character encoding',
-	appearance_bgprops : 'Background properties',
-	appearance_marginprops : 'Body margins',
-	appearance_linkprops : 'Link colors',
-	appearance_textprops : 'Text properties',
-	bgcolor : 'Background color',
-	bgimage : 'Background image',
-	left_margin : 'Left margin',
-	right_margin : 'Right margin',
-	top_margin : 'Top margin',
-	bottom_margin : 'Bottom margin',
-	text_color : 'Text color',
-	font_size : 'Font size',
-	font_face : 'Font face',
-	link_color : 'Link color',
-	hover_color : 'Hover color',
-	visited_color : 'Visited color',
-	active_color : 'Active color',
-	textcolor : 'Color',
-	fontsize : 'Font size',
-	fontface : 'Font family',
-	meta_index_follow : 'Index and follow the links',
-	meta_index_nofollow : 'Index and don\'t follow the links',
-	meta_noindex_follow : 'Do not index but follow the links',
-	meta_noindex_nofollow : 'Do not index and don\'t follow the links',
-	appearance_style : 'Stylesheet and style properties',
-	stylesheet : 'Stylesheet',
-	style : 'Style',
-	author : 'Author',
-	copyright : 'Copyright',
-	add : 'Add new element',
-	remove : 'Remove selected element',
-	moveup : 'Move selected element up',
-	movedown : 'Move selected element down',
-	head_elements : 'Head elements',
-	info : 'Information',
-	info_text : '',
-	add_title : 'Title element',
-	add_meta : 'Meta element',
-	add_script : 'Script element',
-	add_style : 'Style element',
-	add_link : 'Link element',
-	add_base : 'Base element',
-	add_comment : 'Comment node',
-	title_element : 'Title element',
-	script_element : 'Script element',
-	style_element : 'Style element',
-	base_element : 'Base element',
-	link_element : 'Link element',
-	meta_element : 'Meta element',
-	comment_element : 'Comment',
-	src : 'Src',
-	language : 'Language',
-	href : 'Href',
-	target : 'Target',
-	rel : 'Rel',
-	type : 'Type',
-	charset : 'Charset',
-	defer : 'Defer',
-	media : 'Media',
-	properties : 'Properties',
-	name : 'Name',
-	value : 'Value',
-	content : 'Content',
-	rel : 'Rel',
-	rev : 'Rev',
-	hreflang : 'Href lang',
-	general_props : 'General',
-	advanced_props : 'Advanced',
-	delta_width : 0,
-	delta_height : 0
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js
+++ /dev/null
@@ -1,85 +1,1 @@
-tinyMCE.addI18n('en.fullpage_dlg',{
-title:"Document properties",
-meta_tab:"General",
-appearance_tab:"Appearance",
-advanced_tab:"Advanced",
-meta_props:"Meta information",
-langprops:"Language and encoding",
-meta_title:"Title",
-meta_keywords:"Keywords",
-meta_description:"Description",
-meta_robots:"Robots",
-doctypes:"Doctype",
-langcode:"Language code",
-langdir:"Language direction",
-ltr:"Left to right",
-rtl:"Right to left",
-xml_pi:"XML declaration",
-encoding:"Character encoding",
-appearance_bgprops:"Background properties",
-appearance_marginprops:"Body margins",
-appearance_linkprops:"Link colors",
-appearance_textprops:"Text properties",
-bgcolor:"Background color",
-bgimage:"Background image",
-left_margin:"Left margin",
-right_margin:"Right margin",
-top_margin:"Top margin",
-bottom_margin:"Bottom margin",
-text_color:"Text color",
-font_size:"Font size",
-font_face:"Font face",
-link_color:"Link color",
-hover_color:"Hover color",
-visited_color:"Visited color",
-active_color:"Active color",
-textcolor:"Color",
-fontsize:"Font size",
-fontface:"Font family",
-meta_index_follow:"Index and follow the links",
-meta_index_nofollow:"Index and don't follow the links",
-meta_noindex_follow:"Do not index but follow the links",
-meta_noindex_nofollow:"Do not index and don\'t follow the links",
-appearance_style:"Stylesheet and style properties",
-stylesheet:"Stylesheet",
-style:"Style",
-author:"Author",
-copyright:"Copyright",
-add:"Add new element",
-remove:"Remove selected element",
-moveup:"Move selected element up",
-movedown:"Move selected element down",
-head_elements:"Head elements",
-info:"Information",
-add_title:"Title element",
-add_meta:"Meta element",
-add_script:"Script element",
-add_style:"Style element",
-add_link:"Link element",
-add_base:"Base element",
-add_comment:"Comment node",
-title_element:"Title element",
-script_element:"Script element",
-style_element:"Style element",
-base_element:"Base element",
-link_element:"Link element",
-meta_element:"Meta element",
-comment_element:"Comment",
-src:"Src",
-language:"Language",
-href:"Href",
-target:"Target",
-type:"Type",
-charset:"Charset",
-defer:"Defer",
-media:"Media",
-properties:"Properties",
-name:"Name",
-value:"Value",
-content:"Content",
-rel:"Rel",
-rev:"Rev",
-hreflang:"Href lang",
-general_props:"General",
-advanced_props:"Advanced"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/css/content.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/css/content.css
@@ -1,4 +1,4 @@
-.mceItemFullScreenHidden {
-	display: none !important;
-}
+.mceItemFullScreenHidden {

+	display: none !important;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/css/page.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/css/page.css
@@ -1,22 +1,22 @@
-/* This class restores all CSS properties to that absolute positioning of fullscreen mode is correct */
-.mceFullscreenPos {
-	display: block !important;
-	position: static !important;
-	left: 0 !important;
-	top: 0 !important;
-	bottom: auto !important;
-	right: auto !important;
-	width: auto !important;
-	height: auto !important;
-	margin: 0 !important;
-	padding: 0 !important;
-	border: 0 !important;
-	overflow: visible;
-	z-index: 1 !important;
-	clear: both;
-}
+/* This class restores all CSS properties to that absolute positioning of fullscreen mode is correct */

+.mceFullscreenPos {

+	display: block !important;

+	position: static !important;

+	left: 0 !important;

+	top: 0 !important;

+	bottom: auto !important;

+	right: auto !important;

+	width: auto !important;

+	height: auto !important;

+	margin: 0 !important;

+	padding: 0 !important;

+	border: 0 !important;

+	overflow: visible;

+	z-index: 1 !important;

+	clear: both;

+}

+

+body.mceFullscreen {

+	overflow: hidden !important;

+}

 
-body.mceFullscreen {
-	overflow: hidden !important;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.plugins.FullScreenPlugin',{init:function(ed,url){var t=this,s={},vp;t.editor=ed;ed.addCommand('mceFullScreen',function(){var win,de=DOM.doc.documentElement;if(ed.getParam('fullscreen_is_enabled')){if(ed.getParam('fullscreen_new_window'))closeFullscreen();else{DOM.win.setTimeout(function(){tinymce.dom.Event.remove(DOM.win,'resize',t.resizeFunc);tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format:'raw'}),{format:'raw'});tinyMCE.remove(ed);DOM.remove('mce_fullscreen_container');de.style.overflow=ed.getParam('fullscreen_html_overflow');DOM.setStyle(DOM.doc.body,'overflow',ed.getParam('fullscreen_overflow'));DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'),ed.getParam('fullscreen_scrolly'));tinyMCE.settings=tinyMCE.oldSettings;},10);}return;}if(ed.getParam('fullscreen_new_window')){win=DOM.win.open(url+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight);}catch(e){}}else{tinyMCE.oldSettings=tinyMCE.settings;s.fullscreen_overflow=DOM.getStyle(DOM.doc.body,'overflow',1)||'auto';s.fullscreen_html_overflow=DOM.getStyle(de,'overflow',1);vp=DOM.getViewPort();s.fullscreen_scrollx=vp.x;s.fullscreen_scrolly=vp.y;if(tinymce.isOpera&&s.fullscreen_overflow=='visible')s.fullscreen_overflow='auto';if(tinymce.isIE&&s.fullscreen_overflow=='scroll')s.fullscreen_overflow='auto';if(s.fullscreen_overflow=='0px')s.fullscreen_overflow='';DOM.setStyle(DOM.doc.body,'overflow','hidden');de.style.overflow='hidden';vp=DOM.getViewPort();DOM.win.scrollTo(0,0);if(tinymce.isIE)vp.h-=1;n=DOM.add(DOM.doc.body,'div',{id:'mce_fullscreen_container',style:'position:absolute;top:0;left:0;width:'+vp.w+'px;height:'+vp.h+'px;z-index:200000;'});DOM.add(n,'div',{id:'mce_fullscreen'});tinymce.each(ed.settings,function(v,n){s[n]=v;});s.id='mce_fullscreen';s.width=n.clientWidth;s.height=n.clientHeight-15;s.fullscreen_is_enabled=true;s.fullscreen_editor_id=ed.id;s.theme_advanced_resizing=false;s.save_onsavecallback=function(){ed.setContent(tinyMCE.get(s.id).getContent({format:'raw'}),{format:'raw'});ed.execCommand('mceSave');};tinymce.each(ed.getParam('fullscreen_settings'),function(v,k){s[k]=v;});if(s.theme_advanced_toolbar_location==='external')s.theme_advanced_toolbar_location='top';t.fullscreenEditor=new tinymce.Editor('mce_fullscreen',s);t.fullscreenEditor.onInit.add(function(){t.fullscreenEditor.setContent(ed.getContent());t.fullscreenEditor.focus();});t.fullscreenEditor.render();tinyMCE.add(t.fullscreenEditor);t.fullscreenElement=new tinymce.dom.Element('mce_fullscreen_container');t.fullscreenElement.update();t.resizeFunc=tinymce.dom.Event.add(DOM.win,'resize',function(){var vp=tinymce.DOM.getViewPort();t.fullscreenEditor.theme.resizeTo(vp.w,vp.h);});}});ed.addButton('fullscreen',{title:'fullscreen.desc',cmd:'mceFullScreen'});ed.onNodeChange.add(function(ed,cm){cm.setActive('fullscreen',ed.getParam('fullscreen_is_enabled'));});},getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('fullscreen',tinymce.plugins.FullScreenPlugin);})();
+tinyMCE.importPluginLanguagePack('fullscreen');var TinyMCE_FullScreenPlugin={getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['fullscreen_skip_plugin_css'])tinyMCE.importCSS(inst.getContainerWin().document,tinyMCE.baseURL+"/plugins/fullscreen/css/page.css")},getControlHTML:function(cn){switch(cn){case"fullscreen":return tinyMCE.getButtonHTML(cn,'lang_fullscreen_desc','{$pluginurl}/images/fullscreen.gif','mceFullScreen')}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst;switch(command){case"mceFullScreen":inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.getParam('fullscreen_new_window'))this._toggleFullscreenWin(inst);else this._toggleFullscreen(inst);return true}return false},_toggleFullscreenWin:function(inst){if(tinyMCE.getParam('fullscreen_is_enabled')){window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'),'mceSetContent',false,tinyMCE.getContent(inst.editorId));top.close()}else{tinyMCE.setWindowArg('editor_id',inst.editorId);var win=window.open(tinyMCE.baseURL+"/plugins/fullscreen/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{win.resizeTo(screen.availWidth,screen.availHeight)}catch(e){}}},_toggleFullscreen:function(inst){var ds=inst.getData('fullscreen'),editorContainer,tableElm,iframe,vp,cw,cd,re,w,h,si,blo,delta=0,cell,row,fcml,bcml;cw=inst.getContainerWin();cd=cw.document;editorContainer=cd.getElementById(inst.editorId+'_parent');tableElm=editorContainer.firstChild;iframe=inst.iframeElement;re=cd.getElementById(inst.editorId+'_resize');blo=document.getElementById('mce_fullscreen_blocker');fcm=new TinyMCE_Layer(inst.editorId+'_fcMenu');fcml=new TinyMCE_Layer(inst.editorId+'_fcMenu');bcml=new TinyMCE_Layer(inst.editorId+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(inst.editorId+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(inst.editorId+'_backcolor','mceMenuButton');bcml.hide()}if(!ds.enabled){if(inst.toolbarElement){delta+=inst.toolbarElement.offsetHeight;cell=tableElm.tBodies[0].insertRow(0).insertCell(-1);cell.className='mceToolbarTop';cell.nowrap=true;ds.oldToolbarParent=inst.toolbarElement.parentNode;ds.toolbarHolder=document.createTextNode('...');cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder,inst.toolbarElement))}ds.parents=[];vp=tinyMCE.getViewPort(cw);ds.scrollX=vp.left;ds.scrollY=vp.top;if(!tinyMCE.isOpera)tinyMCE.addCSSClass(cd.body,'mceFullscreen');tinyMCE.getParentNode(tableElm.parentNode,function(n){if(n.nodeName=='BODY')return true;if(n.nodeType==1)tinyMCE.addCSSClass(n,'mceFullscreenPos');return false});if(re)re.style.display='none';vp=tinyMCE.getViewPort(cw);ds.oldWidth=iframe.style.width?iframe.style.width:iframe.offsetWidth;ds.oldHeight=iframe.style.height?iframe.style.height:iframe.offsetHeight;ds.oldTWidth=tableElm.style.width?tableElm.style.width:tableElm.offsetWidth;ds.oldTHeight=tableElm.style.height?tableElm.style.height:tableElm.offsetHeight;if(ds.oldWidth&&ds.oldWidth.indexOf)ds.oldTWidth=ds.oldWidth.indexOf('%')!=-1?ds.oldWidth:ds.oldTWidth;if(!blo&&tinyMCE.isRealIE){blo=tinyMCE.createTag(document,'iframe',{id:'mce_fullscreen_blocker',src:'about:blank',frameBorder:0,width:vp.width,height:vp.height,style:'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});document.body.appendChild(blo)}tableElm.style.position='absolute';tableElm.style.zIndex=1000;tableElm.style.left=tableElm.style.top='0';tableElm.style.width=vp.width+'px';tableElm.style.height=vp.height+'px';if(tinyMCE.isRealIE){iframe.style.width=vp.width+'px';iframe.style.height=vp.height+'px';w=iframe.parentNode.clientWidth-(tableElm.offsetWidth-vp.width);h=iframe.parentNode.clientHeight-(tableElm.offsetHeight-vp.height)}else{w=iframe.parentNode.clientWidth;h=iframe.parentNode.clientHeight}iframe.style.width=w+"px";iframe.style.height=(h+delta)+"px";tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonSelected');ds.enabled=true;inst.useCSS=false}else{if(inst.toolbarElement){row=inst.toolbarElement.parentNode.parentNode;row.parentNode.removeChild(row);ds.oldToolbarParent.replaceChild(inst.toolbarElement,ds.toolbarHolder);ds.oldToolbarParent=null;ds.toolbarHolder=null}if(blo)blo.parentNode.removeChild(blo);si=0;tinyMCE.getParentNode(tableElm.parentNode,function(n){if(n.nodeName=='BODY')return true;if(n.nodeType==1)tinyMCE.removeCSSClass(n,'mceFullscreenPos')});if(re&&tinyMCE.getParam("theme_advanced_resizing",false))re.style.display='block';tableElm.style.position='static';tableElm.style.zIndex='';tableElm.style.width='';tableElm.style.height='';tableElm.style.width=ds.oldTWidth?ds.oldTWidth:'';tableElm.style.height=ds.oldTHeight?ds.oldTHeight:'';iframe.style.width=ds.oldWidth?ds.oldWidth:'';iframe.style.height=ds.oldHeight?ds.oldHeight:'';tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonNormal');ds.enabled=false;tinyMCE.removeCSSClass(cd.body,'mceFullscreen');cw.scrollTo(ds.scrollX,ds.scrollY);inst.useCSS=false}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(tinyMCE.getParam('fullscreen_is_enabled'))tinyMCE.switchClass(editor_id+'_fullscreen','mceButtonSelected');return true}};tinyMCE.addPlugin("fullscreen",TinyMCE_FullScreenPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js
@@ -1,141 +1,231 @@
-/**
- * $Id: editor_plugin_src.js 766 2008-04-03 20:37:06Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('fullscreen');

+

+var TinyMCE_FullScreenPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Fullscreen',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		if (!tinyMCE.settings['fullscreen_skip_plugin_css'])

+			tinyMCE.importCSS(inst.getContainerWin().document, tinyMCE.baseURL + "/plugins/fullscreen/css/page.css");

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "fullscreen":

+				return tinyMCE.getButtonHTML(cn, 'lang_fullscreen_desc', '{$pluginurl}/images/fullscreen.gif', 'mceFullScreen');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		var inst;

+

+		// Handle commands

+		switch (command) {

+			case "mceFullScreen":

+				inst = tinyMCE.getInstanceById(editor_id);

+

+				if (tinyMCE.getParam('fullscreen_new_window'))

+					this._toggleFullscreenWin(inst);

+				else

+					this._toggleFullscreen(inst);

+

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	_toggleFullscreenWin : function(inst) {

+		if (tinyMCE.getParam('fullscreen_is_enabled')) {

+			// In fullscreen mode

+			window.opener.tinyMCE.execInstanceCommand(tinyMCE.getParam('fullscreen_editor_id'), 'mceSetContent', false, tinyMCE.getContent(inst.editorId));

+			top.close();

+		} else {

+			tinyMCE.setWindowArg('editor_id', inst.editorId);

+

+			var win = window.open(tinyMCE.baseURL + "/plugins/fullscreen/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);

+			try { win.resizeTo(screen.availWidth, screen.availHeight); } catch (e) {}

+		}

+	},

+

+	_toggleFullscreen : function(inst) {

+		var ds = inst.getData('fullscreen'), editorContainer, tableElm, iframe, vp, cw, cd, re, w, h, si, blo, delta = 0, cell, row, fcml, bcml;

+

+		cw = inst.getContainerWin();

+		cd = cw.document;

+		editorContainer = cd.getElementById(inst.editorId + '_parent');

+		tableElm = editorContainer.firstChild;

+		iframe = inst.iframeElement;

+		re = cd.getElementById(inst.editorId + '_resize');

+		blo = document.getElementById('mce_fullscreen_blocker');

+		fcm = new TinyMCE_Layer(inst.editorId + '_fcMenu');

+		fcml = new TinyMCE_Layer(inst.editorId + '_fcMenu');

+		bcml = new TinyMCE_Layer(inst.editorId + '_bcMenu');

+

+		if (fcml.exists() && fcml.isVisible()) {

+			tinyMCE.switchClass(inst.editorId + '_forecolor', 'mceMenuButton');

+			fcml.hide();

+		}

+

+		if (bcml.exists() && bcml.isVisible()) {

+			tinyMCE.switchClass(inst.editorId + '_backcolor', 'mceMenuButton');

+			bcml.hide();

+		}

+

+		if (!ds.enabled) {

+			// Handle External Toolbar

+			if (inst.toolbarElement) {

+				delta += inst.toolbarElement.offsetHeight;

+

+				cell = tableElm.tBodies[0].insertRow(0).insertCell(-1);

+				cell.className = 'mceToolbarTop';

+				cell.nowrap = true;

+

+				ds.oldToolbarParent = inst.toolbarElement.parentNode;

+				ds.toolbarHolder = document.createTextNode('...');

+

+				cell.appendChild(ds.oldToolbarParent.replaceChild(ds.toolbarHolder, inst.toolbarElement));

+			}

+

+			ds.parents = [];

+

+			vp = tinyMCE.getViewPort(cw);

+			ds.scrollX = vp.left;

+			ds.scrollY = vp.top;

+

+			// Opera has a bug restoring scrollbars

+			if (!tinyMCE.isOpera)

+				tinyMCE.addCSSClass(cd.body, 'mceFullscreen');

+

+			tinyMCE.getParentNode(tableElm.parentNode, function (n) {

+				if (n.nodeName == 'BODY')

+					return true;

+

+				if (n.nodeType == 1)

+					tinyMCE.addCSSClass(n, 'mceFullscreenPos');

+

+				return false;

+			});

+

+			if (re)

+				re.style.display = 'none';

+

+			vp = tinyMCE.getViewPort(cw);

+

+			ds.oldWidth = iframe.style.width ? iframe.style.width : iframe.offsetWidth;

+			ds.oldHeight = iframe.style.height ? iframe.style.height : iframe.offsetHeight;

+			ds.oldTWidth = tableElm.style.width ? tableElm.style.width : tableElm.offsetWidth;

+			ds.oldTHeight = tableElm.style.height ? tableElm.style.height : tableElm.offsetHeight;

+

+			// Handle % width

+			if (ds.oldWidth && ds.oldWidth.indexOf)

+				ds.oldTWidth = ds.oldWidth.indexOf('%') != -1 ? ds.oldWidth : ds.oldTWidth;

+

+			if (!blo && tinyMCE.isRealIE) {

+				blo = tinyMCE.createTag(document, 'iframe', {id : 'mce_fullscreen_blocker', src : 'about:blank', frameBorder : 0, width : vp.width, height : vp.height, style : 'display: block; position: absolute; left: 0; top: 0; z-index: 999; margin: 0; padding: 0;'});

+				document.body.appendChild(blo);

+			}

+

+			tableElm.style.position = 'absolute';

+			tableElm.style.zIndex = 1000;

+			tableElm.style.left = tableElm.style.top = '0';

+

+			tableElm.style.width = vp.width + 'px';

+			tableElm.style.height = vp.height + 'px';

+

+			if (tinyMCE.isRealIE) {

+				iframe.style.width = vp.width + 'px';

+				iframe.style.height = vp.height + 'px';

+

+				// Calc new width/height based on overflow

+				w = iframe.parentNode.clientWidth - (tableElm.offsetWidth - vp.width);

+				h = iframe.parentNode.clientHeight - (tableElm.offsetHeight - vp.height);

+			} else {

+				w = iframe.parentNode.clientWidth;

+				h = iframe.parentNode.clientHeight;

+			}

+

+			iframe.style.width = w + "px";

+			iframe.style.height = (h+delta) + "px";

+

+			tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonSelected');

+			ds.enabled = true;

+

+			inst.useCSS = false;

+		} else {

+			// Handle External Toolbar

+			if (inst.toolbarElement) {

+				row = inst.toolbarElement.parentNode.parentNode;

+

+				row.parentNode.removeChild(row);

+

+				ds.oldToolbarParent.replaceChild(inst.toolbarElement, ds.toolbarHolder);

+

+				ds.oldToolbarParent = null;

+				ds.toolbarHolder = null;

+			}

+

+			if (blo)

+				blo.parentNode.removeChild(blo);

+

+			si = 0;

+			tinyMCE.getParentNode(tableElm.parentNode, function (n) {

+				if (n.nodeName == 'BODY')

+					return true;

+

+				if (n.nodeType == 1)

+					tinyMCE.removeCSSClass(n, 'mceFullscreenPos');

+			});

+

+			if (re && tinyMCE.getParam("theme_advanced_resizing", false))

+				re.style.display = 'block';

+

+			tableElm.style.position = 'static';

+			tableElm.style.zIndex = '';

+			tableElm.style.width = '';

+			tableElm.style.height = '';

+

+			tableElm.style.width = ds.oldTWidth ? ds.oldTWidth : '';

+			tableElm.style.height = ds.oldTHeight ? ds.oldTHeight : '';

+

+			iframe.style.width = ds.oldWidth ? ds.oldWidth : '';

+			iframe.style.height = ds.oldHeight ? ds.oldHeight : '';

+

+			tinyMCE.switchClass(inst.editorId + '_fullscreen', 'mceButtonNormal');

+			ds.enabled = false;

+

+			tinyMCE.removeCSSClass(cd.body, 'mceFullscreen');

+			cw.scrollTo(ds.scrollX, ds.scrollY);

+

+			inst.useCSS = false;

+		}

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		if (tinyMCE.getParam('fullscreen_is_enabled'))

+			tinyMCE.switchClass(editor_id + '_fullscreen', 'mceButtonSelected');

+

+		return true;

+	}

+};

+

+tinyMCE.addPlugin("fullscreen", TinyMCE_FullScreenPlugin);

 
-(function() {
-	var DOM = tinymce.DOM;
-
-	tinymce.create('tinymce.plugins.FullScreenPlugin', {
-		init : function(ed, url) {
-			var t = this, s = {}, vp;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceFullScreen', function() {
-				var win, de = DOM.doc.documentElement;
-
-				if (ed.getParam('fullscreen_is_enabled')) {
-					if (ed.getParam('fullscreen_new_window'))
-						closeFullscreen(); // Call to close in new window
-					else {
-						DOM.win.setTimeout(function() {
-							tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
-							tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
-							tinyMCE.remove(ed);
-							DOM.remove('mce_fullscreen_container');
-							de.style.overflow = ed.getParam('fullscreen_html_overflow');
-							DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
-							DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
-							tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
-						}, 10);
-					}
-
-					return;
-				}
-
-				if (ed.getParam('fullscreen_new_window')) {
-					win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
-					try {
-						win.resizeTo(screen.availWidth, screen.availHeight);
-					} catch (e) {
-						// Ignore
-					}
-				} else {
-					tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
-					s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
-					s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
-					vp = DOM.getViewPort();
-					s.fullscreen_scrollx = vp.x;
-					s.fullscreen_scrolly = vp.y;
-
-					// Fixes an Opera bug where the scrollbars doesn't reappear
-					if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
-						s.fullscreen_overflow = 'auto';
-
-					// Fixes an IE bug where horizontal scrollbars would appear
-					if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
-						s.fullscreen_overflow = 'auto';
-
-					if (s.fullscreen_overflow == '0px')
-						s.fullscreen_overflow = '';
-
-					DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
-					de.style.overflow = 'hidden'; //Fix for IE6/7
-					vp = DOM.getViewPort();
-					DOM.win.scrollTo(0, 0);
-
-					if (tinymce.isIE)
-						vp.h -= 1;
-
-					n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:absolute;top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
-					DOM.add(n, 'div', {id : 'mce_fullscreen'});
-
-					tinymce.each(ed.settings, function(v, n) {
-						s[n] = v;
-					});
-
-					s.id = 'mce_fullscreen';
-					s.width = n.clientWidth;
-					s.height = n.clientHeight - 15;
-					s.fullscreen_is_enabled = true;
-					s.fullscreen_editor_id = ed.id;
-					s.theme_advanced_resizing = false;
-					s.save_onsavecallback = function() {
-						ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'});
-						ed.execCommand('mceSave');
-					};
-
-					tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
-						s[k] = v;
-					});
-
-					if (s.theme_advanced_toolbar_location === 'external')
-						s.theme_advanced_toolbar_location = 'top';
-
-					t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
-					t.fullscreenEditor.onInit.add(function() {
-						t.fullscreenEditor.setContent(ed.getContent());
-						t.fullscreenEditor.focus();
-					});
-
-					t.fullscreenEditor.render();
-					tinyMCE.add(t.fullscreenEditor);
-
-					t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
-					t.fullscreenElement.update();
-					//document.body.overflow = 'hidden';
-
-					t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
-						var vp = tinymce.DOM.getViewPort();
-
-						t.fullscreenEditor.theme.resizeTo(vp.w, vp.h);
-					});
-				}
-			});
-
-			// Register buttons
-			ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
-
-			ed.onNodeChange.add(function(ed, cm) {
-				cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Fullscreen',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
@@ -1,112 +1,92 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title></title>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<script type="text/javascript" src="../../tiny_mce.js"></script>
-	<script type="text/javascript">
-		function patchCallback(settings, key) {
-			if (settings[key])
-				settings[key] = "window.opener." + settings[key];
-		}
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_fullscreen_title}</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

+	<script language="javascript" type="text/javascript" src="../../tiny_mce.js"></script>

+	<script language="javascript" type="text/javascript">

+		function patchCallback(settings, key) {

+			if (settings[key])

+				settings[key] = "window.opener." + settings[key];

+		}

+

+		var settings = new Array();

+

+		// Clone array

+		for (var name in window.opener.tinyMCE.settings)

+			settings[name] = window.opener.tinyMCE.settings[name];

+

+		// Override options for fullscreen

+		for (var name in window.opener.tinyMCE.settings.fullscreen_settings)

+			settings[name] = window.opener.tinyMCE.settings.fullscreen_settings[name];

+

+		// Patch callbacks, make them point to window.opener

+		patchCallback(settings, 'urlconverter_callback');

+		patchCallback(settings, 'insertlink_callback');

+		patchCallback(settings, 'insertimage_callback');

+		patchCallback(settings, 'setupcontent_callback');

+		patchCallback(settings, 'save_callback');

+		patchCallback(settings, 'onchange_callback');

+		patchCallback(settings, 'init_instance_callback');

+		patchCallback(settings, 'file_browser_callback');

+		patchCallback(settings, 'cleanup_callback');

+		patchCallback(settings, 'execcommand_callback');

+		patchCallback(settings, 'oninit');

+

+		// Set options

+		settings['mode'] = 'exact';

+		settings['elements'] = 'fullscreenarea';

+		settings['ask'] = false;

+		settings['setupcontent_callback'] = 'setupContent';

+		settings['fullscreen_is_enabled'] = true;

+		settings['fullscreen_editor_id'] = window.opener.tinyMCE.getWindowArg("editor_id");

+		settings['theme_advanced_resizing'] = false;

+

+		// Init

+		tinyMCE.init(settings);

+		tinyMCE.documentBasePath = window.opener.tinyMCE.documentBasePath;

+

+		function setupContent(editor_id, body, doc) {

+			var inst = tinyMCE.getInstanceById(editor_id);

+			var content = window.opener.tinyMCE.getContent(tinyMCE.getParam('fullscreen_editor_id'));

+

+			// Setup title

+			var divElm = document.createElement("div");

+			divElm.innerHTML = tinyMCELang['lang_fullscreen_title'];

+			document.title = divElm.innerHTML;

+

+			// Get content

+			inst.execCommand('mceSetContent', false, content);

+		}

+

+		function unloadHandler(e) {

+			moveContent();

+		}

+

+		function moveContent() {

+			var doc = tinyMCE.isMSIE ? window.frames['mce_editor_0'].window.document : document.getElementById('mce_editor_0').contentDocument;

+			window.opener.tinyMCE.setInnerHTML(window.opener.tinyMCE.selectedInstance.getBody(), doc.body.innerHTML);

+		}

+

+		// Add onunload

+		tinyMCE.addEvent(window, "beforeunload", unloadHandler);

+

+		function doParentSubmit() {

+			moveContent();

+

+			if (window.opener.tinyMCE.selectedInstance.formElement.form)

+				window.opener.tinyMCE.selectedInstance.formElement.form.submit();

+

+			window.close();

+

+			return false;

+		}

+	</script>

+	<base target="_self" />

+</head>

+<body style="margin: 0; overflow: hidden; height: 100%" scrolling="no" scroll="no">

+<form onsubmit="doParentSubmit();" style="height: 100%">

+<textarea id="fullscreenarea" style="width: 100%; height: 100%"></textarea>

+</form>

+</body>

+</html>

 
-		var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings;
-
-		// Clone array
-		for (var n in paSe)
-			settings[n] = paSe[n];
-
-		// Override options for fullscreen
-		for (var n in paSe.fullscreen_settings)
-			settings[n] = paSe.fullscreen_settings[n];
-
-		// Patch callbacks, make them point to window.opener
-		patchCallback(settings, 'urlconverter_callback');
-		patchCallback(settings, 'insertlink_callback');
-		patchCallback(settings, 'insertimage_callback');
-		patchCallback(settings, 'setupcontent_callback');
-		patchCallback(settings, 'save_callback');
-		patchCallback(settings, 'onchange_callback');
-		patchCallback(settings, 'init_instance_callback');
-		patchCallback(settings, 'file_browser_callback');
-		patchCallback(settings, 'cleanup_callback');
-		patchCallback(settings, 'execcommand_callback');
-		patchCallback(settings, 'oninit');
-
-		// Set options
-		delete settings.id;
-		settings['mode'] = 'exact';
-		settings['elements'] = 'fullscreenarea';
-		settings['add_unload_trigger'] = false;
-		settings['ask'] = false;
-		settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
-		settings['fullscreen_is_enabled'] = true;
-		settings['fullscreen_editor_id'] = window.opener.tinyMCE.activeEditor.id;
-		settings['theme_advanced_resizing'] = false;
-		settings['strict_loading_mode'] = true;
-
-		settings.save_onsavecallback = function() {
-			window.opener.tinyMCE.activeEditor.setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
-			window.opener.tinyMCE.activeEditor.execCommand('mceSave');
-			window.close();
-		};
-
-		function unloadHandler(e) {
-			moveContent();
-		}
-
-		function moveContent() {
-			window.opener.tinyMCE.activeEditor.setContent(tinyMCE.activeEditor.getContent());
-		}
-
-		function closeFullscreen() {
-			moveContent();
-			window.close();
-		}
-
-		function doParentSubmit() {
-			moveContent();
-
-			if (window.opener.tinyMCE.selectedInstance.formElement.form)
-				window.opener.tinyMCE.selectedInstance.formElement.form.submit();
-
-			window.close();
-
-			return false;
-		}
-
-		function render() {
-			var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
-
-			e.value = window.opener.tinyMCE.activeEditor.getContent();
-
-			vp = dom.getViewPort();
-			settings.width = vp.w;
-			settings.height = vp.h - 15;
-
-			tinymce.dom.Event.add(window, 'resize', function() {
-				var vp = dom.getViewPort();
-
-				tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
-			});
-
-			tinyMCE.init(settings);
-		}
-
-		// Add onunload
-		tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
-	</script>
-	<base target="_self" />
-</head>
-<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
-<form onsubmit="doParentSubmit();">
-<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
-</form>
-
-<script type="text/javascript">
-	render();
-</script>
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/images/_vti_cnf/fullscreen.gif
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/images/_vti_cnf/fullscreen.gif
@@ -1,11 +1,11 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|26 Sep 2005 18:01:40 -0000
-vti_extenderversion:SR|5.0.2.2623
-vti_author:SR|NORTHGRUM\\keefeta
-vti_modifiedby:SR|NORTHGRUM\\keefeta
-vti_timecreated:TR|26 Sep 2005 18:01:40 -0000
-vti_cacheddtm:TX|26 Sep 2005 18:01:40 -0000
-vti_filesize:IR|198
-vti_lineageid:SR|{EB09825D-4BD0-401B-B73F-A78E10C3AF3B}
-vti_backlinkinfo:VX|
+vti_encoding:SR|utf8-nl

+vti_timelastmodified:TR|26 Sep 2005 18:01:40 -0000

+vti_extenderversion:SR|5.0.2.2623

+vti_author:SR|NORTHGRUM\\keefeta

+vti_modifiedby:SR|NORTHGRUM\\keefeta

+vti_timecreated:TR|26 Sep 2005 18:01:40 -0000

+vti_cacheddtm:TX|26 Sep 2005 18:01:40 -0000

+vti_filesize:IR|198

+vti_lineageid:SR|{EB09825D-4BD0-401B-B73F-A78E10C3AF3B}

+vti_backlinkinfo:VX|

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/langs/en.js
@@ -1,6 +1,6 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+fullscreen_desc : 'Toggle fullscreen mode'

+});

 
-tinyMCE.addToLang('',{
-fullscreen_desc : 'Toggle fullscreen mode'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/fullscreen/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.IESpell',{init:function(ed,url){var t=this,sp;if(!tinymce.isIE)return;t.editor=ed;ed.addCommand('mceIESpell',function(){try{sp=new ActiveXObject("ieSpell.ieSpellExtension");sp.CheckDocumentNode(ed.getDoc().documentElement);}catch(e){if(e.number==-2146827859){ed.windowManager.confirm(ed.getLang("iespell.download"),function(s){if(s)window.open('http://www.iespell.com/download.php','ieSpellDownload','');});}else ed.windowManager.alert("Error Loading ieSpell: Exception "+e.number);}});ed.addButton('iespell',{title:'iespell.iespell_desc',cmd:'mceIESpell'});},getInfo:function(){return{longname:'IESpell (IE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('iespell',tinymce.plugins.IESpell);})();
+tinyMCE.importPluginLanguagePack('iespell');var TinyMCE_IESpellPlugin={getInfo:function(){return{longname:'IESpell (MSIE Only)',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){if(cn=="iespell"&&(tinyMCE.isMSIE&&!tinyMCE.isOpera))return tinyMCE.getButtonHTML(cn,'lang_iespell_desc','{$pluginurl}/images/iespell.gif','mceIESpell');return""},execCommand:function(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var ieSpell=new ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement)}catch(e){if(e.number==-2146827859){if(confirm(tinyMCE.getLang("lang_iespell_download","",true)))window.open('http://www.iespell.com/download.php','ieSpellDownload','')}else alert("Error Loading ieSpell: Exception "+e.number)}return true}return false}};tinyMCE.addPlugin("iespell",TinyMCE_IESpellPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js
@@ -1,51 +1,59 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('iespell');

+

+var TinyMCE_IESpellPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'IESpell (MSIE Only)',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	/**

+	 * Returns the HTML contents of the iespell control.

+	 */

+	getControlHTML : function(cn) {

+		// Is it the iespell control and is the brower MSIE.

+		if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera))

+			return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc', '{$pluginurl}/images/iespell.gif', 'mceIESpell');

+

+		return "";

+	},

+

+	/**

+	 * Executes the mceIESpell command.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle ieSpellCommand

+		if (command == "mceIESpell") {

+			try {

+				var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");

+				ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);

+			} catch (e) {

+				if (e.number == -2146827859) {

+					if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))

+						window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');

+				} else

+					alert("Error Loading ieSpell: Exception " + e.number);

+			}

+

+			return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	}

+};

+

+tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.IESpell', {
-		init : function(ed, url) {
-			var t = this, sp;
-
-			if (!tinymce.isIE)
-				return;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceIESpell', function() {
-				try {
-					sp = new ActiveXObject("ieSpell.ieSpellExtension");
-					sp.CheckDocumentNode(ed.getDoc().documentElement);
-				} catch (e) {
-					if (e.number == -2146827859) {
-						ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {
-							if (s)
-								window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
-						});
-					} else
-						ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);
-				}
-			});
-
-			// Register buttons
-			ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'IESpell (IE Only)',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/iespell/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/iespell/langs/en.js
@@ -1,8 +1,8 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+iespell_desc : 'Run spell checking',

+iespell_download : "ieSpell not detected. Click OK to go to download page."

+});

+

 
-tinyMCE.addToLang('',{
-iespell_desc : 'Run spell checking',
-iespell_download : "ieSpell not detected. Click OK to go to download page."
-});
-
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/iespell/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/iespell/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
@@ -1,70 +1,70 @@
-/* Window classes */
+/* Window classes */

+

+.mceWindow {

+	position: absolute;

+	left: 0;

+	top: 0;

+	border: 1px solid black;

+	background-color: #D4D0C8;

+}

+

+.mceWindowHead {

+	background-color: #334F8D;

+	width: 100%;

+	height: 18px;

+	cursor: move;

+	overflow: hidden;

+}

+

+.mceWindowBody {

+	clear: both;

+	background-color: white;

+}

+

+.mceWindowStatusbar {

+	background-color: #D4D0C8;

+	height: 12px;

+	border-top: 1px solid black;

+}

+

+.mceWindowTitle {

+	float: left;

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+	font-weight: bold;

+	line-height: 18px;

+	color: white;

+	margin-left: 2px;

+	overflow: hidden;

+}

+

+.mceWindowHeadTools {

+	margin-right: 2px;

+}

+

+.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize {

+	display: block;

+	float: right;

+	overflow: hidden;

+	margin-top: 2px;

+}

+

+.mceWindowClose {

+	margin-left: 2px;

+}

+

+.mceWindowMinimize {

+}

+

+.mceWindowMaximize {

+}

+

+.mceWindowResize {

+	display: block;

+	float: right;

+	overflow: hidden;

+	cursor: se-resize;

+	width: 12px;

+	height: 12px;

+}

 
-.mceWindow {
-	position: absolute;
-	left: 0;
-	top: 0;
-	border: 1px solid black;
-	background-color: #D4D0C8;
-}
-
-.mceWindowHead {
-	background-color: #334F8D;
-	width: 100%;
-	height: 18px;
-	cursor: move;
-	overflow: hidden;
-}
-
-.mceWindowBody {
-	clear: both;
-	background-color: white;
-}
-
-.mceWindowStatusbar {
-	background-color: #D4D0C8;
-	height: 12px;
-	border-top: 1px solid black;
-}
-
-.mceWindowTitle {
-	float: left;
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-	font-weight: bold;
-	line-height: 18px;
-	color: white;
-	margin-left: 2px;
-	overflow: hidden;
-}
-
-.mceWindowHeadTools {
-	margin-right: 2px;
-}
-
-.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize {
-	display: block;
-	float: right;
-	overflow: hidden;
-	margin-top: 2px;
-}
-
-.mceWindowClose {
-	margin-left: 2px;
-}
-
-.mceWindowMinimize {
-}
-
-.mceWindowMaximize {
-}
-
-.mceWindowResize {
-	display: block;
-	float: right;
-	overflow: hidden;
-	cursor: se-resize;
-	width: 12px;
-	height: 12px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var DOM=tinymce.DOM,Element=tinymce.dom.Element,Event=tinymce.dom.Event,each=tinymce.each,is=tinymce.is;tinymce.create('tinymce.plugins.InlinePopups',{init:function(ed,url){ed.onBeforeRenderUI.add(function(){ed.windowManager=new tinymce.InlineWindowManager(ed);DOM.loadCSS(url+'/skins/'+(ed.settings.inlinepopups_skin||'clearlooks2')+"/window.css");});},getInfo:function(){return{longname:'InlinePopups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager',{InlineWindowManager:function(ed){var t=this;t.parent(ed);t.zIndex=300000;t.count=0;},open:function(f,p){var t=this,id,opt='',ed=t.editor,dw=0,dh=0,vp,po,mdf,clf,we,w,u;f=f||{};p=p||{};if(!f.inline)return t.parent(f,p);if(!f.type)t.bookmark=ed.selection.getBookmark('simple');id=DOM.uniqueId();vp=DOM.getViewPort();f.width=parseInt(f.width||320);f.height=parseInt(f.height||240)+(tinymce.isIE?8:0);f.min_width=parseInt(f.min_width||150);f.min_height=parseInt(f.min_height||100);f.max_width=parseInt(f.max_width||2000);f.max_height=parseInt(f.max_height||2000);f.left=f.left||Math.round(Math.max(vp.x,vp.x+(vp.w/ 2.0) - (f.width /2.0)));f.top=f.top||Math.round(Math.max(vp.y,vp.y+(vp.h/ 2.0) - (f.height /2.0)));f.movable=f.resizable=true;p.mce_width=f.width;p.mce_height=f.height;p.mce_inline=true;p.mce_window_id=id;p.mce_auto_focus=f.auto_focus;t.features=f;t.params=p;t.onOpen.dispatch(t,f,p);if(f.type){opt+=' mceModal';if(f.type)opt+=' mce'+f.type.substring(0,1).toUpperCase()+f.type.substring(1);f.resizable=false;}if(f.statusbar)opt+=' mceStatusbar';if(f.resizable)opt+=' mceResizable';if(f.minimizable)opt+=' mceMinimizable';if(f.maximizable)opt+=' mceMaximizable';if(f.movable)opt+=' mceMovable';t._addAll(DOM.doc.body,['div',{id:id,'class':ed.settings.inlinepopups_skin||'clearlooks2',style:'width:100px;height:100px'},['div',{id:id+'_wrapper','class':'mceWrapper'+opt},['div',{id:id+'_top','class':'mceTop'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_title'},f.title||'']],['div',{id:id+'_middle','class':'mceMiddle'},['div',{id:id+'_left','class':'mceLeft'}],['span',{id:id+'_content'}],['div',{id:id+'_right','class':'mceRight'}]],['div',{id:id+'_bottom','class':'mceBottom'},['div',{'class':'mceLeft'}],['div',{'class':'mceCenter'}],['div',{'class':'mceRight'}],['span',{id:id+'_status'},'Content']],['a',{'class':'mceMove',tabindex:'-1',href:'javascript:;'}],['a',{'class':'mceMin',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMax',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceMed',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{'class':'mceClose',tabindex:'-1',href:'javascript:;',onmousedown:'return false;'}],['a',{id:id+'_resize_n','class':'mceResize mceResizeN',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_s','class':'mceResize mceResizeS',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_w','class':'mceResize mceResizeW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_e','class':'mceResize mceResizeE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_nw','class':'mceResize mceResizeNW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_ne','class':'mceResize mceResizeNE',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_sw','class':'mceResize mceResizeSW',tabindex:'-1',href:'javascript:;'}],['a',{id:id+'_resize_se','class':'mceResize mceResizeSE',tabindex:'-1',href:'javascript:;'}]]]);DOM.setStyles(id,{top:-10000,left:-10000});if(tinymce.isGecko)DOM.setStyle(id,'overflow','auto');if(!f.type){dw+=DOM.get(id+'_left').clientWidth;dw+=DOM.get(id+'_right').clientWidth;dh+=DOM.get(id+'_top').clientHeight;dh+=DOM.get(id+'_bottom').clientHeight;}DOM.setStyles(id,{top:f.top,left:f.left,width:f.width+dw,height:f.height+dh});u=f.url||f.file;if(u){if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);}if(!f.type){DOM.add(id+'_content','iframe',{id:id+'_ifr',src:'javascript:""',frameBorder:0,style:'border:0;width:10px;height:10px'});DOM.setStyles(id+'_ifr',{width:f.width,height:f.height});DOM.setAttrib(id+'_ifr','src',u);}else{DOM.add(id+'_wrapper','a',{id:id+'_ok','class':'mceButton mceOk',href:'javascript:;',onmousedown:'return false;'},'Ok');if(f.type=='confirm')DOM.add(id+'_wrapper','a',{'class':'mceButton mceCancel',href:'javascript:;',onmousedown:'return false;'},'Cancel');DOM.add(id+'_middle','div',{'class':'mceIcon'});DOM.setHTML(id+'_content',f.content.replace('\n','<br />'));}mdf=Event.add(id,'mousedown',function(e){var n=e.target,w,vp;w=t.windows[id];t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){if(n.className=='mceMax'){w.oldPos=w.element.getXY();w.oldSize=w.element.getSize();vp=DOM.getViewPort();vp.w-=2;vp.h-=2;w.element.moveTo(vp.x,vp.y);w.element.resizeTo(vp.w,vp.h);DOM.setStyles(id+'_ifr',{width:vp.w-w.deltaWidth,height:vp.h-w.deltaHeight});DOM.addClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMed'){w.element.moveTo(w.oldPos.x,w.oldPos.y);w.element.resizeTo(w.oldSize.w,w.oldSize.h);w.iframeElement.resizeTo(w.oldSize.w-w.deltaWidth,w.oldSize.h-w.deltaHeight);DOM.removeClass(id+'_wrapper','mceMaximized');}else if(n.className=='mceMove')return t._startDrag(id,e,n.className);else if(DOM.hasClass(n,'mceResize'))return t._startDrag(id,e,n.className.substring(13));}});clf=Event.add(id,'click',function(e){var n=e.target;t.focus(id);if(n.nodeName=='A'||n.nodeName=='a'){switch(n.className){case'mceClose':t.close(null,id);return Event.cancel(e);case'mceButton mceOk':case'mceButton mceCancel':f.button_func(n.className=='mceButton mceOk');return Event.cancel(e);}}});t.windows=t.windows||{};w=t.windows[id]={id:id,mousedown_func:mdf,click_func:clf,element:new Element(id,{blocker:1,container:ed.getContainer()}),iframeElement:new Element(id+'_ifr'),features:f,deltaWidth:dw,deltaHeight:dh};w.iframeElement.on('focus',function(){t.focus(id);});if(t.count==0&&t.editor.getParam('dialog_type')=='modal'){DOM.add(DOM.doc.body,'div',{id:'mceModalBlocker','class':(t.editor.settings.inlinepopups_skin||'clearlooks2')+'_modalBlocker',style:{left:vp.x,top:vp.y,zIndex:t.zIndex-1}});DOM.show('mceModalBlocker');}else DOM.setStyle('mceModalBlocker','z-index',t.zIndex-1);t.focus(id);t._fixIELayout(id,1);if(DOM.get(id+'_ok'))DOM.get(id+'_ok').focus();t.count++;return w;},focus:function(id){var t=this,w=t.windows[id];w.zIndex=this.zIndex++;w.element.setStyle('zIndex',w.zIndex);w.element.update();id=id+'_wrapper';DOM.removeClass(t.lastId,'mceFocus');DOM.addClass(id,'mceFocus');t.lastId=id;},_addAll:function(te,ne){var i,n,t=this,dom=tinymce.DOM;if(is(ne,'string'))te.appendChild(dom.doc.createTextNode(ne));else if(ne.length){te=te.appendChild(dom.create(ne[0],ne[1]));for(i=2;i<ne.length;i++)t._addAll(te,ne[i]);}},_startDrag:function(id,se,ac){var t=this,mu,mm,d=DOM.doc,eb,w=t.windows[id],we=w.element,sp=we.getXY(),p,sz,ph,cp,vp,sx,sy,sex,sey,dx,dy,dw,dh;cp={x:0,y:0};vp=DOM.getViewPort();vp.w-=2;vp.h-=2;sex=se.screenX;sey=se.screenY;dx=dy=dw=dh=0;mu=Event.add(d,'mouseup',function(e){Event.remove(d,'mouseup',mu);Event.remove(d,'mousemove',mm);if(eb)eb.remove();we.moveBy(dx,dy);we.resizeBy(dw,dh);sz=we.getSize();DOM.setStyles(id+'_ifr',{width:sz.w-w.deltaWidth,height:sz.h-w.deltaHeight});t._fixIELayout(id,1);return Event.cancel(e);});if(ac!='Move')startMove();function startMove(){if(eb)return;t._fixIELayout(id,0);DOM.add(d.body,'div',{id:'mceEventBlocker','class':'mceEventBlocker '+(t.editor.settings.inlinepopups_skin||'clearlooks2'),style:{left:vp.x,top:vp.y,zIndex:t.zIndex+1}});eb=new Element('mceEventBlocker');eb.update();p=we.getXY();sz=we.getSize();sx=cp.x+p.x-vp.x;sy=cp.y+p.y-vp.y;DOM.add(eb.get(),'div',{id:'mcePlaceHolder','class':'mcePlaceHolder',style:{left:sx,top:sy,width:sz.w,height:sz.h}});ph=new Element('mcePlaceHolder');};mm=Event.add(d,'mousemove',function(e){var x,y,v;startMove();x=e.screenX-sex;y=e.screenY-sey;switch(ac){case'ResizeW':dx=x;dw=0-x;break;case'ResizeE':dw=x;break;case'ResizeN':case'ResizeNW':case'ResizeNE':if(ac=="ResizeNW"){dx=x;dw=0-x;}else if(ac=="ResizeNE")dw=x;dy=y;dh=0-y;break;case'ResizeS':case'ResizeSW':case'ResizeSE':if(ac=="ResizeSW"){dx=x;dw=0-x;}else if(ac=="ResizeSE")dw=x;dh=y;break;case'mceMove':dx=x;dy=y;break;}if(dw<(v=w.features.min_width-sz.w)){if(dx!==0)dx+=dw-v;dw=v;}if(dh<(v=w.features.min_height-sz.h)){if(dy!==0)dy+=dh-v;dh=v;}dw=Math.min(dw,w.features.max_width-sz.w);dh=Math.min(dh,w.features.max_height-sz.h);dx=Math.max(dx,vp.x-(sx+vp.x));dy=Math.max(dy,vp.y-(sy+vp.y));dx=Math.min(dx,(vp.w+vp.x)-(sx+sz.w+vp.x));dy=Math.min(dy,(vp.h+vp.y)-(sy+sz.h+vp.y));if(dx+dy!==0){if(sx+dx<0)dx=0;if(sy+dy<0)dy=0;ph.moveTo(sx+dx,sy+dy);}if(dw+dh!==0)ph.resizeTo(sz.w+dw,sz.h+dh);return Event.cancel(e);});return Event.cancel(se);},resizeBy:function(dw,dh,id){var w=this.windows[id];if(w){w.element.resizeBy(dw,dh);w.iframeElement.resizeBy(dw,dh);}},close:function(win,id){var t=this,w,d=DOM.doc,ix=0,fw,id;id=t._findId(id||win);t.count--;if(t.count==0)DOM.remove('mceModalBlocker');if(!id&&win){t.parent(win);return;}if(w=t.windows[id]){t.onClose.dispatch(t);Event.remove(d,'mousedown',w.mousedownFunc);Event.remove(d,'click',w.clickFunc);Event.clear(id);Event.clear(id+'_ifr');DOM.setAttrib(id+'_ifr','src','javascript:""');w.element.remove();delete t.windows[id];each(t.windows,function(w){if(w.zIndex>ix){fw=w;ix=w.zIndex;}});if(fw)t.focus(fw.id);}},setTitle:function(w,ti){var e;w=this._findId(w);if(e=DOM.get(w+'_title'))e.innerHTML=DOM.encode(ti);},alert:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'alert',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},confirm:function(txt,cb,s){var t=this,w;w=t.open({title:t,type:'confirm',button_func:function(s){if(cb)cb.call(s||t,s);t.close(null,w.id);},content:DOM.encode(t.editor.getLang(txt,txt)),inline:1,width:400,height:130});},_findId:function(w){var t=this;if(typeof(w)=='string')return w;each(t.windows,function(wo){var ifr=DOM.get(wo.id+'_ifr');if(ifr&&w==ifr.contentWindow){w=wo.id;return false;}});return w;},_fixIELayout:function(id,s){var w,img;if(!tinymce.isIE6)return;each(['n','s','w','e','nw','ne','sw','se'],function(v){var e=DOM.get(id+'_resize_'+v);DOM.setStyles(e,{width:s?e.clientWidth:'',height:s?e.clientHeight:'',cursor:DOM.getStyle(e,'cursor',1)});DOM.setStyle(id+"_bottom",'bottom','-1px');e=0;});if(w=this.windows[id]){w.element.hide();w.element.show();each(DOM.select('div,a',id),function(e,i){if(e.currentStyle.backgroundImage!='none'){img=new Image();img.src=e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,'$1');}});DOM.get(id).style.filter='';}}});tinymce.PluginManager.add('inlinepopups',tinymce.plugins.InlinePopups);})();
+var TinyMCE_InlinePopupsPlugin={getInfo:function(){return{longname:'Inline Popups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}}};tinyMCE.addPlugin("inlinepopups",TinyMCE_InlinePopupsPlugin);TinyMCE_Engine.prototype.orgOpenWindow=TinyMCE_Engine.prototype.openWindow;TinyMCE_Engine.prototype.orgCloseWindow=TinyMCE_Engine.prototype.closeWindow;TinyMCE_Engine.prototype.openWindow=function(template,args){if(args['inline']!="yes"||tinyMCE.isOpera||tinyMCE.getParam("plugins").indexOf('inlinepopups')==-1){mcWindows.selectedWindow=null;args['mce_inside_iframe']=false;this.orgOpenWindow(template,args);return}var url,resizable,scrollbars;args['mce_inside_iframe']=true;tinyMCE.windowArgs=args;if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(!(minWidth=parseInt(template['minWidth'])))minWidth=100;if(!(minHeight=parseInt(template['minHeight'])))minHeight=100;resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";height+=18;for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}var elm=document.getElementById(this.selectedInstance.editorId+'_parent');if(tinyMCE.hasPlugin('fullscreen')&&this.selectedInstance.getData('fullscreen').enabled)pos={absLeft:0,absTop:0};else pos=tinyMCE.getAbsPosition(elm);pos.absLeft+=Math.round((elm.firstChild.clientWidth/ 2) - (width /2));pos.absTop+=Math.round((elm.firstChild.clientHeight/ 2) - (height /2));mcWindows.open(url,mcWindows.idCounter++,"modal=yes,width="+width+",height="+height+",resizable="+resizable+",scrollbars="+scrollbars+",statusbar="+resizable+",left="+pos.absLeft+",top="+pos.absTop+",minWidth="+minWidth+",minHeight="+minHeight)};TinyMCE_Engine.prototype.closeWindow=function(win){var gotit=false,n,w;for(n in mcWindows.windows){w=mcWindows.windows[n];if(typeof(w)=='function')continue;if(win.name==w.id+'_iframe'){w.close();gotit=true}}if(!gotit)this.orgCloseWindow(win);tinyMCE.selectedInstance.getWin().focus()};TinyMCE_Engine.prototype.setWindowTitle=function(win_ref,title){for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win_ref.name==win.id+"_iframe")window.frames[win.id+"_iframe"].document.getElementById(win.id+'_title').innerHTML=title}};function TinyMCE_Windows(){this.settings=new Array();this.windows=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.action="none";this.selectedWindow=null;this.lastSelectedWindow=null;this.zindex=1001;this.mouseDownScreenX=0;this.mouseDownScreenY=0;this.mouseDownLayerX=0;this.mouseDownLayerY=0;this.mouseDownWidth=0;this.mouseDownHeight=0;this.idCounter=0};TinyMCE_Windows.prototype.init=function(settings){this.settings=settings;if(this.isMSIE)this.addEvent(document,"mousemove",mcWindows.eventDispatcher);else this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.addEvent(window,"resize",mcWindows.eventDispatcher);this.addEvent(document,"scroll",mcWindows.eventDispatcher);this.doc=document};TinyMCE_Windows.prototype.getBounds=function(){if(!this.bounds){var vp=tinyMCE.getViewPort(window);var top,left,bottom,right,docEl=this.doc.documentElement;top=vp.top;left=vp.left;bottom=vp.height+top-2;right=vp.width+left-22;this.bounds=[left,top,right,bottom]}return this.bounds};TinyMCE_Windows.prototype.clampBoxPosition=function(x,y,w,h,minW,minH){var bounds=this.getBounds();x=Math.max(bounds[0],Math.min(bounds[2],x+w)-w);y=Math.max(bounds[1],Math.min(bounds[3],y+h)-h);return this.clampBoxSize(x,y,w,h,minW,minH)};TinyMCE_Windows.prototype.clampBoxSize=function(x,y,w,h,minW,minH){var bounds=this.getBounds();return[x,y,Math.max(minW,Math.min(bounds[2],x+w)-x),Math.max(minH,Math.min(bounds[3],y+h)-y)]};TinyMCE_Windows.prototype.getParam=function(name,default_value){var value=null;value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");return value};TinyMCE_Windows.prototype.eventDispatcher=function(e){e=typeof(e)=="undefined"?window.event:e;if(mcWindows.selectedWindow==null)return;if(mcWindows.isGecko&&e.type=="mousedown"){var elm=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(win.headElement==elm||win.resizeElement==elm){win.focus();break}}}switch(e.type){case"mousemove":mcWindows.selectedWindow.onMouseMove(e);break;case"mouseup":mcWindows.selectedWindow.onMouseUp(e);break;case"mousedown":mcWindows.selectedWindow.onMouseDown(e);break;case"focus":mcWindows.selectedWindow.onFocus(e);break;case"scroll":case"resize":if(mcWindows.clampUpdateTimeout)clearTimeout(mcWindows.clampUpdateTimeout);mcWindows.clampEventType=e.type;mcWindows.clampUpdateTimeout=setTimeout(function(){mcWindows.updateClamping()},100);break}};TinyMCE_Windows.prototype.updateClamping=function(){var clamp,oversize,etype=mcWindows.clampEventType;this.bounds=null;this.clampUpdateTimeout=null;for(var n in this.windows){win=this.windows[n];if(typeof(win)=='function'||!win.winElement)continue;clamp=mcWindows.clampBoxPosition(win.left,win.top,win.winElement.scrollWidth,win.winElement.scrollHeight,win.features.minWidth,win.features.minHeight);oversize=(clamp[2]!=win.winElement.scrollWidth||clamp[3]!=win.winElement.scrollHeight)?true:false;if(!oversize||win.features.resizable=="yes"||etype!="scroll")win.moveTo(clamp[0],clamp[1]);if(oversize&&win.features.resizable=="yes")win.resizeTo(clamp[2],clamp[3])}};TinyMCE_Windows.prototype.addEvent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+name,handler);else obj.addEventListener(name,handler,false)};TinyMCE_Windows.prototype.cancelEvent=function(e){if(this.isMSIE){e.returnValue=false;e.cancelBubble=true}else e.preventDefault()};TinyMCE_Windows.prototype.parseFeatures=function(opts){opts=opts.toLowerCase();opts=opts.replace(/;/g,",");opts=opts.replace(/[^0-9a-z=,]/g,"");var optionChunks=opts.split(',');var options=new Array();options['left']="10";options['top']="10";options['width']="300";options['height']="300";options['minwidth']="100";options['minheight']="100";options['resizable']="yes";options['minimizable']="yes";options['maximizable']="yes";options['close']="yes";options['movable']="yes";options['statusbar']="yes";options['scrollbars']="auto";options['modal']="no";if(opts=="")return options;for(var i=0;i<optionChunks.length;i++){var parts=optionChunks[i].split('=');if(parts.length==2)options[parts[0]]=parts[1]}options['left']=parseInt(options['left']);options['top']=parseInt(options['top']);options['width']=parseInt(options['width']);options['height']=parseInt(options['height']);options['minWidth']=parseInt(options['minwidth']);options['minHeight']=parseInt(options['minheight']);return options};TinyMCE_Windows.prototype.open=function(url,name,features){this.lastSelectedWindow=this.selectedWindow;var win=new TinyMCE_Window();var winDiv,html="",id;var imgPath=this.getParam("images_path");features=this.parseFeatures(features);var clamp=mcWindows.clampBoxPosition(features['left'],features['top'],features['width'],features['height'],features['minWidth'],features['minHeight']);features['left']=clamp[0];features['top']=clamp[1];if(features['resizable']=="yes"){features['width']=clamp[2];features['height']=clamp[3]}id="mcWindow_"+name;win.deltaHeight=18;if(features['statusbar']=="yes"){win.deltaHeight+=13;if(this.isMSIE)win.deltaHeight+=1}width=parseInt(features['width']);height=parseInt(features['height'])-win.deltaHeight;if(this.isMSIE)width-=2;win.id=id;win.url=url;win.name=name;win.features=features;this.windows[name]=win;iframeWidth=width;iframeHeight=height;html+='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';html+='<html>';html+='<head>';html+='<title>Wrapper iframe</title>';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';html+='<link href="'+this.getParam("css_file")+'" rel="stylesheet" type="text/css" />';html+='</head>';html+='<body onload="parent.mcWindows.onLoad(\''+name+'\');">';html+='<div id="'+id+'_container" class="mceWindow">';html+='<div id="'+id+'_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';html+='  <div id="'+id+'_title" class="mceWindowTitle"';html+='  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';html+='    <div class="mceWindowHeadTools">';html+='      <a href="javascript:parent.mcWindows.windows[\''+name+'\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="'+imgPath+'/window_close.gif" /></a>';if(features['resizable']=="yes"&&features['maximizable']=="yes")html+='      <a href="javascript:parent.mcWindows.windows[\''+name+'\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="'+imgPath+'/window_maximize.gif" /></a>';html+='    </div>';html+='</div><div id="'+id+'_body" class="mceWindowBody" style="width: '+width+'px; height: '+height+'px;">';html+='<iframe id="'+id+'_iframe" name="'+id+'_iframe" frameborder="0" width="'+iframeWidth+'" height="'+iframeHeight+'" src="'+url+'" class="mceWindowBodyIframe" scrolling="'+features['scrollbars']+'"></iframe></div>';if(features['statusbar']=="yes"){html+='<div id="'+id+'_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';if(features['resizable']=="yes"){if(this.isGecko)html+='<div id="'+id+'_resize" class="mceWindowResize"><div style="background-image: url(\''+imgPath+'/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';else html+='<div id="'+id+'_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();" border="0" src="'+imgPath+'/window_resize.gif" /></div>'}html+='</div>'}html+='</div>';html+='</body>';html+='</html>';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html)};TinyMCE_Windows.prototype.setDocumentLock=function(state){var elm=document.getElementById('mcWindowEventBlocker');if(state){if(elm==null){elm=document.createElement("div");elm.id="mcWindowEventBlocker";elm.style.position="absolute";elm.style.left="0";elm.style.top="0";document.body.appendChild(elm)}elm.style.display="none";var imgPath=this.getParam("images_path");var width=document.body.clientWidth;var height=document.body.clientHeight;elm.style.width=width;elm.style.height=height;elm.innerHTML='<img src="'+imgPath+'/spacer.gif" width="'+width+'" height="'+height+'" />';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block"}else if(elm!=null){if(mcWindows.windows.length==0)elm.parentNode.removeChild(elm);else elm.style.zIndex=mcWindows.zindex-1}};TinyMCE_Windows.prototype.onLoad=function(name){var win=mcWindows.windows[name];var id="mcWindow_"+name;var wrapperIframe=window.frames[id+"_iframe"].frames[0];var wrapperDoc=window.frames[id+"_iframe"].document;var doc=window.frames[id+"_iframe"].document;var winDiv=document.getElementById("mcWindow_"+name+"_div");var realIframe=window.frames[id+"_iframe"].frames[0];win.id="mcWindow_"+name;win.winElement=winDiv;win.bodyElement=doc.getElementById(id+'_body');win.iframeElement=doc.getElementById(id+'_iframe');win.headElement=doc.getElementById(id+'_head');win.titleElement=doc.getElementById(id+'_title');win.resizeElement=doc.getElementById(id+'_resize');win.containerElement=doc.getElementById(id+'_container');win.left=win.features['left'];win.top=win.features['top'];win.frame=window.frames[id+'_iframe'].frames[0];win.wrapperFrame=window.frames[id+'_iframe'];win.wrapperIFrameElement=document.getElementById(id+"_iframe");mcWindows.addEvent(win.headElement,"mousedown",mcWindows.eventDispatcher);if(win.resizeElement!=null)mcWindows.addEvent(win.resizeElement,"mousedown",mcWindows.eventDispatcher);if(mcWindows.isMSIE){mcWindows.addEvent(realIframe.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(realIframe,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"focus",mcWindows.eventDispatcher)}for(var i=0;i<window.frames.length;i++){if(!window.frames[i]._hasMouseHandlers){if(mcWindows.isMSIE){mcWindows.addEvent(window.frames[i].document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i].document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(window.frames[i],"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i],"mouseup",mcWindows.eventDispatcher)}window.frames[i]._hasMouseHandlers=true}}if(mcWindows.isMSIE){mcWindows.addEvent(win.frame.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(win.frame,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"focus",mcWindows.eventDispatcher)}var func=this.getParam("on_open_window","");if(func!="")eval(func+"(win);");win.focus();if(win.features['modal']=="yes")mcWindows.setDocumentLock(true)};TinyMCE_Windows.prototype.createFloatingIFrame=function(id_prefix,left,top,width,height,html){var iframe=document.createElement("iframe");var div=document.createElement("div"),doc;width=parseInt(width);height=parseInt(height)+1;div.setAttribute("id",id_prefix+"_div");div.setAttribute("width",width);div.setAttribute("height",(height));div.style.position="absolute";div.style.left=left+"px";div.style.top=top+"px";div.style.width=width+"px";div.style.height=(height)+"px";div.style.backgroundColor="white";div.style.display="none";if(this.isGecko){iframeWidth=width+2;iframeHeight=height+2}else{iframeWidth=width;iframeHeight=height+1}iframe.setAttribute("id",id_prefix+"_iframe");iframe.setAttribute("name",id_prefix+"_iframe");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",iframeWidth);iframe.setAttribute("height",iframeHeight);iframe.setAttribute("scrolling","no");iframe.style.width=iframeWidth+"px";iframe.style.height=iframeHeight+"px";iframe.style.backgroundColor="white";div.appendChild(iframe);document.body.appendChild(div);div.innerHTML=div.innerHTML;if(this.isSafari){window.setTimeout(function(){var doc=window.frames[id_prefix+'_iframe'].document;doc.open();doc.write(html);doc.close()},10)}else{doc=window.frames[id_prefix+'_iframe'].window.document;doc.open();doc.write(html);doc.close()}div.style.display="block";return div};function TinyMCE_Window(){};TinyMCE_Window.prototype.focus=function(){if(this!=mcWindows.selectedWindow){this.winElement.style.zIndex=++mcWindows.zindex;mcWindows.lastSelectedWindow=mcWindows.selectedWindow;mcWindows.selectedWindow=this}};TinyMCE_Window.prototype.minimize=function(){};TinyMCE_Window.prototype.maximize=function(){if(this.restoreSize){this.moveTo(this.restoreSize[0],this.restoreSize[1]);this.resizeTo(this.restoreSize[2],this.restoreSize[3]);this.updateClamping();this.restoreSize=null}else{var bounds=mcWindows.getBounds();this.restoreSize=[this.left,this.top,this.winElement.scrollWidth,this.winElement.scrollHeight];this.moveTo(bounds[0],bounds[1]);this.resizeTo(bounds[2]-bounds[0],bounds[3]-bounds[1])}};TinyMCE_Window.prototype.startResize=function(){mcWindows.action="resize"};TinyMCE_Window.prototype.startMove=function(e){mcWindows.action="move"};TinyMCE_Window.prototype.close=function(){if(this.frame&&this.frame['tinyMCEPopup'])this.frame['tinyMCEPopup'].restoreSelection();if(mcWindows.lastSelectedWindow!=null)mcWindows.lastSelectedWindow.focus();var mcWindowsNew=new Array();for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win.name!=this.name)mcWindowsNew[n]=win}mcWindows.windows=mcWindowsNew;var e=mcWindows.doc.getElementById(this.id+"_iframe");e.parentNode.removeChild(e);var e=mcWindows.doc.getElementById(this.id+"_div");e.parentNode.removeChild(e);mcWindows.setDocumentLock(false)};TinyMCE_Window.prototype.onMouseMove=function(e){var clamp;var dx=e.screenX-mcWindows.mouseDownScreenX;var dy=e.screenY-mcWindows.mouseDownScreenY;switch(mcWindows.action){case"resize":clamp=mcWindows.clampBoxSize(this.left,this.top,mcWindows.mouseDownWidth+(e.screenX-mcWindows.mouseDownScreenX),mcWindows.mouseDownHeight+(e.screenY-mcWindows.mouseDownScreenY),this.features.minWidth,this.features.minHeight);this.resizeTo(clamp[2],clamp[3]);mcWindows.cancelEvent(e);break;case"move":this.left=mcWindows.mouseDownLayerX+(e.screenX-mcWindows.mouseDownScreenX);this.top=mcWindows.mouseDownLayerY+(e.screenY-mcWindows.mouseDownScreenY);this.updateClamping();mcWindows.cancelEvent(e);break}};TinyMCE_Window.prototype.moveTo=function(x,y){this.left=x;this.top=y;this.winElement.style.left=this.left+"px";this.winElement.style.top=this.top+"px"};TinyMCE_Window.prototype.resizeTo=function(width,height){this.wrapperIFrameElement.style.width=(width+2)+'px';this.wrapperIFrameElement.style.height=(height+2)+'px';this.wrapperIFrameElement.width=width+2;this.wrapperIFrameElement.height=height+2;this.winElement.style.width=width+'px';this.winElement.style.height=height+'px';height=height-this.deltaHeight;this.containerElement.style.width=width+'px';this.iframeElement.style.width=width+'px';this.iframeElement.style.height=height+'px';this.bodyElement.style.width=width+'px';this.bodyElement.style.height=height+'px';this.headElement.style.width=width+'px';};TinyMCE_Window.prototype.updateClamping=function(){var clamp,oversize;clamp=mcWindows.clampBoxPosition(this.left,this.top,this.winElement.scrollWidth,this.winElement.scrollHeight,this.features.minWidth,this.features.minHeight);oversize=(clamp[2]!=this.winElement.scrollWidth||clamp[3]!=this.winElement.scrollHeight)?true:false;this.moveTo(clamp[0],clamp[1]);if(this.features.resizable=="yes"&&oversize)this.resizeTo(clamp[2],clamp[3])};function debug(msg){document.getElementById('debug').value+=msg+"\n"}TinyMCE_Window.prototype.onMouseUp=function(e){mcWindows.action="none"};TinyMCE_Window.prototype.onFocus=function(e){var winRef=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(winRef.name==win.id+"_iframe"){win.focus();return}}};TinyMCE_Window.prototype.onMouseDown=function(e){var elm=mcWindows.isMSIE?this.wrapperFrame.event.srcElement:e.target;mcWindows.mouseDownScreenX=e.screenX;mcWindows.mouseDownScreenY=e.screenY;mcWindows.mouseDownLayerX=this.left;mcWindows.mouseDownLayerY=this.top;mcWindows.mouseDownWidth=parseInt(this.winElement.style.width);mcWindows.mouseDownHeight=parseInt(this.winElement.style.height);if(this.resizeElement!=null&&elm==this.resizeElement.firstChild)this.startResize(e);else this.startMove(e);mcWindows.cancelEvent(e)};var mcWindows=new TinyMCE_Windows();mcWindows.init({images_path:tinyMCE.baseURL+"/plugins/inlinepopups/images",css_file:tinyMCE.baseURL+"/plugins/inlinepopups/css/inlinepopup.css"});

--- a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
@@ -1,624 +1,820 @@
 /**
- * $Id: editor_plugin_src.js 809 2008-04-17 14:41:31Z spocke $
+ * $Id$
+ *
+ * Moxiecode DHTML Windows script.
  *
  * @author Moxiecode


  */
 
-(function() {
-	var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
-
-	tinymce.create('tinymce.plugins.InlinePopups', {
-		init : function(ed, url) {
-			// Replace window manager
-			ed.onBeforeRenderUI.add(function() {
-				ed.windowManager = new tinymce.InlineWindowManager(ed);
-				DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'InlinePopups',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
+// Patch openWindow, closeWindow TinyMCE functions
+
+var TinyMCE_InlinePopupsPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Inline Popups',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	}
+};
+
+tinyMCE.addPlugin("inlinepopups", TinyMCE_InlinePopupsPlugin);
+
+// Patch openWindow, closeWindow TinyMCE functions
+
+TinyMCE_Engine.prototype.orgOpenWindow = TinyMCE_Engine.prototype.openWindow;
+TinyMCE_Engine.prototype.orgCloseWindow = TinyMCE_Engine.prototype.closeWindow;
+
+TinyMCE_Engine.prototype.openWindow = function(template, args) {
+	// Does the caller support inline
+	if (args['inline'] != "yes" || tinyMCE.isOpera || tinyMCE.getParam("plugins").indexOf('inlinepopups') == -1) {
+		mcWindows.selectedWindow = null;
+		args['mce_inside_iframe'] = false;
+		this.orgOpenWindow(template, args);
+		return;
+	}
+
+	var url, resizable, scrollbars;
+
+	args['mce_inside_iframe'] = true;
+	tinyMCE.windowArgs = args;
+
+	if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)
+		url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
+	else
+		url = template['file'];
+
+	if (!(width = parseInt(template['width'])))
+		width = 320;
+
+	if (!(height = parseInt(template['height'])))
+		height = 200;
+
+	if (!(minWidth = parseInt(template['minWidth'])))
+		minWidth = 100;
+
+	if (!(minHeight = parseInt(template['minHeight'])))
+		minHeight = 100;
+
+	resizable = (args && args['resizable']) ? args['resizable'] : "no";
+	scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
+
+	height += 18;
+
+	// Replace all args as variables in URL
+	for (var name in args) {
+		if (typeof(args[name]) == 'function')
+			continue;
+
+		url = tinyMCE.replaceVar(url, name, escape(args[name]));
+	}
+
+	var elm = document.getElementById(this.selectedInstance.editorId + '_parent');
+
+	if (tinyMCE.hasPlugin('fullscreen') && this.selectedInstance.getData('fullscreen').enabled)
+		pos = { absLeft: 0, absTop: 0 };
+	else
+		pos = tinyMCE.getAbsPosition(elm);
+
+	// Center div in editor area
+	pos.absLeft += Math.round((elm.firstChild.clientWidth / 2) - (width / 2));
+	pos.absTop += Math.round((elm.firstChild.clientHeight / 2) - (height / 2));
+
+	mcWindows.open(url, mcWindows.idCounter++, "modal=yes,width=" + width+ ",height=" + height + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",statusbar=" + resizable + ",left=" + pos.absLeft + ",top=" + pos.absTop + ",minWidth=" + minWidth + ",minHeight=" + minHeight );
+};
+
+TinyMCE_Engine.prototype.closeWindow = function(win) {
+	var gotit = false, n, w;
+
+	for (n in mcWindows.windows) {
+		w = mcWindows.windows[n];
+
+		if (typeof(w) == 'function')
+			continue;
+
+		if (win.name == w.id + '_iframe') {
+			w.close();
+			gotit = true;
 		}
-	});
-
-	tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
-		InlineWindowManager : function(ed) {
-			var t = this;
-
-			t.parent(ed);
-			t.zIndex = 300000;
-			t.count = 0;
-		},
-
-		open : function(f, p) {
-			var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u;
-
-			f = f || {};
-			p = p || {};
-
-			// Run native windows
-			if (!f.inline)
-				return t.parent(f, p);
-
-			// Only store selection if the type is a normal window
-			if (!f.type)
-				t.bookmark = ed.selection.getBookmark('simple');
-
-			id = DOM.uniqueId();
-			vp = DOM.getViewPort();
-			f.width = parseInt(f.width || 320);
-			f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
-			f.min_width = parseInt(f.min_width || 150);
-			f.min_height = parseInt(f.min_height || 100);
-			f.max_width = parseInt(f.max_width || 2000);
-			f.max_height = parseInt(f.max_height || 2000);
-			f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
-			f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
-			f.movable = f.resizable = true;
-			p.mce_width = f.width;
-			p.mce_height = f.height;
-			p.mce_inline = true;
-			p.mce_window_id = id;
-			p.mce_auto_focus = f.auto_focus;
-
-			// Transpose
-//			po = DOM.getPos(ed.getContainer());
-//			f.left -= po.x;
-//			f.top -= po.y;
-
-			t.features = f;
-			t.params = p;
-			t.onOpen.dispatch(t, f, p);
-
-			if (f.type) {
-				opt += ' mceModal';
-
-				if (f.type)
-					opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
-
-				f.resizable = false;
-			}
-
-			if (f.statusbar)
-				opt += ' mceStatusbar';
-
-			if (f.resizable)
-				opt += ' mceResizable';
-
-			if (f.minimizable)
-				opt += ' mceMinimizable';
-
-			if (f.maximizable)
-				opt += ' mceMaximizable';
-
-			if (f.movable)
-				opt += ' mceMovable';
-
-			// Create DOM objects
-			t._addAll(DOM.doc.body, 
-				['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, 
-					['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
-						['div', {id : id + '_top', 'class' : 'mceTop'}, 
-							['div', {'class' : 'mceLeft'}],
-							['div', {'class' : 'mceCenter'}],
-							['div', {'class' : 'mceRight'}],
-							['span', {id : id + '_title'}, f.title || '']
-						],
-
-						['div', {id : id + '_middle', 'class' : 'mceMiddle'}, 
-							['div', {id : id + '_left', 'class' : 'mceLeft'}],
-							['span', {id : id + '_content'}],
-							['div', {id : id + '_right', 'class' : 'mceRight'}]
-						],
-
-						['div', {id : id + '_bottom', 'class' : 'mceBottom'},
-							['div', {'class' : 'mceLeft'}],
-							['div', {'class' : 'mceCenter'}],
-							['div', {'class' : 'mceRight'}],
-							['span', {id : id + '_status'}, 'Content']
-						],
-
-						['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
-						['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
-						['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
-						['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
-						['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
-						['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
-						['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
-					]
-				]
-			);
-
-			DOM.setStyles(id, {top : -10000, left : -10000});
-
-			// Fix gecko rendering bug, where the editors iframe messed with window contents
-			if (tinymce.isGecko)
-				DOM.setStyle(id, 'overflow', 'auto');
-
-			// Measure borders
-			if (!f.type) {
-				dw += DOM.get(id + '_left').clientWidth;
-				dw += DOM.get(id + '_right').clientWidth;
-				dh += DOM.get(id + '_top').clientHeight;
-				dh += DOM.get(id + '_bottom').clientHeight;
-			}
-
-			// Resize window
-			DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
-
-			u = f.url || f.file;
-			if (u) {
-				if (tinymce.relaxedDomain)
-					u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
-
-				u = tinymce._addVer(u);
-			}
-
-			if (!f.type) {
-				DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
-				DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
-				DOM.setAttrib(id + '_ifr', 'src', u);
-			} else {
-				DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
-
-				if (f.type == 'confirm')
-					DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
-
-				DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
-				DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
-			}
-
-			// Register events
-			mdf = Event.add(id, 'mousedown', function(e) {
-				var n = e.target, w, vp;
-
-				w = t.windows[id];
-				t.focus(id);
-
-				if (n.nodeName == 'A' || n.nodeName == 'a') {
-					if (n.className == 'mceMax') {
-						w.oldPos = w.element.getXY();
-						w.oldSize = w.element.getSize();
-
-						vp = DOM.getViewPort();
-
-						// Reduce viewport size to avoid scrollbars
-						vp.w -= 2;
-						vp.h -= 2;
-
-						w.element.moveTo(vp.x, vp.y);
-						w.element.resizeTo(vp.w, vp.h);
-						DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
-						DOM.addClass(id + '_wrapper', 'mceMaximized');
-					} else if (n.className == 'mceMed') {
-						// Reset to old size
-						w.element.moveTo(w.oldPos.x, w.oldPos.y);
-						w.element.resizeTo(w.oldSize.w, w.oldSize.h);
-						w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
-
-						DOM.removeClass(id + '_wrapper', 'mceMaximized');
-					} else if (n.className == 'mceMove')
-						return t._startDrag(id, e, n.className);
-					else if (DOM.hasClass(n, 'mceResize'))
-						return t._startDrag(id, e, n.className.substring(13));
-				}
-			});
-
-			clf = Event.add(id, 'click', function(e) {
-				var n = e.target;
-
-				t.focus(id);
-
-				if (n.nodeName == 'A' || n.nodeName == 'a') {
-					switch (n.className) {
-						case 'mceClose':
-							t.close(null, id);
-							return Event.cancel(e);
-
-						case 'mceButton mceOk':
-						case 'mceButton mceCancel':
-							f.button_func(n.className == 'mceButton mceOk');
-							return Event.cancel(e);
-					}
-				}
-			});
-
-			// Add window
-			t.windows = t.windows || {};
-			w = t.windows[id] = {
-				id : id,
-				mousedown_func : mdf,
-				click_func : clf,
-				element : new Element(id, {blocker : 1, container : ed.getContainer()}),
-				iframeElement : new Element(id + '_ifr'),
-				features : f,
-				deltaWidth : dw,
-				deltaHeight : dh
-			};
-
-			w.iframeElement.on('focus', function() {
-				t.focus(id);
-			});
-
-			// Setup blocker
-			if (t.count == 0 && t.editor.getParam('dialog_type') == 'modal') {
-				DOM.add(DOM.doc.body, 'div', {
-					id : 'mceModalBlocker',
-					'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
-					style : {left : vp.x, top : vp.y, zIndex : t.zIndex - 1}
-				});
-
-				DOM.show('mceModalBlocker'); // Reduces flicker in IE
-			} else
-				DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
-
-			t.focus(id);
-			t._fixIELayout(id, 1);
-
-			// Focus ok button
-			if (DOM.get(id + '_ok'))
-				DOM.get(id + '_ok').focus();
-
-			t.count++;
-
-			return w;
-		},
-
-		focus : function(id) {
-			var t = this, w = t.windows[id];
-
-			w.zIndex = this.zIndex++;
-			w.element.setStyle('zIndex', w.zIndex);
-			w.element.update();
-
-			id = id + '_wrapper';
-			DOM.removeClass(t.lastId, 'mceFocus');
-			DOM.addClass(id, 'mceFocus');
-			t.lastId = id;
-		},
-
-		_addAll : function(te, ne) {
-			var i, n, t = this, dom = tinymce.DOM;
-
-			if (is(ne, 'string'))
-				te.appendChild(dom.doc.createTextNode(ne));
-			else if (ne.length) {
-				te = te.appendChild(dom.create(ne[0], ne[1]));
-
-				for (i=2; i<ne.length; i++)
-					t._addAll(te, ne[i]);
-			}
-		},
-
-		_startDrag : function(id, se, ac) {
-			var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
-
-			// Get positons and sizes
-//			cp = DOM.getPos(t.editor.getContainer());
-			cp = {x : 0, y : 0};
-			vp = DOM.getViewPort();
-
-			// Reduce viewport size to avoid scrollbars while dragging
-			vp.w -= 2;
-			vp.h -= 2;
-
-			sex = se.screenX;
-			sey = se.screenY;
-			dx = dy = dw = dh = 0;
-
-			// Handle mouse up
-			mu = Event.add(d, 'mouseup', function(e) {
-				Event.remove(d, 'mouseup', mu);
-				Event.remove(d, 'mousemove', mm);
-
-				if (eb)
-					eb.remove();
-
-				we.moveBy(dx, dy);
-				we.resizeBy(dw, dh);
-				sz = we.getSize();
-				DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
-				t._fixIELayout(id, 1);
-
-				return Event.cancel(e);
-			});
-
-			if (ac != 'Move')
-				startMove();
-
-			function startMove() {
-				if (eb)
-					return;
-
-				t._fixIELayout(id, 0);
-
-				// Setup event blocker
-				DOM.add(d.body, 'div', {
-					id : 'mceEventBlocker',
-					'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
-					style : {left : vp.x, top : vp.y, zIndex : t.zIndex + 1}
-				});
-				eb = new Element('mceEventBlocker');
-				eb.update();
-
-				// Setup placeholder
-				p = we.getXY();
-				sz = we.getSize();
-				sx = cp.x + p.x - vp.x;
-				sy = cp.y + p.y - vp.y;
-				DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
-				ph = new Element('mcePlaceHolder');
-			};
-
-			// Handle mouse move/drag
-			mm = Event.add(d, 'mousemove', function(e) {
-				var x, y, v;
-
-				startMove();
-
-				x = e.screenX - sex;
-				y = e.screenY - sey;
-
-				switch (ac) {
-					case 'ResizeW':
-						dx = x;
-						dw = 0 - x;
-						break;
-
-					case 'ResizeE':
-						dw = x;
-						break;
-
-					case 'ResizeN':
-					case 'ResizeNW':
-					case 'ResizeNE':
-						if (ac == "ResizeNW") {
-							dx = x;
-							dw = 0 - x;
-						} else if (ac == "ResizeNE")
-							dw = x;
-
-						dy = y;
-						dh = 0 - y;
-						break;
-
-					case 'ResizeS':
-					case 'ResizeSW':
-					case 'ResizeSE':
-						if (ac == "ResizeSW") {
-							dx = x;
-							dw = 0 - x;
-						} else if (ac == "ResizeSE")
-							dw = x;
-
-						dh = y;
-						break;
-
-					case 'mceMove':
-						dx = x;
-						dy = y;
-						break;
-				}
-
-				// Boundary check
-				if (dw < (v = w.features.min_width - sz.w)) {
-					if (dx !== 0)
-						dx += dw - v;
-
-					dw = v;
-				}
-	
-				if (dh < (v = w.features.min_height - sz.h)) {
-					if (dy !== 0)
-						dy += dh - v;
-
-					dh = v;
-				}
-
-				dw = Math.min(dw, w.features.max_width - sz.w);
-				dh = Math.min(dh, w.features.max_height - sz.h);
-				dx = Math.max(dx, vp.x - (sx + vp.x));
-				dy = Math.max(dy, vp.y - (sy + vp.y));
-				dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
-				dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
-
-				// Move if needed
-				if (dx + dy !== 0) {
-					if (sx + dx < 0)
-						dx = 0;
-	
-					if (sy + dy < 0)
-						dy = 0;
-
-					ph.moveTo(sx + dx, sy + dy);
-				}
-
-				// Resize if needed
-				if (dw + dh !== 0)
-					ph.resizeTo(sz.w + dw, sz.h + dh);
-
-				return Event.cancel(e);
-			});
-
-			return Event.cancel(se);
-		},
-
-		resizeBy : function(dw, dh, id) {
-			var w = this.windows[id];
-
-			if (w) {
-				w.element.resizeBy(dw, dh);
-				w.iframeElement.resizeBy(dw, dh);
-			}
-		},
-
-		close : function(win, id) {
-			var t = this, w, d = DOM.doc, ix = 0, fw, id;
-
-			id = t._findId(id || win);
-
-			t.count--;
-
-			if (t.count == 0)
-				DOM.remove('mceModalBlocker');
-
-			// Probably not inline
-			if (!id && win) {
-				t.parent(win);
-				return;
-			}
-
-			if (w = t.windows[id]) {
-				t.onClose.dispatch(t);
-				Event.remove(d, 'mousedown', w.mousedownFunc);
-				Event.remove(d, 'click', w.clickFunc);
-				Event.clear(id);
-				Event.clear(id + '_ifr');
-
-				DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
-				w.element.remove();
-				delete t.windows[id];
-
-				// Find front most window and focus that
-				each (t.windows, function(w) {
-					if (w.zIndex > ix) {
-						fw = w;
-						ix = w.zIndex;
-					}
-				});
-
-				if (fw)
-					t.focus(fw.id);
-			}
-		},
-
-		setTitle : function(w, ti) {
-			var e;
-
-			w = this._findId(w);
-
-			if (e = DOM.get(w + '_title'))
-				e.innerHTML = DOM.encode(ti);
-		},
-
-		alert : function(txt, cb, s) {
-			var t = this, w;
-
-			w = t.open({
-				title : t,
-				type : 'alert',
-				button_func : function(s) {
-					if (cb)
-						cb.call(s || t, s);
-
-					t.close(null, w.id);
-				},
-				content : DOM.encode(t.editor.getLang(txt, txt)),
-				inline : 1,
-				width : 400,
-				height : 130
-			});
-		},
-
-		confirm : function(txt, cb, s) {
-			var t = this, w;
-
-			w = t.open({
-				title : t,
-				type : 'confirm',
-				button_func : function(s) {
-					if (cb)
-						cb.call(s || t, s);
-
-					t.close(null, w.id);
-				},
-				content : DOM.encode(t.editor.getLang(txt, txt)),
-				inline : 1,
-				width : 400,
-				height : 130
-			});
-		},
-
-		// Internal functions
-
-		_findId : function(w) {
-			var t = this;
-
-			if (typeof(w) == 'string')
-				return w;
-
-			each(t.windows, function(wo) {
-				var ifr = DOM.get(wo.id + '_ifr');
-
-				if (ifr && w == ifr.contentWindow) {
-					w = wo.id;
-					return false;
-				}
-			});
-
-			return w;
-		},
-
-		_fixIELayout : function(id, s) {
-			var w, img;
-
-			if (!tinymce.isIE6)
-				return;
-
-			// Fixes the bug where hover flickers and does odd things in IE6
-			each(['n','s','w','e','nw','ne','sw','se'], function(v) {
-				var e = DOM.get(id + '_resize_' + v);
-
-				DOM.setStyles(e, {
-					width : s ? e.clientWidth : '',
-					height : s ? e.clientHeight : '',
-					cursor : DOM.getStyle(e, 'cursor', 1)
-				});
-
-				DOM.setStyle(id + "_bottom", 'bottom', '-1px');
-
-				e = 0;
-			});
-
-			// Fixes graphics glitch
-			if (w = this.windows[id]) {
-				// Fixes rendering bug after resize
-				w.element.hide();
-				w.element.show();
-
-				// Forced a repaint of the window
-				//DOM.get(id).style.filter = '';
-
-				// IE has a bug where images used in CSS won't get loaded
-				// sometimes when the cache in the browser is disabled
-				// This fix tries to solve it by loading the images using the image object
-				each(DOM.select('div,a', id), function(e, i) {
-					if (e.currentStyle.backgroundImage != 'none') {
-						img = new Image();
-						img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
-					}
-				});
-
-				DOM.get(id).style.filter = '';
+	}
+
+	if (!gotit)
+		this.orgCloseWindow(win);
+
+	tinyMCE.selectedInstance.getWin().focus(); 
+};
+
+TinyMCE_Engine.prototype.setWindowTitle = function(win_ref, title) {
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (win_ref.name == win.id + "_iframe")
+			window.frames[win.id + "_iframe"].document.getElementById(win.id + '_title').innerHTML = title;
+	}
+};
+
+// * * * * * TinyMCE_Windows classes below
+
+// Windows handler
+function TinyMCE_Windows() {
+	this.settings = new Array();
+	this.windows = new Array();
+	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
+	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
+	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
+	this.isMac = navigator.userAgent.indexOf('Mac') != -1;
+	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
+	this.action = "none";
+	this.selectedWindow = null;
+	this.lastSelectedWindow = null;
+	this.zindex = 1001;
+	this.mouseDownScreenX = 0;
+	this.mouseDownScreenY = 0;
+	this.mouseDownLayerX = 0;
+	this.mouseDownLayerY = 0;
+	this.mouseDownWidth = 0;
+	this.mouseDownHeight = 0;
+	this.idCounter = 0;
+};
+
+TinyMCE_Windows.prototype.init = function(settings) {
+	this.settings = settings;
+
+	if (this.isMSIE)
+		this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
+	else
+		this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
+
+	this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
+
+	this.addEvent(window, "resize", mcWindows.eventDispatcher);
+	this.addEvent(document, "scroll", mcWindows.eventDispatcher);
+
+	this.doc = document;
+};
+
+TinyMCE_Windows.prototype.getBounds = function() {
+	if (!this.bounds) {
+		var vp = tinyMCE.getViewPort(window);
+		var top, left, bottom, right, docEl = this.doc.documentElement;
+
+		top    = vp.top;
+		left   = vp.left;
+		bottom = vp.height + top - 2;
+		right  = vp.width  + left - 22; // TODO this number is platform dependant
+		// x1, y1, x2, y2
+		this.bounds = [left, top, right, bottom];
+	}
+	return this.bounds;
+};
+
+TinyMCE_Windows.prototype.clampBoxPosition = function(x, y, w, h, minW, minH) {
+	var bounds = this.getBounds();
+
+	x = Math.max(bounds[0], Math.min(bounds[2], x + w) - w);
+	y = Math.max(bounds[1], Math.min(bounds[3], y + h) - h);
+
+	return this.clampBoxSize(x, y, w, h, minW, minH);
+};
+
+TinyMCE_Windows.prototype.clampBoxSize = function(x, y, w, h, minW, minH) {
+	var bounds = this.getBounds();
+
+	return [
+		x, y,
+		Math.max(minW, Math.min(bounds[2], x + w) - x),
+		Math.max(minH, Math.min(bounds[3], y + h) - y)
+	];
+};
+
+TinyMCE_Windows.prototype.getParam = function(name, default_value) {
+	var value = null;
+
+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+	// Fix bool values
+	if (value == "true" || value == "false")
+		return (value == "true");
+
+	return value;
+};
+
+TinyMCE_Windows.prototype.eventDispatcher = function(e) {
+	e = typeof(e) == "undefined" ? window.event : e;
+
+	if (mcWindows.selectedWindow == null)
+		return;
+
+	// Switch focus
+	if (mcWindows.isGecko && e.type == "mousedown") {
+		var elm = e.currentTarget;
+
+		for (var n in mcWindows.windows) {
+			var win = mcWindows.windows[n];
+
+			if (win.headElement == elm || win.resizeElement == elm) {
+				win.focus();
+				break;
 			}
 		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
-})();
-
-
+	}
+
+	switch (e.type) {
+		case "mousemove":
+			mcWindows.selectedWindow.onMouseMove(e);
+			break;
+
+		case "mouseup":
+			mcWindows.selectedWindow.onMouseUp(e);
+			break;
+
+		case "mousedown":
+			mcWindows.selectedWindow.onMouseDown(e);
+			break;
+
+		case "focus":
+			mcWindows.selectedWindow.onFocus(e);
+			break;
+		case "scroll":
+		case "resize":
+			if (mcWindows.clampUpdateTimeout)
+				clearTimeout(mcWindows.clampUpdateTimeout);
+			mcWindows.clampEventType = e.type;
+			mcWindows.clampUpdateTimeout =
+				setTimeout(function () {mcWindows.updateClamping()}, 100);
+			break;
+	}
+};
+
+TinyMCE_Windows.prototype.updateClamping = function () {
+	var clamp, oversize, etype = mcWindows.clampEventType;
+
+	this.bounds = null; // Recalc window bounds on resize/scroll
+	this.clampUpdateTimeout = null;
+
+	for (var n in this.windows) {
+		win = this.windows[n];
+		if (typeof(win) == 'function' || ! win.winElement) continue;
+
+		clamp = mcWindows.clampBoxPosition(
+			win.left, win.top,
+			win.winElement.scrollWidth,
+			win.winElement.scrollHeight,
+			win.features.minWidth,
+			win.features.minHeight
+		);
+		oversize = (
+			clamp[2] != win.winElement.scrollWidth ||
+			clamp[3] != win.winElement.scrollHeight
+		) ? true : false;
+
+		if (!oversize || win.features.resizable == "yes" || etype != "scroll")
+			win.moveTo(clamp[0], clamp[1]);
+		if (oversize && win.features.resizable == "yes")
+			win.resizeTo(clamp[2], clamp[3]);
+	}
+};
+
+TinyMCE_Windows.prototype.addEvent = function(obj, name, handler) {
+	if (this.isMSIE)
+		obj.attachEvent("on" + name, handler);
+	else
+		obj.addEventListener(name, handler, false);
+};
+
+TinyMCE_Windows.prototype.cancelEvent = function(e) {
+	if (this.isMSIE) {
+		e.returnValue = false;
+		e.cancelBubble = true;
+	} else
+		e.preventDefault();
+};
+
+TinyMCE_Windows.prototype.parseFeatures = function(opts) {
+	// Cleanup the options
+	opts = opts.toLowerCase();
+	opts = opts.replace(/;/g, ",");
+	opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+	var optionChunks = opts.split(',');
+	var options = new Array();
+
+	options['left'] = "10";
+	options['top'] = "10";
+	options['width'] = "300";
+	options['height'] = "300";
+	options['minwidth'] = "100";
+	options['minheight'] = "100";
+	options['resizable'] = "yes";
+	options['minimizable'] = "yes";
+	options['maximizable'] = "yes";
+	options['close'] = "yes";
+	options['movable'] = "yes";
+	options['statusbar'] = "yes";
+	options['scrollbars'] = "auto";
+	options['modal'] = "no";
+
+	if (opts == "")
+		return options;
+
+	for (var i=0; i<optionChunks.length; i++) {
+		var parts = optionChunks[i].split('=');
+
+		if (parts.length == 2)
+			options[parts[0]] = parts[1];
+	}
+
+	options['left'] = parseInt(options['left']);
+	options['top'] = parseInt(options['top']);
+	options['width'] = parseInt(options['width']);
+	options['height'] = parseInt(options['height']);
+	options['minWidth'] = parseInt(options['minwidth']);
+	options['minHeight'] = parseInt(options['minheight']);
+
+	return options;
+};
+
+TinyMCE_Windows.prototype.open = function(url, name, features) {
+	this.lastSelectedWindow = this.selectedWindow;
+
+	var win = new TinyMCE_Window();
+	var winDiv, html = "", id;
+	var imgPath = this.getParam("images_path");
+
+	features = this.parseFeatures(features);
+
+	// Clamp specified dimensions
+	var clamp = mcWindows.clampBoxPosition(
+		features['left'], features['top'],
+		features['width'], features['height'],
+		features['minWidth'], features['minHeight']
+	);
+
+	features['left'] = clamp[0];
+	features['top'] = clamp[1];
+
+	if (features['resizable'] == "yes") {
+		features['width'] = clamp[2];
+		features['height'] = clamp[3];
+	}
+
+	// Create div
+	id = "mcWindow_" + name;
+	win.deltaHeight = 18;
+
+	if (features['statusbar'] == "yes") {
+		win.deltaHeight += 13;
+
+		if (this.isMSIE)
+			win.deltaHeight += 1;
+	}
+
+	width = parseInt(features['width']);
+	height = parseInt(features['height'])-win.deltaHeight;
+
+	if (this.isMSIE)
+		width -= 2;
+
+	// Setup first part of window
+	win.id = id;
+	win.url = url;
+	win.name = name;
+	win.features = features;
+	this.windows[name] = win;
+
+	iframeWidth = width;
+	iframeHeight = height;
+
+	// Create inner content
+	html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
+	html += '<html>';
+	html += '<head>';
+	html += '<title>Wrapper iframe</title>';
+	html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
+	html += '<link href="' + this.getParam("css_file") + '" rel="stylesheet" type="text/css" />';
+	html += '</head>';
+	html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
+
+	html += '<div id="' + id + '_container" class="mceWindow">';
+	html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
+	html += '  <div id="' + id + '_title" class="mceWindowTitle"';
+	html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';
+	html += '    <div class="mceWindowHeadTools">';
+	html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="' + imgPath + '/window_close.gif" /></a>';
+	if (features['resizable'] == "yes" && features['maximizable'] == "yes")
+		html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="' + imgPath + '/window_maximize.gif" /></a>';
+	// html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" target="_self" onmousedown="return false;" class="mceWindowMinimize"></a>';
+	html += '    </div>';
+	html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
+	html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe" scrolling="' + features['scrollbars'] + '"></iframe></div>';
+
+	if (features['statusbar'] == "yes") {
+		html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
+
+		if (features['resizable'] == "yes") {
+			if (this.isGecko)
+				html += '<div id="' + id + '_resize" class="mceWindowResize"><div style="background-image: url(\'' + imgPath + '/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';
+			else
+				html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="' + imgPath + '/window_resize.gif" /></div>';
+		}
+
+		html += '</div>';
+	}
+
+	html += '</div>';
+
+	html += '</body>';
+	html += '</html>';
+
+	// Create iframe
+	this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
+};
+
+// Blocks the document events by placing a image over the whole document
+TinyMCE_Windows.prototype.setDocumentLock = function(state) {
+	var elm = document.getElementById('mcWindowEventBlocker');
+
+	if (state) {
+		if (elm == null) {
+			elm = document.createElement("div");
+
+			elm.id = "mcWindowEventBlocker";
+			elm.style.position = "absolute";
+			elm.style.left = "0";
+			elm.style.top = "0";
+
+			document.body.appendChild(elm);
+		}
+
+		elm.style.display = "none";
+
+		var imgPath = this.getParam("images_path");
+		var width = document.body.clientWidth;
+		var height = document.body.clientHeight;
+
+		elm.style.width = width;
+		elm.style.height = height;
+		elm.innerHTML = '<img src="' + imgPath + '/spacer.gif" width="' + width + '" height="' + height + '" />';
+
+		elm.style.zIndex = mcWindows.zindex-1;
+		elm.style.display = "block";
+	} else if (elm != null) {
+		if (mcWindows.windows.length == 0)
+			elm.parentNode.removeChild(elm);
+		else
+			elm.style.zIndex = mcWindows.zindex-1;
+	}
+};
+
+// Gets called when wrapper iframe is initialized
+TinyMCE_Windows.prototype.onLoad = function(name) {
+	var win = mcWindows.windows[name];
+	var id = "mcWindow_" + name;
+	var wrapperIframe = window.frames[id + "_iframe"].frames[0];
+	var wrapperDoc = window.frames[id + "_iframe"].document;
+	var doc = window.frames[id + "_iframe"].document;
+	var winDiv = document.getElementById("mcWindow_" + name + "_div");
+	var realIframe = window.frames[id + "_iframe"].frames[0];
+
+	// Set window data
+	win.id = "mcWindow_" + name;
+	win.winElement = winDiv;
+	win.bodyElement = doc.getElementById(id + '_body');
+	win.iframeElement = doc.getElementById(id + '_iframe');
+	win.headElement = doc.getElementById(id + '_head');
+	win.titleElement = doc.getElementById(id + '_title');
+	win.resizeElement = doc.getElementById(id + '_resize');
+	win.containerElement = doc.getElementById(id + '_container');
+	win.left = win.features['left'];
+	win.top = win.features['top'];
+	win.frame = window.frames[id + '_iframe'].frames[0];
+	win.wrapperFrame = window.frames[id + '_iframe'];
+	win.wrapperIFrameElement = document.getElementById(id + "_iframe");
+
+	// Add event handlers
+	mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
+
+	if (win.resizeElement != null)
+		mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
+
+	if (mcWindows.isMSIE) {
+		mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
+	} else {
+		mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
+		mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
+	}
+
+	for (var i=0; i<window.frames.length; i++) {
+		if (!window.frames[i]._hasMouseHandlers) {
+			if (mcWindows.isMSIE) {
+				mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
+				mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
+			} else {
+				mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
+				mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
+			}
+
+			window.frames[i]._hasMouseHandlers = true;
+		}
+	}
+
+	if (mcWindows.isMSIE) {
+		mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
+	} else {
+		mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
+		mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
+	}
+
+	// Dispatch open window event
+	var func = this.getParam("on_open_window", "");
+	if (func != "")
+		eval(func + "(win);");
+
+	win.focus();
+
+	if (win.features['modal'] == "yes")
+		mcWindows.setDocumentLock(true);
+};
+
+TinyMCE_Windows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
+	var iframe = document.createElement("iframe");
+	var div = document.createElement("div"), doc;
+
+	width = parseInt(width);
+	height = parseInt(height)+1;
+
+	// Create wrapper div
+	div.setAttribute("id", id_prefix + "_div");
+	div.setAttribute("width", width);
+	div.setAttribute("height", (height));
+	div.style.position = "absolute";
+
+	div.style.left = left + "px";
+	div.style.top = top + "px";
+	div.style.width = width + "px";
+	div.style.height = (height) + "px";
+	div.style.backgroundColor = "white";
+	div.style.display = "none";
+
+	if (this.isGecko) {
+		iframeWidth = width + 2;
+		iframeHeight = height + 2;
+	} else {
+		iframeWidth = width;
+		iframeHeight = height + 1;
+	}
+
+	// Create iframe
+	iframe.setAttribute("id", id_prefix + "_iframe");
+	iframe.setAttribute("name", id_prefix + "_iframe");
+	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", iframeWidth);
+	iframe.setAttribute("height", iframeHeight);
+	// iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
+	// iframe.setAttribute("allowtransparency", "false");
+	iframe.setAttribute("scrolling", "no");
+	iframe.style.width = iframeWidth + "px";
+	iframe.style.height = iframeHeight + "px";
+	iframe.style.backgroundColor = "white";
+	div.appendChild(iframe);
+
+	document.body.appendChild(div);
+
+	// Fixed MSIE 5.0 issue
+	div.innerHTML = div.innerHTML;
+
+	if (this.isSafari) {
+		// Give Safari some time to setup
+		window.setTimeout(function() {
+			var doc = window.frames[id_prefix + '_iframe'].document;
+			doc.open();
+			doc.write(html);
+			doc.close();
+		}, 10);
+	} else {
+		doc = window.frames[id_prefix + '_iframe'].window.document;
+		doc.open();
+		doc.write(html);
+		doc.close();
+	}
+
+	div.style.display = "block";
+
+	return div;
+};
+
+// Window instance
+function TinyMCE_Window() {
+};
+
+TinyMCE_Window.prototype.focus = function() {
+	if (this != mcWindows.selectedWindow) {
+		this.winElement.style.zIndex = ++mcWindows.zindex;
+		mcWindows.lastSelectedWindow = mcWindows.selectedWindow;
+		mcWindows.selectedWindow = this;
+	}
+};
+
+TinyMCE_Window.prototype.minimize = function() {
+};
+
+TinyMCE_Window.prototype.maximize = function() {
+	if (this.restoreSize) {
+		this.moveTo(this.restoreSize[0], this.restoreSize[1]);
+		this.resizeTo(this.restoreSize[2], this.restoreSize[3]);
+		this.updateClamping();
+		this.restoreSize = null;
+	} else {
+		var bounds = mcWindows.getBounds();
+		this.restoreSize = [
+			this.left, this.top,
+			this.winElement.scrollWidth,
+			this.winElement.scrollHeight
+		];
+		this.moveTo(bounds[0], bounds[1]);
+		this.resizeTo(
+			bounds[2] - bounds[0],
+			bounds[3] - bounds[1]
+		);
+	}
+};
+
+TinyMCE_Window.prototype.startResize = function() {
+	mcWindows.action = "resize";
+};
+
+TinyMCE_Window.prototype.startMove = function(e) {
+	mcWindows.action = "move";
+};
+
+TinyMCE_Window.prototype.close = function() {
+	if (this.frame && this.frame['tinyMCEPopup'])
+		this.frame['tinyMCEPopup'].restoreSelection();
+
+	if (mcWindows.lastSelectedWindow != null)
+		mcWindows.lastSelectedWindow.focus();
+
+	var mcWindowsNew = new Array();
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (win.name != this.name)
+			mcWindowsNew[n] = win;
+	}
+
+	mcWindows.windows = mcWindowsNew;
+
+	// alert(mcWindows.doc.getElementById(this.id + "_iframe"));
+
+	var e = mcWindows.doc.getElementById(this.id + "_iframe");
+	e.parentNode.removeChild(e);
+
+	var e = mcWindows.doc.getElementById(this.id + "_div");
+	e.parentNode.removeChild(e);
+
+	mcWindows.setDocumentLock(false);
+};
+
+TinyMCE_Window.prototype.onMouseMove = function(e) {
+	var clamp;
+	// Calculate real X, Y
+	var dx = e.screenX - mcWindows.mouseDownScreenX;
+	var dy = e.screenY - mcWindows.mouseDownScreenY;
+
+	switch (mcWindows.action) {
+		case "resize":
+			clamp = mcWindows.clampBoxSize(
+				this.left, this.top,
+				mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX),
+				mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY),
+				this.features.minWidth, this.features.minHeight
+			);
+
+			this.resizeTo(clamp[2], clamp[3]);
+
+			mcWindows.cancelEvent(e);
+			break;
+
+		case "move":
+			this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
+			this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
+			this.updateClamping();
+
+			mcWindows.cancelEvent(e);
+			break;
+	}
+};
+
+TinyMCE_Window.prototype.moveTo = function (x, y) {
+	this.left = x;
+	this.top = y;
+
+	this.winElement.style.left = this.left + "px";
+	this.winElement.style.top = this.top + "px";
+};
+
+TinyMCE_Window.prototype.resizeTo = function (width, height) {
+	this.wrapperIFrameElement.style.width = (width+2) + 'px';
+	this.wrapperIFrameElement.style.height = (height+2) + 'px';
+	this.wrapperIFrameElement.width = width+2;
+	this.wrapperIFrameElement.height = height+2;
+	this.winElement.style.width = width + 'px';
+	this.winElement.style.height = height + 'px';
+
+	height = height - this.deltaHeight;
+
+	this.containerElement.style.width = width + 'px';
+	this.iframeElement.style.width = width + 'px';
+	this.iframeElement.style.height = height + 'px';
+	this.bodyElement.style.width = width + 'px';
+	this.bodyElement.style.height = height + 'px';
+	this.headElement.style.width = width + 'px';
+	//this.statusElement.style.width = width + 'px';
+};
+
+TinyMCE_Window.prototype.updateClamping = function () {
+	var clamp, oversize;
+
+	clamp = mcWindows.clampBoxPosition(
+		this.left, this.top,
+		this.winElement.scrollWidth,
+		this.winElement.scrollHeight,
+		this.features.minWidth, this.features.minHeight
+	);
+	oversize = (
+		clamp[2] != this.winElement.scrollWidth ||
+		clamp[3] != this.winElement.scrollHeight
+	) ? true : false;
+
+	this.moveTo(clamp[0], clamp[1]);
+	if (this.features.resizable == "yes" && oversize)
+		this.resizeTo(clamp[2], clamp[3]);
+};
+
+function debug(msg) {
+	document.getElementById('debug').value += msg + "\n";
+}
+
+TinyMCE_Window.prototype.onMouseUp = function(e) {
+	mcWindows.action = "none";
+};
+
+TinyMCE_Window.prototype.onFocus = function(e) {
+	// Gecko only handler
+	var winRef = e.currentTarget;
+
+	for (var n in mcWindows.windows) {
+		var win = mcWindows.windows[n];
+		if (typeof(win) == 'function')
+			continue;
+
+		if (winRef.name == win.id + "_iframe") {
+			win.focus();
+			return;
+		}
+	}
+};
+
+TinyMCE_Window.prototype.onMouseDown = function(e) {
+	var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
+
+	mcWindows.mouseDownScreenX = e.screenX;
+	mcWindows.mouseDownScreenY = e.screenY;
+	mcWindows.mouseDownLayerX = this.left;
+	mcWindows.mouseDownLayerY = this.top;
+	mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
+	mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
+
+	if (this.resizeElement != null && elm == this.resizeElement.firstChild)
+		this.startResize(e);
+	else
+		this.startMove(e);
+
+	mcWindows.cancelEvent(e);
+};
+
+// Global instance
+var mcWindows = new TinyMCE_Windows();
+
+// Initialize windows
+mcWindows.init({
+	images_path : tinyMCE.baseURL + "/plugins/inlinepopups/images",
+	css_file : tinyMCE.baseURL + "/plugins/inlinepopups/css/inlinepopup.css"
+});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
@@ -1,454 +1,454 @@
-/**
- * $Id: mcwindows.js 18 2006-06-29 14:11:23Z spocke $
- *
- * Moxiecode DHTML Windows script.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Moxiecode DHTML Windows script.

+ *

+ * @author Moxiecode


+ */

+

+// Windows handler

+function MCWindows() {

+	this.settings = new Array();

+	this.windows = new Array();

+	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");

+	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;

+	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;

+	this.isMac = navigator.userAgent.indexOf('Mac') != -1;

+	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);

+	this.action = "none";

+	this.selectedWindow = null;

+	this.zindex = 100;

+	this.mouseDownScreenX = 0;

+	this.mouseDownScreenY = 0;

+	this.mouseDownLayerX = 0;

+	this.mouseDownLayerY = 0;

+	this.mouseDownWidth = 0;

+	this.mouseDownHeight = 0;

+};

+

+MCWindows.prototype.init = function(settings) {

+	this.settings = settings;

+

+	if (this.isMSIE)

+		this.addEvent(document, "mousemove", mcWindows.eventDispatcher);

+	else

+		this.addEvent(window, "mousemove", mcWindows.eventDispatcher);

+

+	this.addEvent(document, "mouseup", mcWindows.eventDispatcher);

+};

+

+MCWindows.prototype.getParam = function(name, default_value) {

+	var value = null;

+

+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];

+

+	// Fix bool values

+	if (value == "true" || value == "false")

+		return (value == "true");

+

+	return value;

+};

+

+MCWindows.prototype.eventDispatcher = function(e) {

+	e = typeof(e) == "undefined" ? window.event : e;

+

+	if (mcWindows.selectedWindow == null)

+		return;

+

+	// Switch focus

+	if (mcWindows.isGecko && e.type == "mousedown") {

+		var elm = e.currentTarget;

+

+		for (var n in mcWindows.windows) {

+			var win = mcWindows.windows[n];

+			if (typeof(win) == 'function')

+				continue;

+

+			if (win.headElement == elm || win.resizeElement == elm) {

+				win.focus();

+				break;

+			}

+		}

+	}

+

+	switch (e.type) {

+		case "mousemove":

+			mcWindows.selectedWindow.onMouseMove(e);

+			break;

+

+		case "mouseup":

+			mcWindows.selectedWindow.onMouseUp(e);

+			break;

+

+		case "mousedown":

+			mcWindows.selectedWindow.onMouseDown(e);

+			break;

+

+		case "focus":

+			mcWindows.selectedWindow.onFocus(e);

+			break;

+	}

+}

+

+MCWindows.prototype.addEvent = function(obj, name, handler) {

+	if (this.isMSIE)

+		obj.attachEvent("on" + name, handler);

+	else

+		obj.addEventListener(name, handler, true);

+};

+

+MCWindows.prototype.cancelEvent = function(e) {

+	if (this.isMSIE) {

+		e.returnValue = false;

+		e.cancelBubble = true;

+	} else

+		e.preventDefault();

+};

+

+MCWindows.prototype.parseFeatures = function(opts) {

+	// Cleanup the options

+	opts = opts.toLowerCase();

+	opts = opts.replace(/;/g, ",");

+	opts = opts.replace(/[^0-9a-z=,]/g, "");

+

+	var optionChunks = opts.split(',');

+	var options = new Array();

+

+	options['left'] = 10;

+	options['top'] = 10;

+	options['width'] = 300;

+	options['height'] = 300;

+	options['resizable'] = true;

+	options['minimizable'] = true;

+	options['maximizable'] = true;

+	options['close'] = true;

+	options['movable'] = true;

+

+	if (opts == "")

+		return options;

+

+	for (var i=0; i<optionChunks.length; i++) {

+		var parts = optionChunks[i].split('=');

+

+		if (parts.length == 2)

+			options[parts[0]] = parts[1];

+	}

+

+	return options;

+};

+

+MCWindows.prototype.open = function(url, name, features) {

+	var win = new MCWindow();

+	var winDiv, html = "", id;

+

+	features = this.parseFeatures(features);

+

+	// Create div

+	id = "mcWindow_" + name;

+

+	width = parseInt(features['width']);

+	height = parseInt(features['height'])-12-19;

+

+	if (this.isMSIE)

+		width -= 2;

+

+	// Setup first part of window

+	win.id = id;

+	win.url = url;

+	win.name = name;

+	win.features = features;

+	this.windows[name] = win;

+

+	iframeWidth = width;

+	iframeHeight = height;

+

+	// Create inner content

+	html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';

+	html += '<html>';

+	html += '<head>';

+	html += '<title>Wrapper iframe</title>';

+	html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';

+	html += '<link href="../jscripts/tiny_mce/themes/advanced/css/editor_ui.css" rel="stylesheet" type="text/css" />';

+	html += '</head>';

+	html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';

+

+	html += '<div id="' + id + '_container" class="mceWindow">';

+	html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';

+	html += '  <div id="' + id + '_title" class="mceWindowTitle"';

+	html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;">No name window</div>';

+	html += '    <div class="mceWindowHeadTools">';

+	html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" onmousedown="return false;" class="mceWindowClose"><img border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_close.gif" /></a>';

+//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].maximize();" onmousedown="return false;" class="mceWindowMaximize"></a>';

+//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" onmousedown="return false;" class="mceWindowMinimize"></a>';

+	html += '    </div>';

+	html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';

+	html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" onfocus="parent.mcWindows.windows[\'' + name + '\'].focus();" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe"></iframe></div>';

+	html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';

+	html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_resize.gif" /></div>';

+	html += '</div>';

+	html += '</div>';

+

+	html += '</body>';

+	html += '</html>';

+

+	// Create iframe

+	this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);

+};

+

+// Gets called when wrapper iframe is initialized

+MCWindows.prototype.onLoad = function(name) {

+	var win = mcWindows.windows[name];

+	var id = "mcWindow_" + name;

+	var wrapperIframe = window.frames[id + "_iframe"].frames[0];

+	var wrapperDoc = window.frames[id + "_iframe"].document;

+	var doc = window.frames[id + "_iframe"].document;

+	var winDiv = document.getElementById("mcWindow_" + name + "_div");

+	var realIframe = window.frames[id + "_iframe"].frames[0];

+

+	// Set window data

+	win.id = "mcWindow_" + name + "_iframe";

+	win.winElement = winDiv;

+	win.bodyElement = doc.getElementById(id + '_body');

+	win.iframeElement = doc.getElementById(id + '_iframe');

+	win.headElement = doc.getElementById(id + '_head');

+	win.titleElement = doc.getElementById(id + '_title');

+	win.resizeElement = doc.getElementById(id + '_resize');

+	win.containerElement = doc.getElementById(id + '_container');

+	win.left = win.features['left'];

+	win.top = win.features['top'];

+	win.frame = window.frames[id + '_iframe'].frames[0];

+	win.wrapperFrame = window.frames[id + '_iframe'];

+	win.wrapperIFrameElement = document.getElementById(id + "_iframe");

+

+	// Add event handlers

+	mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);

+	mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);

+

+	if (mcWindows.isMSIE) {

+		mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);

+		mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);

+	} else {

+		mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);

+		mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);

+		mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);

+	}

+

+	for (var i=0; i<window.frames.length; i++) {

+		if (!window.frames[i]._hasMouseHandlers) {

+			if (mcWindows.isMSIE) {

+				mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);

+				mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);

+			} else {

+				mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);

+				mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);

+			}

+

+			window.frames[i]._hasMouseHandlers = true;

+		}

+	}

+

+	if (mcWindows.isMSIE) {

+		mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);

+		mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);

+	} else {

+		mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);

+		mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);

+		mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);

+	}

+

+	this.selectedWindow = win;

+};

+

+MCWindows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {

+	var iframe = document.createElement("iframe");

+	var div = document.createElement("div");

+

+	width = parseInt(width);

+	height = parseInt(height)+1;

+

+	// Create wrapper div

+	div.setAttribute("id", id_prefix + "_div");

+	div.setAttribute("width", width);

+	div.setAttribute("height", (height));

+	div.style.position = "absolute";

+	div.style.left = left + "px";

+	div.style.top = top + "px";

+	div.style.width = width + "px";

+	div.style.height = (height) + "px";

+	div.style.backgroundColor = "white";

+	div.style.display = "none";

+

+	if (this.isGecko) {

+		iframeWidth = width + 2;

+		iframeHeight = height + 2;

+	} else {

+		iframeWidth = width;

+		iframeHeight = height + 1;

+	}

+

+	// Create iframe

+	iframe.setAttribute("id", id_prefix + "_iframe");

+	iframe.setAttribute("name", id_prefix + "_iframe");

+	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", iframeWidth);

+	iframe.setAttribute("height", iframeHeight);

+//	iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");

+	// iframe.setAttribute("allowtransparency", "false");

+	iframe.setAttribute("scrolling", "no");

+	iframe.style.width = iframeWidth + "px";

+	iframe.style.height = iframeHeight + "px";

+	iframe.style.backgroundColor = "white";

+	div.appendChild(iframe);

+

+	document.body.appendChild(div);

+

+	// Fixed MSIE 5.0 issue

+	div.innerHTML = div.innerHTML;

+

+	if (this.isSafari) {

+		// Give Safari some time to setup

+		window.setTimeout(function() {

+			doc = window.frames[id_prefix + '_iframe'].document;

+			doc.open();

+			doc.write(html);

+			doc.close();

+		}, 10);

+	} else {

+		doc = window.frames[id_prefix + '_iframe'].window.document

+		doc.open();

+		doc.write(html);

+		doc.close();

+	}

+

+	div.style.display = "block";

+

+	return div;

+};

+

+// Window instance

+function MCWindow() {

+};

+

+MCWindow.prototype.focus = function() {

+	this.winElement.style.zIndex = mcWindows.zindex++;

+	mcWindows.selectedWindow = this;

+};

+

+MCWindow.prototype.minimize = function() {

+};

+

+MCWindow.prototype.maximize = function() {

+	

+};

+

+MCWindow.prototype.startResize = function() {

+	mcWindows.action = "resize";

+};

+

+MCWindow.prototype.startMove = function(e) {

+	mcWindows.action = "move";

+};

+

+MCWindow.prototype.close = function() {

+	document.body.removeChild(this.winElement);

+	mcWindows.windows[this.name] = null;

+};

+

+MCWindow.prototype.onMouseMove = function(e) {

+	var scrollX = 0;//this.doc.body.scrollLeft;

+	var scrollY = 0;//this.doc.body.scrollTop;

+

+	// Calculate real X, Y

+	var dx = e.screenX - mcWindows.mouseDownScreenX;

+	var dy = e.screenY - mcWindows.mouseDownScreenY;

+

+	switch (mcWindows.action) {

+		case "resize":

+			width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);

+			height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);

+

+			width = width < 100 ? 100 : width;

+			height = height < 100 ? 100 : height;

+

+			this.wrapperIFrameElement.style.width = width+2;

+			this.wrapperIFrameElement.style.height = height+2;

+			this.wrapperIFrameElement.width = width+2;

+			this.wrapperIFrameElement.height = height+2;

+			this.winElement.style.width = width;

+			this.winElement.style.height = height;

+

+			height = height-12-19;

+

+			this.containerElement.style.width = width;

+

+			this.iframeElement.style.width = width;

+			this.iframeElement.style.height = height;

+			this.bodyElement.style.width = width;

+			this.bodyElement.style.height = height;

+			this.headElement.style.width = width;

+			//this.statusElement.style.width = width;

+

+			mcWindows.cancelEvent(e);

+			break;

+

+		case "move":

+			this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);

+			this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);

+			this.winElement.style.left = this.left + "px";

+			this.winElement.style.top = this.top + "px";

+

+			mcWindows.cancelEvent(e);

+			break;

+	}

+};

+

+MCWindow.prototype.onMouseUp = function(e) {

+	mcWindows.action = "none";

+};

+

+MCWindow.prototype.onFocus = function(e) {

+	// Gecko only handler

+	var winRef = e.currentTarget;

+

+	for (var n in mcWindows.windows) {

+		var win = mcWindows.windows[n];

+		if (typeof(win) == 'function')

+			continue;

+

+		if (winRef.name == win.id) {

+			win.focus();

+			return;

+		}

+	}

+};

+

+MCWindow.prototype.onMouseDown = function(e) {

+	var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;

+

+	var scrollX = 0;//this.doc.body.scrollLeft;

+	var scrollY = 0;//this.doc.body.scrollTop;

+

+	mcWindows.mouseDownScreenX = e.screenX;

+	mcWindows.mouseDownScreenY = e.screenY;

+	mcWindows.mouseDownLayerX = this.left;

+	mcWindows.mouseDownLayerY = this.top;

+	mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);

+	mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);

+

+	if (elm == this.resizeElement.firstChild)

+		this.startResize(e);

+	else

+		this.startMove(e);

+

+	mcWindows.cancelEvent(e);

+};

+

+// Global instance

+var mcWindows = new MCWindows();

 
-// Windows handler
-function MCWindows() {
-	this.settings = new Array();
-	this.windows = new Array();
-	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
-	this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
-	this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
-	this.isMac = navigator.userAgent.indexOf('Mac') != -1;
-	this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
-	this.action = "none";
-	this.selectedWindow = null;
-	this.zindex = 100;
-	this.mouseDownScreenX = 0;
-	this.mouseDownScreenY = 0;
-	this.mouseDownLayerX = 0;
-	this.mouseDownLayerY = 0;
-	this.mouseDownWidth = 0;
-	this.mouseDownHeight = 0;
-};
-
-MCWindows.prototype.init = function(settings) {
-	this.settings = settings;
-
-	if (this.isMSIE)
-		this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
-	else
-		this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
-
-	this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
-};
-
-MCWindows.prototype.getParam = function(name, default_value) {
-	var value = null;
-
-	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
-	// Fix bool values
-	if (value == "true" || value == "false")
-		return (value == "true");
-
-	return value;
-};
-
-MCWindows.prototype.eventDispatcher = function(e) {
-	e = typeof(e) == "undefined" ? window.event : e;
-
-	if (mcWindows.selectedWindow == null)
-		return;
-
-	// Switch focus
-	if (mcWindows.isGecko && e.type == "mousedown") {
-		var elm = e.currentTarget;
-
-		for (var n in mcWindows.windows) {
-			var win = mcWindows.windows[n];
-			if (typeof(win) == 'function')
-				continue;
-
-			if (win.headElement == elm || win.resizeElement == elm) {
-				win.focus();
-				break;
-			}
-		}
-	}
-
-	switch (e.type) {
-		case "mousemove":
-			mcWindows.selectedWindow.onMouseMove(e);
-			break;
-
-		case "mouseup":
-			mcWindows.selectedWindow.onMouseUp(e);
-			break;
-
-		case "mousedown":
-			mcWindows.selectedWindow.onMouseDown(e);
-			break;
-
-		case "focus":
-			mcWindows.selectedWindow.onFocus(e);
-			break;
-	}
-}
-
-MCWindows.prototype.addEvent = function(obj, name, handler) {
-	if (this.isMSIE)
-		obj.attachEvent("on" + name, handler);
-	else
-		obj.addEventListener(name, handler, true);
-};
-
-MCWindows.prototype.cancelEvent = function(e) {
-	if (this.isMSIE) {
-		e.returnValue = false;
-		e.cancelBubble = true;
-	} else
-		e.preventDefault();
-};
-
-MCWindows.prototype.parseFeatures = function(opts) {
-	// Cleanup the options
-	opts = opts.toLowerCase();
-	opts = opts.replace(/;/g, ",");
-	opts = opts.replace(/[^0-9a-z=,]/g, "");
-
-	var optionChunks = opts.split(',');
-	var options = new Array();
-
-	options['left'] = 10;
-	options['top'] = 10;
-	options['width'] = 300;
-	options['height'] = 300;
-	options['resizable'] = true;
-	options['minimizable'] = true;
-	options['maximizable'] = true;
-	options['close'] = true;
-	options['movable'] = true;
-
-	if (opts == "")
-		return options;
-
-	for (var i=0; i<optionChunks.length; i++) {
-		var parts = optionChunks[i].split('=');
-
-		if (parts.length == 2)
-			options[parts[0]] = parts[1];
-	}
-
-	return options;
-};
-
-MCWindows.prototype.open = function(url, name, features) {
-	var win = new MCWindow();
-	var winDiv, html = "", id;
-
-	features = this.parseFeatures(features);
-
-	// Create div
-	id = "mcWindow_" + name;
-
-	width = parseInt(features['width']);
-	height = parseInt(features['height'])-12-19;
-
-	if (this.isMSIE)
-		width -= 2;
-
-	// Setup first part of window
-	win.id = id;
-	win.url = url;
-	win.name = name;
-	win.features = features;
-	this.windows[name] = win;
-
-	iframeWidth = width;
-	iframeHeight = height;
-
-	// Create inner content
-	html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
-	html += '<html>';
-	html += '<head>';
-	html += '<title>Wrapper iframe</title>';
-	html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
-	html += '<link href="../jscripts/tiny_mce/themes/advanced/css/editor_ui.css" rel="stylesheet" type="text/css" />';
-	html += '</head>';
-	html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
-
-	html += '<div id="' + id + '_container" class="mceWindow">';
-	html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
-	html += '  <div id="' + id + '_title" class="mceWindowTitle"';
-	html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;">No name window</div>';
-	html += '    <div class="mceWindowHeadTools">';
-	html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" onmousedown="return false;" class="mceWindowClose"><img border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_close.gif" /></a>';
-//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].maximize();" onmousedown="return false;" class="mceWindowMaximize"></a>';
-//	html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" onmousedown="return false;" class="mceWindowMinimize"></a>';
-	html += '    </div>';
-	html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
-	html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" onfocus="parent.mcWindows.windows[\'' + name + '\'].focus();" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe"></iframe></div>';
-	html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
-	html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_resize.gif" /></div>';
-	html += '</div>';
-	html += '</div>';
-
-	html += '</body>';
-	html += '</html>';
-
-	// Create iframe
-	this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
-};
-
-// Gets called when wrapper iframe is initialized
-MCWindows.prototype.onLoad = function(name) {
-	var win = mcWindows.windows[name];
-	var id = "mcWindow_" + name;
-	var wrapperIframe = window.frames[id + "_iframe"].frames[0];
-	var wrapperDoc = window.frames[id + "_iframe"].document;
-	var doc = window.frames[id + "_iframe"].document;
-	var winDiv = document.getElementById("mcWindow_" + name + "_div");
-	var realIframe = window.frames[id + "_iframe"].frames[0];
-
-	// Set window data
-	win.id = "mcWindow_" + name + "_iframe";
-	win.winElement = winDiv;
-	win.bodyElement = doc.getElementById(id + '_body');
-	win.iframeElement = doc.getElementById(id + '_iframe');
-	win.headElement = doc.getElementById(id + '_head');
-	win.titleElement = doc.getElementById(id + '_title');
-	win.resizeElement = doc.getElementById(id + '_resize');
-	win.containerElement = doc.getElementById(id + '_container');
-	win.left = win.features['left'];
-	win.top = win.features['top'];
-	win.frame = window.frames[id + '_iframe'].frames[0];
-	win.wrapperFrame = window.frames[id + '_iframe'];
-	win.wrapperIFrameElement = document.getElementById(id + "_iframe");
-
-	// Add event handlers
-	mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
-	mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
-
-	if (mcWindows.isMSIE) {
-		mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
-	} else {
-		mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
-		mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
-	}
-
-	for (var i=0; i<window.frames.length; i++) {
-		if (!window.frames[i]._hasMouseHandlers) {
-			if (mcWindows.isMSIE) {
-				mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
-				mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
-			} else {
-				mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
-				mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
-			}
-
-			window.frames[i]._hasMouseHandlers = true;
-		}
-	}
-
-	if (mcWindows.isMSIE) {
-		mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
-	} else {
-		mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
-		mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
-		mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
-	}
-
-	this.selectedWindow = win;
-};
-
-MCWindows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
-	var iframe = document.createElement("iframe");
-	var div = document.createElement("div");
-
-	width = parseInt(width);
-	height = parseInt(height)+1;
-
-	// Create wrapper div
-	div.setAttribute("id", id_prefix + "_div");
-	div.setAttribute("width", width);
-	div.setAttribute("height", (height));
-	div.style.position = "absolute";
-	div.style.left = left + "px";
-	div.style.top = top + "px";
-	div.style.width = width + "px";
-	div.style.height = (height) + "px";
-	div.style.backgroundColor = "white";
-	div.style.display = "none";
-
-	if (this.isGecko) {
-		iframeWidth = width + 2;
-		iframeHeight = height + 2;
-	} else {
-		iframeWidth = width;
-		iframeHeight = height + 1;
-	}
-
-	// Create iframe
-	iframe.setAttribute("id", id_prefix + "_iframe");
-	iframe.setAttribute("name", id_prefix + "_iframe");
-	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", iframeWidth);
-	iframe.setAttribute("height", iframeHeight);
-//	iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
-	// iframe.setAttribute("allowtransparency", "false");
-	iframe.setAttribute("scrolling", "no");
-	iframe.style.width = iframeWidth + "px";
-	iframe.style.height = iframeHeight + "px";
-	iframe.style.backgroundColor = "white";
-	div.appendChild(iframe);
-
-	document.body.appendChild(div);
-
-	// Fixed MSIE 5.0 issue
-	div.innerHTML = div.innerHTML;
-
-	if (this.isSafari) {
-		// Give Safari some time to setup
-		window.setTimeout(function() {
-			doc = window.frames[id_prefix + '_iframe'].document;
-			doc.open();
-			doc.write(html);
-			doc.close();
-		}, 10);
-	} else {
-		doc = window.frames[id_prefix + '_iframe'].window.document
-		doc.open();
-		doc.write(html);
-		doc.close();
-	}
-
-	div.style.display = "block";
-
-	return div;
-};
-
-// Window instance
-function MCWindow() {
-};
-
-MCWindow.prototype.focus = function() {
-	this.winElement.style.zIndex = mcWindows.zindex++;
-	mcWindows.selectedWindow = this;
-};
-
-MCWindow.prototype.minimize = function() {
-};
-
-MCWindow.prototype.maximize = function() {
-	
-};
-
-MCWindow.prototype.startResize = function() {
-	mcWindows.action = "resize";
-};
-
-MCWindow.prototype.startMove = function(e) {
-	mcWindows.action = "move";
-};
-
-MCWindow.prototype.close = function() {
-	document.body.removeChild(this.winElement);
-	mcWindows.windows[this.name] = null;
-};
-
-MCWindow.prototype.onMouseMove = function(e) {
-	var scrollX = 0;//this.doc.body.scrollLeft;
-	var scrollY = 0;//this.doc.body.scrollTop;
-
-	// Calculate real X, Y
-	var dx = e.screenX - mcWindows.mouseDownScreenX;
-	var dy = e.screenY - mcWindows.mouseDownScreenY;
-
-	switch (mcWindows.action) {
-		case "resize":
-			width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
-			height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
-
-			width = width < 100 ? 100 : width;
-			height = height < 100 ? 100 : height;
-
-			this.wrapperIFrameElement.style.width = width+2;
-			this.wrapperIFrameElement.style.height = height+2;
-			this.wrapperIFrameElement.width = width+2;
-			this.wrapperIFrameElement.height = height+2;
-			this.winElement.style.width = width;
-			this.winElement.style.height = height;
-
-			height = height-12-19;
-
-			this.containerElement.style.width = width;
-
-			this.iframeElement.style.width = width;
-			this.iframeElement.style.height = height;
-			this.bodyElement.style.width = width;
-			this.bodyElement.style.height = height;
-			this.headElement.style.width = width;
-			//this.statusElement.style.width = width;
-
-			mcWindows.cancelEvent(e);
-			break;
-
-		case "move":
-			this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
-			this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
-			this.winElement.style.left = this.left + "px";
-			this.winElement.style.top = this.top + "px";
-
-			mcWindows.cancelEvent(e);
-			break;
-	}
-};
-
-MCWindow.prototype.onMouseUp = function(e) {
-	mcWindows.action = "none";
-};
-
-MCWindow.prototype.onFocus = function(e) {
-	// Gecko only handler
-	var winRef = e.currentTarget;
-
-	for (var n in mcWindows.windows) {
-		var win = mcWindows.windows[n];
-		if (typeof(win) == 'function')
-			continue;
-
-		if (winRef.name == win.id) {
-			win.focus();
-			return;
-		}
-	}
-};
-
-MCWindow.prototype.onMouseDown = function(e) {
-	var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
-
-	var scrollX = 0;//this.doc.body.scrollLeft;
-	var scrollY = 0;//this.doc.body.scrollTop;
-
-	mcWindows.mouseDownScreenX = e.screenX;
-	mcWindows.mouseDownScreenY = e.screenY;
-	mcWindows.mouseDownLayerX = this.left;
-	mcWindows.mouseDownLayerY = this.top;
-	mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
-	mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
-
-	if (elm == this.resizeElement.firstChild)
-		this.startResize(e);
-	else
-		this.startMove(e);
-
-	mcWindows.cancelEvent(e);
-};
-
-// Global instance
-var mcWindows = new MCWindows();
-

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
+++ /dev/null
@@ -1,90 +1,1 @@
-/* Clearlooks 2 */
 
-/* Reset */
-.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
-
-/* General */
-.clearlooks2 {position:absolute; direction:ltr}
-.clearlooks2 .mceWrapper {position:static}
-.mceEventBlocker {position:absolute; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
-.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; filter:alpha(opacity=50)}
-.clearlooks2_modalBlocker {position:absolute; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; filter:alpha(opacity=60); display:none}
-
-/* Top */
-.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
-.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
-.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
-.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
-.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
-.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
-.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
-.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
-.clearlooks2 .mceFocus .mceTop span {color:#FFF}
-
-/* Middle */
-.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
-.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
-.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
-.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
-.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
-
-/* Bottom */
-.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
-.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
-.clearlooks2 .mceBottom div {top:0}
-.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
-.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
-.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
-.clearlooks2 .mceBottom span {display:none}
-.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
-.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
-.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
-.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
-.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
-
-/* Actions */
-.clearlooks2 a {width:29px; height:16px; top:3px;}
-.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
-.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
-.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
-.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
-.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
-.clearlooks2 .mceMovable .mceMove {display:block}
-.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
-.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
-.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
-.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
-.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
-.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
-
-/* Resize */
-.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
-.clearlooks2 .mceResizable .mceResize {display:block}
-.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
-.clearlooks2 .mceMinimizable .mceMin {display:block}
-.clearlooks2 .mceMaximizable .mceMax {display:block}
-.clearlooks2 .mceMaximized .mceMed {display:block}
-.clearlooks2 .mceMaximized .mceMax {display:none}
-.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
-.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
-.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
-.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
-.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
-.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
-.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
-.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
-
-/* Alert/Confirm */
-.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
-.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
-.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
-.clearlooks2 a:hover {font-weight:bold;}
-.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
-.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
-.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
-.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
-.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
-.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)} 

--- a/tinymce/2/jscripts/tiny_mce/plugins/inlinepopups/template.htm
+++ /dev/null
@@ -1,388 +1,1 @@
-<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Template for dialogs</title>
-<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />
-</head>
-<body>
 
-<div class="mceEditor">
-	<div class="clearlooks2" style="width:400px; height:100px; left:10px;">
-		<div class="mceWrapper">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Blured</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:420px;">
-		<div class="mceWrapper mceMovable mceFocus">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Focused</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
-		<div class="mceWrapper mceMovable mceFocus mceStatusbar">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
-		<div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar, Resizable</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
-		<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Resizable, Maximizable</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
-		<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Blurred, Maximizable, Statusbar, Resizable</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
-		<div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Maximized, Maximizable, Minimizable</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
-		<div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Blured</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>Content</span>
-				<div class="mceRight"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Statusbar text.</span>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceMin" href="#"></a>
-			<a class="mceMax" href="#"></a>
-			<a class="mceMed" href="#"></a>
-			<a class="mceClose" href="#"></a>
-			<a class="mceResize mceResizeN" href="#"></a>
-			<a class="mceResize mceResizeS" href="#"></a>
-			<a class="mceResize mceResizeW" href="#"></a>
-			<a class="mceResize mceResizeE" href="#"></a>
-			<a class="mceResize mceResizeNW" href="#"></a>
-			<a class="mceResize mceResizeNE" href="#"></a>
-			<a class="mceResize mceResizeSW" href="#"></a>
-			<a class="mceResize mceResizeSE" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
-		<div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Alert</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-				</span>
-				<div class="mceRight"></div>
-				<div class="mceIcon"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceButton mceOk" href="#">Ok</a>
-			<a class="mceClose" href="#"></a>
-		</div>
-	</div>
-
-	<div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
-		<div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
-			<div class="mceTop">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-				<span>Confirm</span>
-			</div>
-
-			<div class="mceMiddle">
-				<div class="mceLeft"></div>
-				<span>
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					This is a very long error message. This is a very long error message.
-					</span>
-				<div class="mceRight"></div>
-				<div class="mceIcon"></div>
-			</div>
-
-			<div class="mceBottom">
-				<div class="mceLeft"></div>
-				<div class="mceCenter"></div>
-				<div class="mceRight"></div>
-			</div>
-
-			<a class="mceMove" href="#"></a>
-			<a class="mceButton mceOk" href="#">Ok</a>
-			<a class="mceButton mceCancel" href="#">Cancel</a>
-			<a class="mceClose" href="#"></a>
-		</div>
-	</div>
-</div>
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.InsertDateTime',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertDate',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_dateFormat",ed.getLang('insertdatetime.date_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addCommand('mceInsertTime',function(){var str=t._getDateTime(new Date(),ed.getParam("plugin_insertdate_timeFormat",ed.getLang('insertdatetime.time_fmt')));ed.execCommand('mceInsertContent',false,str);});ed.addButton('insertdate',{title:'insertdatetime.insertdate_desc',cmd:'mceInsertDate'});ed.addButton('inserttime',{title:'insertdatetime.inserttime_desc',cmd:'mceInsertTime'});},getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_getDateTime:function(d,fmt){var ed=this.editor;function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value;}return value;};fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);fmt=fmt.replace("%b",""+ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);fmt=fmt.replace("%A",""+ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);fmt=fmt.replace("%a",""+ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);fmt=fmt.replace("%%","%");return fmt;}});tinymce.PluginManager.add('insertdatetime',tinymce.plugins.InsertDateTime);})();
+tinyMCE.importPluginLanguagePack('insertdatetime');var TinyMCE_InsertDateTimePlugin={getInfo:function(){return{longname:'Insert date/time',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"insertdate":return tinyMCE.getButtonHTML(cn,'lang_insertdate_desc','{$pluginurl}/images/insertdate.gif','mceInsertDate');case"inserttime":return tinyMCE.getButtonHTML(cn,'lang_inserttime_desc','{$pluginurl}/images/inserttime.gif','mceInsertTime')}return""},execCommand:function(editor_id,element,command,user_interface,value){function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value}return value}function getDateTime(d,fmt){fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt}switch(command){case"mceInsertDate":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_dateFormat",tinyMCE.getLang('lang_insertdate_def_fmt'))));return true;case"mceInsertTime":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_timeFormat",tinyMCE.getLang('lang_inserttime_def_fmt'))));return true}return false}};tinyMCE.addPlugin("insertdatetime",TinyMCE_InsertDateTimePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
@@ -1,80 +1,91 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('insertdatetime');

+

+var TinyMCE_InsertDateTimePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Insert date/time',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	/**

+	 * Returns the HTML contents of the insertdate, inserttime controls.

+	 */

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "insertdate":

+				return tinyMCE.getButtonHTML(cn, 'lang_insertdate_desc', '{$pluginurl}/images/insertdate.gif', 'mceInsertDate');

+

+			case "inserttime":

+				return tinyMCE.getButtonHTML(cn, 'lang_inserttime_desc', '{$pluginurl}/images/inserttime.gif', 'mceInsertTime');

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes the mceInsertDate command.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		/* Adds zeros infront of value */

+		function addZeros(value, len) {

+			value = "" + value;

+

+			if (value.length < len) {

+				for (var i=0; i<(len-value.length); i++)

+					value = "0" + value;

+			}

+

+			return value;

+		}

+

+		function getDateTime(d, fmt) {

+			fmt = fmt.replace("%D", "%m/%d/%y");

+			fmt = fmt.replace("%r", "%I:%M:%S %p");

+			fmt = fmt.replace("%Y", "" + d.getFullYear());

+			fmt = fmt.replace("%y", "" + d.getYear());

+			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));

+			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));

+			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));

+			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));

+			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));

+			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));

+			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));

+			fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_inserttime_months_long")[d.getMonth()]);

+			fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);

+			fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);

+			fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);

+			fmt = fmt.replace("%%", "%");

+

+			return fmt;

+		}

+

+		// Handle commands

+		switch (command) {

+			case "mceInsertDate":

+				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", tinyMCE.getLang('lang_insertdate_def_fmt'))));

+				return true;

+

+			case "mceInsertTime":

+				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", tinyMCE.getLang('lang_inserttime_def_fmt'))));

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	}

+};

+

+tinyMCE.addPlugin("insertdatetime", TinyMCE_InsertDateTimePlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.InsertDateTime', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			ed.addCommand('mceInsertDate', function() {
-				var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));
-
-				ed.execCommand('mceInsertContent', false, str);
-			});
-
-			ed.addCommand('mceInsertTime', function() {
-				var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));
-
-				ed.execCommand('mceInsertContent', false, str);
-			});
-
-			ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});
-			ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Insert date/time',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_getDateTime : function(d, fmt) {
-			var ed = this.editor;
-
-			function addZeros(value, len) {
-				value = "" + value;
-
-				if (value.length < len) {
-					for (var i=0; i<(len-value.length); i++)
-						value = "0" + value;
-				}
-
-				return value;
-			};
-
-			fmt = fmt.replace("%D", "%m/%d/%y");
-			fmt = fmt.replace("%r", "%I:%M:%S %p");
-			fmt = fmt.replace("%Y", "" + d.getFullYear());
-			fmt = fmt.replace("%y", "" + d.getYear());
-			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
-			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
-			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
-			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
-			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
-			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
-			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
-			fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);
-			fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);
-			fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);
-			fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);
-			fmt = fmt.replace("%%", "%");
-
-			return fmt;
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/langs/en.js
@@ -1,13 +1,13 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+insertdate_def_fmt : '%Y-%m-%d',

+inserttime_def_fmt : '%H:%M:%S',

+insertdate_desc : 'Insert date',

+inserttime_desc : 'Insert time',

+inserttime_months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),

+inserttime_months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),

+inserttime_day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),

+inserttime_day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")

+});

 
-tinyMCE.addToLang('',{
-insertdate_def_fmt : '%Y-%m-%d',
-inserttime_def_fmt : '%H:%M:%S',
-insertdate_desc : 'Insert date',
-inserttime_desc : 'Insert time',
-inserttime_months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),
-inserttime_months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
-inserttime_day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),
-inserttime_day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/insertdatetime/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/layer/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/layer/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.Layer',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceInsertLayer',t._insertLayer,t);ed.addCommand('mceMoveForward',function(){t._move(1);});ed.addCommand('mceMoveBackward',function(){t._move(-1);});ed.addCommand('mceMakeAbsolute',function(){t._toggleAbsolute();});ed.addButton('moveforward',{title:'layer.forward_desc',cmd:'mceMoveForward'});ed.addButton('movebackward',{title:'layer.backward_desc',cmd:'mceMoveBackward'});ed.addButton('absolute',{title:'layer.absolute_desc',cmd:'mceMakeAbsolute'});ed.addButton('insertlayer',{title:'layer.insertlayer_desc',cmd:'mceInsertLayer'});ed.onInit.add(function(){if(tinymce.isIE)ed.getDoc().execCommand('2D-Position',false,true);});ed.onNodeChange.add(t._nodeChange,t);ed.onVisualAid.add(t._visualAid,t);},getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var le,p;le=this._getParentLayer(n);p=ed.dom.getParent(n,'DIV,P,IMG');if(!p){cm.setDisabled('absolute',1);cm.setDisabled('moveforward',1);cm.setDisabled('movebackward',1);}else{cm.setDisabled('absolute',0);cm.setDisabled('moveforward',!le);cm.setDisabled('movebackward',!le);cm.setActive('absolute',le&&le.style.position.toLowerCase()=="absolute");}},_visualAid:function(ed,e,s){var dom=ed.dom;tinymce.each(dom.select('div,p',e),function(e){if(/^(absolute|relative|static)$/i.test(e.style.position)){if(s)dom.addClass(e,'mceItemVisualAid');else dom.removeClass(e,'mceItemVisualAid');}});},_move:function(d){var ed=this.editor,i,z=[],le=this._getParentLayer(ed.selection.getNode()),ci=-1,fi=-1,nl;nl=[];tinymce.walk(ed.getBody(),function(n){if(n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position))nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i;}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break;}}if(fi>-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;i<z.length;i++){if(z[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;}ed.execCommand('mceRepaint');},_getParentLayer:function(n){return this.editor.dom.getParent(n,function(n){return n.nodeType==1&&/^(absolute|relative|static)$/i.test(n.style.position);});},_insertLayer:function(){var ed=this.editor,p=ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(),'*'));ed.dom.add(ed.getBody(),'div',{style:{position:'absolute',left:p.x,top:(p.y>20?p.y:20),width:100,height:100},'class':'mceItemVisualAid'},ed.selection.getContent()||ed.getLang('layer.content'));},_toggleAbsolute:function(){var ed=this.editor,le=this._getParentLayer(ed.selection.getNode());if(!le)le=ed.dom.getParent(ed.selection.getNode(),'DIV,P,IMG');if(le){if(le.style.position.toLowerCase()=="absolute"){ed.dom.setStyles(le,{position:'',left:'',top:'',width:'',height:''});ed.dom.removeClass(le,'mceItemVisualAid');}else{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';le.style.position="absolute";ed.addVisual(ed.getBody());}ed.execCommand('mceRepaint');ed.nodeChanged();}}});tinymce.PluginManager.add('layer',tinymce.plugins.Layer);})();
+tinyMCE.importPluginLanguagePack('layer');var TinyMCE_LayerPlugin={getInfo:function(){return{longname:'Layer',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',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;var w=inst.getWin(),le=inst._lastStyleElm,e;if(tinyMCE.isGecko){e=this._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<nl.length;i++){if(new RegExp('absolute|relative|static','gi').test(nl[i].style.position)){if(state)tinyMCE.addCSSClass(nl[i],'mceVisualAid');else tinyMCE.removeCSSClass(nl[i],'mceVisualAid')}}},getControlHTML:function(cn){switch(cn){case"moveforward":return tinyMCE.getButtonHTML(cn,'lang_layer_forward_desc','{$pluginurl}/images/moveforward.gif','mceMoveForward',true);case"movebackward":return tinyMCE.getButtonHTML(cn,'lang_layer_backward_desc','{$pluginurl}/images/movebackward.gif','mceMoveBackward',true);case"absolute":return tinyMCE.getButtonHTML(cn,'lang_layer_absolute_desc','{$pluginurl}/images/absolute.gif','mceMakeAbsolute',true);case"insertlayer":return tinyMCE.getButtonHTML(cn,'lang_layer_insertlayer_desc','{$pluginurl}/images/insertlayer.gif','mceInsertLayer',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertLayer":this._insertLayer();return true;case"mceMoveForward":this._move(1);return true;case"mceMoveBackward":this._move(-1);return true;case"mceMakeAbsolute":this._toggleAbsolute();return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id);var le=this._getParentLayer(inst.getFocusElement());var p=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');tinyMCE.switchClass(editor_id+'_absolute','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonDisabled');if(p)tinyMCE.switchClass(editor_id+'_absolute','mceButtonNormal');if(le&&le.style.position.toLowerCase()=="absolute"){tinyMCE.switchClass(editor_id+'_absolute','mceButtonSelected');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonNormal');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonNormal')}},_move:function(d){var inst=tinyMCE.selectedInstance,i,z=new Array();var le=this._getParentLayer(inst.getFocusElement()),ci=-1,fi=-1;var nl=tinyMCE.selectNodes(inst.getBody(),function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)});for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break}}if(fi>-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;i<z.length;i++){if(z[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();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;var le=this._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);

--- a/tinymce/2/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js
@@ -1,209 +1,249 @@
-/**
- * $Id: editor_plugin_src.js 652 2008-02-29 13:09:46Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('layer');

+

+var TinyMCE_LayerPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Layer',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',

+			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;

+		var w = inst.getWin(), le = inst._lastStyleElm, e;

+

+		if (tinyMCE.isGecko) {

+			e = this._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<nl.length; i++) {

+			if (new RegExp('absolute|relative|static', 'gi').test(nl[i].style.position)) {

+				if (state)

+					tinyMCE.addCSSClass(nl[i], 'mceVisualAid');

+				else

+					tinyMCE.removeCSSClass(nl[i], 'mceVisualAid');					

+			}

+		}

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "moveforward":

+				return tinyMCE.getButtonHTML(cn, 'lang_layer_forward_desc', '{$pluginurl}/images/moveforward.gif', 'mceMoveForward', true);

+

+			case "movebackward":

+				return tinyMCE.getButtonHTML(cn, 'lang_layer_backward_desc', '{$pluginurl}/images/movebackward.gif', 'mceMoveBackward', true);

+

+			case "absolute":

+				return tinyMCE.getButtonHTML(cn, 'lang_layer_absolute_desc', '{$pluginurl}/images/absolute.gif', 'mceMakeAbsolute', true);

+

+			case "insertlayer":

+				return tinyMCE.getButtonHTML(cn, 'lang_layer_insertlayer_desc', '{$pluginurl}/images/insertlayer.gif', 'mceInsertLayer', true);

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceInsertLayer":

+				this._insertLayer();

+				return true;

+

+			case "mceMoveForward":

+				this._move(1);

+				return true;

+

+			case "mceMoveBackward":

+				this._move(-1);

+				return true;

+

+			case "mceMakeAbsolute":

+				this._toggleAbsolute();

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		var inst = tinyMCE.getInstanceById(editor_id);

+		var le = this._getParentLayer(inst.getFocusElement());

+		var p = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');

+

+		tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonDisabled');

+

+		if (p)

+			tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonNormal');

+

+		if (le && le.style.position.toLowerCase() == "absolute") {

+			tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonSelected');

+			tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonNormal');

+		}

+	},

+

+	// Private plugin specific methods

+

+	_move : function(d) {

+		var inst = tinyMCE.selectedInstance, i, z = new Array();

+		var le = this._getParentLayer(inst.getFocusElement()), ci = -1, fi = -1;

+		var nl = tinyMCE.selectNodes(inst.getBody(), function(n) {

+			return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position);

+		});

+

+		// Find z-indexes

+		for (i=0; i<nl.length; i++) {

+			z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;

+

+			if (ci < 0 && nl[i] == le)

+				ci = i;

+		}

+

+		if (d < 0) {

+			// Move back

+

+			// Try find a lower one

+			for (i=0; i<z.length; i++) {

+				if (z[i] < z[ci]) {

+					fi = i;

+					break;

+				}

+			}

+

+			if (fi > -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.length; i++) {

+				if (z[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;

+		var le = this._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);

 
-(function() {
-	tinymce.create('tinymce.plugins.Layer', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceInsertLayer', t._insertLayer, t);
-
-			ed.addCommand('mceMoveForward', function() {
-				t._move(1);
-			});
-
-			ed.addCommand('mceMoveBackward', function() {
-				t._move(-1);
-			});
-
-			ed.addCommand('mceMakeAbsolute', function() {
-				t._toggleAbsolute();
-			});
-
-			// Register buttons
-			ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
-			ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
-			ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
-			ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
-
-			ed.onInit.add(function() {
-				if (tinymce.isIE)
-					ed.getDoc().execCommand('2D-Position', false, true);
-			});
-
-			ed.onNodeChange.add(t._nodeChange, t);
-			ed.onVisualAid.add(t._visualAid, t);
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Layer',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_nodeChange : function(ed, cm, n) {
-			var le, p;
-
-			le = this._getParentLayer(n);
-			p = ed.dom.getParent(n, 'DIV,P,IMG');
-
-			if (!p) {
-				cm.setDisabled('absolute', 1);
-				cm.setDisabled('moveforward', 1);
-				cm.setDisabled('movebackward', 1);
-			} else {
-				cm.setDisabled('absolute', 0);
-				cm.setDisabled('moveforward', !le);
-				cm.setDisabled('movebackward', !le);
-				cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
-			}
-		},
-
-		// Private methods
-
-		_visualAid : function(ed, e, s) {
-			var dom = ed.dom;
-
-			tinymce.each(dom.select('div,p', e), function(e) {
-				if (/^(absolute|relative|static)$/i.test(e.style.position)) {
-					if (s)
-						dom.addClass(e, 'mceItemVisualAid');
-					else
-						dom.removeClass(e, 'mceItemVisualAid');	
-				}
-			});
-		},
-
-		_move : function(d) {
-			var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
-
-			nl = [];
-			tinymce.walk(ed.getBody(), function(n) {
-				if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
-					nl.push(n); 
-			}, 'childNodes');
-
-			// Find z-indexes
-			for (i=0; i<nl.length; i++) {
-				z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
-
-				if (ci < 0 && nl[i] == le)
-					ci = i;
-			}
-
-			if (d < 0) {
-				// Move back
-
-				// Try find a lower one
-				for (i=0; i<z.length; i++) {
-					if (z[i] < z[ci]) {
-						fi = i;
-						break;
-					}
-				}
-
-				if (fi > -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.length; i++) {
-					if (z[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;
-			}
-
-			ed.execCommand('mceRepaint');
-		},
-
-		_getParentLayer : function(n) {
-			return this.editor.dom.getParent(n, function(n) {
-				return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
-			});
-		},
-
-		_insertLayer : function() {
-			var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));
-
-			ed.dom.add(ed.getBody(), 'div', {
-				style : {
-					position : 'absolute',
-					left : p.x,
-					top : (p.y > 20 ? p.y : 20),
-					width : 100,
-					height : 100
-				},
-				'class' : 'mceItemVisualAid'
-			}, ed.selection.getContent() || ed.getLang('layer.content'));
-		},
-
-		_toggleAbsolute : function() {
-			var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
-
-			if (!le)
-				le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
-
-			if (le) {
-				if (le.style.position.toLowerCase() == "absolute") {
-					ed.dom.setStyles(le, {
-						position : '',
-						left : '',
-						top : '',
-						width : '',
-						height : ''
-					});
-
-					ed.dom.removeClass(le, 'mceItemVisualAid');
-				} else {
-					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';
-
-					le.style.position = "absolute";
-					ed.addVisual(ed.getBody());
-				}
-
-				ed.execCommand('mceRepaint');
-				ed.nodeChanged();
-			}
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/layer/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/layer/langs/en.js
@@ -1,10 +1,10 @@
-// UK lang variables
+// 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...'

+});

 
-tinyMCE.addToLang('layer',{
-insertlayer_desc : 'Insert new layer',
-forward_desc : 'Move forward',
-backward_desc : 'Move backward',
-absolute_desc : 'Toggle absolute positioning',
-content : 'New layer...'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/layer/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/layer/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/css/content.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/css/content.css
@@ -1,7 +1,27 @@
-.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}
-.mceItemShockWave {background-image: url(../img/shockwave.gif);}
-.mceItemFlash {background-image:url(../img/flash.gif);}
-.mceItemQuickTime {background-image:url(../img/quicktime.gif);}
-.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}
-.mceItemRealMedia {background-image:url(../img/realmedia.gif);}
+.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {

+	border: 1px dotted #cc0000;

+	background-position: center;

+	background-repeat: no-repeat;

+	background-color: #ffffcc;

+}

+

+.mceItemShockWave {

+	background-image: url('../images/shockwave.gif');

+}

+

+.mceItemFlash {

+	background-image: url('../images/flash.gif');

+}

+

+.mceItemQuickTime {

+	background-image: url('../images/quicktime.gif');

+}

+

+.mceItemWindowsMedia {

+	background-image: url('../images/windowsmedia.gif');

+}

+

+.mceItemRealMedia {

+	background-image: url('../images/realmedia.gif');

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/css/media.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/css/media.css
@@ -1,17 +1,69 @@
-#id, #name, #hspace, #vspace, #class_name, #align {	width: 100px }
-#hspace, #vspace { width: 50px }
-#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }
-#flash_base, #flash_flashvars { width: 240px }
-#width, #height { width: 40px }
-#src, #media_type { width: 250px }
-#class { width: 120px }
-#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto }
-.panel_wrapper div.current { height: 390px; overflow: auto }
-#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }
-.mceAddSelectValue { background-color: #DDDDDD }
-#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }
-#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }
-#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }
-#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }
-#qt_qtsrc { width: 200px }
+#id, #name, #hspace, #vspace, #class_name, #align {

+	width: 100px;

+}

+

+#hspace, #vspace {

+	width: 50px;

+}

+

+#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode {

+	width: 100px;

+}

+

+#flash_base, #flash_flashvars {

+	width: 240px;

+}

+

+#width, #height {

+	width: 40px;

+}

+

+#src, #media_type {

+	width: 250px;

+}

+

+#class {

+	width: 120px;

+}

+

+#prev {

+	margin: 0;

+	border: 1px solid black;

+	width: 99%;

+	height: 230px;

+	overflow: auto;

+}

+

+.panel_wrapper div.current {

+	height: 390px;

+	overflow: auto;

+}

+

+#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options {

+	display: none;

+}

+

+.mceAddSelectValue {

+	background-color: #DDDDDD;

+}

+

+#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume {

+	width: 70px;

+}

+

+#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume {

+	width: 70px;

+}

+

+#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks {

+	width: 70px;

+}

+

+#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle {

+	width: 90px;

+}

+

+#qt_qtsrc {

+	width: 200px;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.MediaPlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;function isMediaElm(n){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);};ed.addCommand('mceMedia',function(){ed.windowManager.open({file:url+'/media.htm',width:430+parseInt(ed.getLang('media.delta_width',0)),height:470+parseInt(ed.getLang('media.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('media',{title:'media.desc',cmd:'mceMedia'});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('media',n.nodeName=='IMG'&&isMediaElm(n));});ed.onInit.add(function(){var lo={mceItemFlash:'flash',mceItemShockWave:'shockwave',mceItemWindowsMedia:'windowsmedia',mceItemQuickTime:'quicktime',mceItemRealMedia:'realmedia'};if(ed.settings.content_css!==false)ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.name=='img'){each(lo,function(v,k){if(ed.dom.hasClass(o.node,k)){o.name=v;o.title=ed.dom.getAttrib(o.node,'title');return false;}});}});}if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){if(e.nodeName=='IMG'&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)){m.add({title:'media.edit',icon:'media',cmd:'mceMedia'});}});}});ed.onBeforeSetContent.add(function(ed,o){var h=o.content;h=h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(a,b,c){var o=t._parse(c);return'<img class="mceItem'+b+'" title="'+ed.dom.encode(c)+'" src="'+url+'/img/trans.gif" width="'+o.width+'" height="'+o.height+'" />'});h=h.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');h=h.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');h=h.replace(/<\/(object|embed)([^>]*)>/gi,'</span>');h=h.replace(/<param([^>]*)>/gi,function(a,b){return'<span '+b.replace(/value=/gi,'_value=')+' class="mceItemParam"></span>'});h=h.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');o.content=h;});ed.onSetContent.add(function(){t._spansToImgs(ed.getBody());});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;if(o.set){t._spansToImgs(o.node);each(dom.select('IMG',o.node),function(n){var p;if(isMediaElm(n)){p=t._parse(n.title);dom.setAttrib(n,'width',dom.getAttrib(n,'width',p.width||100));dom.setAttrib(n,'height',dom.getAttrib(n,'height',p.height||100));}});}if(o.get){each(dom.select('IMG',o.node),function(n){var ci,cb,mt;if(ed.getParam('media_use_script')){if(isMediaElm(n))n.className=n.className.replace(/mceItem/g,'mceTemp');return;}switch(n.className){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166b1bca-3f9c-11cf-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=ed.getParam('media_wmp6_compatible')?'05589fa1-c356-11ce-bf01-00aa0055595a':'6bf52a52-394a-11d3-b153-00c04f79faa6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02bf25d5-8c17-4b23-bc80-d3488abddc6b';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='cfcdaa03-8be4-11cf-b84b-0020afbbccfa';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break;}if(ci){dom.replace(t._buildObj({classid:ci,codebase:cb,type:mt},n),n);}});}});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/_value=/g,'value=');});if(ed.getParam('media_use_script')){function getAttr(s,n){n=new RegExp(n+'=\"([^\"]+)\"','g').exec(s);return n?ed.dom.decode(n[1]):'';};ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/<img[^>]+>/g,function(im){var cl=getAttr(im,'class');if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)){at=t._parse(getAttr(im,'title'));at.width=getAttr(im,'width');at.height=getAttr(im,'height');im='<script type="text/javascript">write'+cl.substring(7)+'({'+t._serialize(at)+'});</script>';}return im;});});}},getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_buildObj:function(o,n){var ob,ed=this.editor,dom=ed.dom,p=this._parse(n.title);p.width=o.width=dom.getAttrib(n,'width')||100;p.height=o.height=dom.getAttrib(n,'height')||100;ob=dom.create('span',{mce_name:'object',classid:"clsid:"+o.classid,codebase:o.codebase,width:o.width,height:o.height});if(p.src)p.src=ed.convertURL(p.src,'src',n);each(p,function(v,k){if(!/^(width|height|codebase|classid)$/.test(k)){if(o.type=='application/x-mplayer2'&&k=='src')k='url';dom.add(ob,'span',{mce_name:'param',name:k,'_value':v});}});dom.add(ob,'span',tinymce.extend({mce_name:'embed',type:o.type},p));return ob;},_spansToImgs:function(p){var t=this,dom=t.editor.dom,im,ci;each(dom.select('span',p),function(n){if(dom.getAttrib(n,'class')=='mceItemObject'){ci=dom.getAttrib(n,"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':dom.replace(t._createImg('mceItemFlash',n),n);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}return;}if(dom.getAttrib(n,'class')=='mceItemEmbed'){switch(dom.getAttrib(n,'type')){case'application/x-shockwave-flash':dom.replace(t._createImg('mceItemFlash',n),n);break;case'application/x-director':dom.replace(t._createImg('mceItemShockWave',n),n);break;case'application/x-mplayer2':dom.replace(t._createImg('mceItemWindowsMedia',n),n);break;case'video/quicktime':dom.replace(t._createImg('mceItemQuickTime',n),n);break;case'audio/x-pn-realaudio-plugin':dom.replace(t._createImg('mceItemRealMedia',n),n);break;default:dom.replace(t._createImg('mceItemFlash',n),n);}}});},_createImg:function(cl,n){var im,dom=this.editor.dom,pa={},ti='';im=dom.create('img',{src:this.url+'/img/trans.gif',width:dom.getAttrib(n,'width')||100,height:dom.getAttrib(n,'height')||100,'class':cl});each(['id','name','width','height','bgcolor','align','flashvars','src','wmode'],function(na){var v=dom.getAttrib(n,na);if(v)pa[na]=v;});each(dom.select('span',n),function(n){if(dom.hasClass(n,'mceItemParam'))pa[dom.getAttrib(n,'name')]=dom.getAttrib(n,'_value');});if(pa.movie){pa.src=pa.movie;delete pa.movie;}delete pa.width;delete pa.height;im.title=this._serialize(pa);return im;},_parse:function(s){return tinymce.util.JSON.parse('{'+s+'}');},_serialize:function(o){return tinymce.util.JSON.serialize(o).replace(/[{}]/g,'');}});tinymce.PluginManager.add('media',tinymce.plugins.MediaPlugin);})();
+tinyMCE.importPluginLanguagePack('media');var TinyMCE_MediaPlugin={getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(inst.hasPlugin('flash')&&!tinyMCE.flashWarn){alert('Flash plugin is deprecated and should not be used together with the media plugin.');tinyMCE.flashWarn=true}if(!tinyMCE.settings['media_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/media/css/content.css")},getControlHTML:function(cn){switch(cn){case"media":return tinyMCE.getButtonHTML(cn,'lang_media_desc','{$pluginurl}/images/media.gif','mceMedia')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceMedia":tinyMCE.openWindow({file:'../../plugins/media/media.htm',width:430+tinyMCE.getLang('lang_media_delta_width',0),height:470+tinyMCE.getLang('lang_media_delta_height',0)},{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content,inst){var nl,img,i,ne,d,s,ci;switch(type){case"insert_to_editor":img=tinyMCE.getParam("theme_href")+'/images/spacer.gif';content=content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,'<img class="mceItem$1" title="$2" src="'+img+'" />');content=content.replace(/<object([^>]*)>/gi,'<div class="mceItemObject" $1>');content=content.replace(/<embed([^>]*)>/gi,'<div class="mceItemObjectEmbed" $1>');content=content.replace(/<\/(object|embed)([^>]*)>/gi,'</div>');content=content.replace(/<param([^>]*)>/gi,'<div $1 class="mceItemParam"></div>');content=content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>','gi'),'class="mceItemParam"></div>');break;case"insert_to_editor_dom":d=inst.getDoc();nl=content.getElementsByTagName("img");for(i=0;i<nl.length;i++){if(/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)){nl[i].width=nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g,'$1');nl[i].height=nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g,'$1');}}nl=tinyMCE.selectElements(content,'DIV',function(n){return tinyMCE.hasCSSClass(n,'mceItemObject')});for(i=0;i<nl.length;i++){ci=tinyMCE.getAttrib(nl[i],"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash',d,nl[i]),nl[i]);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave',d,nl[i]),nl[i]);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia',d,nl[i]),nl[i]);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime',d,nl[i]),nl[i]);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia',d,nl[i]),nl[i]);break}}nl=tinyMCE.selectNodes(content,function(n){return n.className=='mceItemObjectEmbed'});for(i=0;i<nl.length;i++){switch(tinyMCE.getAttrib(nl[i],'type')){case'application/x-shockwave-flash':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemFlash');break;case'application/x-director':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemShockWave');break;case'application/x-mplayer2':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemWindowsMedia');break;case'video/quicktime':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemQuickTime');break;case'audio/x-pn-realaudio-plugin':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemRealMedia');break}}break;case"get_from_editor":var startPos=-1,endPos,attribs,chunkBefore,chunkAfter,embedHTML,at,pl,cb,mt,ex;while((startPos=content.indexOf('<img',startPos+1))!=-1){endPos=content.indexOf('/>',startPos);attribs=TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+=2;at=attribs['title'];if(at){at=at.replace(/&(#39|apos);/g,"'");at=at.replace(/&#quot;/g,'"');try{pl=eval('x={'+at+'};')}catch(ex){pl={}}}if(!tinyMCE.getParam('media_use_script',false)){switch(attribs['class']){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166B1BCA-3F9C-11CF-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=tinyMCE.getParam('media_wmp6_compatible')?'05589FA1-C356-11CE-BF01-00AA0055595A':'6BF52A52-394A-11D3-B153-00C04F79FAA6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break}pl.src=tinyMCE.convertURL(pl.src,null,true);embedHTML=TinyMCE_MediaPlugin._getEmbed(ci,cb,mt,pl,attribs)}else{switch(attribs['class']){case'mceItemFlash':s='writeFlash';break;case'mceItemShockWave':s='writeShockWave';break;case'mceItemWindowsMedia':s='writeWindowsMedia';break;case'mceItemQuickTime':s='writeQuickTime';break;case'mceItemRealMedia':s='writeRealMedia';break}if(attribs.width)at=at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g,"width:'"+attribs.width+"'");if(attribs.height)at=at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g,"height:'"+attribs.height+"'");pl.src=tinyMCE.convertURL(pl.src,null,true);at=at.replace(new RegExp("src:'[^']*'","g"),"src:'"+pl.src+"'");embedHTML='<script type="text/javascript">'+s+'({'+at+'});</script>'}chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node,'class'))){tinyMCE.switchClass(editor_id+'_media','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_media','mceButtonNormal');return true},_createImgFromEmbed:function(n,d,cl){var ne,at,i,ti='',an;ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;at=n.attributes;for(i=0;i<at.length;i++){if(at[i].specified&&at[i].nodeValue){an=at[i].nodeName.toLowerCase();if(an=='src')continue;if(an=='mce_src')an='src';if(an.indexOf('mce_')==-1&&!new RegExp('^(class|type)$').test(an))ti+=an.toLowerCase()+':\''+at[i].nodeValue+"',"}}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;n.parentNode.replaceChild(ne,n)},_createImg:function(cl,d,n){var i,nl,ti="",an,av,al=new Array();ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;al.id=tinyMCE.getAttrib(n,'id');al.name=tinyMCE.getAttrib(n,'name');al.width=tinyMCE.getAttrib(n,'width');al.height=tinyMCE.getAttrib(n,'height');al.bgcolor=tinyMCE.getAttrib(n,'bgcolor');al.align=tinyMCE.getAttrib(n,'align');al.class_name=tinyMCE.getAttrib(n,'mce_class');nl=n.getElementsByTagName('div');for(i=0;i<nl.length;i++){av=tinyMCE.getAttrib(nl[i],'value');av=av.replace(new RegExp('\\\\','g'),'\\\\');av=av.replace(new RegExp('"','g'),'\\"');av=av.replace(new RegExp("'",'g'),"\\'");an=tinyMCE.getAttrib(nl[i],'name');al[an]=av}if(al.movie){al.src=al.movie;al.movie=null}for(an in al){if(al[an]!=null&&typeof(al[an])!="function"&&al[an]!='')ti+=an.toLowerCase()+':\''+al[an]+"',"}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;return ne},_getEmbed:function(cls,cb,mt,p,at){var h='',n;p.width=at.width?at.width:p.width;p.height=at.height?at.height:p.height;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?' id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?' name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?' width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?' height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?' align="'+p.align+'"':'';h+='>';for(n in p){if(typeof(p[n])!="undefined"&&typeof(p[n])!="function"){h+='<param name="'+n+'" value="'+p[n]+'" />';if(n=='src'&&p[n].indexOf('://')!=-1&&mt=='application/x-mplayer2')h+='<param name="url" value="'+p[n]+'" />'}}h+='<embed type="'+mt+'"';for(n in p){if(typeof(p[n])=="function")continue;if(!(n=='url'&&mt=='application/x-mplayer2'))h+=' '+n+'="'+p[n]+'"'}h+='></embed></object>';return h},_parseAttributes:function(attribute_string){var attributeName="",endChr='"';var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i<attribute_string.length;i++){var chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue){withInValue=true;endChr=chr}else if(chr==endChr&&withInValue){withInValue=false;var pos=attributeName.lastIndexOf(' ');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return attributes}};tinyMCE.addPlugin("media",TinyMCE_MediaPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
@@ -1,359 +1,433 @@
-/**
- * $Id: editor_plugin_src.js 763 2008-04-03 13:25:45Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('media');

+

+var TinyMCE_MediaPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Media',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		// Warn if user has flash plugin and media plugin at the same time

+		if (inst.hasPlugin('flash') && !tinyMCE.flashWarn) {

+			alert('Flash plugin is deprecated and should not be used together with the media plugin.');

+			tinyMCE.flashWarn = true;

+		}

+

+		if (!tinyMCE.settings['media_skip_plugin_css'])

+			tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/media/css/content.css");

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "media":

+				return tinyMCE.getButtonHTML(cn, 'lang_media_desc', '{$pluginurl}/images/media.gif', 'mceMedia');

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceMedia":

+				tinyMCE.openWindow({

+						file : '../../plugins/media/media.htm',

+						width : 430 + tinyMCE.getLang('lang_media_delta_width', 0),

+						height : 470 + tinyMCE.getLang('lang_media_delta_height', 0)

+					}, {

+						editor_id : editor_id,

+						inline : "yes"

+				});

+

+				return true;

+	   }

+

+	   // Pass to next handler in chain

+	   return false;

+	},

+

+	cleanup : function(type, content, inst) {

+		var nl, img, i, ne, d, s, ci;

+

+		switch (type) {

+			case "insert_to_editor":

+				img = tinyMCE.getParam("theme_href") + '/images/spacer.gif';

+				content = content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, '<img class="mceItem$1" title="$2" src="' + img + '" />');

+				content = content.replace(/<object([^>]*)>/gi, '<div class="mceItemObject" $1>');

+				content = content.replace(/<embed([^>]*)>/gi, '<div class="mceItemObjectEmbed" $1>');

+				content = content.replace(/<\/(object|embed)([^>]*)>/gi, '</div>');

+				content = content.replace(/<param([^>]*)>/gi, '<div $1 class="mceItemParam"></div>');

+				content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam"></div>');

+				break;

+

+			case "insert_to_editor_dom":

+				d = inst.getDoc();

+				nl = content.getElementsByTagName("img");

+				for (i=0; i<nl.length; i++) {

+					if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)) {

+						nl[i].width = nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g, '$1');

+						nl[i].height = nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g, '$1');

+						//nl[i].align = nl[i].title.replace(/.*align:([a-z]+).*/gi, '$1');

+					}

+				}

+

+				nl = tinyMCE.selectElements(content, 'DIV', function (n) {return tinyMCE.hasCSSClass(n, 'mceItemObject');});

+				for (i=0; i<nl.length; i++) {

+					ci = tinyMCE.getAttrib(nl[i], "classid").toLowerCase().replace(/\s+/g, '');

+

+					switch (ci) {

+						case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':

+							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash', d, nl[i]), nl[i]);

+							break;

+

+						case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':

+							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave', d, nl[i]), nl[i]);

+							break;

+

+						case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':

+						case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':

+						case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':

+							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia', d, nl[i]), nl[i]);

+							break;

+

+						case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':

+							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime', d, nl[i]), nl[i]);

+							break;

+

+						case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':

+							nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia', d, nl[i]), nl[i]);

+							break;

+					}

+				}

+

+				// Handle embed (if any)

+				nl = tinyMCE.selectNodes(content, function (n) {return n.className == 'mceItemObjectEmbed';});

+				for (i=0; i<nl.length; i++) {

+					switch (tinyMCE.getAttrib(nl[i], 'type')) {

+						case 'application/x-shockwave-flash':

+							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemFlash');

+							break;

+

+						case 'application/x-director':

+							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemShockWave');

+							break;

+

+						case 'application/x-mplayer2':

+							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemWindowsMedia');

+							break;

+

+						case 'video/quicktime':

+							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemQuickTime');

+							break;

+

+						case 'audio/x-pn-realaudio-plugin':

+							TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemRealMedia');

+							break;

+					}

+				}

+				break;

+

+			case "get_from_editor":

+				var startPos = -1, endPos, attribs, chunkBefore, chunkAfter, embedHTML, at, pl, cb, mt, ex;

+

+				while ((startPos = content.indexOf('<img', startPos+1)) != -1) {

+					endPos = content.indexOf('/>', startPos);

+					attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos));

+

+					// Is not flash, skip it

+					if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))

+						continue;

+

+					endPos += 2;

+

+					// Parse attributes

+					at = attribs['title'];

+					if (at) {

+						at = at.replace(/&(#39|apos);/g, "'");

+						at = at.replace(/&#quot;/g, '"');

+

+						try {

+							pl = eval('x={' + at + '};');

+						} catch (ex) {

+							pl = {};

+						}

+					}

+

+					// Use object/embed

+					if (!tinyMCE.getParam('media_use_script', false)) {

+						switch (attribs['class']) {

+							case 'mceItemFlash':

+								ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';

+								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';

+								mt = 'application/x-shockwave-flash';

+								break;

+

+							case 'mceItemShockWave':

+								ci = '166B1BCA-3F9C-11CF-8075-444553540000';

+								cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';

+								mt = 'application/x-director';

+								break;

+

+							case 'mceItemWindowsMedia':

+								ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6';

+								cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';

+								mt = 'application/x-mplayer2';

+								break;

+

+							case 'mceItemQuickTime':

+								ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';

+								cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';

+								mt = 'video/quicktime';

+								break;

+

+							case 'mceItemRealMedia':

+								ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';

+								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';

+								mt = 'audio/x-pn-realaudio-plugin';

+								break;

+						}

+

+						// Convert the URL

+						pl.src = tinyMCE.convertURL(pl.src, null, true);

+

+						embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs);

+					} else {

+						// Use script version

+						switch (attribs['class']) {

+							case 'mceItemFlash':

+								s = 'writeFlash';

+								break;

+

+							case 'mceItemShockWave':

+								s = 'writeShockWave';

+								break;

+

+							case 'mceItemWindowsMedia':

+								s = 'writeWindowsMedia';

+								break;

+

+							case 'mceItemQuickTime':

+								s = 'writeQuickTime';

+								break;

+

+							case 'mceItemRealMedia':

+								s = 'writeRealMedia';

+								break;

+						}

+

+						if (attribs.width)

+							at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'");

+

+						if (attribs.height)

+							at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'");

+

+						// Force absolute URL

+						pl.src = tinyMCE.convertURL(pl.src, null, true);

+						at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'");

+

+						embedHTML = '<script type="text/javascript">' + s + '({' + at + '});</script>';

+					}

+

+					// Insert embed/object chunk

+					chunkBefore = content.substring(0, startPos);

+					chunkAfter = content.substring(endPos);

+					content = chunkBefore + embedHTML + chunkAfter;

+				}

+				break;

+		}

+

+		return content;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		if (node == null)

+			return;

+

+		do {

+			if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) {

+				tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected');

+				return true;

+			}

+		} while ((node = node.parentNode));

+

+		tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal');

+

+		return true;

+	},

+

+	_createImgFromEmbed : function(n, d, cl) {

+		var ne, at, i, ti = '', an;

+

+		ne = d.createElement('img');

+		ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';

+		ne.width = tinyMCE.getAttrib(n, 'width');

+		ne.height = tinyMCE.getAttrib(n, 'height');

+		ne.className = cl;

+

+		at = n.attributes;

+		for (i=0; i<at.length; i++) {

+			if (at[i].specified && at[i].nodeValue) {

+				an = at[i].nodeName.toLowerCase();

+

+				if (an == 'src')

+					continue;

+

+				if (an == 'mce_src')

+					an = 'src';

+

+				if (an.indexOf('mce_') == -1 && !new RegExp('^(class|type)$').test(an))

+					ti += an.toLowerCase() + ':\'' + at[i].nodeValue + "',";

+			}

+		}

+

+		ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;

+		ne.title = ti;

+

+		n.parentNode.replaceChild(ne, n);

+	},

+

+	_createImg : function(cl, d, n) {

+		var i, nl, ti = "", an, av, al = new Array();

+

+		ne = d.createElement('img');

+		ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';

+		ne.width = tinyMCE.getAttrib(n, 'width');

+		ne.height = tinyMCE.getAttrib(n, 'height');

+		ne.className = cl;

+

+		al.id = tinyMCE.getAttrib(n, 'id');

+		al.name = tinyMCE.getAttrib(n, 'name');

+		al.width = tinyMCE.getAttrib(n, 'width');

+		al.height = tinyMCE.getAttrib(n, 'height');

+		al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor');

+		al.align = tinyMCE.getAttrib(n, 'align');

+		al.class_name = tinyMCE.getAttrib(n, 'mce_class');

+

+		nl = n.getElementsByTagName('div');

+		for (i=0; i<nl.length; i++) {

+			av = tinyMCE.getAttrib(nl[i], 'value');

+			av = av.replace(new RegExp('\\\\', 'g'), '\\\\');

+			av = av.replace(new RegExp('"', 'g'), '\\"');

+			av = av.replace(new RegExp("'", 'g'), "\\'");

+			an = tinyMCE.getAttrib(nl[i], 'name');

+			al[an] = av;

+		}

+

+		if (al.movie) {

+			al.src = al.movie;

+			al.movie = null;

+		}

+

+		for (an in al) {

+			if (al[an] != null && typeof(al[an]) != "function" && al[an] != '')

+				ti += an.toLowerCase() + ':\'' + al[an] + "',";

+		}

+

+		ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;

+		ne.title = ti;

+

+		return ne;

+	},

+

+	_getEmbed : function(cls, cb, mt, p, at) {

+		var h = '', n;

+

+		p.width = at.width ? at.width : p.width;

+		p.height = at.height ? at.height : p.height;

+

+		h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';

+		h += typeof(p.id) != "undefined" ? ' id="' + p.id + '"' : '';

+		h += typeof(p.name) != "undefined" ? ' name="' + p.name + '"' : '';

+		h += typeof(p.width) != "undefined" ? ' width="' + p.width + '"' : '';

+		h += typeof(p.height) != "undefined" ? ' height="' + p.height + '"' : '';

+		h += typeof(p.align) != "undefined" ? ' align="' + p.align + '"' : '';

+		h += '>';

+

+		for (n in p) {

+			if (typeof(p[n]) != "undefined" && typeof(p[n]) != "function") {

+				h += '<param name="' + n + '" value="' + p[n] + '" />';

+

+				// Add extra url parameter if it's an absolute URL on WMP

+				if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2')

+					h += '<param name="url" value="' + p[n] + '" />';

+			}

+		}

+

+		h += '<embed type="' + mt + '"';

+

+		for (n in p) {

+			if (typeof(p[n]) == "function")

+				continue;

+

+			// Skip url parameter for embed tag on WMP

+			if (!(n == 'url' && mt == 'application/x-mplayer2'))

+				h += ' ' + n + '="' + p[n] + '"';

+		}

+

+		h += '></embed></object>';

+

+		return h;

+	},

+

+	_parseAttributes : function(attribute_string) {

+		var attributeName = "", endChr = '"';

+		var attributeValue = "";

+		var withInName;

+		var withInValue;

+		var attributes = new Array();

+		var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');

+

+		if (attribute_string == null || attribute_string.length < 2)

+			return null;

+

+		withInName = withInValue = false;

+

+		for (var i=0; i<attribute_string.length; i++) {

+			var chr = attribute_string.charAt(i);

+

+			if ((chr == '"' || chr == "'") && !withInValue) {

+				withInValue = true;

+				endChr = chr;

+			} else if (chr == endChr && withInValue) {

+				withInValue = false;

+

+				var pos = attributeName.lastIndexOf(' ');

+				if (pos != -1)

+					attributeName = attributeName.substring(pos+1);

+

+				attributes[attributeName.toLowerCase()] = attributeValue.substring(1);

+

+				attributeName = "";

+				attributeValue = "";

+			} else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)

+				withInName = true;

+

+			if (chr == '=' && withInName)

+				withInName = false;

+

+			if (withInName)

+				attributeName += chr;

+

+			if (withInValue)

+				attributeValue += chr;

+		}

+

+		return attributes;

+	}

+};

+

+tinyMCE.addPlugin("media", TinyMCE_MediaPlugin);

 
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('tinymce.plugins.MediaPlugin', {
-		init : function(ed, url) {
-			var t = this;
-			
-			t.editor = ed;
-			t.url = url;
-
-			function isMediaElm(n) {
-				return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);
-			};
-
-			// Register commands
-			ed.addCommand('mceMedia', function() {
-				ed.windowManager.open({
-					file : url + '/media.htm',
-					width : 430 + parseInt(ed.getLang('media.delta_width', 0)),
-					height : 470 + parseInt(ed.getLang('media.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			// Register buttons
-			ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});
-
-			ed.onNodeChange.add(function(ed, cm, n) {
-				cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n));
-			});
-
-			ed.onInit.add(function() {
-				var lo = {
-					mceItemFlash : 'flash',
-					mceItemShockWave : 'shockwave',
-					mceItemWindowsMedia : 'windowsmedia',
-					mceItemQuickTime : 'quicktime',
-					mceItemRealMedia : 'realmedia'
-				};
-
-				if (ed.settings.content_css !== false)
-					ed.dom.loadCSS(url + "/css/content.css");
-
-				if (ed.theme.onResolveName) {
-					ed.theme.onResolveName.add(function(th, o) {
-						if (o.name == 'img') {
-							each(lo, function(v, k) {
-								if (ed.dom.hasClass(o.node, k)) {
-									o.name = v;
-									o.title = ed.dom.getAttrib(o.node, 'title');
-									return false;
-								}
-							});
-						}
-					});
-				}
-
-				if (ed && ed.plugins.contextmenu) {
-					ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
-						if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) {
-							m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});
-						}
-					});
-				}
-			});
-
-			ed.onBeforeSetContent.add(function(ed, o) {
-				var h = o.content;
-
-				h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) {
-					var o = t._parse(c);
-
-					return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />'
-				});
-
-				h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>');
-				h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>');
-				h = h.replace(/<\/(object|embed)([^>]*)>/gi, '</span>');
-				h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_value=') + ' class="mceItemParam"></span>'});
-				h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>');
-
-				o.content = h;
-			});
-
-			ed.onSetContent.add(function() {
-				t._spansToImgs(ed.getBody());
-			});
-
-			ed.onPreProcess.add(function(ed, o) {
-				var dom = ed.dom;
-
-				if (o.set) {
-					t._spansToImgs(o.node);
-
-					each(dom.select('IMG', o.node), function(n) {
-						var p;
-
-						if (isMediaElm(n)) {
-							p = t._parse(n.title);
-							dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100));
-							dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100));
-						}
-					});
-				}
-
-				if (o.get) {
-					each(dom.select('IMG', o.node), function(n) {
-						var ci, cb, mt;
-
-						if (ed.getParam('media_use_script')) {
-							if (isMediaElm(n))
-								n.className = n.className.replace(/mceItem/g, 'mceTemp');
-
-							return;
-						}
-
-						switch (n.className) {
-							case 'mceItemFlash':
-								ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
-								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
-								mt = 'application/x-shockwave-flash';
-								break;
-
-							case 'mceItemShockWave':
-								ci = '166b1bca-3f9c-11cf-8075-444553540000';
-								cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
-								mt = 'application/x-director';
-								break;
-
-							case 'mceItemWindowsMedia':
-								ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6';
-								cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
-								mt = 'application/x-mplayer2';
-								break;
-
-							case 'mceItemQuickTime':
-								ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b';
-								cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
-								mt = 'video/quicktime';
-								break;
-
-							case 'mceItemRealMedia':
-								ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa';
-								cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
-								mt = 'audio/x-pn-realaudio-plugin';
-								break;
-						}
-
-						if (ci) {
-							dom.replace(t._buildObj({
-								classid : ci,
-								codebase : cb,
-								type : mt
-							}, n), n);
-						}
-					});
-				}
-			});
-
-			ed.onPostProcess.add(function(ed, o) {
-				o.content = o.content.replace(/_value=/g, 'value=');
-			});
-
-			if (ed.getParam('media_use_script')) {
-				function getAttr(s, n) {
-					n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
-
-					return n ? ed.dom.decode(n[1]) : '';
-				};
-
-				ed.onPostProcess.add(function(ed, o) {
-					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
-						var cl = getAttr(im, 'class');
-
-						if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {
-							at = t._parse(getAttr(im, 'title'));
-							at.width = getAttr(im, 'width');
-							at.height = getAttr(im, 'height');
-							im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';
-						}
-
-						return im;
-					});
-				});
-			}
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Media',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_buildObj : function(o, n) {
-			var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title);
-
-			p.width = o.width = dom.getAttrib(n, 'width') || 100;
-			p.height = o.height = dom.getAttrib(n, 'height') || 100;
-
-			ob = dom.create('span', {
-				mce_name : 'object',
-				classid : "clsid:" + o.classid,
-				codebase : o.codebase,
-				width : o.width,
-				height : o.height
-			});
-
-			if (p.src)
-				p.src = ed.convertURL(p.src, 'src', n);
-
-			each (p, function(v, k) {
-				if (!/^(width|height|codebase|classid)$/.test(k)) {
-					// Use url instead of src in IE for Windows media
-					if (o.type == 'application/x-mplayer2' && k == 'src')
-						k = 'url';
-
-					dom.add(ob, 'span', {mce_name : 'param', name : k, '_value' : v});
-				}
-			});
-
-			dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p));
-
-			return ob;
-		},
-
-		_spansToImgs : function(p) {
-			var t = this, dom = t.editor.dom, im, ci;
-
-			each(dom.select('span', p), function(n) {
-				// Convert object into image
-				if (dom.getAttrib(n, 'class') == 'mceItemObject') {
-					ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, '');
-
-					switch (ci) {
-						case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
-							dom.replace(t._createImg('mceItemFlash', n), n);
-							break;
-
-						case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
-							dom.replace(t._createImg('mceItemShockWave', n), n);
-							break;
-
-						case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
-						case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
-						case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
-							dom.replace(t._createImg('mceItemWindowsMedia', n), n);
-							break;
-
-						case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
-							dom.replace(t._createImg('mceItemQuickTime', n), n);
-							break;
-
-						case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
-							dom.replace(t._createImg('mceItemRealMedia', n), n);
-							break;
-
-						default:
-							dom.replace(t._createImg('mceItemFlash', n), n);
-					}
-					
-					return;
-				}
-
-				// Convert embed into image
-				if (dom.getAttrib(n, 'class') == 'mceItemEmbed') {
-					switch (dom.getAttrib(n, 'type')) {
-						case 'application/x-shockwave-flash':
-							dom.replace(t._createImg('mceItemFlash', n), n);
-							break;
-
-						case 'application/x-director':
-							dom.replace(t._createImg('mceItemShockWave', n), n);
-							break;
-
-						case 'application/x-mplayer2':
-							dom.replace(t._createImg('mceItemWindowsMedia', n), n);
-							break;
-
-						case 'video/quicktime':
-							dom.replace(t._createImg('mceItemQuickTime', n), n);
-							break;
-
-						case 'audio/x-pn-realaudio-plugin':
-							dom.replace(t._createImg('mceItemRealMedia', n), n);
-							break;
-
-						default:
-							dom.replace(t._createImg('mceItemFlash', n), n);
-					}
-				}			
-			});
-		},
-
-		_createImg : function(cl, n) {
-			var im, dom = this.editor.dom, pa = {}, ti = '';
-
-			// Create image
-			im = dom.create('img', {
-				src : this.url + '/img/trans.gif',
-				width : dom.getAttrib(n, 'width') || 100,
-				height : dom.getAttrib(n, 'height') || 100,
-				'class' : cl
-			});
-
-			// Setup base parameters
-			each(['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode'], function(na) {
-				var v = dom.getAttrib(n, na);
-
-				if (v)
-					pa[na] = v;
-			});
-
-			// Add optional parameters
-			each(dom.select('span', n), function(n) {
-				if (dom.hasClass(n, 'mceItemParam'))
-					pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_value');
-			});
-
-			// Use src not movie
-			if (pa.movie) {
-				pa.src = pa.movie;
-				delete pa.movie;
-			}
-
-			delete pa.width;
-			delete pa.height;
-
-			im.title = this._serialize(pa);
-
-			return im;
-		},
-
-		_parse : function(s) {
-			return tinymce.util.JSON.parse('{' + s + '}');
-		},
-
-		_serialize : function(o) {
-			return tinymce.util.JSON.serialize(o).replace(/[{}]/g, '');
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);
-})();

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/flash.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/flv_player.swf and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/quicktime.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/realmedia.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/shockwave.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/trans.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/media/js/embed.js
+++ /dev/null
@@ -1,74 +1,1 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
 
-function writeFlash(p) {
-	writeEmbed(
-		'D27CDB6E-AE6D-11cf-96B8-444553540000',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'application/x-shockwave-flash',
-		p
-	);
-}
-
-function writeShockWave(p) {
-	writeEmbed(
-	'166B1BCA-3F9C-11CF-8075-444553540000',
-	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-	'application/x-director',
-		p
-	);
-}
-
-function writeQuickTime(p) {
-	writeEmbed(
-		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-		'video/quicktime',
-		p
-	);
-}
-
-function writeRealMedia(p) {
-	writeEmbed(
-		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'audio/x-pn-realaudio-plugin',
-		p
-	);
-}
-
-function writeWindowsMedia(p) {
-	p.url = p.src;
-	writeEmbed(
-		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-		'application/x-mplayer2',
-		p
-	);
-}
-
-function writeEmbed(cls, cb, mt, p) {
-	var h = '', n;
-
-	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-	h += '>';
-
-	for (n in p)
-		h += '<param name="' + n + '" value="' + p[n] + '">';
-
-	h += '<embed type="' + mt + '"';
-
-	for (n in p)
-		h += n + '="' + p[n] + '" ';
-
-	h += '></embed></object>';
-
-	document.write(h);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/js/media.js
+++ /dev/null
@@ -1,629 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var oldWidth, oldHeight, ed, url;
-
-if (url = tinyMCEPopup.getParam("media_external_list_url"))
-	document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-
-function init() {
-	var pl = "", f, val;
-	var type = "flash", fe, i;
-
-	ed = tinyMCEPopup.editor;
-
-	tinyMCEPopup.resizeToInnerSize();
-	f = document.forms[0]
-
-	fe = ed.selection.getNode();
-	if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
-		pl = fe.title;
-
-		switch (ed.dom.getAttrib(fe, 'class')) {
-			case 'mceItemFlash':
-				type = 'flash';
-				break;
-
-			case 'mceItemFlashVideo':
-				type = 'flv';
-				break;
-
-			case 'mceItemShockWave':
-				type = 'shockwave';
-				break;
-
-			case 'mceItemWindowsMedia':
-				type = 'wmp';
-				break;
-
-			case 'mceItemQuickTime':
-				type = 'qt';
-				break;
-
-			case 'mceItemRealMedia':
-				type = 'rmp';
-				break;
-		}
-
-		document.forms[0].insert.value = ed.getLang('update', 'Insert', true); 
-	}
-
-	document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
-	document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
-	var html = getMediaListHTML('medialist','src','media','media');
-	if (html == "")
-		document.getElementById("linklistrow").style.display = 'none';
-	else
-		document.getElementById("linklistcontainer").innerHTML = html;
-
-	// Resize some elements
-	if (isVisible('filebrowser'))
-		document.getElementById('src').style.width = '230px';
-
-	// Setup form
-	if (pl != "") {
-		pl = tinyMCEPopup.editor.plugins.media._parse(pl);
-
-		switch (type) {
-			case "flash":
-				setBool(pl, 'flash', 'play');
-				setBool(pl, 'flash', 'loop');
-				setBool(pl, 'flash', 'menu');
-				setBool(pl, 'flash', 'swliveconnect');
-				setStr(pl, 'flash', 'quality');
-				setStr(pl, 'flash', 'scale');
-				setStr(pl, 'flash', 'salign');
-				setStr(pl, 'flash', 'wmode');
-				setStr(pl, 'flash', 'base');
-				setStr(pl, 'flash', 'flashvars');
-			break;
-
-			case "qt":
-				setBool(pl, 'qt', 'loop');
-				setBool(pl, 'qt', 'autoplay');
-				setBool(pl, 'qt', 'cache');
-				setBool(pl, 'qt', 'controller');
-				setBool(pl, 'qt', 'correction');
-				setBool(pl, 'qt', 'enablejavascript');
-				setBool(pl, 'qt', 'kioskmode');
-				setBool(pl, 'qt', 'autohref');
-				setBool(pl, 'qt', 'playeveryframe');
-				setBool(pl, 'qt', 'tarsetcache');
-				setStr(pl, 'qt', 'scale');
-				setStr(pl, 'qt', 'starttime');
-				setStr(pl, 'qt', 'endtime');
-				setStr(pl, 'qt', 'tarset');
-				setStr(pl, 'qt', 'qtsrcchokespeed');
-				setStr(pl, 'qt', 'volume');
-				setStr(pl, 'qt', 'qtsrc');
-			break;
-
-			case "shockwave":
-				setBool(pl, 'shockwave', 'sound');
-				setBool(pl, 'shockwave', 'progress');
-				setBool(pl, 'shockwave', 'autostart');
-				setBool(pl, 'shockwave', 'swliveconnect');
-				setStr(pl, 'shockwave', 'swvolume');
-				setStr(pl, 'shockwave', 'swstretchstyle');
-				setStr(pl, 'shockwave', 'swstretchhalign');
-				setStr(pl, 'shockwave', 'swstretchvalign');
-			break;
-
-			case "wmp":
-				setBool(pl, 'wmp', 'autostart');
-				setBool(pl, 'wmp', 'enabled');
-				setBool(pl, 'wmp', 'enablecontextmenu');
-				setBool(pl, 'wmp', 'fullscreen');
-				setBool(pl, 'wmp', 'invokeurls');
-				setBool(pl, 'wmp', 'mute');
-				setBool(pl, 'wmp', 'stretchtofit');
-				setBool(pl, 'wmp', 'windowlessvideo');
-				setStr(pl, 'wmp', 'balance');
-				setStr(pl, 'wmp', 'baseurl');
-				setStr(pl, 'wmp', 'captioningid');
-				setStr(pl, 'wmp', 'currentmarker');
-				setStr(pl, 'wmp', 'currentposition');
-				setStr(pl, 'wmp', 'defaultframe');
-				setStr(pl, 'wmp', 'playcount');
-				setStr(pl, 'wmp', 'rate');
-				setStr(pl, 'wmp', 'uimode');
-				setStr(pl, 'wmp', 'volume');
-			break;
-
-			case "rmp":
-				setBool(pl, 'rmp', 'autostart');
-				setBool(pl, 'rmp', 'loop');
-				setBool(pl, 'rmp', 'autogotourl');
-				setBool(pl, 'rmp', 'center');
-				setBool(pl, 'rmp', 'imagestatus');
-				setBool(pl, 'rmp', 'maintainaspect');
-				setBool(pl, 'rmp', 'nojava');
-				setBool(pl, 'rmp', 'prefetch');
-				setBool(pl, 'rmp', 'shuffle');
-				setStr(pl, 'rmp', 'console');
-				setStr(pl, 'rmp', 'controls');
-				setStr(pl, 'rmp', 'numloop');
-				setStr(pl, 'rmp', 'scriptcallbacks');
-			break;
-		}
-
-		setStr(pl, null, 'src');
-		setStr(pl, null, 'id');
-		setStr(pl, null, 'name');
-		setStr(pl, null, 'vspace');
-		setStr(pl, null, 'hspace');
-		setStr(pl, null, 'bgcolor');
-		setStr(pl, null, 'align');
-		setStr(pl, null, 'width');
-		setStr(pl, null, 'height');
-
-		if ((val = ed.dom.getAttrib(fe, "width")) != "")
-			pl.width = f.width.value = val;
-
-		if ((val = ed.dom.getAttrib(fe, "height")) != "")
-			pl.height = f.height.value = val;
-
-		oldWidth = pl.width ? parseInt(pl.width) : 0;
-		oldHeight = pl.height ? parseInt(pl.height) : 0;
-	} else
-		oldWidth = oldHeight = 0;
-
-	selectByValue(f, 'media_type', type);
-	changedType(type);
-	updateColor('bgcolor_pick', 'bgcolor');
-
-	TinyMCE_EditableSelects.init();
-	generatePreview();
-}
-
-function insertMedia() {
-	var fe, f = document.forms[0], h;
-
-	tinyMCEPopup.restoreSelection();
-
-	if (!AutoValidator.validate(f)) {
-		alert(ed.getLang('invalid_data'));
-		return false;
-	}
-
-	f.width.value = f.width.value == "" ? 100 : f.width.value;
-	f.height.value = f.height.value == "" ? 100 : f.height.value;
-
-	fe = ed.selection.getNode();
-	if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
-		switch (f.media_type.options[f.media_type.selectedIndex].value) {
-			case "flash":
-				fe.className = "mceItemFlash";
-				break;
-
-			case "flv":
-				fe.className = "mceItemFlashVideo";
-				break;
-
-			case "shockwave":
-				fe.className = "mceItemShockWave";
-				break;
-
-			case "qt":
-				fe.className = "mceItemQuickTime";
-				break;
-
-			case "wmp":
-				fe.className = "mceItemWindowsMedia";
-				break;
-
-			case "rmp":
-				fe.className = "mceItemRealMedia";
-				break;
-		}
-
-		if (fe.width != f.width.value || fe.height != f.height.height)
-			ed.execCommand('mceRepaint');
-
-		fe.title = serializeParameters();
-		fe.width = f.width.value;
-		fe.height = f.height.value;
-		fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
-		fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
-		fe.align = f.align.options[f.align.selectedIndex].value;
-	} else {
-		h = '<img src="' + tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;
-
-		switch (f.media_type.options[f.media_type.selectedIndex].value) {
-			case "flash":
-				h += ' class="mceItemFlash"';
-				break;
-
-			case "flv":
-				h += ' class="mceItemFlashVideo"';
-				break;
-
-			case "shockwave":
-				h += ' class="mceItemShockWave"';
-				break;
-
-			case "qt":
-				h += ' class="mceItemQuickTime"';
-				break;
-
-			case "wmp":
-				h += ' class="mceItemWindowsMedia"';
-				break;
-
-			case "rmp":
-				h += ' class="mceItemRealMedia"';
-				break;
-		}
-
-		h += ' title="' + serializeParameters() + '"';
-		h += ' width="' + f.width.value + '"';
-		h += ' height="' + f.height.value + '"';
-		h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
-
-		h += ' />';
-
-		ed.execCommand('mceInsertContent', false, h);
-	}
-
-	tinyMCEPopup.close();
-}
-
-function updatePreview() {
-	var f = document.forms[0], type;
-
-	f.width.value = f.width.value || '320';
-	f.height.value = f.height.value || '240';
-
-	type = getType(f.src.value);
-	selectByValue(f, 'media_type', type);
-	changedType(type);
-	generatePreview();
-}
-
-function getMediaListHTML() {
-	if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
-		var html = "";
-
-		html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">';
-		html += '<option value="">---</option>';
-
-		for (var i=0; i<tinyMCEMediaList.length; i++)
-			html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
-
-		html += '</select>';
-
-		return html;
-	}
-
-	return "";
-}
-
-function getType(v) {
-	var fo, i, c, el, x, f = document.forms[0];
-
-	fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');
-
-	// YouTube
-	if (v.match(/watch\?v=(.+)(.*)/)) {
-		f.width.value = '425';
-		f.height.value = '350';
-		f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];
-		return 'flash';
-	}
-
-	// Google video
-	if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {
-		f.width.value = '425';
-		f.height.value = '326';
-		f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
-		return 'flash';
-	}
-
-	for (i=0; i<fo.length; i++) {
-		c = fo[i].split('=');
-
-		el = c[1].split(',');
-		for (x=0; x<el.length; x++)
-		if (v.indexOf('.' + el[x]) != -1)
-			return c[0];
-	}
-
-	return null;
-}
-
-function switchType(v) {
-	var t = getType(v), d = document, f = d.forms[0];
-
-	if (!t)
-		return;
-
-	selectByValue(d.forms[0], 'media_type', t);
-	changedType(t);
-
-	// Update qtsrc also
-	if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
-		alert(ed.getLang("media_qt_stream_warn"));
-
-		if (f.qt_qtsrc.value == '')
-			f.qt_qtsrc.value = f.src.value;
-	}
-}
-
-function changedType(t) {
-	var d = document;
-
-	d.getElementById('flash_options').style.display = 'none';
-	d.getElementById('flv_options').style.display = 'none';
-	d.getElementById('qt_options').style.display = 'none';
-	d.getElementById('shockwave_options').style.display = 'none';
-	d.getElementById('wmp_options').style.display = 'none';
-	d.getElementById('rmp_options').style.display = 'none';
-	d.getElementById(t + '_options').style.display = 'block';
-}
-
-function serializeParameters() {
-	var d = document, f = d.forms[0], s = '';
-
-	switch (f.media_type.options[f.media_type.selectedIndex].value) {
-		case "flash":
-			s += getBool('flash', 'play', true);
-			s += getBool('flash', 'loop', true);
-			s += getBool('flash', 'menu', true);
-			s += getBool('flash', 'swliveconnect', false);
-			s += getStr('flash', 'quality');
-			s += getStr('flash', 'scale');
-			s += getStr('flash', 'salign');
-			s += getStr('flash', 'wmode');
-			s += getStr('flash', 'base');
-			s += getStr('flash', 'flashvars');
-		break;
-
-		case "qt":
-			s += getBool('qt', 'loop', false);
-			s += getBool('qt', 'autoplay', true);
-			s += getBool('qt', 'cache', false);
-			s += getBool('qt', 'controller', true);
-			s += getBool('qt', 'correction', false, 'none', 'full');
-			s += getBool('qt', 'enablejavascript', false);
-			s += getBool('qt', 'kioskmode', false);
-			s += getBool('qt', 'autohref', false);
-			s += getBool('qt', 'playeveryframe', false);
-			s += getBool('qt', 'targetcache', false);
-			s += getStr('qt', 'scale');
-			s += getStr('qt', 'starttime');
-			s += getStr('qt', 'endtime');
-			s += getStr('qt', 'target');
-			s += getStr('qt', 'qtsrcchokespeed');
-			s += getStr('qt', 'volume');
-			s += getStr('qt', 'qtsrc');
-		break;
-
-		case "shockwave":
-			s += getBool('shockwave', 'sound');
-			s += getBool('shockwave', 'progress');
-			s += getBool('shockwave', 'autostart');
-			s += getBool('shockwave', 'swliveconnect');
-			s += getStr('shockwave', 'swvolume');
-			s += getStr('shockwave', 'swstretchstyle');
-			s += getStr('shockwave', 'swstretchhalign');
-			s += getStr('shockwave', 'swstretchvalign');
-		break;
-
-		case "wmp":
-			s += getBool('wmp', 'autostart', true);
-			s += getBool('wmp', 'enabled', false);
-			s += getBool('wmp', 'enablecontextmenu', true);
-			s += getBool('wmp', 'fullscreen', false);
-			s += getBool('wmp', 'invokeurls', true);
-			s += getBool('wmp', 'mute', false);
-			s += getBool('wmp', 'stretchtofit', false);
-			s += getBool('wmp', 'windowlessvideo', false);
-			s += getStr('wmp', 'balance');
-			s += getStr('wmp', 'baseurl');
-			s += getStr('wmp', 'captioningid');
-			s += getStr('wmp', 'currentmarker');
-			s += getStr('wmp', 'currentposition');
-			s += getStr('wmp', 'defaultframe');
-			s += getStr('wmp', 'playcount');
-			s += getStr('wmp', 'rate');
-			s += getStr('wmp', 'uimode');
-			s += getStr('wmp', 'volume');
-		break;
-
-		case "rmp":
-			s += getBool('rmp', 'autostart', false);
-			s += getBool('rmp', 'loop', false);
-			s += getBool('rmp', 'autogotourl', true);
-			s += getBool('rmp', 'center', false);
-			s += getBool('rmp', 'imagestatus', true);
-			s += getBool('rmp', 'maintainaspect', false);
-			s += getBool('rmp', 'nojava', false);
-			s += getBool('rmp', 'prefetch', false);
-			s += getBool('rmp', 'shuffle', false);
-			s += getStr('rmp', 'console');
-			s += getStr('rmp', 'controls');
-			s += getStr('rmp', 'numloop');
-			s += getStr('rmp', 'scriptcallbacks');
-		break;
-	}
-
-	s += getStr(null, 'id');
-	s += getStr(null, 'name');
-	s += getStr(null, 'src');
-	s += getStr(null, 'align');
-	s += getStr(null, 'bgcolor');
-	s += getInt(null, 'vspace');
-	s += getInt(null, 'hspace');
-	s += getStr(null, 'width');
-	s += getStr(null, 'height');
-
-	s = s.length > 0 ? s.substring(0, s.length - 1) : s;
-
-	return s;
-}
-
-function setBool(pl, p, n) {
-	if (typeof(pl[n]) == "undefined")
-		return;
-
-	document.forms[0].elements[p + "_" + n].checked = pl[n];
-}
-
-function setStr(pl, p, n) {
-	var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
-
-	if (typeof(pl[n]) == "undefined")
-		return;
-
-	if (e.type == "text")
-		e.value = pl[n];
-	else
-		selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
-}
-
-function getBool(p, n, d, tv, fv) {
-	var v = document.forms[0].elements[p + "_" + n].checked;
-
-	tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
-	fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
-
-	return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');
-}
-
-function getStr(p, n, d) {
-	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
-	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
-
-	if (n == 'src')
-		v = tinyMCEPopup.editor.convertURL(v, 'src', null);
-
-	return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
-}
-
-function getInt(p, n, d) {
-	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
-	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
-
-	return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
-}
-
-function jsEncode(s) {
-	s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
-	s = s.replace(new RegExp('"', 'g'), '\\"');
-	s = s.replace(new RegExp("'", 'g'), "\\'");
-
-	return s;
-}
-
-function generatePreview(c) {
-	var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
-
-	p.innerHTML = '<!-- x --->';
-
-	nw = parseInt(f.width.value);
-	nh = parseInt(f.height.value);
-
-	if (f.width.value != "" && f.height.value != "") {
-		if (f.constrain.checked) {
-			if (c == 'width' && oldWidth != 0) {
-				wp = nw / oldWidth;
-				nh = Math.round(wp * nh);
-				f.height.value = nh;
-			} else if (c == 'height' && oldHeight != 0) {
-				hp = nh / oldHeight;
-				nw = Math.round(hp * nw);
-				f.width.value = nw;
-			}
-		}
-	}
-
-	if (f.width.value != "")
-		oldWidth = nw;
-
-	if (f.height.value != "")
-		oldHeight = nh;
-
-	// After constrain
-	pl = serializeParameters();
-
-	switch (f.media_type.options[f.media_type.selectedIndex].value) {
-		case "flash":
-			cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
-			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
-			type = 'application/x-shockwave-flash';
-			break;
-
-		case "shockwave":
-			cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
-			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
-			type = 'application/x-director';
-			break;
-
-		case "qt":
-			cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
-			codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
-			type = 'video/quicktime';
-			break;
-
-		case "wmp":
-			cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
-			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
-			type = 'application/x-mplayer2';
-			break;
-
-		case "rmp":
-			cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
-			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
-			type = 'audio/x-pn-realaudio-plugin';
-			break;
-	}
-
-	if (pl == '') {
-		p.innerHTML = '';
-		return;
-	}
-
-	pl = tinyMCEPopup.editor.plugins.media._parse(pl);
-
-	if (!pl.src) {
-		p.innerHTML = '';
-		return;
-	}
-
-	pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);
-	pl.width = !pl.width ? 100 : pl.width;
-	pl.height = !pl.height ? 100 : pl.height;
-	pl.id = !pl.id ? 'obj' : pl.id;
-	pl.name = !pl.name ? 'eobj' : pl.name;
-	pl.align = !pl.align ? '' : pl.align;
-
-	// Avoid annoying warning about insecure items
-	if (!tinymce.isIE || document.location.protocol != 'https:') {
-		h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
-
-		for (n in pl) {
-			h += '<param name="' + n + '" value="' + pl[n] + '">';
-
-			// Add extra url parameter if it's an absolute URL
-			if (n == 'src' && pl[n].indexOf('://') != -1)
-				h += '<param name="url" value="' + pl[n] + '" />';
-		}
-	}
-
-	h += '<embed type="' + type + '" ';
-
-	for (n in pl)
-		h += n + '="' + pl[n] + '" ';
-
-	h += '></embed>';
-
-	// Avoid annoying warning about insecure items
-	if (!tinymce.isIE || document.location.protocol != 'https:')
-		h += '</object>';
-
-	p.innerHTML = "<!-- x --->" + h;
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/jscripts/embed.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/jscripts/embed.js
@@ -1,74 +1,74 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
+/**

+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.

+ */

+

+function writeFlash(p) {

+	writeEmbed(

+		'D27CDB6E-AE6D-11cf-96B8-444553540000',

+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',

+		'application/x-shockwave-flash',

+		p

+	);

+}

+

+function writeShockWave(p) {

+	writeEmbed(

+	'166B1BCA-3F9C-11CF-8075-444553540000',

+	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',

+	'application/x-director',

+		p

+	);

+}

+

+function writeQuickTime(p) {

+	writeEmbed(

+		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',

+		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',

+		'video/quicktime',

+		p

+	);

+}

+

+function writeRealMedia(p) {

+	writeEmbed(

+		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',

+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',

+		'audio/x-pn-realaudio-plugin',

+		p

+	);

+}

+

+function writeWindowsMedia(p) {

+	p.url = p.src;

+	writeEmbed(

+		'6BF52A52-394A-11D3-B153-00C04F79FAA6',

+		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',

+		'application/x-mplayer2',

+		p

+	);

+}

+

+function writeEmbed(cls, cb, mt, p) {

+	var h = '', n;

+

+	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';

+	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';

+	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';

+	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';

+	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';

+	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';

+	h += '>';

+

+	for (n in p)

+		h += '<param name="' + n + '" value="' + p[n] + '">';

+

+	h += '<embed type="' + mt + '"';

+

+	for (n in p)

+		h += n + '="' + p[n] + '" ';

+

+	h += '></embed></object>';

+

+	document.write(h);

+}

 
-function writeFlash(p) {
-	writeEmbed(
-		'D27CDB6E-AE6D-11cf-96B8-444553540000',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'application/x-shockwave-flash',
-		p
-	);
-}
-
-function writeShockWave(p) {
-	writeEmbed(
-	'166B1BCA-3F9C-11CF-8075-444553540000',
-	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-	'application/x-director',
-		p
-	);
-}
-
-function writeQuickTime(p) {
-	writeEmbed(
-		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-		'video/quicktime',
-		p
-	);
-}
-
-function writeRealMedia(p) {
-	writeEmbed(
-		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'audio/x-pn-realaudio-plugin',
-		p
-	);
-}
-
-function writeWindowsMedia(p) {
-	p.url = p.src;
-	writeEmbed(
-		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-		'application/x-mplayer2',
-		p
-	);
-}
-
-function writeEmbed(cls, cb, mt, p) {
-	var h = '', n;
-
-	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-	h += '>';
-
-	for (n in p)
-		h += '<param name="' + n + '" value="' + p[n] + '">';
-
-	h += '<embed type="' + mt + '"';
-
-	for (n in p)
-		h += n + '="' + p[n] + '" ';
-
-	h += '></embed></object>';
-
-	document.write(h);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/jscripts/media.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/jscripts/media.js
@@ -1,573 +1,595 @@
-var oldWidth, oldHeight;
-var url = tinyMCE.getParam("media_external_list_url");
-if (url != null) {
-	// Fix relative
-	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-		url = tinyMCE.documentBasePath + "/" + url;
+var oldWidth, oldHeight;

+var url = tinyMCE.getParam("media_external_list_url");

+if (url != null) {

+	// Fix relative

+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+		url = tinyMCE.documentBasePath + "/" + url;

+

+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+}

+

+function init() {

+	var pl = "", f, val;

+	var type = "flash", fe, i;

+

+	tinyMCEPopup.resizeToInnerSize();

+	f = document.forms[0]

+

+	fe = tinyMCE.selectedInstance.getFocusElement();

+	if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {

+		pl = "x={" + fe.title + "};";

+

+		switch (tinyMCE.getAttrib(fe, 'class')) {

+			case 'mceItemFlash':

+				type = 'flash';

+				break;

+

+			case 'mceItemShockWave':

+				type = 'shockwave';

+				break;

+

+			case 'mceItemWindowsMedia':

+				type = 'wmp';

+				break;

+

+			case 'mceItemQuickTime':

+				type = 'qt';

+				break;

+

+			case 'mceItemRealMedia':

+				type = 'rmp';

+				break;

+		}

+

+		document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true); 

+	}

+

+	document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');

+	document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');

+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');

+

+	var html = getMediaListHTML('filebrowser','src','media','media');

+	if (html == "")

+		document.getElementById("linklistrow").style.display = 'none';

+	else

+		document.getElementById("linklistcontainer").innerHTML = html;

+

+	// Resize some elements

+	if (isVisible('filebrowsercontainer'))

+		document.getElementById('src').style.width = '230px';

+

+	// Setup form

+	if (pl != "") {

+		pl = eval(pl);

+

+		switch (type) {

+			case "flash":

+				setBool(pl, 'flash', 'play');

+				setBool(pl, 'flash', 'loop');

+				setBool(pl, 'flash', 'menu');

+				setBool(pl, 'flash', 'swliveconnect');

+				setStr(pl, 'flash', 'quality');

+				setStr(pl, 'flash', 'scale');

+				setStr(pl, 'flash', 'salign');

+				setStr(pl, 'flash', 'wmode');

+				setStr(pl, 'flash', 'base');

+				setStr(pl, 'flash', 'flashvars');

+			break;

+

+			case "qt":

+				setBool(pl, 'qt', 'loop');

+				setBool(pl, 'qt', 'autoplay');

+				setBool(pl, 'qt', 'cache');

+				setBool(pl, 'qt', 'controller');

+				setBool(pl, 'qt', 'correction');

+				setBool(pl, 'qt', 'enablejavascript');

+				setBool(pl, 'qt', 'kioskmode');

+				setBool(pl, 'qt', 'autohref');

+				setBool(pl, 'qt', 'playeveryframe');

+				setBool(pl, 'qt', 'tarsetcache');

+				setStr(pl, 'qt', 'scale');

+				setStr(pl, 'qt', 'starttime');

+				setStr(pl, 'qt', 'endtime');

+				setStr(pl, 'qt', 'tarset');

+				setStr(pl, 'qt', 'qtsrcchokespeed');

+				setStr(pl, 'qt', 'volume');

+				setStr(pl, 'qt', 'qtsrc');

+			break;

+

+			case "shockwave":

+				setBool(pl, 'shockwave', 'sound');

+				setBool(pl, 'shockwave', 'progress');

+				setBool(pl, 'shockwave', 'autostart');

+				setBool(pl, 'shockwave', 'swliveconnect');

+				setStr(pl, 'shockwave', 'swvolume');

+				setStr(pl, 'shockwave', 'swstretchstyle');

+				setStr(pl, 'shockwave', 'swstretchhalign');

+				setStr(pl, 'shockwave', 'swstretchvalign');

+			break;

+

+			case "wmp":

+				setBool(pl, 'wmp', 'autostart');

+				setBool(pl, 'wmp', 'enabled');

+				setBool(pl, 'wmp', 'enablecontextmenu');

+				setBool(pl, 'wmp', 'fullscreen');

+				setBool(pl, 'wmp', 'invokeurls');

+				setBool(pl, 'wmp', 'mute');

+				setBool(pl, 'wmp', 'stretchtofit');

+				setBool(pl, 'wmp', 'windowlessvideo');

+				setStr(pl, 'wmp', 'balance');

+				setStr(pl, 'wmp', 'baseurl');

+				setStr(pl, 'wmp', 'captioningid');

+				setStr(pl, 'wmp', 'currentmarker');

+				setStr(pl, 'wmp', 'currentposition');

+				setStr(pl, 'wmp', 'defaultframe');

+				setStr(pl, 'wmp', 'playcount');

+				setStr(pl, 'wmp', 'rate');

+				setStr(pl, 'wmp', 'uimode');

+				setStr(pl, 'wmp', 'volume');

+			break;

+

+			case "rmp":

+				setBool(pl, 'rmp', 'autostart');

+				setBool(pl, 'rmp', 'loop');

+				setBool(pl, 'rmp', 'autogotourl');

+				setBool(pl, 'rmp', 'center');

+				setBool(pl, 'rmp', 'imagestatus');

+				setBool(pl, 'rmp', 'maintainaspect');

+				setBool(pl, 'rmp', 'nojava');

+				setBool(pl, 'rmp', 'prefetch');

+				setBool(pl, 'rmp', 'shuffle');

+				setStr(pl, 'rmp', 'console');

+				setStr(pl, 'rmp', 'controls');

+				setStr(pl, 'rmp', 'numloop');

+				setStr(pl, 'rmp', 'scriptcallbacks');

+			break;

+		}

+

+		setStr(pl, null, 'src');

+		setStr(pl, null, 'id');

+		setStr(pl, null, 'name');

+		setStr(pl, null, 'vspace');

+		setStr(pl, null, 'hspace');

+		setStr(pl, null, 'bgcolor');

+		setStr(pl, null, 'align');

+		setStr(pl, null, 'width');

+		setStr(pl, null, 'height');

+

+		if ((val = tinyMCE.getAttrib(fe, "width")) != "")

+			pl.width = f.width.value = val;

+

+		if ((val = tinyMCE.getAttrib(fe, "height")) != "")

+			pl.height = f.height.value = val;

+

+		oldWidth = pl.width ? parseInt(pl.width) : 0;

+		oldHeight = pl.height ? parseInt(pl.height) : 0;

+	} else

+		oldWidth = oldHeight = 0;

+

+	selectByValue(f, 'media_type', type);

+	changedType(type);

+	updateColor('bgcolor_pick', 'bgcolor');

+

+	TinyMCE_EditableSelects.init();

+	generatePreview();

+}

+

+function insertMedia() {

+	var fe, f = document.forms[0], h;

+

+	if (!AutoValidator.validate(f)) {

+		alert(tinyMCE.getLang('lang_invalid_data'));

+		return false;

+	}

+

+	f.width.value = f.width.value == "" ? 100 : f.width.value;

+	f.height.value = f.height.value == "" ? 100 : f.height.value;

+

+	fe = tinyMCE.selectedInstance.getFocusElement();

+	if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {

+		switch (f.media_type.options[f.media_type.selectedIndex].value) {

+			case "flash":

+				fe.className = "mceItemFlash";

+				break;

+

+			case "shockwave":

+				fe.className = "mceItemShockWave";

+				break;

+

+			case "qt":

+				fe.className = "mceItemQuickTime";

+				break;

+

+			case "wmp":

+				fe.className = "mceItemWindowsMedia";

+				break;

+

+			case "rmp":

+				fe.className = "mceItemRealMedia";

+				break;

+		}

+

+		if (fe.width != f.width.value || fe.height != f.height.height)

+			tinyMCE.selectedInstance.repaint();

+

+		fe.title = serializeParameters();

+		fe.width = f.width.value;

+		fe.height = f.height.value;

+		fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');

+		fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');

+		fe.align = f.align.options[f.align.selectedIndex].value;

+	} else {

+		h = '<img src="' + tinyMCE.getParam("theme_href") + '/images/spacer.gif"' ;

+

+		switch (f.media_type.options[f.media_type.selectedIndex].value) {

+			case "flash":

+				h += ' class="mceItemFlash"';

+				break;

+

+			case "shockwave":

+				h += ' class="mceItemShockWave"';

+				break;

+

+			case "qt":

+				h += ' class="mceItemQuickTime"';

+				break;

+

+			case "wmp":

+				h += ' class="mceItemWindowsMedia"';

+				break;

+

+			case "rmp":

+				h += ' class="mceItemRealMedia"';

+				break;

+		}

+

+		h += ' title="' + serializeParameters() + '"';

+		h += ' width="' + f.width.value + '"';

+		h += ' height="' + f.height.value + '"';

+		h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';

+

+		h += ' />';

+

+		tinyMCE.selectedInstance.execCommand('mceInsertContent', false, h);

+	}

+

+	tinyMCEPopup.close();

+}

+

+function getMediaListHTML() {

+	if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {

+		var html = "";

+

+		html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.src.value=this.options[this.selectedIndex].value;">';

+		html += '<option value="">---</option>';

+

+		for (var i=0; i<tinyMCEMediaList.length; i++)

+			html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';

+

+		html += '</select>';

+

+		return html;

+	}

+

+	return "";

+}

+

+function getType(v) {

+	var fo, i, c, el, x, f = document.forms[0];

+

+	fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');

+

+	// YouTube

+	if (v.indexOf('http://www.youtube.com/watch?v=') == 0 || v.indexOf('http://youtube.com/watch?v=') == 0) {

+		f.width.value = '425';

+		f.height.value = '350';

+

+		v = v.replace('http://youtube.com/watch?v=', '');

+		v = v.replace('http://www.youtube.com/watch?v=', '');

+

+		f.src.value = 'http://www.youtube.com/v/' + v;

+		return 'flash';

+	}

+

+	// Google video

+	if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {

+		f.width.value = '425';

+		f.height.value = '326';

+		f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';

+		return 'flash';

+	}

+

+	for (i=0; i<fo.length; i++) {

+		c = fo[i].split('=');

+

+		el = c[1].split(',');

+		for (x=0; x<el.length; x++)

+		if (v.indexOf('.' + el[x]) != -1)

+			return c[0];

+	}

+

+	return null;

+}

+

+function switchType(v) {

+	var t = getType(v), d = document, f = d.forms[0];

+

+	if (!t)

+		return;

+

+	selectByValue(d.forms[0], 'media_type', t);

+	changedType(t);

+

+	// Update qtsrc also

+	if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {

+		alert(tinyMCE.getLang("lang_media_qt_stream_warn"));

+

+		if (f.qt_qtsrc.value == '')

+			f.qt_qtsrc.value = f.src.value;

+	}

+}

+

+function changedType(t) {

+	var d = document;

+

+	d.getElementById('flash_options').style.display = 'none';

+	d.getElementById('qt_options').style.display = 'none';

+	d.getElementById('shockwave_options').style.display = 'none';

+	d.getElementById('wmp_options').style.display = 'none';

+	d.getElementById('rmp_options').style.display = 'none';

+	d.getElementById(t + '_options').style.display = 'block';

+}

+

+function serializeParameters() {

+	var d = document, f = d.forms[0], s = '';

+

+	switch (f.media_type.options[f.media_type.selectedIndex].value) {

+		case "flash":

+			s += getBool('flash', 'play', true);

+			s += getBool('flash', 'loop', true);

+			s += getBool('flash', 'menu', true);

+			s += getBool('flash', 'swliveconnect', false);

+			s += getStr('flash', 'quality');

+			s += getStr('flash', 'scale');

+			s += getStr('flash', 'salign');

+			s += getStr('flash', 'wmode');

+			s += getStr('flash', 'base');

+			s += getStr('flash', 'flashvars');

+		break;

+

+		case "qt":

+			s += getBool('qt', 'loop', false);

+			s += getBool('qt', 'autoplay', true);

+			s += getBool('qt', 'cache', false);

+			s += getBool('qt', 'controller', true);

+			s += getBool('qt', 'correction', false, 'none', 'full');

+			s += getBool('qt', 'enablejavascript', false);

+			s += getBool('qt', 'kioskmode', false);

+			s += getBool('qt', 'autohref', false);

+			s += getBool('qt', 'playeveryframe', false);

+			s += getBool('qt', 'targetcache', false);

+			s += getStr('qt', 'scale');

+			s += getStr('qt', 'starttime');

+			s += getStr('qt', 'endtime');

+			s += getStr('qt', 'target');

+			s += getStr('qt', 'qtsrcchokespeed');

+			s += getStr('qt', 'volume');

+			s += getStr('qt', 'qtsrc');

+		break;

+

+		case "shockwave":

+			s += getBool('shockwave', 'sound');

+			s += getBool('shockwave', 'progress');

+			s += getBool('shockwave', 'autostart');

+			s += getBool('shockwave', 'swliveconnect');

+			s += getStr('shockwave', 'swvolume');

+			s += getStr('shockwave', 'swstretchstyle');

+			s += getStr('shockwave', 'swstretchhalign');

+			s += getStr('shockwave', 'swstretchvalign');

+		break;

+

+		case "wmp":

+			s += getBool('wmp', 'autostart', true);

+			s += getBool('wmp', 'enabled', false);

+			s += getBool('wmp', 'enablecontextmenu', true);

+			s += getBool('wmp', 'fullscreen', false);

+			s += getBool('wmp', 'invokeurls', true);

+			s += getBool('wmp', 'mute', false);

+			s += getBool('wmp', 'stretchtofit', false);

+			s += getBool('wmp', 'windowlessvideo', false);

+			s += getStr('wmp', 'balance');

+			s += getStr('wmp', 'baseurl');

+			s += getStr('wmp', 'captioningid');

+			s += getStr('wmp', 'currentmarker');

+			s += getStr('wmp', 'currentposition');

+			s += getStr('wmp', 'defaultframe');

+			s += getStr('wmp', 'playcount');

+			s += getStr('wmp', 'rate');

+			s += getStr('wmp', 'uimode');

+			s += getStr('wmp', 'volume');

+		break;

+

+		case "rmp":

+			s += getBool('rmp', 'autostart', false);

+			s += getBool('rmp', 'loop', false);

+			s += getBool('rmp', 'autogotourl', true);

+			s += getBool('rmp', 'center', false);

+			s += getBool('rmp', 'imagestatus', true);

+			s += getBool('rmp', 'maintainaspect', false);

+			s += getBool('rmp', 'nojava', false);

+			s += getBool('rmp', 'prefetch', false);

+			s += getBool('rmp', 'shuffle', false);

+			s += getStr('rmp', 'console');

+			s += getStr('rmp', 'controls');

+			s += getStr('rmp', 'numloop');

+			s += getStr('rmp', 'scriptcallbacks');

+		break;

+	}

+

+	s += getStr(null, 'id');

+	s += getStr(null, 'name');

+	s += getStr(null, 'src');

+	s += getStr(null, 'align');

+	s += getStr(null, 'bgcolor');

+	s += getInt(null, 'vspace');

+	s += getInt(null, 'hspace');

+	s += getStr(null, 'width');

+	s += getStr(null, 'height');

+

+	s = s.length > 0 ? s.substring(0, s.length - 1) : s;

+

+	return s;

+}

+

+function setBool(pl, p, n) {

+	if (typeof(pl[n]) == "undefined")

+		return;

+

+	document.forms[0].elements[p + "_" + n].checked = pl[n];

+}

+

+function setStr(pl, p, n) {

+	var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];

+

+	if (typeof(pl[n]) == "undefined")

+		return;

+

+	if (e.type == "text")

+		e.value = pl[n];

+	else

+		selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);

+}

+

+function getBool(p, n, d, tv, fv) {

+	var v = document.forms[0].elements[p + "_" + n].checked;

+

+	tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";

+	fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";

+

+	return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');

+}

+

+function getStr(p, n, d) {

+	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];

+	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;

+

+	return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");

+}

+

+function getInt(p, n, d) {

+	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];

+	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;

+

+	return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");

+}

+

+function jsEncode(s) {

+	s = s.replace(new RegExp('\\\\', 'g'), '\\\\');

+	s = s.replace(new RegExp('"', 'g'), '\\"');

+	s = s.replace(new RegExp("'", 'g'), "\\'");

+

+	return s;

+}

+

+function generatePreview(c) {

+	var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;

+

+	p.innerHTML = '<!-- x --->';

+

+	nw = parseInt(f.width.value);

+	nh = parseInt(f.height.value);

+

+	if (f.width.value != "" && f.height.value != "") {

+		if (f.constrain.checked) {

+			if (c == 'width' && oldWidth != 0) {

+				wp = nw / oldWidth;

+				nh = Math.round(wp * nh);

+				f.height.value = nh;

+			} else if (c == 'height' && oldHeight != 0) {

+				hp = nh / oldHeight;

+				nw = Math.round(hp * nw);

+				f.width.value = nw;

+			}

+		}

+	}

+

+	if (f.width.value != "")

+		oldWidth = nw;

+

+	if (f.height.value != "")

+		oldHeight = nh;

+

+	// After constrain

+	pl = serializeParameters();

+

+	switch (f.media_type.options[f.media_type.selectedIndex].value) {

+		case "flash":

+			cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';

+			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';

+			type = 'application/x-shockwave-flash';

+			break;

+

+		case "shockwave":

+			cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';

+			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';

+			type = 'application/x-director';

+			break;

+

+		case "qt":

+			cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';

+			codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';

+			type = 'video/quicktime';

+			break;

+

+		case "wmp":

+			cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';

+			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';

+			type = 'application/x-mplayer2';

+			break;

+

+		case "rmp":

+			cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';

+			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';

+			type = 'audio/x-pn-realaudio-plugin';

+			break;

+	}

+

+	if (pl == '') {

+		p.innerHTML = '';

+		return;

+	}

+

+	pl = eval('x={' + pl + '};');

+

+	if (!pl.src) {

+		p.innerHTML = '';

+		return;

+	}

+

+	pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src);

+	pl.width = !pl.width ? 100 : pl.width;

+	pl.height = !pl.height ? 100 : pl.height;

+	pl.id = !pl.id ? 'obj' : pl.id;

+	pl.name = !pl.name ? 'eobj' : pl.name;

+	pl.align = !pl.align ? '' : pl.align;

+

+	h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';

+

+	for (n in pl) {

+		h += '<param name="' + n + '" value="' + pl[n] + '">';

+

+		// Add extra url parameter if it's an absolute URL

+		if (n == 'src' && pl[n].indexOf('://') != -1)

+			h += '<param name="url" value="' + pl[n] + '" />';

+	}

+

+	h += '<embed type="' + type + '" ';

+

+	for (n in pl)

+		h += n + '="' + pl[n] + '" ';

+

+	h += '></embed></object>';

+

+	p.innerHTML = "<!-- x --->" + h;

+}

 
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-}
-
-function init() {
-	var pl = "", f, val;
-	var type = "flash", fe, i;
-
-	tinyMCEPopup.resizeToInnerSize();
-	f = document.forms[0]
-
-	fe = tinyMCE.selectedInstance.getFocusElement();
-	if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {
-		pl = "x={" + fe.title + "};";
-
-		switch (tinyMCE.getAttrib(fe, 'class')) {
-			case 'mceItemFlash':
-				type = 'flash';
-				break;
-
-			case 'mceItemShockWave':
-				type = 'shockwave';
-				break;
-
-			case 'mceItemWindowsMedia':
-				type = 'wmp';
-				break;
-
-			case 'mceItemQuickTime':
-				type = 'qt';
-				break;
-
-			case 'mceItemRealMedia':
-				type = 'rmp';
-				break;
-		}
-
-		document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true); 
-	}
-
-	document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
-	document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
-	var html = getMediaListHTML('filebrowser','src','media','media');
-	if (html == "")
-		document.getElementById("linklistrow").style.display = 'none';
-	else
-		document.getElementById("linklistcontainer").innerHTML = html;
-
-	// Resize some elements
-	if (isVisible('filebrowsercontainer'))
-		document.getElementById('src').style.width = '230px';
-
-	// Setup form
-	if (pl != "") {
-		pl = eval(pl);
-
-		switch (type) {
-			case "flash":
-				setBool(pl, 'flash', 'play');
-				setBool(pl, 'flash', 'loop');
-				setBool(pl, 'flash', 'menu');
-				setBool(pl, 'flash', 'swliveconnect');
-				setStr(pl, 'flash', 'quality');
-				setStr(pl, 'flash', 'scale');
-				setStr(pl, 'flash', 'salign');
-				setStr(pl, 'flash', 'wmode');
-				setStr(pl, 'flash', 'base');
-				setStr(pl, 'flash', 'flashvars');
-			break;
-
-			case "qt":
-				setBool(pl, 'qt', 'loop');
-				setBool(pl, 'qt', 'autoplay');
-				setBool(pl, 'qt', 'cache');
-				setBool(pl, 'qt', 'controller');
-				setBool(pl, 'qt', 'correction');
-				setBool(pl, 'qt', 'enablejavascript');
-				setBool(pl, 'qt', 'kioskmode');
-				setBool(pl, 'qt', 'autohref');
-				setBool(pl, 'qt', 'playeveryframe');
-				setBool(pl, 'qt', 'tarsetcache');
-				setStr(pl, 'qt', 'scale');
-				setStr(pl, 'qt', 'starttime');
-				setStr(pl, 'qt', 'endtime');
-				setStr(pl, 'qt', 'tarset');
-				setStr(pl, 'qt', 'qtsrcchokespeed');
-				setStr(pl, 'qt', 'volume');
-				setStr(pl, 'qt', 'qtsrc');
-			break;
-
-			case "shockwave":
-				setBool(pl, 'shockwave', 'sound');
-				setBool(pl, 'shockwave', 'progress');
-				setBool(pl, 'shockwave', 'autostart');
-				setBool(pl, 'shockwave', 'swliveconnect');
-				setStr(pl, 'shockwave', 'swvolume');
-				setStr(pl, 'shockwave', 'swstretchstyle');
-				setStr(pl, 'shockwave', 'swstretchhalign');
-				setStr(pl, 'shockwave', 'swstretchvalign');
-			break;
-
-			case "wmp":
-				setBool(pl, 'wmp', 'autostart');
-				setBool(pl, 'wmp', 'enabled');
-				setBool(pl, 'wmp', 'enablecontextmenu');
-				setBool(pl, 'wmp', 'fullscreen');
-				setBool(pl, 'wmp', 'invokeurls');
-				setBool(pl, 'wmp', 'mute');
-				setBool(pl, 'wmp', 'stretchtofit');
-				setBool(pl, 'wmp', 'windowlessvideo');
-				setStr(pl, 'wmp', 'balance');
-				setStr(pl, 'wmp', 'baseurl');
-				setStr(pl, 'wmp', 'captioningid');
-				setStr(pl, 'wmp', 'currentmarker');
-				setStr(pl, 'wmp', 'currentposition');
-				setStr(pl, 'wmp', 'defaultframe');
-				setStr(pl, 'wmp', 'playcount');
-				setStr(pl, 'wmp', 'rate');
-				setStr(pl, 'wmp', 'uimode');
-				setStr(pl, 'wmp', 'volume');
-			break;
-
-			case "rmp":
-				setBool(pl, 'rmp', 'autostart');
-				setBool(pl, 'rmp', 'loop');
-				setBool(pl, 'rmp', 'autogotourl');
-				setBool(pl, 'rmp', 'center');
-				setBool(pl, 'rmp', 'imagestatus');
-				setBool(pl, 'rmp', 'maintainaspect');
-				setBool(pl, 'rmp', 'nojava');
-				setBool(pl, 'rmp', 'prefetch');
-				setBool(pl, 'rmp', 'shuffle');
-				setStr(pl, 'rmp', 'console');
-				setStr(pl, 'rmp', 'controls');
-				setStr(pl, 'rmp', 'numloop');
-				setStr(pl, 'rmp', 'scriptcallbacks');
-			break;
-		}
-
-		setStr(pl, null, 'src');
-		setStr(pl, null, 'id');
-		setStr(pl, null, 'name');
-		setStr(pl, null, 'vspace');
-		setStr(pl, null, 'hspace');
-		setStr(pl, null, 'bgcolor');
-		setStr(pl, null, 'align');
-		setStr(pl, null, 'width');
-		setStr(pl, null, 'height');
-
-		if ((val = tinyMCE.getAttrib(fe, "width")) != "")
-			pl.width = f.width.value = val;
-
-		if ((val = tinyMCE.getAttrib(fe, "height")) != "")
-			pl.height = f.height.value = val;
-
-		oldWidth = pl.width ? parseInt(pl.width) : 0;
-		oldHeight = pl.height ? parseInt(pl.height) : 0;
-	} else
-		oldWidth = oldHeight = 0;
-
-	selectByValue(f, 'media_type', type);
-	changedType(type);
-	updateColor('bgcolor_pick', 'bgcolor');
-
-	TinyMCE_EditableSelects.init();
-	generatePreview();
-}
-
-function insertMedia() {
-	var fe, f = document.forms[0], h;
-
-	if (!AutoValidator.validate(f)) {
-		alert(tinyMCE.getLang('lang_invalid_data'));
-		return false;
-	}
-
-	f.width.value = f.width.value == "" ? 100 : f.width.value;
-	f.height.value = f.height.value == "" ? 100 : f.height.value;
-
-	fe = tinyMCE.selectedInstance.getFocusElement();
-	if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {
-		switch (f.media_type.options[f.media_type.selectedIndex].value) {
-			case "flash":
-				fe.className = "mceItemFlash";
-				break;
-
-			case "shockwave":
-				fe.className = "mceItemShockWave";
-				break;
-
-			case "qt":
-				fe.className = "mceItemQuickTime";
-				break;
-
-			case "wmp":
-				fe.className = "mceItemWindowsMedia";
-				break;
-
-			case "rmp":
-				fe.className = "mceItemRealMedia";
-				break;
-		}
-
-		if (fe.width != f.width.value || fe.height != f.width.height)
-			tinyMCE.selectedInstance.repaint();
-
-		fe.title = serializeParameters();
-		fe.width = f.width.value;
-		fe.height = f.height.value;
-		fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
-		fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
-		fe.align = f.align.options[f.align.selectedIndex].value;
-	} else {
-		h = '<img src="' + tinyMCE.getParam("theme_href") + '/images/spacer.gif"' ;
-
-		switch (f.media_type.options[f.media_type.selectedIndex].value) {
-			case "flash":
-				h += ' class="mceItemFlash"';
-				break;
-
-			case "shockwave":
-				h += ' class="mceItemShockWave"';
-				break;
-
-			case "qt":
-				h += ' class="mceItemQuickTime"';
-				break;
-
-			case "wmp":
-				h += ' class="mceItemWindowsMedia"';
-				break;
-
-			case "rmp":
-				h += ' class="mceItemRealMedia"';
-				break;
-		}
-
-		h += ' title="' + serializeParameters() + '"';
-		h += ' width="' + f.width.value + '"';
-		h += ' height="' + f.height.value + '"';
-		h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
-
-		h += ' />';
-
-		tinyMCE.selectedInstance.execCommand('mceInsertContent', false, h);
-	}
-
-	tinyMCEPopup.close();
-}
-
-function getMediaListHTML() {
-	if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
-		var html = "";
-
-		html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.src.value=this.options[this.selectedIndex].value;">';
-		html += '<option value="">---</option>';
-
-		for (var i=0; i<tinyMCEMediaList.length; i++)
-			html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
-
-		html += '</select>';
-
-		return html;
-	}
-
-	return "";
-}
-
-function getType(v) {
-	var fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'), i, c, el, x;
-
-	for (i=0; i<fo.length; i++) {
-		c = fo[i].split('=');
-
-		el = c[1].split(',');
-		for (x=0; x<el.length; x++)
-		if (v.indexOf('.' + el[x]) != -1)
-			return c[0];
-	}
-
-	return null;
-}
-
-function switchType(v) {
-	var t = getType(v), d = document, f = d.forms[0];
-
-	if (!t)
-		return;
-
-	selectByValue(d.forms[0], 'media_type', t);
-	changedType(t);
-
-	// Update qtsrc also
-	if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
-		alert(tinyMCE.getLang("lang_media_qt_stream_warn"));
-
-		if (f.qt_qtsrc.value == '')
-			f.qt_qtsrc.value = f.src.value;
-	}
-}
-
-function changedType(t) {
-	var d = document;
-
-	d.getElementById('flash_options').style.display = 'none';
-	d.getElementById('qt_options').style.display = 'none';
-	d.getElementById('shockwave_options').style.display = 'none';
-	d.getElementById('wmp_options').style.display = 'none';
-	d.getElementById('rmp_options').style.display = 'none';
-	d.getElementById(t + '_options').style.display = 'block';
-}
-
-function serializeParameters() {
-	var d = document, f = d.forms[0], s = '';
-
-	switch (f.media_type.options[f.media_type.selectedIndex].value) {
-		case "flash":
-			s += getBool('flash', 'play', true);
-			s += getBool('flash', 'loop', true);
-			s += getBool('flash', 'menu', true);
-			s += getBool('flash', 'swliveconnect', false);
-			s += getStr('flash', 'quality');
-			s += getStr('flash', 'scale');
-			s += getStr('flash', 'salign');
-			s += getStr('flash', 'wmode');
-			s += getStr('flash', 'base');
-			s += getStr('flash', 'flashvars');
-		break;
-
-		case "qt":
-			s += getBool('qt', 'loop', false);
-			s += getBool('qt', 'autoplay', false);
-			s += getBool('qt', 'cache', false);
-			s += getBool('qt', 'controller', true);
-			s += getBool('qt', 'correction', false, 'none', 'full');
-			s += getBool('qt', 'enablejavascript', false);
-			s += getBool('qt', 'kioskmode', false);
-			s += getBool('qt', 'autohref', false);
-			s += getBool('qt', 'playeveryframe', false);
-			s += getBool('qt', 'targetcache', false);
-			s += getStr('qt', 'scale');
-			s += getStr('qt', 'starttime');
-			s += getStr('qt', 'endtime');
-			s += getStr('qt', 'target');
-			s += getStr('qt', 'qtsrcchokespeed');
-			s += getStr('qt', 'volume');
-			s += getStr('qt', 'qtsrc');
-		break;
-
-		case "shockwave":
-			s += getBool('shockwave', 'sound');
-			s += getBool('shockwave', 'progress');
-			s += getBool('shockwave', 'autostart');
-			s += getBool('shockwave', 'swliveconnect');
-			s += getStr('shockwave', 'swvolume');
-			s += getStr('shockwave', 'swstretchstyle');
-			s += getStr('shockwave', 'swstretchhalign');
-			s += getStr('shockwave', 'swstretchvalign');
-		break;
-
-		case "wmp":
-			s += getBool('wmp', 'autostart', true);
-			s += getBool('wmp', 'enabled', false);
-			s += getBool('wmp', 'enablecontextmenu', true);
-			s += getBool('wmp', 'fullscreen', false);
-			s += getBool('wmp', 'invokeurls', true);
-			s += getBool('wmp', 'mute', false);
-			s += getBool('wmp', 'stretchtofit', false);
-			s += getBool('wmp', 'windowlessvideo', false);
-			s += getStr('wmp', 'balance');
-			s += getStr('wmp', 'baseurl');
-			s += getStr('wmp', 'captioningid');
-			s += getStr('wmp', 'currentmarker');
-			s += getStr('wmp', 'currentposition');
-			s += getStr('wmp', 'defaultframe');
-			s += getStr('wmp', 'playcount');
-			s += getStr('wmp', 'rate');
-			s += getStr('wmp', 'uimode');
-			s += getStr('wmp', 'volume');
-		break;
-
-		case "rmp":
-			s += getBool('rmp', 'autostart', false);
-			s += getBool('rmp', 'loop', false);
-			s += getBool('rmp', 'autogotourl', true);
-			s += getBool('rmp', 'center', false);
-			s += getBool('rmp', 'imagestatus', true);
-			s += getBool('rmp', 'maintainaspect', false);
-			s += getBool('rmp', 'nojava', false);
-			s += getBool('rmp', 'prefetch', false);
-			s += getBool('rmp', 'shuffle', false);
-			s += getStr('rmp', 'console');
-			s += getStr('rmp', 'controls');
-			s += getStr('rmp', 'numloop');
-			s += getStr('rmp', 'scriptcallbacks');
-		break;
-	}
-
-	s += getStr(null, 'id');
-	s += getStr(null, 'name');
-	s += getStr(null, 'src');
-	s += getStr(null, 'align');
-	s += getStr(null, 'bgcolor');
-	s += getInt(null, 'vspace');
-	s += getInt(null, 'hspace');
-	s += getStr(null, 'width');
-	s += getStr(null, 'height');
-
-	s = s.length > 0 ? s.substring(0, s.length - 1) : s;
-
-	return s;
-}
-
-function setBool(pl, p, n) {
-	if (typeof(pl[n]) == "undefined")
-		return;
-
-	document.forms[0].elements[p + "_" + n].checked = pl[n];
-}
-
-function setStr(pl, p, n) {
-	var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
-
-	if (typeof(pl[n]) == "undefined")
-		return;
-
-	if (e.type == "text")
-		e.value = pl[n];
-	else
-		selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
-}
-
-function getBool(p, n, d, tv, fv) {
-	var v = document.forms[0].elements[p + "_" + n].checked;
-
-	tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
-	fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
-
-	return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');
-}
-
-function getStr(p, n, d) {
-	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
-	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
-
-	return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
-}
-
-function getInt(p, n, d) {
-	var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
-	var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
-
-	return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
-}
-
-function jsEncode(s) {
-	s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
-	s = s.replace(new RegExp('"', 'g'), '\\"');
-	s = s.replace(new RegExp("'", 'g'), "\\'");
-
-	return s;
-}
-
-function generatePreview(c) {
-	var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
-
-	p.innerHTML = '<!-- x --->';
-
-	nw = parseInt(f.width.value);
-	nh = parseInt(f.height.value);
-
-	if (f.width.value != "" && f.height.value != "") {
-		if (f.constrain.checked) {
-			if (c == 'width' && oldWidth != 0) {
-				wp = nw / oldWidth;
-				nh = Math.round(wp * nh);
-				f.height.value = nh;
-			} else if (c == 'height' && oldHeight != 0) {
-				hp = nh / oldHeight;
-				nw = Math.round(hp * nw);
-				f.width.value = nw;
-			}
-		}
-	}
-
-	if (f.width.value != "")
-		oldWidth = nw;
-
-	if (f.height.value != "")
-		oldHeight = nh;
-
-	// After constrain
-	pl = serializeParameters();
-
-	switch (f.media_type.options[f.media_type.selectedIndex].value) {
-		case "flash":
-			cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
-			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
-			type = 'application/x-shockwave-flash';
-			break;
-
-		case "shockwave":
-			cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
-			codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
-			type = 'application/x-director';
-			break;
-
-		case "qt":
-			cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
-			codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
-			type = 'video/quicktime';
-			break;
-
-		case "wmp":
-			cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
-			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
-			type = 'application/x-mplayer2';
-			break;
-
-		case "rmp":
-			cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
-			codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
-			type = 'audio/x-pn-realaudio-plugin';
-			break;
-	}
-
-	if (pl == '') {
-		p.innerHTML = '';
-		return;
-	}
-
-	pl = eval('x={' + pl + '};');
-
-	if (!pl.src) {
-		p.innerHTML = '';
-		return;
-	}
-
-	pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src);
-	pl.width = !pl.width ? 100 : pl.width;
-	pl.height = !pl.height ? 100 : pl.height;
-	pl.id = !pl.id ? 'obj' : pl.id;
-	pl.name = !pl.name ? 'eobj' : pl.name;
-	pl.align = !pl.align ? '' : pl.align;
-
-	h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
-
-	for (n in pl) {
-		h += '<param name="' + n + '" value="' + pl[n] + '">';
-
-		// Add extra url parameter if it's an absolute URL
-		if (n == 'src' && pl[n].indexOf('://') != -1)
-			h += '<param name="url" value="' + pl[n] + '" />';
-	}
-
-	h += '<embed type="' + type + '" ';
-
-	for (n in pl)
-		h += n + '="' + pl[n] + '" ';
-
-	h += '></embed></object>';
-
-	p.innerHTML = "<!-- x --->" + h;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/langs/en.js
@@ -1,94 +1,94 @@
-// UK lang variables
-
-tinyMCE.addToLang('media',{
-title : 'Insert / edit embedded media',
-desc : 'Insert / edit embedded media',
-general : 'General',
-advanced : 'Advanced',
-file : 'File',
-list : 'List',
-size : 'Dimensions',
-preview : 'Preview',
-constrain_proportions : 'Constrain proportions',
-type : 'Type',
-id : 'Id',
-name : 'Name',
-class_name : 'Class',
-vspace : 'V-Space',
-hspace : 'H-Space',
-play : 'Auto play',
-loop : 'Loop',
-menu : 'Show menu',
-quality : 'Quality',
-scale : 'Scale',
-align : 'Align',
-salign : 'SAlign',
-wmode : 'WMode',
-bgcolor : 'Background',
-base : 'Base',
-flashvars : 'Flashvars',
-liveconnect : 'SWLiveConnect',
-autohref : 'AutoHREF',
-cache : 'Cache',
-hidden : 'Hidden',
-controller : 'Controller',
-kioskmode : 'Kiosk mode',
-playeveryframe : 'Play every frame',
-targetcache : 'Target cache',
-correction : 'No correction',
-enablejavascript : 'Enable JavaScript',
-starttime : 'Start time',
-endtime : 'End time',
-href : 'Href',
-qtsrcchokespeed : 'Choke speed',
-target : 'Target',
-volume : 'Volume',
-autostart : 'Auto start',
-enabled : 'Enabled',
-fullscreen : 'Fullscreen',
-invokeurls : 'Invoke URLs',
-mute : 'Mute',
-stretchtofit : 'Stretch to fit',
-windowlessvideo : 'Windowless video',
-balance : 'Balance',
-baseurl : 'Base URL',
-captioningid : 'Captioning id',
-currentmarker : 'Current marker',
-currentposition : 'Current position',
-defaultframe : 'Default frame',
-playcount : 'Play count',
-rate : 'Rate',
-uimode : 'UI Mode',
-flash_options : 'Flash options',
-qt_options : 'Quicktime options',
-wmp_options : 'Windows media player options',
-rmp_options : 'Real media player options',
-shockwave_options : 'Shockwave options',
-autogotourl : 'Auto goto URL',
-center : 'Center',
-imagestatus : 'Image status',
-maintainaspect : 'Maintain aspect',
-nojava : 'No java',
-prefetch : 'Prefetch',
-shuffle : 'Shuffle',
-console : 'Console',
-numloop : 'Num loops',
-controls : 'Controls',
-scriptcallbacks : 'Script callbacks',
-swstretchstyle : 'Stretch style',
-swstretchhalign : 'Stretch H-Align',
-swstretchvalign : 'Stretch V-Align',
-sound : 'Sound',
-progress : 'Progress',
-qtsrc : 'QT Src',
-qt_stream_warn : 'Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..',
-align_top : 'Top',
-align_right : 'Right',
-align_bottom : 'Bottom',
-align_left : 'Left',
-align_center : 'Center',
-align_top_left : 'Top left',
-align_top_right : 'Top right',
-align_bottom_left : 'Bottom left',
-align_bottom_right : 'Bottom right'
+// UK lang variables

+

+tinyMCE.addToLang('media',{

+title : 'Insert / edit embedded media',

+desc : 'Insert / edit embedded media',

+general : 'General',

+advanced : 'Advanced',

+file : 'File/URL',

+list : 'List',

+size : 'Dimensions',

+preview : 'Preview',

+constrain_proportions : 'Constrain proportions',

+type : 'Type',

+id : 'Id',

+name : 'Name',

+class_name : 'Class',

+vspace : 'V-Space',

+hspace : 'H-Space',

+play : 'Auto play',

+loop : 'Loop',

+menu : 'Show menu',

+quality : 'Quality',

+scale : 'Scale',

+align : 'Align',

+salign : 'SAlign',

+wmode : 'WMode',

+bgcolor : 'Background',

+base : 'Base',

+flashvars : 'Flashvars',

+liveconnect : 'SWLiveConnect',

+autohref : 'AutoHREF',

+cache : 'Cache',

+hidden : 'Hidden',

+controller : 'Controller',

+kioskmode : 'Kiosk mode',

+playeveryframe : 'Play every frame',

+targetcache : 'Target cache',

+correction : 'No correction',

+enablejavascript : 'Enable JavaScript',

+starttime : 'Start time',

+endtime : 'End time',

+href : 'Href',

+qtsrcchokespeed : 'Choke speed',

+target : 'Target',

+volume : 'Volume',

+autostart : 'Auto start',

+enabled : 'Enabled',

+fullscreen : 'Fullscreen',

+invokeurls : 'Invoke URLs',

+mute : 'Mute',

+stretchtofit : 'Stretch to fit',

+windowlessvideo : 'Windowless video',

+balance : 'Balance',

+baseurl : 'Base URL',

+captioningid : 'Captioning id',

+currentmarker : 'Current marker',

+currentposition : 'Current position',

+defaultframe : 'Default frame',

+playcount : 'Play count',

+rate : 'Rate',

+uimode : 'UI Mode',

+flash_options : 'Flash options',

+qt_options : 'Quicktime options',

+wmp_options : 'Windows media player options',

+rmp_options : 'Real media player options',

+shockwave_options : 'Shockwave options',

+autogotourl : 'Auto goto URL',

+center : 'Center',

+imagestatus : 'Image status',

+maintainaspect : 'Maintain aspect',

+nojava : 'No java',

+prefetch : 'Prefetch',

+shuffle : 'Shuffle',

+console : 'Console',

+numloop : 'Num loops',

+controls : 'Controls',

+scriptcallbacks : 'Script callbacks',

+swstretchstyle : 'Stretch style',

+swstretchhalign : 'Stretch H-Align',

+swstretchvalign : 'Stretch V-Align',

+sound : 'Sound',

+progress : 'Progress',

+qtsrc : 'QT Src',

+qt_stream_warn : 'Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..',

+align_top : 'Top',

+align_right : 'Right',

+align_bottom : 'Bottom',

+align_left : 'Left',

+align_center : 'Center',

+align_top_left : 'Top left',

+align_top_right : 'Top right',

+align_bottom_left : 'Bottom left',

+align_bottom_right : 'Bottom right'

 });

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/langs/en_dlg.js
+++ /dev/null
@@ -1,103 +1,1 @@
-tinyMCE.addI18n('en.media_dlg',{
-title:"Insert / edit embedded media",
-general:"General",
-advanced:"Advanced",
-file:"File/URL",
-list:"List",
-size:"Dimensions",
-preview:"Preview",
-constrain_proportions:"Constrain proportions",
-type:"Type",
-id:"Id",
-name:"Name",
-class_name:"Class",
-vspace:"V-Space",
-hspace:"H-Space",
-play:"Auto play",
-loop:"Loop",
-menu:"Show menu",
-quality:"Quality",
-scale:"Scale",
-align:"Align",
-salign:"SAlign",
-wmode:"WMode",
-bgcolor:"Background",
-base:"Base",
-flashvars:"Flashvars",
-liveconnect:"SWLiveConnect",
-autohref:"AutoHREF",
-cache:"Cache",
-hidden:"Hidden",
-controller:"Controller",
-kioskmode:"Kiosk mode",
-playeveryframe:"Play every frame",
-targetcache:"Target cache",
-correction:"No correction",
-enablejavascript:"Enable JavaScript",
-starttime:"Start time",
-endtime:"End time",
-href:"Href",
-qtsrcchokespeed:"Choke speed",
-target:"Target",
-volume:"Volume",
-autostart:"Auto start",
-enabled:"Enabled",
-fullscreen:"Fullscreen",
-invokeurls:"Invoke URLs",
-mute:"Mute",
-stretchtofit:"Stretch to fit",
-windowlessvideo:"Windowless video",
-balance:"Balance",
-baseurl:"Base URL",
-captioningid:"Captioning id",
-currentmarker:"Current marker",
-currentposition:"Current position",
-defaultframe:"Default frame",
-playcount:"Play count",
-rate:"Rate",
-uimode:"UI Mode",
-flash_options:"Flash options",
-qt_options:"Quicktime options",
-wmp_options:"Windows media player options",
-rmp_options:"Real media player options",
-shockwave_options:"Shockwave options",
-autogotourl:"Auto goto URL",
-center:"Center",
-imagestatus:"Image status",
-maintainaspect:"Maintain aspect",
-nojava:"No java",
-prefetch:"Prefetch",
-shuffle:"Shuffle",
-console:"Console",
-numloop:"Num loops",
-controls:"Controls",
-scriptcallbacks:"Script callbacks",
-swstretchstyle:"Stretch style",
-swstretchhalign:"Stretch H-Align",
-swstretchvalign:"Stretch V-Align",
-sound:"Sound",
-progress:"Progress",
-qtsrc:"QT Src",
-qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",
-align_top:"Top",
-align_right:"Right",
-align_bottom:"Bottom",
-align_left:"Left",
-align_center:"Center",
-align_top_left:"Top left",
-align_top_right:"Top right",
-align_bottom_left:"Bottom left",
-align_bottom_right:"Bottom right",
-flv_options:"Flash video options",
-flv_scalemode:"Scale mode",
-flv_buffer:"Buffer",
-flv_startimage:"Start image",
-flv_starttime:"Start time",
-flv_defaultvolume:"Default volumne",
-flv_hiddengui:"Hidden GUI",
-flv_autostart:"Auto start",
-flv_loop:"Loop",
-flv_showscalemodes:"Show scale modes",
-flv_smoothvideo:"Smooth video",
-flv_jscallback:"JS Callback"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/media/media.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/media/media.htm
@@ -1,825 +1,724 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#media_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/media.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/validate.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<link href="css/media.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body style="display: none">
-    <form onsubmit="insertMedia();return false;" action="#">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_media_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/media.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<link href="css/media.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+    <form onsubmit="insertMedia();return false;" action="#">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{$lang_media_general}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_media_advanced}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_media_general}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+							<tr>

+								<td><label for="media_type">{$lang_media_type}</label></td>

+								<td>

+									<select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">

+										<option value="flash">Flash</option>

+										<option value="qt">Quicktime</option>

+										<option value="shockwave">Shockwave</option>

+										<option value="wmp">Windows Media</option>

+										<option value="rmp">Real Media</option>

+									</select>

+								</td>

+							</tr>

+							<tr>

+							<td><label for="src">{$lang_media_file}</label></td>

+							  <td>

+									<table border="0" cellspacing="0" cellpadding="0">

+									  <tr>

+										<td><input id="src" name="src" type="text" value="" onchange="switchType(this.value);generatePreview();" /></td>

+										<td id="filebrowsercontainer">&nbsp;</td>

+									  </tr>

+									</table>

+								</td>

+							</tr>

+							<tr id="linklistrow">

+								<td><label for="linklist">{$lang_media_list}</label></td>

+								<td id="linklistcontainer">&nbsp;</td>

+							</tr>

+							<tr>

+								<td><label for="width">{$lang_media_size}</label></td>

+								<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size"  onchange="generatePreview('height');" /></td>

+										<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>

+										<td><label id="constrainlabel" for="constrain">{$lang_media_constrain_proportions}</label></td>

+									</tr>

+								</table>

+							</tr>

+					</table>

+				</fieldset>

+

+				<fieldset>

+					<legend>{$lang_media_preview}</legend>

+					<div id="prev"></div>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_media_advanced}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0" width="100%">

+						<tr>

+							<td><label for="id">{$lang_media_id}</label></td>

+							<td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>

+							<td><label for="name">{$lang_media_name}</label></td>

+							<td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="align">{$lang_media_align}</label></td>

+							<td>

+								<select id="align" name="align" onchange="generatePreview();">

+									<option value="">{$lang_not_set}</option> 

+									<option value="top">{$lang_media_align_top}</option>

+									<option value="right">{$lang_media_align_right}</option>

+									<option value="bottom">{$lang_media_align_bottom}</option>

+									<option value="left">{$lang_media_align_left}</option>

+								</select>

+							</td>

+

+							<td><label for="bgcolor">{$lang_media_bgcolor}</label></td>

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>

+										<td id="bgcolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="vspace">{$lang_media_vspace}</label></td>

+							<td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>

+							<td><label for="hspace">{$lang_media_hspace}</label></td>

+							<td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset id="flash_options">

+					<legend>{$lang_media_flash_options}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td><label for="flash_quality">{$lang_media_quality}</label></td>

+							<td>

+								<select id="flash_quality" name="flash_quality" onchange="generatePreview();">

+									<option value="">{$lang_not_set}</option> 

+									<option value="high">high</option>

+									<option value="low">low</option>

+									<option value="autolow">autolow</option>

+									<option value="autohigh">autohigh</option>

+									<option value="best">best</option>

+								</select>

+							</td>

+

+							<td><label for="flash_scale">{$lang_media_scale}</label></td>

+							<td>

+								<select id="flash_scale" name="flash_scale" onchange="generatePreview();">

+									<option value="">{$lang_not_set}</option> 

+									<option value="showall">showall</option>

+									<option value="noborder">noborder</option>

+									<option value="exactfit">exactfit</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="flash_wmode">{$lang_media_wmode}</label></td>

+							<td>

+								<select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">

+									<option value="">{$lang_not_set}</option> 

+									<option value="window">window</option>

+									<option value="opaque">opaque</option>

+									<option value="transparent">transparent</option>

+								</select>

+							</td>

+

+							<td><label for="flash_salign">{$lang_media_salign}</label></td>

+							<td>

+								<select id="flash_salign" name="flash_salign" onchange="generatePreview();">

+									<option value="">{$lang_not_set}</option> 

+									<option value="l">{$lang_media_align_left}</option>

+									<option value="t">{$lang_media_align_top}</option>

+									<option value="r">{$lang_media_align_right}</option>

+									<option value="b">{$lang_media_align_bottom}</option>

+									<option value="tl">{$lang_media_align_top_left}</option>

+									<option value="tr">{$lang_media_align_top_right}</option>

+									<option value="bl">{$lang_media_align_bottom_left}</option>

+									<option value="br">{$lang_media_align_bottom_right}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="flash_play">{$lang_media_play}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="flash_loop">{$lang_media_loop}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="flash_menu">{$lang_media_menu}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>

+										<td><label for="flash_swliveconnect">{$lang_media_liveconnect}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+					</table>

+

+					<table>

+						<tr>

+							<td><label for="flash_base">{$lang_media_base}</label></td>

+							<td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="flash_flashvars">{$lang_media_flashvars}</label></td>

+							<td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset id="qt_options">

+					<legend>{$lang_media_qt_options}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>

+										<td><label for="qt_loop">{$lang_media_loop}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="qt_autoplay">{$lang_media_play}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>

+										<td><label for="qt_cache">{$lang_media_cache}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="qt_controller">{$lang_media_controller}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>

+										<td><label for="qt_correction">{$lang_media_correction}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>

+										<td><label for="qt_enablejavascript">{$lang_media_enablejavascript}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>

+										<td><label for="qt_kioskmode">{$lang_media_kioskmode}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>

+										<td><label for="qt_autohref">{$lang_media_autohref}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>

+										<td><label for="qt_playeveryframe">{$lang_media_playeveryframe}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>

+										<td><label for="qt_targetcache">{$lang_media_targetcache}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="qt_scale">{$lang_media_scale}</label></td>

+							<td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">

+									<option value="">{$lang_not_set}</option> 

+									<option value="tofit">tofit</option>

+									<option value="aspect">aspect</option>

+								</select>

+							</td>

+

+							<td colspan="2">&nbsp;</td>

+						</tr>

+

+						<tr>

+							<td><label for="qt_starttime">{$lang_media_starttime}</label></td>

+							<td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>

+

+							<td><label for="qt_endtime">{$lang_media_endtime}</label></td>

+							<td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="qt_target">{$lang_media_target}</label></td>

+							<td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>

+

+							<td><label for="qt_href">{$lang_media_href}</label></td>

+							<td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="qt_qtsrcchokespeed">{$lang_media_qtsrcchokespeed}</label></td>

+							<td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>

+

+							<td><label for="qt_volume">{$lang_media_volume}</label></td>

+							<td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="qt_qtsrc">{$lang_media_qtsrc}</label></td>

+							<td colspan="4">

+							<table border="0" cellspacing="0" cellpadding="0">

+								  <tr>

+									<td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>

+									<td id="qtsrcfilebrowsercontainer">&nbsp;</td>

+								  </tr>

+							</table>

+							</td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset id="wmp_options">

+					<legend>{$lang_media_wmp_options}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="wmp_autostart">{$lang_media_autostart}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>

+										<td><label for="wmp_enabled">{$lang_media_enabled}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="wmp_enablecontextmenu">{$lang_media_menu}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>

+										<td><label for="wmp_fullscreen">{$lang_media_fullscreen}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="wmp_invokeurls">{$lang_media_invokeurls}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>

+										<td><label for="wmp_mute">{$lang_media_mute}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>

+										<td><label for="wmp_stretchtofit">{$lang_media_stretchtofit}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>

+										<td><label for="wmp_windowlessvideo">{$lang_media_windowlessvideo}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="wmp_balance">{$lang_media_balance}</label></td>

+							<td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>

+

+							<td><label for="wmp_baseurl">{$lang_media_baseurl}</label></td>

+							<td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="wmp_captioningid">{$lang_media_captioningid}</label></td>

+							<td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>

+

+							<td><label for="wmp_currentmarker">{$lang_media_currentmarker}</label></td>

+							<td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="wmp_currentposition">{$lang_media_currentposition}</label></td>

+							<td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>

+

+							<td><label for="wmp_defaultframe">{$lang_media_defaultframe}</label></td>

+							<td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="wmp_playcount">{$lang_media_playcount}</label></td>

+							<td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>

+

+							<td><label for="wmp_rate">{$lang_media_rate}</label></td>

+							<td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="wmp_uimode">{$lang_media_uimode}</label></td>

+							<td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>

+

+							<td><label for="wmp_volume">{$lang_media_volume}</label></td>

+							<td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>

+						</tr>

+

+					</table>

+				</fieldset>

+

+				<fieldset id="rmp_options">

+					<legend>{$lang_media_rmp_options}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>

+										<td><label for="rmp_autostart">{$lang_media_autostart}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>

+										<td><label for="rmp_loop">{$lang_media_loop}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="rmp_autogotourl">{$lang_media_autogotourl}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>

+										<td><label for="rmp_center">{$lang_media_center}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>

+										<td><label for="rmp_imagestatus">{$lang_media_imagestatus}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>

+										<td><label for="rmp_maintainaspect">{$lang_media_maintainaspect}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>

+										<td><label for="rmp_nojava">{$lang_media_nojava}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>

+										<td><label for="rmp_prefetch">{$lang_media_prefetch}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>

+										<td><label for="rmp_shuffle">{$lang_media_shuffle}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								&nbsp;

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="rmp_console">{$lang_media_console}</label></td>

+							<td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>

+

+							<td><label for="rmp_controls">{$lang_media_controls}</label></td>

+							<td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="rmp_numloop">{$lang_media_numloop}</label></td>

+							<td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>

+

+							<td><label for="rmp_scriptcallbacks">{$lang_media_scriptcallbacks}</label></td>

+							<td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>

+						</tr>

+					</table>

+				</fieldset>

+

+				<fieldset id="shockwave_options">

+					<legend>{$lang_media_shockwave_options}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td><label for="shockwave_swstretchstyle">{$lang_media_swstretchstyle}</label></td>

+							<td>

+								<select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">

+									<option value="none">{$lang_not_set}</option>

+									<option value="meet">Meet</option>

+									<option value="fill">Fill</option>

+									<option value="stage">Stage</option>

+								</select>

+							</td>

+

+							<td><label for="shockwave_swvolume">{$lang_media_volume}</label></td>

+							<td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>

+						</tr>

+

+						<tr>

+							<td><label for="shockwave_swstretchhalign">{$lang_media_swstretchhalign}</label></td>

+							<td>

+								<select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">

+									<option value="none">{$lang_not_set}</option>

+									<option value="left">{$lang_media_align_left}</option>

+									<option value="center">{$lang_media_align_center}</option>

+									<option value="right">{$lang_media_align_right}</option>

+								</select>

+							</td>

+

+							<td><label for="shockwave_swstretchvalign">{$lang_media_swstretchvalign}</label></td>

+							<td>

+								<select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">

+									<option value="none">{$lang_not_set}</option>

+									<option value="meet">Meet</option>

+									<option value="fill">Fill</option>

+									<option value="stage">Stage</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>

+										<td><label for="shockwave_autostart">{$lang_media_autostart}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>

+										<td><label for="shockwave_sound">{$lang_media_sound}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+

+

+						<tr>

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>

+										<td><label for="shockwave_swliveconnect">{$lang_media_liveconnect}</label></td>

+									</tr>

+								</table>

+							</td>

+

+							<td colspan="2">

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>

+										<td><label for="shockwave_progress">{$lang_media_progress}</label></td>

+									</tr>

+								</table>

+							</td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertMedia();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-					<legend>{#media_dlg.general}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-							<tr>
-								<td><label for="media_type">{#media_dlg.type}</label></td>
-								<td>
-									<select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">
-										<option value="flash">Flash</option>
-										<!-- <option value="flv">Flash video (FLV)</option> -->
-										<option value="qt">Quicktime</option>
-										<option value="shockwave">Shockwave</option>
-										<option value="wmp">Windows Media</option>
-										<option value="rmp">Real Media</option>
-									</select>
-								</td>
-							</tr>
-							<tr>
-							<td><label for="src">{#media_dlg.file}</label></td>
-							  <td>
-									<table border="0" cellspacing="0" cellpadding="0">
-									  <tr>
-										<td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="switchType(this.value);generatePreview();" /></td>
-										<td id="filebrowsercontainer">&nbsp;</td>
-									  </tr>
-									</table>
-								</td>
-							</tr>
-							<tr id="linklistrow">
-								<td><label for="linklist">{#media_dlg.list}</label></td>
-								<td id="linklistcontainer">&nbsp;</td>
-							</tr>
-							<tr>
-								<td><label for="width">{#media_dlg.size}</label></td>
-								<td>
-									<table border="0" cellpadding="0" cellspacing="0">
-										<tr>
-											<td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size"  onchange="generatePreview('height');" /></td>
-											<td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
-											<td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>
-										</tr>
-									</table>
-								</td>
-							</tr>
-					</table>
-				</fieldset>
-
-				<fieldset>
-					<legend>{#media_dlg.preview}</legend>
-					<div id="prev"></div>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-				<fieldset>
-					<legend>{#media_dlg.advanced}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0" width="100%">
-						<tr>
-							<td><label for="id">{#media_dlg.id}</label></td>
-							<td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
-							<td><label for="name">{#media_dlg.name}</label></td>
-							<td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="align">{#media_dlg.align}</label></td>
-							<td>
-								<select id="align" name="align" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="top">{#media_dlg.align_top}</option>
-									<option value="right">{#media_dlg.align_right}</option>
-									<option value="bottom">{#media_dlg.align_bottom}</option>
-									<option value="left">{#media_dlg.align_left}</option>
-								</select>
-							</td>
-
-							<td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>
-										<td id="bgcolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="vspace">{#media_dlg.vspace}</label></td>
-							<td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
-							<td><label for="hspace">{#media_dlg.hspace}</label></td>
-							<td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset id="flash_options">
-					<legend>{#media_dlg.flash_options}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td><label for="flash_quality">{#media_dlg.quality}</label></td>
-							<td>
-								<select id="flash_quality" name="flash_quality" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="high">high</option>
-									<option value="low">low</option>
-									<option value="autolow">autolow</option>
-									<option value="autohigh">autohigh</option>
-									<option value="best">best</option>
-								</select>
-							</td>
-
-							<td><label for="flash_scale">{#media_dlg.scale}</label></td>
-							<td>
-								<select id="flash_scale" name="flash_scale" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="showall">showall</option>
-									<option value="noborder">noborder</option>
-									<option value="exactfit">exactfit</option>
-									<option value="noscale">noscale</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="flash_wmode">{#media_dlg.wmode}</label></td>
-							<td>
-								<select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="window">window</option>
-									<option value="opaque">opaque</option>
-									<option value="transparent">transparent</option>
-								</select>
-							</td>
-
-							<td><label for="flash_salign">{#media_dlg.salign}</label></td>
-							<td>
-								<select id="flash_salign" name="flash_salign" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="l">{#media_dlg.align_left}</option>
-									<option value="t">{#media_dlg.align_top}</option>
-									<option value="r">{#media_dlg.align_right}</option>
-									<option value="b">{#media_dlg.align_bottom}</option>
-									<option value="tl">{#media_dlg.align_top_left}</option>
-									<option value="tr">{#media_dlg.align_top_right}</option>
-									<option value="bl">{#media_dlg.align_bottom_left}</option>
-									<option value="br">{#media_dlg.align_bottom_right}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flash_play">{#media_dlg.play}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flash_loop">{#media_dlg.loop}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flash_menu">{#media_dlg.menu}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>
-										<td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-
-					<table>
-						<tr>
-							<td><label for="flash_base">{#media_dlg.base}</label></td>
-							<td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>
-							<td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset id="flv_options">
-					<legend>{#media_dlg.flv_options}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td><label for="flv_scalemode">{#media_dlg.flv_scalemode}</label></td>
-							<td>
-								<select id="flv_scalemode" name="flv_scalemode" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="none">none</option>
-									<option value="double">double</option>
-									<option value="full">full</option>
-								</select>
-							</td>
-
-							<td><label for="flv_buffer">{#media_dlg.flv_buffer}</label></td>
-							<td><input type="text" id="flv_buffer" name="flv_buffer" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="flv_startimage">{#media_dlg.flv_startimage}</label></td>
-							<td><input type="text" id="flv_startimage" name="flv_startimage" onchange="generatePreview();" /></td>
-
-							<td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>
-							<td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>
-							<td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>
-
-							<td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>
-							<td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flv_hiddengui" name="flv_hiddengui" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flv_hiddengui">{#media_dlg.flv_hiddengui}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flv_autostart" name="flv_autostart" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flv_autostart">{#media_dlg.flv_autostart}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flv_loop" name="flv_loop" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flv_loop">{#media_dlg.flv_loop}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flv_showscalemodes" name="flv_showscalemodes" onchange="generatePreview();" /></td>
-										<td><label for="flv_showscalemodes">{#media_dlg.flv_showscalemodes}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flv_smoothvideo" name="flash_flv_flv_smoothvideosmoothvideo" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="flv_smoothvideo">{#media_dlg.flv_smoothvideo}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="flv_jscallback" name="flv_jscallback" onchange="generatePreview();" /></td>
-										<td><label for="flv_jscallback">{#media_dlg.flv_jscallback}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset id="qt_options">
-					<legend>{#media_dlg.qt_options}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>
-										<td><label for="qt_loop">{#media_dlg.loop}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="qt_autoplay">{#media_dlg.play}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>
-										<td><label for="qt_cache">{#media_dlg.cache}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="qt_controller">{#media_dlg.controller}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>
-										<td><label for="qt_correction">{#media_dlg.correction}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>
-										<td><label for="qt_enablejavascript">{#media_dlg.enablejavascript}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>
-										<td><label for="qt_kioskmode">{#media_dlg.kioskmode}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>
-										<td><label for="qt_autohref">{#media_dlg.autohref}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>
-										<td><label for="qt_playeveryframe">{#media_dlg.playeveryframe}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>
-										<td><label for="qt_targetcache">{#media_dlg.targetcache}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="qt_scale">{#media_dlg.scale}</label></td>
-							<td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">
-									<option value="">{#not_set}</option> 
-									<option value="tofit">tofit</option>
-									<option value="aspect">aspect</option>
-								</select>
-							</td>
-
-							<td colspan="2">&nbsp;</td>
-						</tr>
-
-						<tr>
-							<td><label for="qt_starttime">{#media_dlg.starttime}</label></td>
-							<td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
-
-							<td><label for="qt_endtime">{#media_dlg.endtime}</label></td>
-							<td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="qt_target">{#media_dlg.target}</label></td>
-							<td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
-
-							<td><label for="qt_href">{#media_dlg.href}</label></td>
-							<td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="qt_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>
-							<td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
-
-							<td><label for="qt_volume">{#media_dlg.volume}</label></td>
-							<td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="qt_qtsrc">{#media_dlg.qtsrc}</label></td>
-							<td colspan="4">
-							<table border="0" cellspacing="0" cellpadding="0">
-								  <tr>
-									<td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>
-									<td id="qtsrcfilebrowsercontainer">&nbsp;</td>
-								  </tr>
-							</table>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset id="wmp_options">
-					<legend>{#media_dlg.wmp_options}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="wmp_autostart">{#media_dlg.autostart}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
-										<td><label for="wmp_enabled">{#media_dlg.enabled}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="wmp_enablecontextmenu">{#media_dlg.menu}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
-										<td><label for="wmp_fullscreen">{#media_dlg.fullscreen}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="wmp_invokeurls">{#media_dlg.invokeurls}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
-										<td><label for="wmp_mute">{#media_dlg.mute}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
-										<td><label for="wmp_stretchtofit">{#media_dlg.stretchtofit}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
-										<td><label for="wmp_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="wmp_balance">{#media_dlg.balance}</label></td>
-							<td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
-
-							<td><label for="wmp_baseurl">{#media_dlg.baseurl}</label></td>
-							<td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="wmp_captioningid">{#media_dlg.captioningid}</label></td>
-							<td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
-
-							<td><label for="wmp_currentmarker">{#media_dlg.currentmarker}</label></td>
-							<td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="wmp_currentposition">{#media_dlg.currentposition}</label></td>
-							<td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
-
-							<td><label for="wmp_defaultframe">{#media_dlg.defaultframe}</label></td>
-							<td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="wmp_playcount">{#media_dlg.playcount}</label></td>
-							<td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
-
-							<td><label for="wmp_rate">{#media_dlg.rate}</label></td>
-							<td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="wmp_uimode">{#media_dlg.uimode}</label></td>
-							<td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
-
-							<td><label for="wmp_volume">{#media_dlg.volume}</label></td>
-							<td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
-						</tr>
-
-					</table>
-				</fieldset>
-
-				<fieldset id="rmp_options">
-					<legend>{#media_dlg.rmp_options}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
-										<td><label for="rmp_autostart">{#media_dlg.autostart}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
-										<td><label for="rmp_loop">{#media_dlg.loop}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="rmp_autogotourl">{#media_dlg.autogotourl}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
-										<td><label for="rmp_center">{#media_dlg.center}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
-										<td><label for="rmp_imagestatus">{#media_dlg.imagestatus}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
-										<td><label for="rmp_maintainaspect">{#media_dlg.maintainaspect}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
-										<td><label for="rmp_nojava">{#media_dlg.nojava}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
-										<td><label for="rmp_prefetch">{#media_dlg.prefetch}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
-										<td><label for="rmp_shuffle">{#media_dlg.shuffle}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								&nbsp;
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="rmp_console">{#media_dlg.console}</label></td>
-							<td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
-
-							<td><label for="rmp_controls">{#media_dlg.controls}</label></td>
-							<td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="rmp_numloop">{#media_dlg.numloop}</label></td>
-							<td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
-
-							<td><label for="rmp_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>
-							<td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
-						</tr>
-					</table>
-				</fieldset>
-
-				<fieldset id="shockwave_options">
-					<legend>{#media_dlg.shockwave_options}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>
-							<td>
-								<select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
-									<option value="none">{#not_set}</option>
-									<option value="meet">Meet</option>
-									<option value="fill">Fill</option>
-									<option value="stage">Stage</option>
-								</select>
-							</td>
-
-							<td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>
-							<td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>
-						</tr>
-
-						<tr>
-							<td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>
-							<td>
-								<select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">
-									<option value="none">{#not_set}</option>
-									<option value="left">{#media_dlg.align_left}</option>
-									<option value="center">{#media_dlg.align_center}</option>
-									<option value="right">{#media_dlg.align_right}</option>
-								</select>
-							</td>
-
-							<td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>
-							<td>
-								<select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">
-									<option value="none">{#not_set}</option>
-									<option value="meet">Meet</option>
-									<option value="fill">Fill</option>
-									<option value="stage">Stage</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>
-										<td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>
-										<td><label for="shockwave_sound">{#media_dlg.sound}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-
-
-						<tr>
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>
-										<td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>
-									</tr>
-								</table>
-							</td>
-
-							<td colspan="2">
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>
-										<td><label for="shockwave_progress">{#media_dlg.progress}</label></td>
-									</tr>
-								</table>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" id="insert" name="insert" value="{#insert}" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.Nonbreaking',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceNonBreaking',function(){ed.execCommand('mceInsertContent',false,(ed.plugins.visualchars&&ed.plugins.visualchars.state)?'<span class="mceItemHidden mceVisualNbsp">&middot;</span>':'&nbsp;');});ed.addButton('nonbreaking',{title:'nonbreaking.nonbreaking_desc',cmd:'mceNonBreaking'});if(ed.getParam('nonbreaking_force_tab')){ed.onKeyDown.add(function(ed,e){if(tinymce.isIE&&e.keyCode==9){ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');ed.execCommand('mceNonBreaking');tinymce.dom.Event.cancel(e);}});}},getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('nonbreaking',tinymce.plugins.Nonbreaking);})();
+tinyMCE.importPluginLanguagePack('nonbreaking');var TinyMCE_NonBreakingPlugin={getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"nonbreaking":return tinyMCE.getButtonHTML(cn,'lang_nonbreaking_desc','{$pluginurl}/images/nonbreaking.gif','mceNonBreaking',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),h;switch(command){case"mceNonBreaking":h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;</span>':'&nbsp;';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,h);return true}return false},handleEvent:function(e){var inst,h;if(!tinyMCE.isOpera&&e.type=='keydown'&&e.keyCode==9&&tinyMCE.getParam('nonbreaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>':'&nbsp;&nbsp;&nbsp;';tinyMCE.execInstanceCommand(inst.editorId,'mceInsertContent',false,h);tinyMCE.cancelEvent(e);return false}return true}};tinyMCE.addPlugin("nonbreaking",TinyMCE_NonBreakingPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
@@ -1,50 +1,63 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('nonbreaking');

+

+var TinyMCE_NonBreakingPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Nonbreaking space',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "nonbreaking":

+				return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false);

+		}

+

+		return "";

+	},

+

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		var inst = tinyMCE.getInstanceById(editor_id), h;

+

+		switch (command) {

+			case "mceNonBreaking":

+				h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;</span>' : '&nbsp;';

+				tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h);

+				return true;

+		}

+

+		return false;

+	},

+

+	handleEvent : function(e) {

+		var inst, h;

+

+		if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) {

+			inst = tinyMCE.selectedInstance;

+

+			h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">&middot;&middot;&middot;</span>' : '&nbsp;&nbsp;&nbsp;';

+			tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h);

+

+			tinyMCE.cancelEvent(e);

+			return false;

+		}

+

+		return true;

+	}

+};

+

+tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.Nonbreaking', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceNonBreaking', function() {
-				ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span class="mceItemHidden mceVisualNbsp">&middot;</span>' : '&nbsp;');
-			});
-
-			// Register buttons
-			ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});
-
-			if (ed.getParam('nonbreaking_force_tab')) {
-				ed.onKeyDown.add(function(ed, e) {
-					if (tinymce.isIE && e.keyCode == 9) {
-						ed.execCommand('mceNonBreaking');
-						ed.execCommand('mceNonBreaking');
-						ed.execCommand('mceNonBreaking');
-						tinymce.dom.Event.cancel(e);
-					}
-				});
-			}
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Nonbreaking space',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-
-		// Private methods
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js
@@ -1,6 +1,6 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('nonbreaking',{

+desc : 'Insert non-breaking space character'

+});

 
-tinyMCE.addToLang('nonbreaking',{
-desc : 'Insert non-breaking space character'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css
@@ -1,10 +1,10 @@
-/* This is the CSS file for the noneditable elements plugin */
+/* This is the CSS file for the noneditable elements plugin */

+

+.mceEditable {

+	/*border: 1px dotted #0000cc;*/

+}

+

+.mceNonEditable {

+	/*border: 1px dotted #cc0000;*/

+}

 
-.mceEditable {
-	/*border: 1px dotted #0000cc;*/
-}
-
-.mceNonEditable {
-	/*border: 1px dotted #cc0000;*/
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.NonEditablePlugin',{init:function(ed,url){var t=this,editClass,nonEditClass;t.editor=ed;editClass=ed.getParam("noneditable_editable_class","mceEditable");nonEditClass=ed.getParam("noneditable_noneditable_class","mceNonEditable");ed.onNodeChange.addToTop(function(ed,cm,n){var sc,ec;sc=ed.dom.getParent(ed.selection.getStart(),function(n){return ed.dom.hasClass(n,nonEditClass);});ec=ed.dom.getParent(ed.selection.getEnd(),function(n){return ed.dom.hasClass(n,nonEditClass);});if(sc||ec){t._setDisabled(1);return false;}else t._setDisabled(0);});},getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_block:function(ed,e){var k=e.keyCode;if((k>32&&k<41)||(k>111&&k<124))return;return Event.cancel(e);},_setDisabled:function(s){var t=this,ed=t.editor;tinymce.each(ed.controlManager.controls,function(c){c.setDisabled(s);});if(s!==t.disabled){if(s){ed.onKeyDown.addToTop(t._block);ed.onKeyPress.addToTop(t._block);ed.onKeyUp.addToTop(t._block);ed.onPaste.addToTop(t._block);}else{ed.onKeyDown.remove(t._block);ed.onKeyPress.remove(t._block);ed.onKeyUp.remove(t._block);ed.onPaste.remove(t._block);}t.disabled=s;}}});tinymce.PluginManager.add('noneditable',tinymce.plugins.NonEditablePlugin);})();
+var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable')},handleEvent:function(e){return this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){switch(type){case"insert_to_editor_dom":var nodes,i,editClass,nonEditClass,editable,elm;if(tinyMCE.isGecko)return content;nodes=tinyMCE.getNodeTree(content,[],1);editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");for(i=0;i<nodes.length;i++){elm=nodes[i];editable=tinyMCE.getAttrib(elm,"contenteditable");if(new RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isIE){if(tinyMCE.hasCSSClass(elm,editClass))elm.contentEditable=true;if(tinyMCE.hasCSSClass(elm,nonEditClass))elm.contentEditable=false}}break;case"insert_to_editor":var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");content=content.replace(/mceItemEditable/g,editClass);content=content.replace(/mceItemNonEditable/g,nonEditClass);if(tinyMCE.isIE&&(content.indexOf(editClass)!=-1||content.indexOf(nonEditClass)!=-1)){content=content.replace(new RegExp("class=\"(.+)("+editClass+")\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"("+editClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="true"');content=content.replace(new RegExp("class=\"("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2" contenteditable="false"');content=content.replace(new RegExp("class=\"(.+)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="true"');content=content.replace(new RegExp("class=\"(.+)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3" contenteditable="false"')}break;case"get_from_editor_dom":if(tinyMCE.isGecko)return content;if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i<nodes.length;i++)nodes[i].removeAttribute("contenteditable")}break}return content},_moveSelection:function(e,inst){var s,r,sc,ec,el,c=tinyMCE.getParam('noneditable_editable_class','mceNonEditable');if(!inst)return true;if(tinyMCE.isGecko){s=inst.selection.getSel();r=s.getRangeAt(0);sc=tinyMCE.getParentNode(r.startContainer,function(n){return tinyMCE.hasCSSClass(n,c)});ec=tinyMCE.getParentNode(r.endContainer,function(n){return tinyMCE.hasCSSClass(n,c)});sc&&r.setStartBefore(sc);ec&&r.setEndAfter(ec);if(sc||ec){if(e.type=='keypress'&&e.keyCode==39){el=sc||ec;}s.removeAllRanges();s.addRange(r);return tinyMCE.cancelEvent(e)}}return true},_setEditable:function(elm,state){var editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");var nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");var className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+=" ";className+=state?editClass:nonEditClass;elm.setAttribute("class",className);elm.className=className}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js
@@ -1,87 +1,154 @@
-/**
- * $Id: editor_plugin_src.js 743 2008-03-23 17:47:33Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+var TinyMCE_NonEditablePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Non editable elements',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/noneditable/css/noneditable.css");

+

+		// Ugly hack

+		if (tinyMCE.isMSIE5_0)

+			tinyMCE.settings['plugins'] = tinyMCE.settings['plugins'].replace(/noneditable/gi, 'Noneditable');

+	},

+

+	handleEvent : function(e) {

+		return this._moveSelection(e, tinyMCE.selectedInstance);

+	},

+

+	cleanup : function(type, content, inst) {

+		switch (type) {

+			case "insert_to_editor_dom":

+				var nodes, i, editClass, nonEditClass, editable, elm;

+

+				// Pass through Gecko

+				if (tinyMCE.isGecko)

+					return content;

+

+				nodes = tinyMCE.getNodeTree(content, [], 1);

+

+				editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");

+				nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");

+

+				for (i=0; i<nodes.length; i++) {

+					elm = nodes[i];

+

+					// Convert contenteditable to classes

+					editable = tinyMCE.getAttrib(elm, "contenteditable");

+					if (new RegExp("true|false","gi").test(editable))

+						TinyMCE_NonEditablePlugin._setEditable(elm, editable == "true");

+

+					if (tinyMCE.isIE) {

+						if (tinyMCE.hasCSSClass(elm, editClass))

+							elm.contentEditable = true;

+

+						if (tinyMCE.hasCSSClass(elm, nonEditClass))

+							elm.contentEditable = false;

+					}

+				}

+

+				break;

+

+			case "insert_to_editor":

+				var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");

+				var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");

+

+				// Replace mceItem to new school

+				content = content.replace(/mceItemEditable/g, editClass);

+				content = content.replace(/mceItemNonEditable/g, nonEditClass);

+

+				if (tinyMCE.isIE && (content.indexOf(editClass) != -1 || content.indexOf(nonEditClass) != -1)) {

+					content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")\"", "gi"), 'class="$1$2" contenteditable="true"');

+					content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")\"", "gi"), 'class="$1$2" contenteditable="false"');

+					content = content.replace(new RegExp("class=\"(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="true"');

+					content = content.replace(new RegExp("class=\"(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2" contenteditable="false"');

+					content = content.replace(new RegExp("class=\"(.+)(" + editClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="true"');

+					content = content.replace(new RegExp("class=\"(.+)(" + nonEditClass + ")([^\"]*)\"", "gi"), 'class="$1$2$3" contenteditable="false"');

+				}

+

+				break;

+

+			case "get_from_editor_dom":

+				// Pass through Gecko

+				if (tinyMCE.isGecko)

+					return content;

+

+				if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) {

+					var nodes = tinyMCE.getNodeTree(content, new Array(), 1);

+

+					for (var i=0; i<nodes.length; i++)

+						nodes[i].removeAttribute("contenteditable");

+				}

+

+				break;

+		}

+

+		return content;

+	},

+

+	_moveSelection : function(e, inst) {

+		var s, r, sc, ec, el, c = tinyMCE.getParam('noneditable_editable_class', 'mceNonEditable');

+

+		if (!inst)

+			return true;

+

+		// Always select whole element

+		if (tinyMCE.isGecko) {

+			s = inst.selection.getSel();

+			r = s.getRangeAt(0);

+			sc = tinyMCE.getParentNode(r.startContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});

+			ec = tinyMCE.getParentNode(r.endContainer, function (n) {return tinyMCE.hasCSSClass(n, c);});

+

+			sc && r.setStartBefore(sc);

+			ec && r.setEndAfter(ec);

+

+			if (sc || ec) {

+				if (e.type == 'keypress' && e.keyCode == 39) {

+					el = sc || ec;

+

+					// Try!!

+				}

+

+				s.removeAllRanges();

+				s.addRange(r);

+

+				return tinyMCE.cancelEvent(e);

+			}

+		}

+

+		return true;

+	},

+

+	_setEditable : function(elm, state) {

+		var editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable");

+		var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable");

+

+		var className = elm.className ? elm.className : "";

+

+		if (className.indexOf(editClass) != -1 || className.indexOf(nonEditClass) != -1)

+			return;

+

+		if ((className = tinyMCE.getAttrib(elm, "class")) != "")

+			className += " ";

+

+		className += state ? editClass : nonEditClass;

+

+		elm.setAttribute("class", className);

+		elm.className = className;

+	}

+};

+

+tinyMCE.addPlugin("noneditable", TinyMCE_NonEditablePlugin);

 
-(function() {
-	var Event = tinymce.dom.Event;
-
-	tinymce.create('tinymce.plugins.NonEditablePlugin', {
-		init : function(ed, url) {
-			var t = this, editClass, nonEditClass;
-
-			t.editor = ed;
-			editClass = ed.getParam("noneditable_editable_class", "mceEditable");
-			nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable");
-
-			ed.onNodeChange.addToTop(function(ed, cm, n) {
-				var sc, ec;
-
-				// Block if start or end is inside a non editable element
-				sc = ed.dom.getParent(ed.selection.getStart(), function(n) {
-					return ed.dom.hasClass(n, nonEditClass);
-				});
-
-				ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {
-					return ed.dom.hasClass(n, nonEditClass);
-				});
-
-				// Block or unblock
-				if (sc || ec) {
-					t._setDisabled(1);
-					return false;
-				} else
-					t._setDisabled(0);
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Non editable elements',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		_block : function(ed, e) {
-			var k = e.keyCode;
-
-			// Don't block arrow keys, pg up/down, and F1-F12
-			if ((k > 32 && k < 41) || (k > 111 && k < 124))
-				return;
-
-			return Event.cancel(e);
-		},
-
-		_setDisabled : function(s) {
-			var t = this, ed = t.editor;
-
-			tinymce.each(ed.controlManager.controls, function(c) {
-				c.setDisabled(s);
-			});
-
-			if (s !== t.disabled) {
-				if (s) {
-					ed.onKeyDown.addToTop(t._block);
-					ed.onKeyPress.addToTop(t._block);
-					ed.onKeyUp.addToTop(t._block);
-					ed.onPaste.addToTop(t._block);
-				} else {
-					ed.onKeyDown.remove(t._block);
-					ed.onKeyPress.remove(t._block);
-					ed.onKeyUp.remove(t._block);
-					ed.onPaste.remove(t._block);
-				}
-
-				t.disabled = s;
-			}
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/noneditable/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/noneditable/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/pagebreak/css/content.css
+++ /dev/null
@@ -1,2 +1,1 @@
-.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;}
 

--- a/tinymce/2/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
+++ /dev/null
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.PageBreakPlugin',{init:function(ed,url){var pb='<img src="'+url+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',cls='mcePageBreak',sep=ed.getParam('pagebreak_separator','<!-- pagebreak -->'),pbRE;pbRE=new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(a){return'\\'+a;}),'g');ed.addCommand('mcePageBreak',function(){ed.execCommand('mceInsertContent',0,pb);});ed.addButton('pagebreak',{title:'pagebreak.desc',cmd:cls});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+"/css/content.css");if(ed.theme.onResolveName){ed.theme.onResolveName.add(function(th,o){if(o.node.nodeName=='IMG'&&ed.dom.hasClass(o.node,cls))o.name='pagebreak';});}});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='IMG'&&ed.dom.hasClass(e,cls))ed.selection.select(e);});ed.onNodeChange.add(function(ed,cm,n){cm.setActive('pagebreak',n.nodeName==='IMG'&&ed.dom.hasClass(n,cls));});ed.onBeforeSetContent.add(function(ed,o){o.content=o.content.replace(pbRE,pb);});ed.onPostProcess.add(function(ed,o){if(o.get)o.content=o.content.replace(/<img[^>]+>/g,function(im){if(im.indexOf('class="mcePageBreak')!==-1)im=sep;return im;});});},getInfo:function(){return{longname:'PageBreak',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('pagebreak',tinymce.plugins.PageBreakPlugin);})();
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js
+++ /dev/null
@@ -1,74 +1,1 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
 
-(function() {
-	tinymce.create('tinymce.plugins.PageBreakPlugin', {
-		init : function(ed, url) {
-			var pb = '<img src="' + url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;
-
-			pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');
-
-			// Register commands
-			ed.addCommand('mcePageBreak', function() {
-				ed.execCommand('mceInsertContent', 0, pb);
-			});
-
-			// Register buttons
-			ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});
-
-			ed.onInit.add(function() {
-				if (ed.settings.content_css !== false)
-					ed.dom.loadCSS(url + "/css/content.css");
-
-				if (ed.theme.onResolveName) {
-					ed.theme.onResolveName.add(function(th, o) {
-						if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))
-							o.name = 'pagebreak';
-					});
-				}
-			});
-
-			ed.onClick.add(function(ed, e) {
-				e = e.target;
-
-				if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))
-					ed.selection.select(e);
-			});
-
-			ed.onNodeChange.add(function(ed, cm, n) {
-				cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));
-			});
-
-			ed.onBeforeSetContent.add(function(ed, o) {
-				o.content = o.content.replace(pbRE, pb);
-			});
-
-			ed.onPostProcess.add(function(ed, o) {
-				if (o.get)
-					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
-						if (im.indexOf('class="mcePageBreak') !== -1)
-							im = sep;
-
-						return im;
-					});
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'PageBreak',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);
-})();

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/blank.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/blank.htm
@@ -1,23 +1,20 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>blank_page</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<link href="css/blank.css" rel="stylesheet" type="text/css" />
-<base target="_self" />
-<script type="text/javascript">
-function init() {
-	if (parent.tinymce.isIE)
-		document.body.contentEditable = true;
-	else
-		document.designMode = 'on';
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>blank_page</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

+	<script language="javascript">

+		function init() {

+			document.body.contentEditable = true;

+			document.designMode = 'on';

+			parent.initIframe(document);

+			window.focus();

+		}

+	</script>

+	<link href="css/blank.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="init();">

+

+</body>

+</html>

 
-	parent.initIframe(document);
-	window.focus();
-}
-</script>
-</head>
-<body onload="init();">
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/css/blank.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/css/blank.css
@@ -1,15 +1,14 @@
-html, body {height:98%}
-body {
-background-color: #FFFFFF;
-font-family: Verdana, Arial, Helvetica, sans-serif;
-font-size: 10px;
-scrollbar-3dlight-color: #F0F0EE;
-scrollbar-arrow-color: #676662;
-scrollbar-base-color: #F0F0EE;
-scrollbar-darkshadow-color: #DDDDDD;
-scrollbar-face-color: #E0E0DD;
-scrollbar-highlight-color: #F0F0EE;
-scrollbar-shadow-color: #F0F0EE;
-scrollbar-track-color: #F5F5F5;
-}
+body {

+	background-color: #FFFFFF;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/css/pasteword.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/css/pasteword.css
@@ -1,4 +1,4 @@
-.sourceIframe {
-	border: 1px solid #808080;
-}
+.sourceIframe {

+	border: 1px solid #808080;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var Event=tinymce.dom.Event;tinymce.create('tinymce.plugins.PastePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mcePasteText',function(ui,v){if(ui){if((ed.getParam('paste_use_dialog',true))||(!tinymce.isIE)){ed.windowManager.open({file:url+'/pastetext.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(clipboardData.getData("Text"),true);}else t._insertText(v.html,v.linebreaks);});ed.addCommand('mcePasteWord',function(ui,v){if(ui){if((ed.getParam('paste_use_dialog',true))||(!tinymce.isIE)){ed.windowManager.open({file:url+'/pasteword.htm',width:450,height:400,inline:1},{plugin_url:url});}else t._insertText(t._clipboardHTML());}else t._insertWordContent(v);});ed.addCommand('mceSelectAll',function(){ed.execCommand('selectall');});ed.addButton('pastetext',{title:'paste.paste_text_desc',cmd:'mcePasteText',ui:true});ed.addButton('pasteword',{title:'paste.paste_word_desc',cmd:'mcePasteWord',ui:true});ed.addButton('selectall',{title:'paste.selectall_desc',cmd:'mceSelectAll'});if(ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onPaste.add(function(ed,e){return t._handlePasteEvent(e)});}if(!tinymce.isIE&&ed.getParam("paste_auto_cleanup_on_paste",false)){ed.onKeyDown.add(function(ed,e){if(e.ctrlKey&&e.keyCode==86){window.setTimeout(function(){ed.execCommand("mcePasteText",true);},1);Event.cancel(e);}});}},getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_handlePasteEvent:function(e){var html=this._clipboardHTML(),ed=this.editor,sel=ed.selection,r;if(ed&&(r=sel.getRng())&&r.text.length>0)ed.execCommand('delete');if(html&&html.length>0)ed.execCommand('mcePasteWord',false,html);return Event.cancel(e);},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(this.editor.getParam("paste_create_paragraphs",true)){var rl=this.editor.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=content.replace(/\r\n\r\n/g,'</p><p>');content=content.replace(/\r\r/g,'</p><p>');content=content.replace(/\n\n/g,'</p><p>');if((pos=content.indexOf('</p><p>'))!=-1){this.editor.execCommand("Delete");var node=this.editor.selection.getNode();var breakElms=[];do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node;}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">";}before+="<p>";content=before+content.substring(pos+7)+after;}}if(this.editor.getParam("paste_create_linebreaks",true)){content=content.replace(/\r\n/g,'<br />');content=content.replace(/\r/g,'<br />');content=content.replace(/\n/g,'<br />');}}this.editor.execCommand("mceInsertRawHTML",false,this.editor.dom.encode(content));}},_insertWordContent:function(content){var t=this,ed=t.editor;if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','before',content);var rl=ed.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>');}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(this.editor.getParam("paste_remove_spans",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(this.editor.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(this.editor.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break;}content=content.replace(new RegExp('href="?'+this._reEscape(""+document.location)+'','gi'),'href="'+this.editor.documentBaseURI.getURI());content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!this.editor.getParam('force_p_newlines')){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi');}if(!tinymce.isIE&&!this.editor.getParam('force_p_newlines')){content=content.replace(/<\/?p[^>]*>/gi,"");}content=content.replace(/<\/?div[^>]*>/gi,"");if(this.editor.getParam("paste_convert_middot_lists",true)){var div=ed.dom.create("div",null,content);var className=this.editor.getParam("paste_unindented_list_class","unIndentedList");while(this._convertMiddots(div,"--list--"));while(this._convertMiddots(div,middot,className));while(this._convertMiddots(div,bull));content=div.innerHTML;}if(this.editor.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi,'<p>&nbsp;&nbsp;</p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b>&nbsp;<\/b>/gi,'<b>&nbsp;&nbsp;</b>');content=content.replace(/^(&nbsp;)*/gi,'');}content=content.replace(/--list--/gi,"");if(ed.getParam('paste_insert_word_content_callback'))content=ed.execCallback('paste_insert_word_content_callback','after',content);this.editor.execCommand("mceInsertContent",false,content);if(this.editor.getParam('paste_force_cleanup_wordpaste',true)){var ed=this.editor;window.setTimeout(function(){ed.execCommand("mceCleanup");},1);}}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c;}return o;},_convertMiddots:function(div,search,class_name){var ed=this.editor,mdot=String.fromCharCode(183),bull=String.fromCharCode(8226);var nodes,prevul,i,p,ul,li,np,cp,li;nodes=div.getElementsByTagName("p");for(i=0;i<nodes.length;i++){p=nodes[i];if(p.innerHTML.indexOf(search)==0){ul=ed.dom.create("ul");if(class_name)ul.className=class_name;li=ed.dom.create("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');ul.appendChild(li);np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue;}if(search==mdot){if(np.nodeType==1&&new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)){if(!prevul){prevul=ul;ul=ed.dom.create("ul");prevul.appendChild(ul);}np.innerHTML=np.innerHTML.replace(/^o/,'');}else{if(prevul){ul=prevul;prevul=null;}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break;}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break;}cp=np.nextSibling;li=ed.dom.create("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp;}p.parentNode.replaceChild(ul,p);return true;}}return false;},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1;}document.body.appendChild(div);}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html;}});tinymce.PluginManager.add('paste',tinymce.plugins.PastePlugin);})();
+tinyMCE.importPluginLanguagePack('paste');var TinyMCE_PastePlugin={getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_PastePlugin._handlePasteEvent)},handleEvent:function(e){if(!tinyMCE.isRealIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false)&&e.ctrlKey&&e.keyCode==86&&e.type=="keydown"){window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)',1);return tinyMCE.cancelEvent(e)}return true},getControlHTML:function(cn){switch(cn){case"pastetext":return tinyMCE.getButtonHTML(cn,'lang_paste_text_desc','{$pluginurl}/images/pastetext.gif','mcePasteText',true);case"pasteword":return tinyMCE.getButtonHTML(cn,'lang_paste_word_desc','{$pluginurl}/images/pasteword.gif','mcePasteWord',true);case"selectall":return tinyMCE.getButtonHTML(cn,'lang_selectall_desc','{$pluginurl}/images/selectall.gif','mceSelectAll',true)}return''},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertText(value['html'],value['linebreaks']);return true;case"mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML())}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertWordContent(value);return true;case"mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true}return false},_handlePasteEvent:function(e){switch(e.type){case"paste":var html=TinyMCE_PastePlugin._clipboardHTML();var r,inst=tinyMCE.selectedInstance;if(inst&&(r=inst.getRng())&&r.text.length>0)tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false}return true},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);content=tinyMCE.regexpReplace(content,"\r\n\r\n","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\r\r","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\n\n","</p><p>","gi");if((pos=content.indexOf('</p><p>'))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node}}while(node=node.parentNode);var before="",after="</p>";before+=content.substring(0,pos);for(var i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">"}before+="<p>";content=before+content.substring(pos+7)+after}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}}tinyMCE.execCommand("mceInsertRawHTML",false,content)}},_insertWordContent:function(content){if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);var cb;if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('before', content)");var rl=tinyMCE.getParam("paste_replace_list",'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i<rl.length;i+=2)content=content.replace(new RegExp(rl[i],'gi'),rl[i+1]);if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>')}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new RegExp('<SPAN style="mso-list: Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new RegExp('<br style="page-break-before: always;.*>','gi'),'-- page break --');content=content.replace(new RegExp('<(!--)([^>]*)(--)>','g'),"");if(tinyMCE.getParam("paste_remove_spans",true))content=content.replace(/<\/?span[^>]*>/gi,"");if(tinyMCE.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break}content=content.replace(new RegExp('href="?'+TinyMCE_PastePlugin._reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.replace('','','gi');content=content.replace('</p>','<br /><br />','gi')}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"")}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_PastePlugin._convertMiddots(div,"--list--"));while(TinyMCE_PastePlugin._convertMiddots(div,middot,className));while(TinyMCE_PastePlugin._convertMiddots(div,bull));content=div.innerHTML}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi,'<p>&nbsp;&nbsp;</p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b>&nbsp;<\/b>/gi,'<b>&nbsp;&nbsp;</b>');content=content.replace(/^(&nbsp;)*/gi,'')}content=content.replace(/--list--/gi,"");if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('after', content)");tinyMCE.execCommand("mceInsertContent",false,content);if(tinyMCE.getParam('paste_force_cleanup_wordpaste',true))window.setTimeout('tinyMCE.execCommand("mceCleanup");',1);}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i<s.length;i++){var c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c}return o},_convertMiddots:function(div,search,class_name){var mdot=String.fromCharCode(183);var bull=String.fromCharCode(8226);var nodes=div.getElementsByTagName("p");var prevul;for(var i=0;i<nodes.length;i++){var p=nodes[i];if(p.innerHTML.indexOf(search)==0){var ul=document.createElement("ul");if(class_name)ul.className=class_name;var li=document.createElement("li");li.innerHTML=p.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');ul.appendChild(li);var np=p.nextSibling;while(np){if(np.nodeType==3&&new RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue}if(search==mdot){if(np.nodeType==1&&new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)){if(!prevul){prevul=ul;ul=document.createElement("ul");prevul.appendChild(ul)}np.innerHTML=np.innerHTML.replace(/^o/,'')}else{if(prevul){ul=prevul;prevul=null}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}var cp=np.nextSibling;var li=document.createElement("li");li.innerHTML=np.innerHTML.replace(new RegExp(''+mdot+'|'+bull+'|--list--|&nbsp;',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp}p.parentNode.replaceChild(ul,p);return true}}return false},_clipboardHTML:function(){var div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1}document.body.appendChild(div)}div.innerHTML='';var rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var html=div.innerHTML;div.innerHTML='';return html}};tinyMCE.addPlugin("paste",TinyMCE_PastePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
@@ -1,387 +1,396 @@
-/**
- * $Id: editor_plugin_src.js 839 2008-05-06 15:42:26Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */ 

+tinyMCE.importPluginLanguagePack('paste');

+

+var TinyMCE_PastePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Paste text/word',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		if (tinyMCE.isMSIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false))

+			tinyMCE.addEvent(inst.getBody(), "paste", TinyMCE_PastePlugin._handlePasteEvent);

+	},

+

+	handleEvent : function(e) {

+		// Force paste dialog if non IE browser

+		if (!tinyMCE.isRealIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false) && e.ctrlKey && e.keyCode == 86 && e.type == "keydown") {

+			window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)', 1);

+			return tinyMCE.cancelEvent(e);

+		}

+

+		return true;

+	},

+

+	getControlHTML : function(cn) { 

+		switch (cn) { 

+			case "pastetext":

+				return tinyMCE.getButtonHTML(cn, 'lang_paste_text_desc', '{$pluginurl}/images/pastetext.gif', 'mcePasteText', true);

+

+			case "pasteword":

+				return tinyMCE.getButtonHTML(cn, 'lang_paste_word_desc', '{$pluginurl}/images/pasteword.gif', 'mcePasteWord', true);

+

+			case "selectall":

+				return tinyMCE.getButtonHTML(cn, 'lang_selectall_desc', '{$pluginurl}/images/selectall.gif', 'mceSelectAll', true);

+		} 

+

+		return ''; 

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) { 

+		switch (command) { 

+			case "mcePasteText": 

+				if (user_interface) {

+					if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false))

+						TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"), true); 

+					else { 

+						var template = new Array(); 

+						template['file']	= '../../plugins/paste/pastetext.htm'; // Relative to theme 

+						template['width']  = 450; 

+						template['height'] = 400; 

+						var plain_text = ""; 

+						tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'}); 

+					}

+				} else

+					TinyMCE_PastePlugin._insertText(value['html'], value['linebreaks']);

+

+				return true;

+

+			case "mcePasteWord": 

+				if (user_interface) {

+					if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) {

+						TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML());

+					} else { 

+						var template = new Array(); 

+						template['file']	= '../../plugins/paste/pasteword.htm'; // Relative to theme 

+						template['width']  = 450; 

+						template['height'] = 400; 

+						var plain_text = ""; 

+						tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'});

+					}

+				} else

+					TinyMCE_PastePlugin._insertWordContent(value);

+

+				return true;

+

+			case "mceSelectAll":

+				tinyMCE.execInstanceCommand(editor_id, 'selectall'); 

+				return true; 

+

+		} 

+

+		// Pass to next handler in chain 

+		return false; 

+	},

+

+	// Private plugin internal methods

+

+	_handlePasteEvent : function(e) {

+		switch (e.type) {

+			case "paste":

+				var html = TinyMCE_PastePlugin._clipboardHTML();

+				var r, inst = tinyMCE.selectedInstance;

+

+				// Removes italic, strong etc, the if was needed due to bug #1437114

+				if (inst && (r = inst.getRng()) && r.text.length > 0)

+					tinyMCE.execCommand('delete');

+

+				if (html && html.length > 0)

+					tinyMCE.execCommand('mcePasteWord', false, html);

+

+				tinyMCE.cancelEvent(e);

+				return false;

+		}

+

+		return true;

+	},

+

+	_insertText : function(content, bLinebreaks) { 

+		if (content && content.length > 0) {

+			if (bLinebreaks) { 

+				// Special paragraph treatment 

+				if (tinyMCE.getParam("paste_create_paragraphs", true)) {

+					var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');

+					for (var i=0; i<rl.length; i+=2)

+						content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);

+

+					content = tinyMCE.regexpReplace(content, "\r\n\r\n", "</p><p>", "gi"); 

+					content = tinyMCE.regexpReplace(content, "\r\r", "</p><p>", "gi"); 

+					content = tinyMCE.regexpReplace(content, "\n\n", "</p><p>", "gi"); 

+

+					// Has paragraphs 

+					if ((pos = content.indexOf('</p><p>')) != -1) { 

+						tinyMCE.execCommand("Delete"); 

+

+						var node = tinyMCE.selectedInstance.getFocusElement(); 

+

+						// Get list of elements to break 

+						var breakElms = new Array(); 

+

+						do { 

+							if (node.nodeType == 1) { 

+								// Don't break tables and break at body 

+								if (node.nodeName == "TD" || node.nodeName == "BODY") 

+									break; 

+		

+								breakElms[breakElms.length] = node; 

+							} 

+						} while(node = node.parentNode); 

+

+						var before = "", after = "</p>"; 

+						before += content.substring(0, pos); 

+

+						for (var i=0; i<breakElms.length; i++) { 

+							before += "</" + breakElms[i].nodeName + ">"; 

+							after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; 

+						} 

+

+						before += "<p>"; 

+						content = before + content.substring(pos+7) + after; 

+					} 

+				} 

+

+				if (tinyMCE.getParam("paste_create_linebreaks", true)) {

+					content = tinyMCE.regexpReplace(content, "\r\n", "<br />", "gi"); 

+					content = tinyMCE.regexpReplace(content, "\r", "<br />", "gi"); 

+					content = tinyMCE.regexpReplace(content, "\n", "<br />", "gi"); 

+				}

+			} 

+		

+			tinyMCE.execCommand("mceInsertRawHTML", false, content); 

+		}

+	},

+

+	_insertWordContent : function(content) { 

+		if (content && content.length > 0) {

+			// Cleanup Word content

+			var bull = String.fromCharCode(8226);

+			var middot = String.fromCharCode(183);

+			var cb;

+

+			if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")

+				content = eval(cb + "('before', content)");

+

+			var rl = tinyMCE.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');

+			for (var i=0; i<rl.length; i+=2)

+				content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);

+

+			if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {

+				content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');

+			}

+

+			content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");

+			content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");

+			content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list

+			content = content.replace(/<o:p><\/o:p>/gi, "");

+			content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks

+			content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), "");  // Word comments

+

+			if (tinyMCE.getParam("paste_remove_spans", true))

+				content = content.replace(/<\/?span[^>]*>/gi, "");

+

+			if (tinyMCE.getParam("paste_remove_styles", true))

+				content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");

+

+			content = content.replace(/<\/?font[^>]*>/gi, "");

+

+			// Strips class attributes.

+			switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) {

+				case "all":

+					content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");

+					break;

+

+				case "mso":

+					content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");

+					break;

+			}

+

+			content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']);

+			content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");

+			content = content.replace(/<\\?\?xml[^>]*>/gi, "");

+			content = content.replace(/<\/?\w+:[^>]*>/gi, "");

+			content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks

+			content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks

+

+	//		content = content.replace(/\/?&nbsp;*/gi, ""); &nbsp;

+	//		content = content.replace(/<p>&nbsp;<\/p>/gi, '');

+

+			if (!tinyMCE.settings['force_p_newlines']) {

+				content = content.replace('', '' ,'gi');

+				content = content.replace('</p>', '<br /><br />' ,'gi');

+			}

+

+			if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) {

+				content = content.replace(/<\/?p[^>]*>/gi, "");

+			}

+

+			content = content.replace(/<\/?div[^>]*>/gi, "");

+

+			// Convert all middlot lists to UL lists

+			if (tinyMCE.getParam("paste_convert_middot_lists", true)) {

+				var div = document.createElement("div");

+				div.innerHTML = content;

+

+				// Convert all middot paragraphs to li elements

+				var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList");

+

+				while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull

+				while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot

+				while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull

+

+				content = div.innerHTML;

+			}

+

+			// Replace all headers with strong and fix some other issues

+			if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {

+				content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');

+				content = content.replace(/<h[1-6]>/gi, '<p><b>');

+				content = content.replace(/<\/h[1-6]>/gi, '</b></p>');

+				content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');

+				content = content.replace(/^(&nbsp;)*/gi, '');

+			}

+

+			content = content.replace(/--list--/gi, ""); // Remove --list--

+

+			if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "")

+				content = eval(cb + "('after', content)");

+

+			// Insert cleaned content

+			tinyMCE.execCommand("mceInsertContent", false, content);

+

+			if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true))

+				window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread

+		}

+	},

+

+	_reEscape : function(s) {

+		var l = "?.\\*[](){}+^$:";

+		var o = "";

+

+		for (var i=0; i<s.length; i++) {

+			var c = s.charAt(i);

+

+			if (l.indexOf(c) != -1)

+				o += '\\' + c;

+			else

+				o += c;

+		}

+

+		return o;

+	},

+

+	_convertMiddots : function(div, search, class_name) {

+		var mdot = String.fromCharCode(183);

+		var bull = String.fromCharCode(8226);

+

+		var nodes = div.getElementsByTagName("p");

+		var prevul;

+		for (var i=0; i<nodes.length; i++) {

+			var p = nodes[i];

+

+			// Is middot

+			if (p.innerHTML.indexOf(search) == 0) {

+				var ul = document.createElement("ul");

+

+				if (class_name)

+					ul.className = class_name;

+

+				// Add the first one

+				var li = document.createElement("li");

+				li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');

+				ul.appendChild(li);

+

+				// Add the rest

+				var np = p.nextSibling;

+				while (np) {

+			        // If the node is whitespace, then

+			        // ignore it and continue on.

+			        if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {

+			                np = np.nextSibling;

+			                continue;

+			        }

+

+					if (search == mdot) {

+					        if (np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)) {

+					                // Second level of nesting

+					                if (!prevul) {

+					                        prevul = ul;

+					                        ul = document.createElement("ul");

+					                        prevul.appendChild(ul);

+					                }

+					                np.innerHTML = np.innerHTML.replace(/^o/, '');

+					        } else {

+					                // Pop the stack if we're going back up to the first level

+					                if (prevul) {

+					                        ul = prevul;

+					                        prevul = null;

+					                }

+					                // Not element or middot paragraph

+					                if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)

+					                        break;

+					        }

+					} else {

+					        // Not element or middot paragraph

+					        if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)

+					                break;

+				        }

+

+					var cp = np.nextSibling;

+					var li = document.createElement("li");

+					li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');

+					np.parentNode.removeChild(np);

+					ul.appendChild(li);

+					np = cp;

+				}

+

+				p.parentNode.replaceChild(ul, p);

+

+				return true;

+			}

+		}

+

+		return false;

+	},

+

+	_clipboardHTML : function() {

+		var div = document.getElementById('_TinyMCE_clipboardHTML');

+

+		if (!div) {

+			var div = document.createElement('DIV');

+			div.id = '_TinyMCE_clipboardHTML';

+

+			with (div.style) {

+				visibility = 'hidden';

+				overflow = 'hidden';

+				position = 'absolute';

+				width = 1;

+				height = 1;

+			}

+

+			document.body.appendChild(div);

+		}

+

+		div.innerHTML = '';

+		var rng = document.body.createTextRange();

+		rng.moveToElementText(div);

+		rng.execCommand('Paste');

+		var html = div.innerHTML;

+		div.innerHTML = '';

+		return html;

+	}

+};

+

+tinyMCE.addPlugin("paste", TinyMCE_PastePlugin);

 
-(function() {
-	var Event = tinymce.dom.Event;
-
-	tinymce.create('tinymce.plugins.PastePlugin', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed; 
-
-			// Register commands
-			ed.addCommand('mcePasteText', function(ui, v) {
-				if (ui) {
-					if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {
-						ed.windowManager.open({
-							file : url + '/pastetext.htm',
-							width : 450,
-							height : 400,
-							inline : 1
-						}, {
-							plugin_url : url
-						});
-					} else
-						t._insertText(clipboardData.getData("Text"), true);
-				} else
-					t._insertText(v.html, v.linebreaks);
-			});
-
-			ed.addCommand('mcePasteWord', function(ui, v) {
-				if (ui) {
-					if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {
-						ed.windowManager.open({
-							file : url + '/pasteword.htm',
-							width : 450,
-							height : 400,
-							inline : 1
-						}, {
-							plugin_url : url
-						});
-					} else
-						t._insertText(t._clipboardHTML());
-				} else
-					t._insertWordContent(v);
-			});
-
-			ed.addCommand('mceSelectAll', function() {
-				ed.execCommand('selectall'); 
-			});
-
-			// Register buttons
-			ed.addButton('pastetext', {title : 'paste.paste_text_desc', cmd : 'mcePasteText', ui : true});
-			ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord', ui : true});
-			ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'mceSelectAll'});
-
-			if (ed.getParam("paste_auto_cleanup_on_paste", false)) {
-				ed.onPaste.add(function(ed, e) {
-					return t._handlePasteEvent(e)
-				});
-			}
-
-			if (!tinymce.isIE && ed.getParam("paste_auto_cleanup_on_paste", false)) {
-				// Force paste dialog if non IE browser
-				ed.onKeyDown.add(function(ed, e) {
-					if (e.ctrlKey && e.keyCode == 86) {
-						window.setTimeout(function() {
-							ed.execCommand("mcePasteText", true);
-						}, 1);
-
-						Event.cancel(e);
-					}
-				});
-			}
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Paste text/word',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_handlePasteEvent : function(e) {
-			var html = this._clipboardHTML(), ed = this.editor, sel = ed.selection, r;
-
-			// Removes italic, strong etc, the if was needed due to bug #1437114
-			if (ed && (r = sel.getRng()) && r.text.length > 0)
-				ed.execCommand('delete');
-
-			if (html && html.length > 0)
-				ed.execCommand('mcePasteWord', false, html);
-
-			return Event.cancel(e);
-		},
-
-		_insertText : function(content, bLinebreaks) { 
-			if (content && content.length > 0) {
-				if (bLinebreaks) { 
-					// Special paragraph treatment 
-					if (this.editor.getParam("paste_create_paragraphs", true)) {
-						var rl = this.editor.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
-						for (var i=0; i<rl.length; i+=2)
-							content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
-
-						content = content.replace(/\r\n\r\n/g, '</p><p>');
-						content = content.replace(/\r\r/g, '</p><p>');
-						content = content.replace(/\n\n/g, '</p><p>');
-
-						// Has paragraphs 
-						if ((pos = content.indexOf('</p><p>')) != -1) { 
-							this.editor.execCommand("Delete"); 
-
-							var node = this.editor.selection.getNode(); 
-
-							// Get list of elements to break 
-							var breakElms = [];
-
-							do { 
-								if (node.nodeType == 1) { 
-									// Don't break tables and break at body 
-									if (node.nodeName == "TD" || node.nodeName == "BODY") 
-										break; 
-			
-									breakElms[breakElms.length] = node; 
-								} 
-							} while(node = node.parentNode); 
-
-							var before = "", after = "</p>"; 
-							before += content.substring(0, pos); 
-
-							for (var i=0; i<breakElms.length; i++) { 
-								before += "</" + breakElms[i].nodeName + ">"; 
-								after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; 
-							} 
-
-							before += "<p>"; 
-							content = before + content.substring(pos+7) + after; 
-						} 
-					} 
-
-					if (this.editor.getParam("paste_create_linebreaks", true)) {
-						content = content.replace(/\r\n/g, '<br />');
-						content = content.replace(/\r/g, '<br />');
-						content = content.replace(/\n/g, '<br />');
-					}
-				} 
-			
-				this.editor.execCommand("mceInsertRawHTML", false, this.editor.dom.encode(content)); 
-			}
-		},
-
-		_insertWordContent : function(content) { 
-			var t = this, ed = t.editor;
-
-			if (content && content.length > 0) {
-				// Cleanup Word content
-				var bull = String.fromCharCode(8226);
-				var middot = String.fromCharCode(183);
-
-				if (ed.getParam('paste_insert_word_content_callback'))
-					content = ed.execCallback('paste_insert_word_content_callback', 'before', content);
-
-				var rl = ed.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
-				for (var i=0; i<rl.length; i+=2)
-					content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
-
-				if (this.editor.getParam("paste_convert_headers_to_strong", false)) {
-					content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');
-				}
-
-				content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");
-				content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");
-				content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list
-				content = content.replace(/<o:p><\/o:p>/gi, "");
-				content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks
-				content = content.replace(new RegExp('<(!--)([^>]*)(--)>', 'g'), "");  // Word comments
-
-				if (this.editor.getParam("paste_remove_spans", true))
-					content = content.replace(/<\/?span[^>]*>/gi, "");
-
-				if (this.editor.getParam("paste_remove_styles", true))
-					content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");
-
-				content = content.replace(/<\/?font[^>]*>/gi, "");
-
-				// Strips class attributes.
-				switch (this.editor.getParam("paste_strip_class_attributes", "all")) {
-					case "all":
-						content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
-						break;
-
-					case "mso":
-						content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");
-						break;
-				}
-
-				content = content.replace(new RegExp('href="?' + this._reEscape("" + document.location) + '', 'gi'), 'href="' + this.editor.documentBaseURI.getURI());
-				content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
-				content = content.replace(/<\\?\?xml[^>]*>/gi, "");
-				content = content.replace(/<\/?\w+:[^>]*>/gi, "");
-				content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks
-				content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
-
-		//		content = content.replace(/\/?&nbsp;*/gi, ""); &nbsp;
-		//		content = content.replace(/<p>&nbsp;<\/p>/gi, '');
-
-				if (!this.editor.getParam('force_p_newlines')) {
-					content = content.replace('', '' ,'gi');
-					content = content.replace('</p>', '<br /><br />' ,'gi');
-				}
-
-				if (!tinymce.isIE && !this.editor.getParam('force_p_newlines')) {
-					content = content.replace(/<\/?p[^>]*>/gi, "");
-				}
-
-				content = content.replace(/<\/?div[^>]*>/gi, "");
-
-				// Convert all middlot lists to UL lists
-				if (this.editor.getParam("paste_convert_middot_lists", true)) {
-					var div = ed.dom.create("div", null, content);
-
-					// Convert all middot paragraphs to li elements
-					var className = this.editor.getParam("paste_unindented_list_class", "unIndentedList");
-
-					while (this._convertMiddots(div, "--list--")) ; // bull
-					while (this._convertMiddots(div, middot, className)) ; // Middot
-					while (this._convertMiddots(div, bull)) ; // bull
-
-					content = div.innerHTML;
-				}
-
-				// Replace all headers with strong and fix some other issues
-				if (this.editor.getParam("paste_convert_headers_to_strong", false)) {
-					content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');
-					content = content.replace(/<h[1-6]>/gi, '<p><b>');
-					content = content.replace(/<\/h[1-6]>/gi, '</b></p>');
-					content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');
-					content = content.replace(/^(&nbsp;)*/gi, '');
-				}
-
-				content = content.replace(/--list--/gi, ""); // Remove --list--
-
-				if (ed.getParam('paste_insert_word_content_callback'))
-					content = ed.execCallback('paste_insert_word_content_callback', 'after', content);
-
-				// Insert cleaned content
-				this.editor.execCommand("mceInsertContent", false, content);
-
-				if (this.editor.getParam('paste_force_cleanup_wordpaste', true)) {
-					var ed = this.editor;
-
-					window.setTimeout(function() {
-						ed.execCommand("mceCleanup");
-					}, 1); // Do normal cleanup detached from this thread
-				}
-			}
-		},
-
-		_reEscape : function(s) {
-			var l = "?.\\*[](){}+^$:";
-			var o = "";
-
-			for (var i=0; i<s.length; i++) {
-				var c = s.charAt(i);
-
-				if (l.indexOf(c) != -1)
-					o += '\\' + c;
-				else
-					o += c;
-			}
-
-			return o;
-		},
-
-		_convertMiddots : function(div, search, class_name) {
-			var ed = this.editor, mdot = String.fromCharCode(183), bull = String.fromCharCode(8226);
-			var nodes, prevul, i, p, ul, li, np, cp, li;
-
-			nodes = div.getElementsByTagName("p");
-			for (i=0; i<nodes.length; i++) {
-				p = nodes[i];
-
-				// Is middot
-				if (p.innerHTML.indexOf(search) == 0) {
-					ul = ed.dom.create("ul");
-
-					if (class_name)
-						ul.className = class_name;
-
-					// Add the first one
-					li = ed.dom.create("li");
-					li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
-					ul.appendChild(li);
-
-					// Add the rest
-					np = p.nextSibling;
-					while (np) {
-						// If the node is whitespace, then
-						// ignore it and continue on.
-						if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {
-								np = np.nextSibling;
-								continue;
-						}
-
-						if (search == mdot) {
-								if (np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)) {
-										// Second level of nesting
-										if (!prevul) {
-												prevul = ul;
-												ul = ed.dom.create("ul");
-												prevul.appendChild(ul);
-										}
-										np.innerHTML = np.innerHTML.replace(/^o/, '');
-								} else {
-										// Pop the stack if we're going back up to the first level
-										if (prevul) {
-												ul = prevul;
-												prevul = null;
-										}
-										// Not element or middot paragraph
-										if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
-												break;
-								}
-						} else {
-								// Not element or middot paragraph
-								if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
-										break;
-							}
-
-						cp = np.nextSibling;
-						li = ed.dom.create("li");
-						li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');
-						np.parentNode.removeChild(np);
-						ul.appendChild(li);
-						np = cp;
-					}
-
-					p.parentNode.replaceChild(ul, p);
-
-					return true;
-				}
-			}
-
-			return false;
-		},
-
-		_clipboardHTML : function() {
-			var div = document.getElementById('_TinyMCE_clipboardHTML');
-
-			if (!div) {
-				var div = document.createElement('DIV');
-				div.id = '_TinyMCE_clipboardHTML';
-
-				with (div.style) {
-					visibility = 'hidden';
-					overflow = 'hidden';
-					position = 'absolute';
-					width = 1;
-					height = 1;
-				}
-
-				document.body.appendChild(div);
-			}
-
-			div.innerHTML = '';
-			var rng = document.body.createTextRange();
-			rng.moveToElementText(div);
-			rng.execCommand('Paste');
-			var html = div.innerHTML;
-			div.innerHTML = '';
-			return html;
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('paste', tinymce.plugins.PastePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/js/pastetext.js
+++ /dev/null
@@ -1,42 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-function saveContent() {
-	if (document.forms[0].htmlSource.value == '') {
-		tinyMCEPopup.close();
-		return false;
-	}
-
-	tinyMCEPopup.execCommand('mcePasteText', false, {
-		html : document.forms[0].htmlSource.value,
-		linebreaks : document.forms[0].linebreaks.checked
-	});
-
-	tinyMCEPopup.close();
-}
-
-function onLoadInit() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// Remove Gecko spellchecking
-	if (tinymce.isGecko)
-		document.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");
-
-	resizeInputs();
-}
-
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-function resizeInputs() {
-	if (!tinymce.isIE) {
-		wHeight = self.innerHeight-80;
-		wWidth = self.innerWidth-17;
-	} else {
-		wHeight = document.body.clientHeight-80;
-		wWidth = document.body.clientWidth-17;
-	}
-
-	document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
-	document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';
-}
-
-tinyMCEPopup.onInit.add(onLoadInit);

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/js/pasteword.js
+++ /dev/null
@@ -1,57 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-function saveContent() {
-	var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;
-
-	if (html == ''){
-		tinyMCEPopup.close();
-		return false;
-	}
-
-	tinyMCEPopup.execCommand('mcePasteWord', false, html);
-	tinyMCEPopup.close();
-}
-
-function onLoadInit() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// Fix for endless reloading in FF
-	window.setTimeout(createIFrame, 10);
-}
-
-function createIFrame() {
-	document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';
-}
-
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-function initIframe(doc) {
-	var dir = tinyMCEPopup.editor.settings.directionality;
-
-	doc.body.dir = dir;
-
-	// Remove Gecko spellchecking
-	if (tinymce.isGecko)
-		doc.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");
-
-	resizeInputs();
-}
-
-function resizeInputs() {
-	if (!tinymce.isIE) {
-		wHeight = self.innerHeight - 80;
-		wWidth = self.innerWidth - 18;
-	} else {
-		wHeight = document.body.clientHeight - 80;
-		wWidth = document.body.clientWidth - 18;
-	}
-
-	var elm = document.getElementById('frmData');
-	if (elm) {
-		elm.style.height = Math.abs(wHeight) + 'px';
-		elm.style.width  = Math.abs(wWidth) + 'px';
-	}
-}
-
-tinyMCEPopup.onInit.add(onLoadInit);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/jscripts/pastetext.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/jscripts/pastetext.js
@@ -1,39 +1,39 @@
-function saveContent() {
-	if (document.forms[0].htmlSource.value == '') {
-		tinyMCEPopup.close();
-		return false;
-	}
+function saveContent() {

+	if (document.forms[0].htmlSource.value == '') {

+		tinyMCEPopup.close();

+		return false;

+	}

+

+	tinyMCEPopup.execCommand('mcePasteText', false, {

+		html : document.forms[0].htmlSource.value,

+		linebreaks : document.forms[0].linebreaks.checked

+	});

+

+	tinyMCEPopup.close();

+}

+

+function onLoadInit() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	// Remove Gecko spellchecking

+	if (tinyMCE.isGecko)

+		document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");

+

+	resizeInputs();

+}

+

+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;

+

+function resizeInputs() {

+	if (!tinyMCE.isMSIE) {

+		wHeight = self.innerHeight-80;

+		wWidth = self.innerWidth-17;

+	} else {

+		wHeight = document.body.clientHeight-80;

+		wWidth = document.body.clientWidth-17;

+	}

+

+	document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';

+	document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';

+}

 
-	tinyMCEPopup.execCommand('mcePasteText', false, {
-		html : document.forms[0].htmlSource.value,
-		linebreaks : document.forms[0].linebreaks.checked
-	});
-
-	tinyMCEPopup.close();
-}
-
-function onLoadInit() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// Remove Gecko spellchecking
-	if (tinyMCE.isGecko)
-		document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
-
-	resizeInputs();
-}
-
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-function resizeInputs() {
-	if (!tinyMCE.isMSIE) {
-		wHeight = self.innerHeight-80;
-		wWidth = self.innerWidth-17;
-	} else {
-		wHeight = document.body.clientHeight-80;
-		wWidth = document.body.clientWidth-17;
-	}
-
-	document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
-	document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/jscripts/pasteword.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/jscripts/pasteword.js
@@ -1,53 +1,53 @@
-function saveContent() {
-	var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;
+function saveContent() {

+	var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;

+

+	if (html == ''){

+		tinyMCEPopup.close();

+		return false;

+	}

+

+	tinyMCEPopup.execCommand('mcePasteWord', false, html);

+	tinyMCEPopup.close();

+}

+

+function onLoadInit() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	// Fix for endless reloading in FF

+	window.setTimeout('createIFrame();', 10);

+}

+

+function createIFrame() {

+	document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';

+}

+

+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;

+

+function initIframe(doc) {

+	var dir = tinyMCE.selectedInstance.settings['directionality'];

+

+	doc.body.dir = dir;

+

+	// Remove Gecko spellchecking

+	if (tinyMCE.isGecko)

+		doc.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");

+

+	resizeInputs();

+}

+

+function resizeInputs() {

+	if (!tinyMCE.isMSIE) {

+		wHeight = self.innerHeight - 80;

+		wWidth = self.innerWidth - 18;

+	} else {

+		wHeight = document.body.clientHeight - 80;

+		wWidth = document.body.clientWidth - 18;

+	}

+

+	var elm = document.getElementById('frmData');

+	if (elm) {

+		elm.style.height = Math.abs(wHeight) + 'px';

+		elm.style.width  = Math.abs(wWidth) + 'px';

+	}

+}

 
-	if (html == ''){
-		tinyMCEPopup.close();
-		return false;
-	}
-
-	tinyMCEPopup.execCommand('mcePasteWord', false, html);
-	tinyMCEPopup.close();
-}
-
-function onLoadInit() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// Fix for endless reloading in FF
-	window.setTimeout('createIFrame();', 10);
-}
-
-function createIFrame() {
-	document.getElementById('iframecontainer').innerHTML = '<iframe id="frmData" name="frmData" class="sourceIframe" src="blank.htm" height="280" width="400" frameborder="0" style="background-color:#FFFFFF; width:100%;" dir="ltr" wrap="soft"></iframe>';
-}
-
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-function initIframe(doc) {
-	var dir = tinyMCE.selectedInstance.settings['directionality'];
-
-	doc.body.dir = dir;
-
-	// Remove Gecko spellchecking
-	if (tinyMCE.isGecko)
-		doc.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
-
-	resizeInputs();
-}
-
-function resizeInputs() {
-	if (!tinyMCE.isMSIE) {
-		wHeight = self.innerHeight - 80;
-		wWidth = self.innerWidth - 18;
-	} else {
-		wHeight = document.body.clientHeight - 80;
-		wWidth = document.body.clientWidth - 18;
-	}
-
-	var elm = document.getElementById('frmData');
-	if (elm) {
-		elm.style.height = Math.abs(wHeight) + 'px';
-		elm.style.width  = Math.abs(wWidth) + 'px';
-	}
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/langs/en.js
@@ -1,11 +1,11 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+paste_text_desc : 'Paste as Plain Text',

+paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.',

+paste_text_linebreaks : 'Keep linebreaks',

+paste_word_desc : 'Paste from Word',

+paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.',

+selectall_desc : 'Select All'

+});

 
-tinyMCE.addToLang('',{
-paste_text_desc : 'Paste as Plain Text',
-paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
-paste_text_linebreaks : 'Keep linebreaks',
-paste_word_desc : 'Paste from Word',
-paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.',
-selectall_desc : 'Select All'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js
+++ /dev/null
@@ -1,5 +1,1 @@
-tinyMCE.addI18n('en.paste_dlg',{
-text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
-text_linebreaks:"Keep linebreaks",
-word_title:"Use CTRL+V on your keyboard to paste the text into the window."
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/pastetext.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/pastetext.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#paste.paste_text_desc}</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/pastetext.js"></script>
-	<base target="_self" />
-</head>
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
-<form name="source" onsubmit="saveContent();return false;" action="#">
-	<div style="float: left" class="title">{#paste.paste_text_desc}</div>
-
-	<div style="float: right">
-		<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>
-	</div>
-
-	<br style="clear: both" />
-
-	<div>{#paste_dlg.text_title}</div>
-
-	<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" name="insert" value="{#insert}" id="insert" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
-		</div>
-	</div>
-</form>
-</body> 
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_paste_text_desc}</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/pastetext.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">

+<form name="source" onsubmit="saveContent();">

+	<div style="float: left" class="title">{$lang_paste_text_desc}</div>

+

+	<div style="float: right">

+		<input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{$lang_paste_text_linebreaks}</label>

+	</div>

+

+	<br style="clear: both" />

+

+	<div>{$lang_paste_text_title}</div>

+

+	<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft"></textarea>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" name="insert" value="{$lang_insert}" onclick="saveContent();" id="insert" />

+		</div>

+

+		<div style="float: right">

+			<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />

+		</div>

+	</div>

+</form>

+</body> 

 </html>

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/pasteword.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/pasteword.htm
@@ -1,30 +1,30 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<title>{#paste.paste_word_desc}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/pasteword.js"></script>
-	<link href="css/pasteword.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
-	<form name="source" onsubmit="saveContent();" action="#">
-		<div class="title">{#paste.paste_word_desc}</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

+	<title>{$lang_paste_word_desc}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/pasteword.js"></script>

+	<link href="css/pasteword.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">

+	<form name="source" onsubmit="saveContent();" action="#">

+		<div class="title">{$lang_paste_word_desc}</div>

+

+		<div>{$lang_paste_word_title}</div>

+

+		<div id="iframecontainer"></div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="saveContent();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div>{#paste_dlg.word_title}</div>
-
-		<div id="iframecontainer"></div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="button" id="insert" name="insert" value="{#insert}" onclick="saveContent();" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/paste/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/paste/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/preview/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/preview/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.Preview',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mcePreview',t._preview,t);ed.addButton('preview',{title:'preview.preview_desc',cmd:'mcePreview'});},getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_preview:function(){var ed=this.editor,win,html,c,pos,pos2,css,i,page=ed.getParam("plugin_preview_pageurl",null),w=ed.getParam("plugin_preview_width","550"),h=ed.getParam("plugin_preview_height","600");if(page){ed.windowManager.open({file:ed.getParam("plugin_preview_pageurl",null),width:w,height:h},{resizable:"yes",scrollbars:"yes",inline:1});}else{win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+w+",height="+h);html="";c=ed.getContent();pos=c.indexOf('<body');css=ed.getParam("content_css",'').split(',');tinymce.map(css,function(u){return ed.documentBaseURI.toAbsolute(u);});if(pos!=-1){pos=c.indexOf('>',pos);pos2=c.lastIndexOf('</body>');c=c.substring(pos+1,pos2);}html+=ed.getParam('doctype');html+='<html xmlns="http://www.w3.org/1999/xhtml">';html+='<head>';html+='<title>'+ed.getLang('preview.preview_desc')+'</title>';html+='<base href="'+ed.documentBaseURI.getURI()+'" />';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(i=0;i<css.length;i++)html+='<link href="'+css[i]+'" rel="stylesheet" type="text/css" />';html+='</head>';html+='<body dir="'+ed.getParam("directionality")+'" onload="window.opener.tinymce.EditorManager.get(\''+ed.id+'\').plugins[\'preview\']._onLoad(window,document);">';html+=c;html+='</body>';html+='</html>';win.document.write(html);win.document.close();}},_onLoad:function(w,d){var t=this,nl,i,el=[],sv,ne;t._doc=d;w.writeFlash=t._writeFlash;w.writeShockWave=t._writeShockWave;w.writeQuickTime=t._writeQuickTime;w.writeRealMedia=t._writeRealMedia;w.writeWindowsMedia=t._writeWindowsMedia;w.writeEmbed=t._writeEmbed;nl=d.getElementsByTagName("script");for(i=0;i<nl.length;i++){sv=tinymce.isIE?nl[i].innerHTML:nl[i].firstChild.nodeValue;if(new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*','g').test(sv))el[el.length]=nl[i];}for(i=0;i<el.length;i++){ne=d.createElement("div");ne.innerHTML=d._embeds[i];el[i].parentNode.insertBefore(ne.firstChild,el[i]);}},_writeFlash:function(p){p.src=this.editor.documentBaseURI.toAbsolute(p.src);TinyMCE_PreviewPlugin._writeEmbed('D27CDB6E-AE6D-11cf-96B8-444553540000','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','application/x-shockwave-flash',p);},_writeShockWave:function(p){this.editor.documentBaseURI.toAbsolute(p.src);TinyMCE_PreviewPlugin._writeEmbed('166B1BCA-3F9C-11CF-8075-444553540000','http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0','application/x-director',p);},_writeQuickTime:function(p){this.editor.documentBaseURI.toAbsolute(p.src);TinyMCE_PreviewPlugin._writeEmbed('02BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0','video/quicktime',p);},_writeRealMedia:function(p){this.editor.documentBaseURI.toAbsolute(p.src);TinyMCE_PreviewPlugin._writeEmbed('CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','audio/x-pn-realaudio-plugin',p);},_writeWindowsMedia:function(p){this.editor.documentBaseURI.toAbsolute(p.src);p.url=p.src;TinyMCE_PreviewPlugin._writeEmbed('6BF52A52-394A-11D3-B153-00C04F79FAA6','http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701','application/x-mplayer2',p);},_writeEmbed:function(cls,cb,mt,p){var h='',n,d=t._doc,ne,c;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?'height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'align="'+p.align+'"':'';h+='>';for(n in p)h+='<param name="'+n+'" value="'+p[n]+'">';h+='<embed type="'+mt+'"';for(n in p)h+=n+'="'+p[n]+'" ';h+='></embed></object>';d._embeds[d._embeds.length]=h;}});tinymce.PluginManager.add('preview',tinymce.plugins.Preview);})();
+tinyMCE.importPluginLanguagePack('preview');var TinyMCE_PreviewPlugin={getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"preview":return tinyMCE.getButtonHTML(cn,'lang_preview_desc','{$pluginurl}/images/preview.gif','mcePreview')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes",inline:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")})}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="",i;var c=tinyMCE.getContent();var pos=c.indexOf('<body'),pos2,css=tinyMCE.getParam("content_css").split(',');if(pos!=-1){pos=c.indexOf('>',pos);pos2=c.lastIndexOf('</body>');c=c.substring(pos+1,pos2)}html+=tinyMCE.getParam('doctype');html+='<html xmlns="http://www.w3.org/1999/xhtml">';html+='<head>';html+='<title>'+tinyMCE.getLang('lang_preview_desc')+'</title>';html+='<base href="'+tinyMCE.settings['base_href']+'" />';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(i=0;i<css.length;i++)html+='<link href="'+css[i]+'" rel="stylesheet" type="text/css" />';html+='<script type="text/javascript">';html+='window.opener.TinyMCE_PreviewPlugin._setDoc(document);';html+='window.opener.TinyMCE_PreviewPlugin._setWin(window);';html+='writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';html+='writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';html+='writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';html+='writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';html+='writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';html+='writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';html+='</script>';html+='</head>';html+='<body dir="'+tinyMCE.getParam("directionality")+'" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';html+=c;html+='</body>';html+='</html>';win.document.write(html);win.document.close()}return true}return false},_setDoc:function(d){TinyMCE_PreviewPlugin._doc=d;d._embeds=new Array()},_setWin:function(d){TinyMCE_PreviewPlugin._win=d},_onLoad:function(){var nl,i,el=new Array(),d=TinyMCE_PreviewPlugin._doc,sv,ne;nl=d.getElementsByTagName("script");for(i=0;i<nl.length;i++){sv=tinyMCE.isMSIE?nl[i].innerHTML:nl[i].firstChild.nodeValue;if(new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*','g').test(sv))el[el.length]=nl[i]}for(i=0;i<el.length;i++){ne=d.createElement("div");ne.innerHTML=d._embeds[i];el[i].parentNode.insertBefore(ne.firstChild,el[i])}},_writeFlash:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('D27CDB6E-AE6D-11cf-96B8-444553540000','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','application/x-shockwave-flash',p)},_writeShockWave:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('166B1BCA-3F9C-11CF-8075-444553540000','http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0','application/x-director',p)},_writeQuickTime:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('02BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0','video/quicktime',p)},_writeRealMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);TinyMCE_PreviewPlugin._writeEmbed('CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0','audio/x-pn-realaudio-plugin',p)},_writeWindowsMedia:function(p){p.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],p.src);p.url=p.src;TinyMCE_PreviewPlugin._writeEmbed('6BF52A52-394A-11D3-B153-00C04F79FAA6','http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701','application/x-mplayer2',p)},_writeEmbed:function(cls,cb,mt,p){var h='',n,d=TinyMCE_PreviewPlugin._doc,ne,c;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?'height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'align="'+p.align+'"':'';h+='>';for(n in p)h+='<param name="'+n+'" value="'+p[n]+'">';h+='<embed type="'+mt+'"';for(n in p)h+=n+'="'+p[n]+'" ';h+='></embed></object>';d._embeds[d._embeds.length]=h}};tinyMCE.addPlugin("preview",TinyMCE_PreviewPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
@@ -1,187 +1,206 @@
 /**
- * $Id: editor_plugin_src.js 537 2008-01-14 16:38:33Z spocke $
+ * $Id$
  *
  * @author Moxiecode


  */
 
-(function() {
-	tinymce.create('tinymce.plugins.Preview', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			ed.addCommand('mcePreview', t._preview, t);
-			ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Preview',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_preview : function() {
-			var ed = this.editor, win, html, c, pos, pos2, css, i, page = ed.getParam("plugin_preview_pageurl", null), w = ed.getParam("plugin_preview_width", "550"), h = ed.getParam("plugin_preview_height", "600");
-
-			// Use a custom preview page
-			if (page) {
-				ed.windowManager.open({
-					file : ed.getParam("plugin_preview_pageurl", null),
-					width : w,
-					height : h
-				}, {
-					resizable : "yes",
-					scrollbars : "yes",
-					inline : 1
-				});
-			} else {
-				win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + w + ",height="  + h);
-				html = "";
-				c = ed.getContent();
-				pos = c.indexOf('<body');
-				css = ed.getParam("content_css", '').split(',');
-
-				tinymce.map(css, function(u) {
-					return ed.documentBaseURI.toAbsolute(u);
-				});
-
-				if (pos != -1) {
-					pos = c.indexOf('>', pos);
-					pos2 = c.lastIndexOf('</body>');
-					c = c.substring(pos + 1, pos2);
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('preview');
+
+var TinyMCE_PreviewPlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Preview',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	/**
+	 * Returns the HTML contents of the preview control.
+	 */
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "preview":
+				return tinyMCE.getButtonHTML(cn, 'lang_preview_desc', '{$pluginurl}/images/preview.gif', 'mcePreview');
+		}
+
+		return "";
+	},
+
+	/**
+	 * Executes the mcePreview command.
+	 */
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mcePreview":
+				var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
+				var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
+				var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
+
+				// Use a custom preview page
+				if (previewPage) {
+					var template = new Array();
+
+					template['file'] = previewPage;
+					template['width'] = previewWidth;
+					template['height'] = previewHeight;
+
+					tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", inline : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
+				} else {
+					var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height="  + previewHeight);
+					var html = "", i;
+					var c = tinyMCE.getContent();
+					var pos = c.indexOf('<body'), pos2, css = tinyMCE.getParam("content_css").split(',');
+
+					if (pos != -1) {
+						pos = c.indexOf('>', pos);
+						pos2 = c.lastIndexOf('</body>');
+						c = c.substring(pos + 1, pos2);
+					}
+
+					html += tinyMCE.getParam('doctype');
+					html += '<html xmlns="http://www.w3.org/1999/xhtml">';
+					html += '<head>';
+					html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
+					html += '<base href="' + tinyMCE.settings['base_href'] + '" />';
+					html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+					for (i=0; i<css.length; i++)
+						html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
+
+					html += '<script type="text/javascript">';
+					html += 'window.opener.TinyMCE_PreviewPlugin._setDoc(document);';
+					html += 'window.opener.TinyMCE_PreviewPlugin._setWin(window);';
+					html += 'writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';
+					html += 'writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';
+					html += 'writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';
+					html += 'writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';
+					html += 'writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';
+					html += 'writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';
+					html += '</script>';
+					html += '</head>';
+					html += '<body dir="' + tinyMCE.getParam("directionality") + '" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';
+					html += c;
+					html += '</body>';
+					html += '</html>';
+
+					win.document.write(html);
+					win.document.close();
 				}
 
-				html += ed.getParam('doctype');
-				html += '<html xmlns="http://www.w3.org/1999/xhtml">';
-				html += '<head>';
-				html += '<title>' + ed.getLang('preview.preview_desc') + '</title>';
-				html += '<base href="' + ed.documentBaseURI.getURI() + '" />';
-				html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
-
-				for (i=0; i<css.length; i++)
-					html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
-
-				html += '</head>';
-				html += '<body dir="' + ed.getParam("directionality") + '" onload="window.opener.tinymce.EditorManager.get(\'' + ed.id + '\').plugins[\'preview\']._onLoad(window,document);">';
-				html += c;
-				html += '</body>';
-				html += '</html>';
-
-				win.document.write(html);
-				win.document.close();
-			}
-		},
-
-		_onLoad : function(w, d) {
-			var t = this, nl, i, el = [], sv, ne;
-
-			t._doc = d;
-			w.writeFlash = t._writeFlash;
-			w.writeShockWave = t._writeShockWave;
-			w.writeQuickTime = t._writeQuickTime;
-			w.writeRealMedia = t._writeRealMedia;
-			w.writeWindowsMedia = t._writeWindowsMedia;
-			w.writeEmbed = t._writeEmbed;
-
-			nl = d.getElementsByTagName("script");
-			for (i=0; i<nl.length; i++) {
-				sv = tinymce.isIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
-
-				if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
-					el[el.length] = nl[i];
-			}
-
-			for (i=0; i<el.length; i++) {
-				ne = d.createElement("div");
-				ne.innerHTML = d._embeds[i];
-				el[i].parentNode.insertBefore(ne.firstChild, el[i]);
-			}
-		},
-
-		_writeFlash : function(p) {
-			p.src = this.editor.documentBaseURI.toAbsolute(p.src);
-			TinyMCE_PreviewPlugin._writeEmbed(
-				'D27CDB6E-AE6D-11cf-96B8-444553540000',
-				'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-				'application/x-shockwave-flash',
-				p
-			);
-		},
-
-		_writeShockWave : function(p) {
-			this.editor.documentBaseURI.toAbsolute(p.src);
-			TinyMCE_PreviewPlugin._writeEmbed(
-				'166B1BCA-3F9C-11CF-8075-444553540000',
-				'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-				'application/x-director',
-				p
-			);
-		},
-
-		_writeQuickTime : function(p) {
-			this.editor.documentBaseURI.toAbsolute(p.src);
-			TinyMCE_PreviewPlugin._writeEmbed(
-				'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-				'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-				'video/quicktime',
-				p
-			);
-		},
-
-		_writeRealMedia : function(p) {
-			this.editor.documentBaseURI.toAbsolute(p.src);
-			TinyMCE_PreviewPlugin._writeEmbed(
-				'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-				'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-				'audio/x-pn-realaudio-plugin',
-				p
-			);
-		},
-
-		_writeWindowsMedia : function(p) {
-			this.editor.documentBaseURI.toAbsolute(p.src);
-			p.url = p.src;
-			TinyMCE_PreviewPlugin._writeEmbed(
-				'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-				'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-				'application/x-mplayer2',
-				p
-			);
-		},
-
-		_writeEmbed : function(cls, cb, mt, p) {
-			var h = '', n, d = t._doc, ne, c;
-
-			h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-			h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-			h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-			h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-			h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-			h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-			h += '>';
-
-			for (n in p)
-				h += '<param name="' + n + '" value="' + p[n] + '">';
-
-			h += '<embed type="' + mt + '"';
-
-			for (n in p)
-				h += n + '="' + p[n] + '" ';
-
-			h += '></embed></object>';
-
-			d._embeds[d._embeds.length] = h;
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
-})();
+				return true;
+		}
+
+		return false;
+	},
+
+	_setDoc : function(d) {
+		TinyMCE_PreviewPlugin._doc = d;
+		d._embeds = new Array();
+	},
+
+	_setWin : function(d) {
+		TinyMCE_PreviewPlugin._win = d;
+	},
+
+	_onLoad : function() {
+		var nl, i, el = new Array(), d = TinyMCE_PreviewPlugin._doc, sv, ne;
+
+		nl = d.getElementsByTagName("script");
+		for (i=0; i<nl.length; i++) {
+			sv = tinyMCE.isMSIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
+
+			if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
+				el[el.length] = nl[i];
+		}
+
+		for (i=0; i<el.length; i++) {
+			ne = d.createElement("div");
+			ne.innerHTML = d._embeds[i];
+			el[i].parentNode.insertBefore(ne.firstChild, el[i]);
+		}
+	},
+
+	_writeFlash : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'D27CDB6E-AE6D-11cf-96B8-444553540000',
+			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+			'application/x-shockwave-flash',
+			p
+		);
+	},
+
+	_writeShockWave : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'166B1BCA-3F9C-11CF-8075-444553540000',
+			'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+			'application/x-director',
+			p
+		);
+	},
+
+	_writeQuickTime : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+			'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+			'video/quicktime',
+			p
+		);
+	},
+
+	_writeRealMedia : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+			'audio/x-pn-realaudio-plugin',
+			p
+		);
+	},
+
+	_writeWindowsMedia : function(p) {
+		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
+		p.url = p.src;
+		TinyMCE_PreviewPlugin._writeEmbed(
+			'6BF52A52-394A-11D3-B153-00C04F79FAA6',
+			'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+			'application/x-mplayer2',
+			p
+		);
+	},
+
+	_writeEmbed : function(cls, cb, mt, p) {
+		var h = '', n, d = TinyMCE_PreviewPlugin._doc, ne, c;
+
+		h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+		h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+		h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+		h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+		h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+		h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+		h += '>';
+
+		for (n in p)
+			h += '<param name="' + n + '" value="' + p[n] + '">';
+
+		h += '<embed type="' + mt + '"';
+
+		for (n in p)
+			h += n + '="' + p[n] + '" ';
+
+		h += '></embed></object>';
+
+		d._embeds[d._embeds.length] = h;
+	}
+};
+
+tinyMCE.addPlugin("preview", TinyMCE_PreviewPlugin);
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/preview/example.html
+++ b/tinymce/2/jscripts/tiny_mce/plugins/preview/example.html
@@ -1,29 +1,15 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script type="text/javascript" src="jscripts/embed.js"></script>
-<script type="text/javascript">
-tinyMCEPopup.onInit.add(function(ed) {
-	var dom = tinyMCEPopup.dom;
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+<script language="javascript" src="../../tiny_mce_popup.js"></script>

+<script type="text/javascript" src="jscripts/embed.js"></script>

+<title>Example of a custom preview page</title>

+<link href="{$content_css}" rel="stylesheet" type="text/css" />

+</head>

+<body>

+

+Editor contents: <br />

+{$content}

+

+</body>

+</html>

 
-	// Load editor content_css
-	tinymce.each(ed.settings.content_css.split(','), function(u) {
-		dom.loadCSS(ed.documentBaseURI.toAbsolute(u));
-	});
-
-	// Place contents inside div container
-	dom.setHTML('content', ed.getContent());
-});
-</script>
-<title>Example of a custom preview page</title>
-</head>
-<body>
-
-Editor contents: <br />
-<div id="content">
-<!-- Gets filled with editor contents -->
-</div>
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/preview/jscripts/embed.js
@@ -1,74 +1,74 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
+/**

+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.

+ */

+

+function writeFlash(p) {

+	writeEmbed(

+		'D27CDB6E-AE6D-11cf-96B8-444553540000',

+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',

+		'application/x-shockwave-flash',

+		p

+	);

+}

+

+function writeShockWave(p) {

+	writeEmbed(

+	'166B1BCA-3F9C-11CF-8075-444553540000',

+	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',

+	'application/x-director',

+		p

+	);

+}

+

+function writeQuickTime(p) {

+	writeEmbed(

+		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',

+		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',

+		'video/quicktime',

+		p

+	);

+}

+

+function writeRealMedia(p) {

+	writeEmbed(

+		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',

+		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',

+		'audio/x-pn-realaudio-plugin',

+		p

+	);

+}

+

+function writeWindowsMedia(p) {

+	p.url = p.src;

+	writeEmbed(

+		'6BF52A52-394A-11D3-B153-00C04F79FAA6',

+		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',

+		'application/x-mplayer2',

+		p

+	);

+}

+

+function writeEmbed(cls, cb, mt, p) {

+	var h = '', n;

+

+	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';

+	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';

+	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';

+	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';

+	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';

+	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';

+	h += '>';

+

+	for (n in p)

+		h += '<param name="' + n + '" value="' + p[n] + '">';

+

+	h += '<embed type="' + mt + '"';

+

+	for (n in p)

+		h += n + '="' + p[n] + '" ';

+

+	h += '></embed></object>';

+

+	document.write(h);

+}

 
-function writeFlash(p) {
-	writeEmbed(
-		'D27CDB6E-AE6D-11cf-96B8-444553540000',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'application/x-shockwave-flash',
-		p
-	);
-}
-
-function writeShockWave(p) {
-	writeEmbed(
-	'166B1BCA-3F9C-11CF-8075-444553540000',
-	'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-	'application/x-director',
-		p
-	);
-}
-
-function writeQuickTime(p) {
-	writeEmbed(
-		'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-		'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-		'video/quicktime',
-		p
-	);
-}
-
-function writeRealMedia(p) {
-	writeEmbed(
-		'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-		'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-		'audio/x-pn-realaudio-plugin',
-		p
-	);
-}
-
-function writeWindowsMedia(p) {
-	p.url = p.src;
-	writeEmbed(
-		'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-		'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-		'application/x-mplayer2',
-		p
-	);
-}
-
-function writeEmbed(cls, cb, mt, p) {
-	var h = '', n;
-
-	h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-	h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-	h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-	h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-	h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-	h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-	h += '>';
-
-	for (n in p)
-		h += '<param name="' + n + '" value="' + p[n] + '">';
-
-	h += '<embed type="' + mt + '"';
-
-	for (n in p)
-		h += n + '="' + p[n] + '" ';
-
-	h += '></embed></object>';
-
-	document.write(h);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/preview/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/preview/langs/en.js
@@ -1,6 +1,6 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+preview_desc : 'Preview'

+});

 
-tinyMCE.addToLang('',{
-preview_desc : 'Preview'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/preview/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/preview/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/print/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/print/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.Print',{init:function(ed,url){ed.addCommand('mcePrint',function(){ed.getWin().print();});ed.addButton('print',{title:'print.print_desc',cmd:'mcePrint'});},getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('print',tinymce.plugins.Print);})();
+tinyMCE.importPluginLanguagePack('print');var TinyMCE_PrintPlugin={getInfo:function(){return{longname:'Print',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"print":return tinyMCE.getButtonHTML(cn,'lang_print_desc','{$pluginurl}/images/print.gif','mcePrint')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return true}return false}};tinyMCE.addPlugin("print",TinyMCE_PrintPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/print/editor_plugin_src.js
@@ -1,32 +1,48 @@
-/**
- * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import theme	specific language pack */

+tinyMCE.importPluginLanguagePack('print');

+

+var TinyMCE_PrintPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Print',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	getControlHTML : function(cn)	{

+		switch (cn) {

+			case "print":

+				return tinyMCE.getButtonHTML(cn, 'lang_print_desc', '{$pluginurl}/images/print.gif', 'mcePrint');

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes	the	search/replace commands.

+	 */

+	execCommand : function(editor_id, element, command,	user_interface,	value) {

+		// Handle commands

+		switch (command) {

+			case "mcePrint":

+				tinyMCE.getInstanceById(editor_id).contentWindow.print();

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	}

+};

+

+tinyMCE.addPlugin("print", TinyMCE_PrintPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.Print', {
-		init : function(ed, url) {
-			ed.addCommand('mcePrint', function() {
-				ed.getWin().print();
-			});
-
-			ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Print',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('print', tinymce.plugins.Print);
-})();
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/print/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/print/langs/en.js
@@ -1,6 +1,6 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+print_desc : 'Print'

+});

 
-tinyMCE.addToLang('',{
-print_desc : 'Print'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/print/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/print/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/readme.txt
@@ -1,2 +1,2 @@
-This is the location you place TinyMCE plugins.
+This is the location you place TinyMCE plugins.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/safari/blank.htm
+++ /dev/null
@@ -1,1 +1,1 @@
-<!-- WebKit -->
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/safari/editor_plugin.js
+++ /dev/null
@@ -1,1 +1,1 @@
-(function(){var Event=tinymce.dom.Event,grep=tinymce.grep,each=tinymce.each,inArray=tinymce.inArray,isOldWebKit=tinymce.isOldWebKit;tinymce.create('tinymce.plugins.Safari',{init:function(ed){var t=this,dom;if(!tinymce.isWebKit)return;t.editor=ed;t.webKitFontSizes=['x-small','small','medium','large','x-large','xx-large','-webkit-xxx-large'];t.namedFontSizes=['xx-small','x-small','small','medium','large','x-large','xx-large'];ed.onPaste.add(function(ed,e){function removeStyles(e){e=e.target;if(e.nodeType==1){e.style.cssText='';each(ed.dom.select('*',e),function(e){e.style.cssText='';});}};Event.add(ed.getDoc(),'DOMNodeInserted',removeStyles);window.setTimeout(function(){Event.remove(ed.getDoc(),'DOMNodeInserted',removeStyles);},0);});ed.onKeyUp.add(function(ed,e){var h,b;if(e.keyCode==46||e.keyCode==8){b=ed.getBody();h=b.innerHTML;if(b.childNodes.length==1&&!/<(img|hr)/.test(h)&&tinymce.trim(h.replace(/<[^>]+>/g,'')).length==0)ed.setContent('',{format:'raw'});}});ed.addCommand('FormatBlock',function(u,v){var dom=ed.dom,e=dom.getParent(ed.selection.getNode(),dom.isBlock);if(e)dom.replace(dom.create(v),e,1);else ed.getDoc().execCommand("FormatBlock",false,v);});ed.addCommand('mceInsertContent',function(u,v){ed.getDoc().execCommand("InsertText",false,'mce_marker');ed.getBody().innerHTML=ed.getBody().innerHTML.replace(/mce_marker/g,v+'<span id="_mce_tmp">XX</span>');ed.selection.select(ed.dom.get('_mce_tmp'));ed.getDoc().execCommand("Delete",false,' ');});ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&(e.shiftKey||ed.settings.force_br_newlines&&ed.selection.getNode().nodeName!='LI')){t._insertBR(ed);Event.cancel(e);}});ed.addQueryValueHandler('FontSize',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontSize))return tinymce.inArray(t.namedFontSizes,v)+1;return ed.getDoc().queryCommandValue('FontSize');});ed.addQueryValueHandler('FontName',function(u,v){var e,v;if((e=ed.dom.getParent(ed.selection.getStart(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');if((e=ed.dom.getParent(ed.selection.getEnd(),'span'))&&(v=e.style.fontFamily))return v.replace(/, /g,',');return ed.getDoc().queryCommandValue('FontName');});ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName=='IMG'){t.selElm=e;ed.selection.select(e);}else t.selElm=null;});ed.onInit.add(function(){t._fixWebKitSpans();if(isOldWebKit)t._patchSafari2x(ed);});ed.onSetContent.add(function(){dom=ed.dom;each(['strong','b','em','u','strike','sub','sup','a'],function(v){each(grep(dom.select(v)).reverse(),function(n){var nn=n.nodeName.toLowerCase(),st;if(nn=='a'){if(n.name)dom.replace(dom.create('img',{mce_name:'a',name:n.name,'class':'mceItemAnchor'}),n);return;}switch(nn){case'b':case'strong':if(nn=='b')nn='strong';st='font-weight: bold;';break;case'em':st='font-style: italic;';break;case'u':st='text-decoration: underline;';break;case'sub':st='vertical-align: sub;';break;case'sup':st='vertical-align: super;';break;case'strike':st='text-decoration: line-through;';break;}dom.replace(dom.create('span',{mce_name:nn,style:st,'class':'Apple-style-span'}),n,1);});});});ed.onPreProcess.add(function(ed,o){dom=ed.dom;each(grep(o.node.getElementsByTagName('span')).reverse(),function(n){var v,bg;if(o.get){if(dom.hasClass(n,'Apple-style-span')){bg=n.style.backgroundColor;switch(dom.getAttrib(n,'mce_name')){case'font':if(!ed.settings.convert_fonts_to_spans)dom.setAttrib(n,'style','');break;case'strong':case'em':case'sub':case'sup':dom.setAttrib(n,'style','');break;case'strike':case'u':if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');else dom.setAttrib(n,'mce_name','');break;default:if(!ed.settings.inline_styles)dom.setAttrib(n,'style','');}if(bg)n.style.backgroundColor=bg;}}if(dom.hasClass(n,'mceItemRemoved'))dom.remove(n,1);});});ed.onPostProcess.add(function(ed,o){o.content=o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,'</$1>');o.content=o.content.replace(/ id=\"undefined\"/g,'');});},getInfo:function(){return{longname:'Safari compatibility',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_fixWebKitSpans:function(){var t=this,ed=t.editor;if(!isOldWebKit){Event.add(ed.getDoc(),'DOMNodeInserted',function(e){e=e.target;if(e&&e.nodeType==1)t._fixAppleSpan(e);});}else{ed.onExecCommand.add(function(){each(ed.dom.select('span'),function(n){t._fixAppleSpan(n);});ed.nodeChanged();});}},_fixAppleSpan:function(e){var ed=this.editor,dom=ed.dom,fz=this.webKitFontSizes,fzn=this.namedFontSizes,s=ed.settings,st,p;if(dom.getAttrib(e,'mce_fixed'))return;if(e.nodeName=='SPAN'&&e.className=='Apple-style-span'){st=e.style;if(!s.convert_fonts_to_spans){if(st.fontSize){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'size',inArray(fz,st.fontSize)+1);}if(st.fontFamily){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'face',st.fontFamily);}if(st.color){dom.setAttrib(e,'mce_name','font');dom.setAttrib(e,'color',dom.toHex(st.color));}if(st.backgroundColor){dom.setAttrib(e,'mce_name','font');dom.setStyle(e,'background-color',st.backgroundColor);}}else{if(st.fontSize)dom.setStyle(e,'fontSize',fzn[inArray(fz,st.fontSize)]);}if(st.fontWeight=='bold')dom.setAttrib(e,'mce_name','strong');if(st.fontStyle=='italic')dom.setAttrib(e,'mce_name','em');if(st.textDecoration=='underline')dom.setAttrib(e,'mce_name','u');if(st.textDecoration=='line-through')dom.setAttrib(e,'mce_name','strike');if(st.verticalAlign=='super')dom.setAttrib(e,'mce_name','sup');if(st.verticalAlign=='sub')dom.setAttrib(e,'mce_name','sub');dom.setAttrib(e,'mce_fixed','1');}},_patchSafari2x:function(ed){var t=this,setContent,getNode,dom=ed.dom,lr;if(ed.windowManager.onBeforeOpen){ed.windowManager.onBeforeOpen.add(function(){r=ed.selection.getRng();});}ed.selection.select=function(n){this.getSel().setBaseAndExtent(n,0,n,1);};getNode=ed.selection.getNode;ed.selection.getNode=function(){return t.selElm||getNode.call(this);};ed.selection.getRng=function(){var t=this,s=t.getSel(),d=ed.getDoc(),r,rb,ra,di;if(s.anchorNode){r=d.createRange();try{rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(1);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(1);di=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;r.setStart(di?s.anchorNode:s.focusNode,di?s.anchorOffset:s.focusOffset);r.setEnd(di?s.focusNode:s.anchorNode,di?s.focusOffset:s.anchorOffset);lr=r;}catch(ex){}}return r||lr;};setContent=ed.selection.setContent;ed.selection.setContent=function(h,s){var r=this.getRng(),b;try{setContent.call(this,h,s);}catch(ex){b=dom.create('body');b.innerHTML=h;each(b.childNodes,function(n){r.insertNode(n.cloneNode(true));});}};},_insertBR:function(ed){var dom=ed.dom,s=ed.selection,r=s.getRng(),br;r.insertNode(br=dom.create('br'));r.setStartAfter(br);r.setEndAfter(br);s.setRng(r);if(s.getSel().focusNode==br.previousSibling){s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'),br));s.collapse(1);}ed.getWin().scrollTo(0,dom.getPos(s.getRng().startContainer).y);}});tinymce.PluginManager.add('safari',tinymce.plugins.Safari);})();
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js
+++ /dev/null
@@ -1,461 +1,1 @@
-/**
- * $Id: editor_plugin_src.js 264 2007-04-26 20:53:09Z spocke $
- *
- * @author Moxiecode

- */
 
-(function() {
-	var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray, isOldWebKit = tinymce.isOldWebKit;
-
-	tinymce.create('tinymce.plugins.Safari', {
-		init : function(ed) {
-			var t = this, dom;
-
-			// Ignore on non webkit
-			if (!tinymce.isWebKit)
-				return;
-
-			t.editor = ed;
-			t.webKitFontSizes = ['x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', '-webkit-xxx-large'];
-			t.namedFontSizes = ['xx-small', 'x-small','small','medium','large','x-large', 'xx-large'];
-
-			// Safari will crash if the build in createlink command is used
-/*			ed.addCommand('CreateLink', function(u, v) {
-				ed.execCommand("mceInsertContent", false, '<a href="' + dom.encode(v) + '">' + ed.selection.getContent() + '</a>');
-			});*/
-
-			ed.onPaste.add(function(ed, e) {
-				function removeStyles(e) {
-					e = e.target;
-
-					if (e.nodeType == 1) {
-						e.style.cssText = '';
-
-						each(ed.dom.select('*', e), function(e) {
-							e.style.cssText = '';
-						});
-					}
-				};
-
-				Event.add(ed.getDoc(), 'DOMNodeInserted', removeStyles);
-
-				window.setTimeout(function() {
-					Event.remove(ed.getDoc(), 'DOMNodeInserted', removeStyles);
-				}, 0);
-			});
-
-			ed.onKeyUp.add(function(ed, e) {
-				var h, b;
-
-				// If backspace or delete key
-				if (e.keyCode == 46 || e.keyCode == 8) {
-					b = ed.getBody();
-					h = b.innerHTML;
-
-					// If there is no text content or images or hr elements then remove everything
-					if (b.childNodes.length == 1 && !/<(img|hr)/.test(h) && tinymce.trim(h.replace(/<[^>]+>/g, '')).length == 0)
-						ed.setContent('', {format : 'raw'});
-				}
-			});
-
-			// Workaround for FormatBlock bug, http://bugs.webkit.org/show_bug.cgi?id=16004
-			ed.addCommand('FormatBlock', function(u, v) {
-				var dom = ed.dom, e = dom.getParent(ed.selection.getNode(), dom.isBlock);
-
-				if (e)
-					dom.replace(dom.create(v), e, 1);
-				else
-					ed.getDoc().execCommand("FormatBlock", false, v);
-			});
-
-			// Workaround for InsertHTML bug, http://bugs.webkit.org/show_bug.cgi?id=16382
-			ed.addCommand('mceInsertContent', function(u, v) {
-				ed.getDoc().execCommand("InsertText", false, 'mce_marker');
-				ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, v + '<span id="_mce_tmp">XX</span>');
-				ed.selection.select(ed.dom.get('_mce_tmp'));
-				ed.getDoc().execCommand("Delete", false, ' ');
-			});
-
-			// Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973
-			ed.onKeyPress.add(function(ed, e) {
-				if (e.keyCode == 13 && (e.shiftKey || ed.settings.force_br_newlines && ed.selection.getNode().nodeName != 'LI')) {
-					t._insertBR(ed);
-					Event.cancel(e);
-				}
-			});
-
-			// Safari returns incorrect values
-			ed.addQueryValueHandler('FontSize', function(u, v) {
-				var e, v;
-
-				// Check for the real font size at the start of selection
-				if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontSize))
-					return tinymce.inArray(t.namedFontSizes, v) + 1;
-
-				// Check for the real font size at the end of selection
-				if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontSize))
-					return tinymce.inArray(t.namedFontSizes, v) + 1;
-
-				// Return default value it's better than nothing right!
-				return ed.getDoc().queryCommandValue('FontSize');
-			});
-
-			// Safari returns incorrect values
-			ed.addQueryValueHandler('FontName', function(u, v) {
-				var e, v;
-
-				// Check for the real font name at the start of selection
-				if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontFamily))
-					return v.replace(/, /g, ',');
-
-				// Check for the real font name at the end of selection
-				if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontFamily))
-					return v.replace(/, /g, ',');
-
-				// Return default value it's better than nothing right!
-				return ed.getDoc().queryCommandValue('FontName');
-			});
-
-			// Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
-			ed.onClick.add(function(ed, e) {
-				e = e.target;
-
-				if (e.nodeName == 'IMG') {
-					t.selElm = e;
-					ed.selection.select(e);
-				} else
-					t.selElm = null;
-			});
-
-/*			ed.onBeforeExecCommand.add(function(ed, c, b) {
-				var r = t.bookmarkRng;
-
-				// Restore selection
-				if (r) {
-					ed.selection.setRng(r);
-					t.bookmarkRng = null;
-					//console.debug('restore', r.startContainer, r.startOffset, r.endContainer, r.endOffset);
-				}
-			});*/
-
-			ed.onInit.add(function() {
-				t._fixWebKitSpans();
-
-/*				ed.windowManager.onOpen.add(function() {
-					var r = ed.selection.getRng();
-
-					// Store selection if valid
-					if (r.startContainer != ed.getDoc()) {
-						t.bookmarkRng = r.cloneRange();
-						//console.debug('store', r.startContainer, r.startOffset, r.endContainer, r.endOffset);
-					}
-				});
-
-				ed.windowManager.onClose.add(function() {
-					t.bookmarkRng = null;
-				});*/
-
-				if (isOldWebKit)
-					t._patchSafari2x(ed);
-			});
-
-			ed.onSetContent.add(function() {
-				dom = ed.dom;
-
-				// Convert strong,b,em,u,strike to spans
-				each(['strong','b','em','u','strike','sub','sup','a'], function(v) {
-					each(grep(dom.select(v)).reverse(), function(n) {
-						var nn = n.nodeName.toLowerCase(), st;
-
-						// Convert anchors into images
-						if (nn == 'a') {
-							if (n.name)
-								dom.replace(dom.create('img', {mce_name : 'a', name : n.name, 'class' : 'mceItemAnchor'}), n);
-
-							return;
-						}
-
-						switch (nn) {
-							case 'b':
-							case 'strong':
-								if (nn == 'b')
-									nn = 'strong';
-
-								st = 'font-weight: bold;';
-								break;
-
-							case 'em':
-								st = 'font-style: italic;';
-								break;
-
-							case 'u':
-								st = 'text-decoration: underline;';
-								break;
-
-							case 'sub':
-								st = 'vertical-align: sub;';
-								break;
-
-							case 'sup':
-								st = 'vertical-align: super;';
-								break;
-
-							case 'strike':
-								st = 'text-decoration: line-through;';
-								break;
-						}
-
-						dom.replace(dom.create('span', {mce_name : nn, style : st, 'class' : 'Apple-style-span'}), n, 1);
-					});
-				});
-			});
-
-			ed.onPreProcess.add(function(ed, o) {
-				dom = ed.dom;
-
-				each(grep(o.node.getElementsByTagName('span')).reverse(), function(n) {
-					var v, bg;
-
-					if (o.get) {
-						if (dom.hasClass(n, 'Apple-style-span')) {
-							bg = n.style.backgroundColor;
-
-							switch (dom.getAttrib(n, 'mce_name')) {
-								case 'font':
-									if (!ed.settings.convert_fonts_to_spans)
-										dom.setAttrib(n, 'style', '');
-									break;
-
-								case 'strong':
-								case 'em':
-								case 'sub':
-								case 'sup':
-									dom.setAttrib(n, 'style', '');
-									break;
-
-								case 'strike':
-								case 'u':
-									if (!ed.settings.inline_styles)
-										dom.setAttrib(n, 'style', '');
-									else
-										dom.setAttrib(n, 'mce_name', '');
-
-									break;
-
-								default:
-									if (!ed.settings.inline_styles)
-										dom.setAttrib(n, 'style', '');
-							}
-
-
-							if (bg)
-								n.style.backgroundColor = bg;
-						}
-					}
-
-					if (dom.hasClass(n, 'mceItemRemoved'))
-						dom.remove(n, 1);
-				});
-			});
-
-			ed.onPostProcess.add(function(ed, o) {
-				// Safari adds BR at end of all block elements
-				o.content = o.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g, '</$1>');
-
-				// Safari adds id="undefined" to HR elements
-				o.content = o.content.replace(/ id=\"undefined\"/g, '');
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Safari compatibility',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/safari',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Internal methods
-
-		_fixWebKitSpans : function() {
-			var t = this, ed = t.editor;
-
-			if (!isOldWebKit) {
-				// Use mutator events on new WebKit
-				Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {
-					e = e.target;
-
-					if (e && e.nodeType == 1)
-						t._fixAppleSpan(e);
-				});
-			} else {
-				// Do post command processing in old WebKit since the browser crashes on Mutator events :(
-				ed.onExecCommand.add(function() {
-					each(ed.dom.select('span'), function(n) {
-						t._fixAppleSpan(n);
-					});
-
-					ed.nodeChanged();
-				});
-			}
-		},
-
-		_fixAppleSpan : function(e) {
-			var ed = this.editor, dom = ed.dom, fz = this.webKitFontSizes, fzn = this.namedFontSizes, s = ed.settings, st, p;
-
-			if (dom.getAttrib(e, 'mce_fixed'))
-				return;
-
-			// Handle Apple style spans
-			if (e.nodeName == 'SPAN' && e.className == 'Apple-style-span') {
-				st = e.style;
-
-				if (!s.convert_fonts_to_spans) {
-					if (st.fontSize) {
-						dom.setAttrib(e, 'mce_name', 'font');
-						dom.setAttrib(e, 'size', inArray(fz, st.fontSize) + 1);
-					}
-
-					if (st.fontFamily) {
-						dom.setAttrib(e, 'mce_name', 'font');
-						dom.setAttrib(e, 'face', st.fontFamily);
-					}
-
-					if (st.color) {
-						dom.setAttrib(e, 'mce_name', 'font');
-						dom.setAttrib(e, 'color', dom.toHex(st.color));
-					}
-
-					if (st.backgroundColor) {
-						dom.setAttrib(e, 'mce_name', 'font');
-						dom.setStyle(e, 'background-color', st.backgroundColor);
-					}
-				} else {
-					if (st.fontSize)
-						dom.setStyle(e, 'fontSize', fzn[inArray(fz, st.fontSize)]);
-				}
-
-				if (st.fontWeight == 'bold')
-					dom.setAttrib(e, 'mce_name', 'strong');
-
-				if (st.fontStyle == 'italic')
-					dom.setAttrib(e, 'mce_name', 'em');
-
-				if (st.textDecoration == 'underline')
-					dom.setAttrib(e, 'mce_name', 'u');
-
-				if (st.textDecoration == 'line-through')
-					dom.setAttrib(e, 'mce_name', 'strike');
-
-				if (st.verticalAlign == 'super')
-					dom.setAttrib(e, 'mce_name', 'sup');
-
-				if (st.verticalAlign == 'sub')
-					dom.setAttrib(e, 'mce_name', 'sub');
-
-				dom.setAttrib(e, 'mce_fixed', '1');
-			}
-		},
-
-		_patchSafari2x : function(ed) {
-			var t = this, setContent, getNode, dom = ed.dom, lr;
-
-			// Inline dialogs
-			if (ed.windowManager.onBeforeOpen) {
-				ed.windowManager.onBeforeOpen.add(function() {
-					r = ed.selection.getRng();
-				});
-			}
-
-			// Fake select on 2.x
-			ed.selection.select = function(n) {
-				this.getSel().setBaseAndExtent(n, 0, n, 1);
-			};
-
-			getNode = ed.selection.getNode;
-			ed.selection.getNode = function() {
-				return t.selElm || getNode.call(this);
-			};
-
-			// Fake range on Safari 2.x
-			ed.selection.getRng = function() {
-				var t = this, s = t.getSel(), d = ed.getDoc(), r, rb, ra, di;
-
-				// Fake range on Safari 2.x
-				if (s.anchorNode) {
-					r = d.createRange();
-
-					try {
-						// Setup before range
-						rb = d.createRange();
-						rb.setStart(s.anchorNode, s.anchorOffset);
-						rb.collapse(1);
-
-						// Setup after range
-						ra = d.createRange();
-						ra.setStart(s.focusNode, s.focusOffset);
-						ra.collapse(1);
-
-						// Setup start/end points by comparing locations
-						di = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;
-						r.setStart(di ? s.anchorNode : s.focusNode, di ? s.anchorOffset : s.focusOffset);
-						r.setEnd(di ? s.focusNode : s.anchorNode, di ? s.focusOffset : s.anchorOffset);
-
-						lr = r;
-					} catch (ex) {
-						// Sometimes fails, at least we tried to do it by the book. I hope Safari 2.x will go disappear soooon!!!
-					}
-				}
-
-				return r || lr;
-			};
-
-			// Fix setContent so it works
-			setContent = ed.selection.setContent;
-			ed.selection.setContent = function(h, s) {
-				var r = this.getRng(), b;
-
-				try {
-					setContent.call(this, h, s);
-				} catch (ex) {
-					// Workaround for Safari 2.x
-					b = dom.create('body');
-					b.innerHTML = h;
-
-					each(b.childNodes, function(n) {
-						r.insertNode(n.cloneNode(true));
-					});
-				}
-			};
-		},
-
-		_insertBR : function(ed) {
-			var dom = ed.dom, s = ed.selection, r = s.getRng(), br;
-
-			// Insert BR element
-			r.insertNode(br = dom.create('br'));
-
-			// Place caret after BR
-			r.setStartAfter(br);
-			r.setEndAfter(br);
-			s.setRng(r);
-
-			// Could not place caret after BR then insert an nbsp entity and move the caret
-			if (s.getSel().focusNode == br.previousSibling) {
-				s.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));
-				s.collapse(1);
-			}
-
-			// Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
-			ed.getWin().scrollTo(0, dom.getPos(s.getRng().startContainer).y);
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('safari', tinymce.plugins.Safari);
-})();
-
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/save/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/save/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.Save',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceSave',t._save,t);ed.addCommand('mceCancel',t._cancel,t);ed.addButton('save',{title:'save.save_desc',cmd:'mceSave'});ed.addButton('cancel',{title:'save.cancel_desc',cmd:'mceCancel'});ed.onNodeChange.add(t._nodeChange,t);ed.addShortcut('ctrl+s',ed.getLang('save.save_desc'),'mceSave');},getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_nodeChange:function(ed,cm,n){var ed=this.editor;if(ed.getParam('save_enablewhendirty')){cm.setDisabled('save',!ed.isDirty());cm.setDisabled('cancel',!ed.isDirty());}},_save:function(){var ed=this.editor,formObj,os,i,elementId;formObj=tinymce.DOM.get(ed.id).form||tinymce.DOM.getParent(ed.id,'form');if(ed.getParam("save_enablewhendirty")&&!ed.isDirty())return;tinyMCE.triggerSave();if(os=ed.getParam("save_onsavecallback")){if(ed.execCallback('save_onsavecallback',ed)){ed.startContent=tinymce.trim(ed.getContent({format:'raw'}));ed.nodeChanged();}return;}if(formObj){ed.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)formObj.submit();ed.nodeChanged();}else ed.windowManager.alert("Error: No form element found.");},_cancel:function(){var ed=this.editor,os,h=tinymce.trim(ed.startContent);if(os=ed.getParam("save_oncancelcallback")){ed.execCallback('save_oncancelcallback',ed);return;}ed.setContent(h);ed.undoManager.clear();ed.nodeChanged();}});tinymce.PluginManager.add('save',tinymce.plugins.Save);})();
+tinyMCE.importPluginLanguagePack('save');var TinyMCE_SavePlugin={getInfo:function(){return{longname:'Save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','s','lang_save_desc','mceSave')},getControlHTML:function(cn){switch(cn){case"save":return tinyMCE.getButtonHTML(cn,'lang_save_desc','{$pluginurl}/images/save.gif','mceSave');case"cancel":return tinyMCE.getButtonHTML(cn,'lang_cancel_desc','{$pluginurl}/images/cancel.gif','mceCancel')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceSave":return this._save(editor_id,element,command,user_interface,value);case"mceCancel":return this._cancel(editor_id,element,command,user_interface,value)}return false},_save:function(editor_id,element,command,user_interface,value){var inst,formObj,os,i,elementId;if(tinyMCE.getParam("fullscreen_is_enabled"))return true;inst=tinyMCE.selectedInstance;formObj=inst.formElement.form;if(tinyMCE.getParam("save_enablewhendirty")&&!inst.isDirty())return true;if(formObj){tinyMCE.triggerSave();if((os=tinyMCE.getParam("save_onsavecallback"))){if(eval(os+'(inst);')){inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);tinyMCE.triggerNodeChange(false,true)}return true}for(i=0;i<formObj.elements.length;i++){elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true}inst.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)inst.formElement.form.submit();tinyMCE.triggerNodeChange(false,true)}else alert("Error: No form element found.");return true},_cancel:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),os,h=tinyMCE.trim(inst.startContent);if((os=tinyMCE.getParam("save_oncancelcallback"))){if(eval(os+'(inst);'))return true}inst.setHTML(h);inst.undoRedo.undoLevels=[];inst.undoRedo.add({content:h});inst.undoRedo.undoIndex=0;inst.undoRedo.typingUndoIndex=-1;tinyMCE.triggerNodeChange(false,true);return true},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst;if(tinyMCE.getParam("fullscreen_is_enabled")){tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled');return true}if(tinyMCE.getParam("save_enablewhendirty")){inst=tinyMCE.getInstanceById(editor_id);if(inst.isDirty()){tinyMCE.switchClass(editor_id+'_save','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled')}return true}};tinyMCE.addPlugin("save",TinyMCE_SavePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/save/editor_plugin_src.js
@@ -1,98 +1,153 @@
-/**
- * $Id: editor_plugin_src.js 851 2008-05-26 15:38:49Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('save');

+

+var TinyMCE_SavePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Save',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		inst.addShortcut('ctrl', 's', 'lang_save_desc', 'mceSave');

+	},

+

+	/**

+	 * Returns the HTML contents of the save control.

+	 */

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "save":

+				return tinyMCE.getButtonHTML(cn, 'lang_save_desc', '{$pluginurl}/images/save.gif', 'mceSave');

+

+			case "cancel":

+				return tinyMCE.getButtonHTML(cn, 'lang_cancel_desc', '{$pluginurl}/images/cancel.gif', 'mceCancel');

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes the save command.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceSave":

+				return this._save(editor_id, element, command, user_interface, value);

+

+			case "mceCancel":

+				return this._cancel(editor_id, element, command, user_interface, value);

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	_save : function(editor_id, element, command, user_interface, value) {

+		var inst, formObj, os, i, elementId;

+

+		if (tinyMCE.getParam("fullscreen_is_enabled"))

+			return true;

+

+		inst = tinyMCE.selectedInstance;

+		formObj = inst.formElement.form;

+

+		if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())

+			return true;

+

+		if (formObj) {

+			tinyMCE.triggerSave();

+

+			// Use callback instead

+			if ((os = tinyMCE.getParam("save_onsavecallback"))) {

+				if (eval(os + '(inst);')) {

+					inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);

+					/*inst.undoLevels = new Array();

+					inst.undoIndex = 0;

+					inst.typingUndoIndex = -1;

+					inst.undoRedo = true;

+					inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/

+					tinyMCE.triggerNodeChange(false, true);

+				}

+

+				return true;

+			}

+

+			// Disable all UI form elements that TinyMCE created

+			for (i=0; i<formObj.elements.length; i++) {

+				elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;

+

+				if (elementId.indexOf('mce_editor_') == 0)

+					formObj.elements[i].disabled = true;

+			}

+

+			inst.isNotDirty = true;

+

+			if (formObj.onsubmit == null || formObj.onsubmit() != false)

+				inst.formElement.form.submit();

+

+			tinyMCE.triggerNodeChange(false, true);

+		} else

+			alert("Error: No form element found.");

+

+		return true;

+	},

+

+	_cancel : function(editor_id, element, command, user_interface, value) {

+		var inst = tinyMCE.getInstanceById(editor_id), os, h = tinyMCE.trim(inst.startContent);

+

+		// Use callback instead

+		if ((os = tinyMCE.getParam("save_oncancelcallback"))) {

+			if (eval(os + '(inst);'))

+				return true;

+		}

+

+		inst.setHTML(h);

+

+		inst.undoRedo.undoLevels = [];

+		inst.undoRedo.add({ content : h });

+		inst.undoRedo.undoIndex = 0;

+		inst.undoRedo.typingUndoIndex = -1;

+

+		tinyMCE.triggerNodeChange(false, true);

+

+		return true;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		var inst;

+

+		if (tinyMCE.getParam("fullscreen_is_enabled")) {

+			tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');

+			return true;

+		}

+

+		if (tinyMCE.getParam("save_enablewhendirty")) {

+			inst = tinyMCE.getInstanceById(editor_id);

+

+			if (inst.isDirty()) {

+				tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');

+				return true;

+			}

+

+			tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');

+		}

+

+		return true;

+	}

+};

+

+tinyMCE.addPlugin("save", TinyMCE_SavePlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.Save', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceSave', t._save, t);
-			ed.addCommand('mceCancel', t._cancel, t);
-
-			// Register buttons
-			ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
-			ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
-
-			ed.onNodeChange.add(t._nodeChange, t);
-			ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Save',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_nodeChange : function(ed, cm, n) {
-			var ed = this.editor;
-
-			if (ed.getParam('save_enablewhendirty')) {
-				cm.setDisabled('save', !ed.isDirty());
-				cm.setDisabled('cancel', !ed.isDirty());
-			}
-		},
-
-		// Private methods
-
-		_save : function() {
-			var ed = this.editor, formObj, os, i, elementId;
-
-			formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
-
-			if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
-				return;
-
-			tinyMCE.triggerSave();
-
-			// Use callback instead
-			if (os = ed.getParam("save_onsavecallback")) {
-				if (ed.execCallback('save_onsavecallback', ed)) {
-					ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
-					ed.nodeChanged();
-				}
-
-				return;
-			}
-
-			if (formObj) {
-				ed.isNotDirty = true;
-
-				if (formObj.onsubmit == null || formObj.onsubmit() != false)
-					formObj.submit();
-
-				ed.nodeChanged();
-			} else
-				ed.windowManager.alert("Error: No form element found.");
-		},
-
-		_cancel : function() {
-			var ed = this.editor, os, h = tinymce.trim(ed.startContent);
-
-			// Use callback instead
-			if (os = ed.getParam("save_oncancelcallback")) {
-				ed.execCallback('save_oncancelcallback', ed);
-				return;
-			}
-
-			ed.setContent(h);
-			ed.undoManager.clear();
-			ed.nodeChanged();
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('save', tinymce.plugins.Save);
-})();

 Binary files /dev/null and b/tinymce/2/jscripts/tiny_mce/plugins/save/images/cancel.gif differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/save/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/save/langs/en.js
@@ -1,6 +1,7 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+save_desc : 'Save',

+cancel_desc : 'Cancel all changes'

+});

 
-tinyMCE.addToLang('',{
-save_desc : 'Save'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/save/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/save/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css
@@ -1,7 +1,21 @@
-.panel_wrapper {height:85px;}
-.panel_wrapper div.current {height:85px;}
+/* stylesheet for advsearchreplace plugin*/

+

+.panel_wrapper { height: 85px; }

+.panel_wrapper div.current { height: 85px; }

+

+/* MS IE only styles */

+* html .panel_wrapper { height: 100px; }

+* html .panel_wrapper div.current { height: 100px; }

+

+#replaceBtn, #replaceAllBtn {

+	padding-bottom: 2px;

+	font-weight: bold;

+	width: 90px;

+	height: 21px;

+	border: 0;

+	cursor: pointer;

+}

+

+#replaceBtn { background: url(../images/replace_button_bg.gif); }

+#replaceAllBtn { background: url(../images/replace_all_button_bg.gif); }

 
-/* IE */
-* html .panel_wrapper {height:100px;}
-* html .panel_wrapper div.current {height:100px;}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.SearchReplacePlugin',{init:function(ed,url){function open(m){ed.windowManager.open({file:url+'/searchreplace.htm',width:420+parseInt(ed.getLang('searchreplace.delta_width',0)),height:160+parseInt(ed.getLang('searchreplace.delta_height',0)),inline:1,auto_focus:0},{mode:m,search_string:ed.selection.getContent({format:'text'}),plugin_url:url});};ed.addCommand('mceSearch',function(){open('search');});ed.addCommand('mceReplace',function(){open('replace');});ed.addButton('search',{title:'searchreplace.search_desc',cmd:'mceSearch'});ed.addButton('replace',{title:'searchreplace.replace_desc',cmd:'mceReplace'});ed.addShortcut('ctrl+f','searchreplace.search_desc','mceSearch');},getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('searchreplace',tinymce.plugins.SearchReplacePlugin);})();
+tinyMCE.importPluginLanguagePack('searchreplace');var TinyMCE_SearchReplacePlugin={getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','f','lang_searchreplace_search_desc','mceSearch',true);},getControlHTML:function(cn){switch(cn){case"search":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_search_desc','{$pluginurl}/images/search.gif','mceSearch',true);case"replace":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_replace_desc','{$pluginurl}/images/replace.gif','mceSearchReplace',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),selectedText=inst.selection.getSelectedText(),rng;function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key]}function replaceSel(search_str,str,back){if(!inst.selection.isCollapsed()){if(tinyMCE.isRealIE)inst.selection.getRng().duplicate().pasteHTML(str);else inst.execCommand('mceInsertContent',false,str)}}if(!value)value=[];defValue("editor_id",editor_id);defValue("searchstring",selectedText);defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");defValue("resizable","no");switch(command){case"mceSearch":if(user_interface){var template=new Array();template['file']='../../plugins/searchreplace/searchreplace.htm';template['width']=380;template['height']=155+(tinyMCE.isNS7?20:0)+(tinyMCE.isMSIE?15:0);template['width']+=tinyMCE.getLang('lang_searchreplace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_delta_height',0);inst.selection.collapse(true);tinyMCE.openWindow(template,value)}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;var awin=value.win,found;if(body.innerHTML==""){awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring'],value['backwards']);value['replacemode']="none";}inst.selection.collapse(value['backwards']);if(tinyMCE.isMSIE){var rng=inst.selection.getRng();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){awin.alert('This operation is currently not supported by this browser.');return true}if(value['replacemode']=="all"){found=false;while(rng.findText(value['string'],value['backwards']?-1:1,flags)){found=true;rng.scrollIntoView();rng.select();replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select()}else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}else{if(value['replacemode']=="all"){found=false;while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false)){found=true;replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}}return true;case"mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true}return false}};tinyMCE.addPlugin("searchreplace",TinyMCE_SearchReplacePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js
@@ -1,54 +1,173 @@
-/**
- * $Id: editor_plugin_src.js 686 2008-03-09 18:13:49Z spocke $
- *
- * @author Moxiecode

- */
-
-(function() {
-	tinymce.create('tinymce.plugins.SearchReplacePlugin', {
-		init : function(ed, url) {
-			function open(m) {
-				ed.windowManager.open({
-					file : url + '/searchreplace.htm',
-					width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),
-					height : 160 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
-					inline : 1,
-					auto_focus : 0
-				}, {
-					mode : m,
-					search_string : ed.selection.getContent({format : 'text'}),
-					plugin_url : url
-				});
-			};
-
-			// Register commands
-			ed.addCommand('mceSearch', function() {
-				open('search');
-			});
-
-			ed.addCommand('mceReplace', function() {
-				open('replace');
-			});
-
-			// Register buttons
-			ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});
-			ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});
-
-			ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Search/Replace',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);
-})();
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+tinyMCE.importPluginLanguagePack('searchreplace');

+

+var TinyMCE_SearchReplacePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Search/Replace',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function (inst) {

+		inst.addShortcut('ctrl', 'f', 'lang_searchreplace_search_desc', 'mceSearch', true);

+		// No CTRL+R for "replace" because browsers will reload page instead of executing plugin

+	},

+

+	getControlHTML : function (cn) {

+		switch (cn) {

+			case "search" :

+				return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true);

+

+			case "replace" :

+				return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true);

+		}

+

+		return "";

+	},

+

+	execCommand : function (editor_id, element, command, user_interface, value) {

+		var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng;

+

+		function defValue(key, default_value) {

+			value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];

+		}

+

+		function replaceSel(search_str, str, back) {

+			if (!inst.selection.isCollapsed()) {

+				if (tinyMCE.isRealIE)

+					inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE

+				else

+					inst.execCommand('mceInsertContent', false, str);

+			}

+		}

+

+		if (!value)

+			value = [];

+

+		defValue("editor_id", editor_id);

+		defValue("searchstring", selectedText);

+		defValue("replacestring", null);

+		defValue("replacemode", "none");

+		defValue("casesensitive", false);

+		defValue("backwards", false);

+		defValue("wrap", false);

+		defValue("wholeword", false);

+		defValue("inline", "yes");

+		defValue("resizable", "no");

+

+		switch (command) {

+			case "mceSearch" :

+				if (user_interface) {

+					var template = new Array();

+

+					template['file'] = '../../plugins/searchreplace/searchreplace.htm';

+					template['width'] = 380;

+					template['height'] = 155 + (tinyMCE.isNS7 ? 20 : 0) + (tinyMCE.isMSIE ? 15 : 0);

+					template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0);

+					template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0);

+

+					inst.selection.collapse(true);

+

+					tinyMCE.openWindow(template, value);

+				} else {

+					var win = tinyMCE.getInstanceById(editor_id).contentWindow;

+					var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;

+					var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;

+					var awin = value.win, found;

+

+					if (body.innerHTML == "") {

+						awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

+						return true;

+					}

+

+					if (value['replacemode'] == "current") {

+						replaceSel(value['string'], value['replacestring'], value['backwards']);

+						value['replacemode'] = "none";

+						//tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value);

+						//return true;

+					}

+

+					inst.selection.collapse(value['backwards']);

+

+					if (tinyMCE.isMSIE) {

+						var rng = inst.selection.getRng();

+						var flags = 0;

+						if (value['wholeword'])

+							flags = flags | 2;

+

+						if (value['casesensitive'])

+							flags = flags | 4;

+

+						if (!rng.findText) {

+							awin.alert('This operation is currently not supported by this browser.');

+							return true;

+						}

+

+						if (value['replacemode'] == "all") {

+							found = false;

+

+							while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {

+								found = true;

+								rng.scrollIntoView();

+								rng.select();

+								replaceSel(value['string'], value['replacestring'], value['backwards']);

+							}

+

+							if (found)

+								awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));

+							else

+								awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

+

+							return true;

+						}

+

+						if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {

+							rng.scrollIntoView();

+							rng.select();

+						} else

+							awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

+					} else {

+						if (value['replacemode'] == "all") {

+							found = false;

+

+							while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) {

+								found = true;

+								replaceSel(value['string'], value['replacestring'], value['backwards']);

+							}

+

+							if (found)

+								awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));

+							else

+								awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

+

+							return true;

+						}

+

+						if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))

+							awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));

+					}

+				}

+

+				return true;

+

+			case "mceSearchReplace" :

+				value['replacestring'] = "";

+				tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);

+				return true;

+		}

+

+		return false;

+	}

+};

+

+tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js
+++ /dev/null
@@ -1,118 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var SearchReplaceDialog = {
-	init : function(ed) {
-		var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
-
-		this.switchMode(m);
-
-		f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
-
-		// Focus input field
-		f[m + '_panel_searchstring'].focus();
-	},
-
-	switchMode : function(m) {
-		var f, lm = this.lastMode;
-
-		if (lm != m) {
-			f = document.forms[0];
-
-			if (lm) {
-				f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
-				f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
-				f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
-				f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
-			}
-
-			mcTabs.displayTab(m + '_tab',  m + '_panel');
-			document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
-			document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
-			this.lastMode = m;
-		}
-	},
-
-	searchNext : function(a) {
-		var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
-
-		// Get input
-		f = document.forms[0];
-		s = f[m + '_panel_searchstring'].value;
-		b = f[m + '_panel_backwardsu'].checked;
-		ca = f[m + '_panel_casesensitivebox'].checked;
-		rs = f['replace_panel_replacestring'].value;
-
-		function fix() {
-			// Correct Firefox graphics glitches
-			r = se.getRng().cloneRange();
-			ed.getDoc().execCommand('SelectAll', false, null);
-			se.setRng(r);
-		};
-
-		function replace() {
-			if (tinymce.isIE)
-				ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE
-			else
-				ed.getDoc().execCommand('InsertHTML', false, rs);
-		};
-
-		// IE flags
-		if (ca)
-			fl = fl | 4;
-
-		switch (a) {
-			case 'all':
-				if (tinymce.isIE) {
-					while (r.findText(s, b ? -1 : 1, fl)) {
-						r.scrollIntoView();
-						r.select();
-						replace();
-						fo = 1;
-					}
-
-					tinyMCEPopup.storeSelection();
-				} else {
-					while (w.find(s, ca, b, false, false, false, false)) {
-						replace();
-						fo = 1;
-					}
-				}
-
-				if (fo)
-					wm.alert(ed.getLang('searchreplace_dlg.allreplaced'));
-				else
-					wm.alert(ed.getLang('searchreplace_dlg.notfound'));
-
-				return;
-
-			case 'current':
-				replace();
-				break;
-		}
-
-		se.collapse(b);
-		r = se.getRng();
-
-		// Whats the point
-		if (!s)
-			return;
-
-		if (tinymce.isIE) {
-			if (r.findText(s, b ? -1 : 1, fl)) {
-				r.scrollIntoView();
-				r.select();
-			} else
-				wm.alert(ed.getLang('searchreplace_dlg.notfound'));
-
-			tinyMCEPopup.storeSelection();
-		} else {
-			if (!w.find(s, ca, b, false, false, false, false))
-				wm.alert(ed.getLang('searchreplace_dlg.notfound'));
-			else
-				fix();
-		}
-	}
-};
-
-tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/jscripts/replace.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/jscripts/replace.js
@@ -1,41 +1,41 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var formObj = document.forms[0];

+

+	formObj.searchstring.value = tinyMCE.getWindowArg("searchstring");

+	formObj.replacestring.value = tinyMCE.getWindowArg("replacestring");

+	formObj.casesensitivebox.checked = tinyMCE.getWindowArg("casesensitive");

+//	formObj.backwards[0].checked = tinyMCE.getWindowArg("backwards");

+//	formObj.backwards[1].checked = !tinyMCE.getWindowArg("backwards");

+//		formObj.wrapatend.checked = tinyMCE.getWindowArg("wrap");

+//		formObj.wholeword.checked = tinyMCE.getWindowArg("wholeword");

+

+	tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);

+}

+

+function searchNext(replacemode) {

+	var formObj = document.forms[0];

+

+	// Whats the point?

+	if (formObj.searchstring.value == "" || formObj.searchstring.value == formObj.replacestring.value)

+		return;

+

+	// Do search

+	tinyMCEPopup.execCommand('mceSearch', false, { 

+		string : formObj.searchstring.value,

+		replacestring : formObj.replacestring.value,

+		replacemode : replacemode,

+		casesensitive : formObj.casesensitivebox.checked,

+		backwards : false

+//			wrap : formObj.wrapatend.checked,

+//			wholeword : formObj.wholeword.checked

+		}, false);

+

+	window.focus();

+}

+

+function cancelAction() {

+	tinyMCEPopup.close();

+}

 
-	var formObj = document.forms[0];
-
-	formObj.searchstring.value = tinyMCE.getWindowArg("searchstring");
-	formObj.replacestring.value = tinyMCE.getWindowArg("replacestring");
-	formObj.casesensitivebox.checked = tinyMCE.getWindowArg("casesensitive");
-//	formObj.backwards[0].checked = tinyMCE.getWindowArg("backwards");
-//	formObj.backwards[1].checked = !tinyMCE.getWindowArg("backwards");
-//		formObj.wrapatend.checked = tinyMCE.getWindowArg("wrap");
-//		formObj.wholeword.checked = tinyMCE.getWindowArg("wholeword");
-
-	tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);
-}
-
-function searchNext(replacemode) {
-	var formObj = document.forms[0];
-
-	// Whats the point?
-	if (formObj.searchstring.value == "" || formObj.searchstring.value == formObj.replacestring.value)
-		return;
-
-	// Do search
-	tinyMCEPopup.execCommand('mceSearch', false, { 
-		string : formObj.searchstring.value,
-		replacestring : formObj.replacestring.value,
-		replacemode : replacemode,
-		casesensitive : formObj.casesensitivebox.checked,
-		backwards : false
-//			wrap : formObj.wrapatend.checked,
-//			wholeword : formObj.wholeword.checked
-		}, false);
-
-	window.focus();
-}
-
-function cancelAction() {
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/jscripts/search.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/jscripts/search.js
@@ -1,37 +1,37 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var formObj = document.forms[0];

+

+	formObj.searchstring.value = tinyMCE.getWindowArg("searchstring");

+	formObj.casesensitivebox.checked = tinyMCE.getWindowArg("casesensitive");

+	formObj.backwards[0].checked = tinyMCE.getWindowArg("backwards");

+	formObj.backwards[1].checked = !tinyMCE.getWindowArg("backwards");

+//		formObj.wrapatend.checked = tinyMCE.getWindowArg("wrap");

+//		formObj.wholeword.checked = tinyMCE.getWindowArg("wholeword");

+

+	tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);

+}

+

+function searchNext() {

+	var formObj = document.forms[0];

+

+	if (formObj.searchstring.value == "")

+		return;

+

+	// Do search

+	tinyMCEPopup.execCommand('mceSearch', false, { 

+		string : formObj.searchstring.value,

+		casesensitive : formObj.casesensitivebox.checked,

+		backwards : formObj.backwards[0].checked

+//			wrap : formObj.wrapatend.checked,

+//			wholeword : formObj.wholeword.checked

+		}, false);

+

+	window.focus();

+}

+

+function cancelAction() {

+	tinyMCEPopup.close();

+}

 
-	var formObj = document.forms[0];
-
-	formObj.searchstring.value = tinyMCE.getWindowArg("searchstring");
-	formObj.casesensitivebox.checked = tinyMCE.getWindowArg("casesensitive");
-	formObj.backwards[0].checked = tinyMCE.getWindowArg("backwards");
-	formObj.backwards[1].checked = !tinyMCE.getWindowArg("backwards");
-//		formObj.wrapatend.checked = tinyMCE.getWindowArg("wrap");
-//		formObj.wholeword.checked = tinyMCE.getWindowArg("wholeword");
-
-	tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);
-}
-
-function searchNext() {
-	var formObj = document.forms[0];
-
-	if (formObj.searchstring.value == "")
-		return;
-
-	// Do search
-	tinyMCEPopup.execCommand('mceSearch', false, { 
-		string : formObj.searchstring.value,
-		casesensitive : formObj.casesensitivebox.checked,
-		backwards : formObj.backwards[0].checked
-//			wrap : formObj.wrapatend.checked,
-//			wholeword : formObj.wholeword.checked
-		}, false);
-
-	window.focus();
-}
-
-function cancelAction() {
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
@@ -1,86 +1,86 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// start with appropiate tab
-	var task = (tinyMCE.getWindowArg("replacestring") != null) ? "replace" : "search";
-	mcTabs.displayTab(task + '_tab', task +'_panel');
-	manageReplaceButtons();
-	
-	var formObj = document.forms[0];
-
-	formObj[task + "_panel_searchstring"].value = tinyMCE.getWindowArg("searchstring");
-	formObj["replace_panel_replacestring"].value = (tinyMCE.getWindowArg("replacestring") != null) ? tinyMCE.getWindowArg("replacestring") : "";
-	formObj[task + "_panel_casesensitivebox"].checked = tinyMCE.getWindowArg("casesensitive");
-	formObj[task + "_panel_backwardsu"].checked = tinyMCE.getWindowArg("backwards");
-	formObj[task + "_panel_backwardsd"].checked = !tinyMCE.getWindowArg("backwards");
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	// start with appropiate tab

+	var task = (tinyMCE.getWindowArg("replacestring") != null) ? "replace" : "search";

+	mcTabs.displayTab(task + '_tab', task +'_panel');

+	manageReplaceButtons();

+	

+	var formObj = document.forms[0];

+

+	formObj[task + "_panel_searchstring"].value = tinyMCE.getWindowArg("searchstring");

+	formObj["replace_panel_replacestring"].value = (tinyMCE.getWindowArg("replacestring") != null) ? tinyMCE.getWindowArg("replacestring") : "";

+	formObj[task + "_panel_casesensitivebox"].checked = tinyMCE.getWindowArg("casesensitive");

+	formObj[task + "_panel_backwardsu"].checked = tinyMCE.getWindowArg("backwards");

+	formObj[task + "_panel_backwardsd"].checked = !tinyMCE.getWindowArg("backwards");

+}

+

+function searchNext(replacemode) {

+	// "search" or "replace" mode of operation?

+	var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";

+

+	var formObj = document.forms[0];

+

+	if (task == "replace") {

+		// Whats the point?

+		if (formObj[task + "_panel_searchstring"].value == "" || formObj[task + "_panel_searchstring"].value == formObj[task + "_panel_replacestring"].value)

+			return false;

+	}

+

+	// Do search

+	tinyMCEPopup.execCommand('mceSearch', false, { 

+		string : formObj[task + "_panel_searchstring"].value,

+		replacestring : formObj["replace_panel_replacestring"].value,

+		replacemode : replacemode,

+		casesensitive : formObj[task + "_panel_casesensitivebox"].checked,

+		backwards : formObj[task + "_panel_backwardsu"].checked,

+		win : window

+		}, false);

+

+	window.focus();

+

+	return false;

+}

+

+function cancelAction() {

+	tinyMCEPopup.close();

+}

+

+function manageReplaceButtons() {

+	// "search" or "replace" mode of operation?

+	var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";

+	document.getElementById("replace_buttons").style.visibility = (task == "replace") ? "visible" : "hidden";

+}

+

+function copyValues(link) {

+	// check if tab is already active

+	var tab = link;

+	while (tab.tagName && tab.tagName.toLowerCase() != "li") tab = tab.parentNode;

+	if (tab.className) return false; // tab is already active -> no need to copy any values!

+

+	// copy values from one panel to the other (if they exist there)

+	var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel";

+	var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel";

+

+	// find all elements with IDs to copy their values

+	var elms = document.getElementById(from_panel_name).getElementsByTagName("*");

+	for (var i = 0; i < elms.length; i++) {

+		if (elms[i].id && elms[i].id != "") {

+			var checked = "undefined";

+			if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio")

+				checked = elms[i].checked;

+

+			// copy values if element exists in other panel

+			var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length);

+			var to_elm = document.getElementById(to_elm_name);

+			if (to_elm) {

+				if (checked != "undefined")

+					to_elm.checked = checked;

+				else

+					to_elm.value = elms[i].value;

+			}

+		}

+	}

+

+	return false;

 }
-
-function searchNext(replacemode) {
-	// "search" or "replace" mode of operation?
-	var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";
-
-	var formObj = document.forms[0];
-
-	if (task == "replace") {
-		// Whats the point?
-		if (formObj[task + "_panel_searchstring"].value == "" || formObj[task + "_panel_searchstring"].value == formObj[task + "_panel_replacestring"].value)
-			return false;
-	}
-
-	// Do search
-	tinyMCEPopup.execCommand('mceSearch', false, { 
-		string : formObj[task + "_panel_searchstring"].value,
-		replacestring : formObj["replace_panel_replacestring"].value,
-		replacemode : replacemode,
-		casesensitive : formObj[task + "_panel_casesensitivebox"].checked,
-		backwards : formObj[task + "_panel_backwardsu"].checked,
-		win : window
-		}, false);
-
-	window.focus();
-
-	return false;
-}
-
-function cancelAction() {
-	tinyMCEPopup.close();
-}
-
-function manageReplaceButtons() {
-	// "search" or "replace" mode of operation?
-	var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";
-	document.getElementById("replace_buttons").style.visibility = (task == "replace") ? "visible" : "hidden";
-}
-
-function copyValues(link) {
-	// check if tab is already active
-	var tab = link;
-	while (tab.tagName && tab.tagName.toLowerCase() != "li") tab = tab.parentNode;
-	if (tab.className) return false; // tab is already active -> no need to copy any values!
-
-	// copy values from one panel to the other (if they exist there)
-	var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel";
-	var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel";
-
-	// find all elements with IDs to copy their values
-	var elms = document.getElementById(from_panel_name).getElementsByTagName("*");
-	for (var i = 0; i < elms.length; i++) {
-		if (elms[i].id && elms[i].id != "") {
-			var checked = "undefined";
-			if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio")
-				checked = elms[i].checked;
-
-			// copy values if element exists in other panel
-			var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length);
-			var to_elm = document.getElementById(to_elm_name);
-			if (to_elm) {
-				if (checked != "undefined")
-					to_elm.checked = checked;
-				else
-					to_elm.value = elms[i].value;
-			}
-		}
-	}
-
-	return false;
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/cs.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/cs.js
@@ -1,28 +1,28 @@
-/**
- * Czech lang variables 
- * encoding: utf-8
- *  
- * $Id$ 
- */  
+/**

+ * Czech lang variables 

+ * encoding: utf-8

+ *  

+ * $Id$ 

+ */  

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Najdi',

+searchreplace_searchnext_desc : 'Najdi znova',

+searchreplace_replace_desc : 'Najdi/Nahradit',

+searchreplace_notfound : 'Vyhledávaní ukončeno. Řetězec nemusel být nalezen.',

+searchreplace_search_title : 'Najdi',

+searchreplace_replace_title : 'Najdi/Nahradit',

+searchreplace_allreplaced : 'Všechny výskyty řetězce byly změněny.',

+searchreplace_findwhat : 'Najít',

+searchreplace_replacewith : 'Nahradit',

+searchreplace_direction : 'Směr',

+searchreplace_up : 'Nahoru',

+searchreplace_down : 'Dolů',

+searchreplace_case : 'Přesná shoda',

+searchreplace_findnext : 'Najdi&nbsp;další',

+searchreplace_replace : 'Nahradit',

+searchreplace_replaceall : 'Nahradit&nbsp;vše',

+searchreplace_cancel : 'Zrušit'

+});

+

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Najdi',
-searchreplace_searchnext_desc : 'Najdi znova',
-searchreplace_replace_desc : 'Najdi/Nahradit',
-searchreplace_notfound : 'Vyhledávaní ukončeno. Řetězec nemusel být nalezen.',
-searchreplace_search_title : 'Najdi',
-searchreplace_replace_title : 'Najdi/Nahradit',
-searchreplace_allreplaced : 'Všechny výskyty řetězce byly změněny.',
-searchreplace_findwhat : 'Najít',
-searchreplace_replacewith : 'Nahradit',
-searchreplace_direction : 'Směr',
-searchreplace_up : 'Nahoru',
-searchreplace_down : 'Dolů',
-searchreplace_case : 'Přesná shoda',
-searchreplace_findnext : 'Najdi&nbsp;další',
-searchreplace_replace : 'Nahradit',
-searchreplace_replaceall : 'Nahradit&nbsp;vše',
-searchreplace_cancel : 'Zrušit'
-});
-
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/da.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/da.js
@@ -1,22 +1,22 @@
-// DK lang variables contributed by Jan Moelgaard
+// DK lang variables contributed by Jan Moelgaard

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'S&#248;g',

+searchreplace_searchnext_desc : 'S&#248;g igen',

+searchreplace_replace_desc : 'S&#248;g og erstat',

+searchreplace_notfound : 'S&#248;gningen er f&#230;rdig. S&#248;geudtrykket kunne ikke findes.',

+searchreplace_search_title : 'S&#248;g',

+searchreplace_replace_title : 'S&#248;g og erstat',

+searchreplace_allreplaced : 'Alle forekomster af s&#248;geudtrykket blev erstattet.',

+searchreplace_findwhat : 'Hvad skal vi s&#248;ge efter',

+searchreplace_replacewith : 'Erstat det med',

+searchreplace_direction : 'Retning',

+searchreplace_up : 'Op',

+searchreplace_down : 'Ned',

+searchreplace_case : 'Skelne mellem store og sm&#229; bogstaver',

+searchreplace_findnext : 'S&#248;g efter&nbsp;n&#230;ste',

+searchreplace_replace : 'Erstat',

+searchreplace_replaceall : 'Erstat&nbsp;alle',

+searchreplace_cancel : 'Fortryd'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'S&#248;g',
-searchreplace_searchnext_desc : 'S&#248;g igen',
-searchreplace_replace_desc : 'S&#248;g og erstat',
-searchreplace_notfound : 'S&#248;gningen er f&#230;rdig. S&#248;geudtrykket kunne ikke findes.',
-searchreplace_search_title : 'S&#248;g',
-searchreplace_replace_title : 'S&#248;g og erstat',
-searchreplace_allreplaced : 'Alle forekomster af s&#248;geudtrykket blev erstattet.',
-searchreplace_findwhat : 'Hvad skal vi s&#248;ge efter',
-searchreplace_replacewith : 'Erstat det med',
-searchreplace_direction : 'Retning',
-searchreplace_up : 'Op',
-searchreplace_down : 'Ned',
-searchreplace_case : 'Skelne mellem store og sm&#229; bogstaver',
-searchreplace_findnext : 'S&#248;g efter&nbsp;n&#230;ste',
-searchreplace_replace : 'Erstat',
-searchreplace_replaceall : 'Erstat&nbsp;alle',
-searchreplace_cancel : 'Fortryd'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/de.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/de.js
@@ -1,23 +1,23 @@
-// DE lang variables 
+// DE lang variables 

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Suchen',

+searchreplace_searchnext_desc : 'Erneut suchen',

+searchreplace_replace_desc : 'Suchen/Ersetzen',

+searchreplace_notfound : 'Die Suche wurde abgeschlossen. Das Suchwort wurde nicht gefunden.',

+searchreplace_search_title : 'Suchen',

+searchreplace_replace_title : 'Suchen/Ersetzen',

+searchreplace_allreplaced : 'Die Suche wurde abgeschlossen. Alle Vorkommen wurden ersetzt.',

+searchreplace_findwhat : 'Suchen nach',

+searchreplace_replacewith : 'Ersetzen durch',

+searchreplace_direction : 'Suchrichtung',

+searchreplace_up : 'R&uuml;ckw&auml;rts',

+searchreplace_down : 'Vorw&auml;rts',

+searchreplace_case : 'Gro&szlig;-/Kleinschreibung beachten',

+searchreplace_findnext : 'Weitersuchen',

+searchreplace_replace : 'Ersetzen',

+searchreplace_replaceall : 'Alle ersetzen',

+searchreplace_cancel : 'Abbrechen',

+searchreplace_replace_delta_width : 50

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Suchen',
-searchreplace_searchnext_desc : 'Erneut suchen',
-searchreplace_replace_desc : 'Suchen/Ersetzen',
-searchreplace_notfound : 'Die Suche wurde abgeschlossen. Das Suchwort wurde nicht gefunden.',
-searchreplace_search_title : 'Suchen',
-searchreplace_replace_title : 'Suchen/Ersetzen',
-searchreplace_allreplaced : 'Die Suche wurde abgeschlossen. Alle Vorkommen wurden ersetzt.',
-searchreplace_findwhat : 'Suchen nach',
-searchreplace_replacewith : 'Ersetzen durch',
-searchreplace_direction : 'Suchrichtung',
-searchreplace_up : 'R&uuml;ckw&auml;rts',
-searchreplace_down : 'Vorw&auml;rts',
-searchreplace_case : 'Gro&szlig;-/Kleinschreibung beachten',
-searchreplace_findnext : 'Weitersuchen',
-searchreplace_replace : 'Ersetzen',
-searchreplace_replaceall : 'Alle ersetzen',
-searchreplace_cancel : 'Abbrechen',
-searchreplace_replace_delta_width : 50
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/en.js
@@ -1,22 +1,22 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Find',

+searchreplace_searchnext_desc : 'Find again',

+searchreplace_replace_desc : 'Find/Replace',

+searchreplace_notfound : 'The search has been completed. The search string could not be found.',

+searchreplace_search_title : 'Find',

+searchreplace_replace_title : 'Find/Replace',

+searchreplace_allreplaced : 'All occurrences of the search string were replaced.',

+searchreplace_findwhat : 'Find what',

+searchreplace_replacewith : 'Replace with',

+searchreplace_direction : 'Direction',

+searchreplace_up : 'Up',

+searchreplace_down : 'Down',

+searchreplace_case : 'Match case',

+searchreplace_findnext : 'Find&nbsp;next',

+searchreplace_replace : 'Replace',

+searchreplace_replaceall : 'Replace&nbsp;all',

+searchreplace_cancel : 'Cancel'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Find',
-searchreplace_searchnext_desc : 'Find again',
-searchreplace_replace_desc : 'Find/Replace',
-searchreplace_notfound : 'The search has been completed. The search string could not be found.',
-searchreplace_search_title : 'Find',
-searchreplace_replace_title : 'Find/Replace',
-searchreplace_allreplaced : 'All occurrences of the search string were replaced.',
-searchreplace_findwhat : 'Find what',
-searchreplace_replacewith : 'Replace with',
-searchreplace_direction : 'Direction',
-searchreplace_up : 'Up',
-searchreplace_down : 'Down',
-searchreplace_case : 'Match case',
-searchreplace_findnext : 'Find&nbsp;next',
-searchreplace_replace : 'Replace',
-searchreplace_replaceall : 'Replace&nbsp;all',
-searchreplace_cancel : 'Cancel'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js
+++ /dev/null
@@ -1,16 +1,1 @@
-tinyMCE.addI18n('en.searchreplace_dlg',{
-searchnext_desc:"Find again",
-notfound:"The search has been completed. The search string could not be found.",
-search_title:"Find",
-replace_title:"Find/Replace",
-allreplaced:"All occurrences of the search string were replaced.",
-findwhat:"Find what",
-replacewith:"Replace with",
-direction:"Direction",
-up:"Up",
-down:"Down",
-mcase:"Match case",
-findnext:"Find next",
-replace:"Replace",
-replaceall:"Replace all"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/fa.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/fa.js
@@ -1,27 +1,27 @@
-// IR lang variables
-// Persian (Farsi) language pack (for IRAN)
-// By: Morteza Zafari
-// Lost@LostLord.com
-// http://www.LostLord.com
+// IR lang variables

+// Persian (Farsi) language pack (for IRAN)

+// By: Morteza Zafari

+// Lost@LostLord.com

+// http://www.LostLord.com

+

+tinyMCE.addToLang('',{

+dir : 'rtl',

+searchreplace_search_desc : '?????',

+searchreplace_searchnext_desc : '?????? ????',

+searchreplace_replace_desc : '?????/????????',

+searchreplace_notfound : '????? ????? ????. ??? ????? ???? ???.',

+searchreplace_search_title : '?????',

+searchreplace_replace_title : '?????/????????',

+searchreplace_allreplaced : '??? ????? ??????? ?????.',

+searchreplace_findwhat : '????? ?? ?????',

+searchreplace_replacewith : '???????? ??',

+searchreplace_direction : '??? ?????',

+searchreplace_up : '?? ??? ????',

+searchreplace_down : '?? ??? ?????',

+searchreplace_case : '????? ???? ???? ? ????',

+searchreplace_findnext : '????-????',

+searchreplace_replace : '???????-??',

+searchreplace_replaceall : '????????-???',

+searchreplace_cancel : '??????'

+});

 
-tinyMCE.addToLang('',{
-dir : 'rtl',
-searchreplace_search_desc : '?????',
-searchreplace_searchnext_desc : '?????? ????',
-searchreplace_replace_desc : '?????/????????',
-searchreplace_notfound : '????? ????? ????. ??? ????? ???? ???.',
-searchreplace_search_title : '?????',
-searchreplace_replace_title : '?????/????????',
-searchreplace_allreplaced : '??? ????? ??????? ?????.',
-searchreplace_findwhat : '????? ?? ?????',
-searchreplace_replacewith : '???????? ??',
-searchreplace_direction : '??? ?????',
-searchreplace_up : '?? ??? ????',
-searchreplace_down : '?? ??? ?????',
-searchreplace_case : '????? ???? ???? ? ????',
-searchreplace_findnext : '????-????',
-searchreplace_replace : '???????-??',
-searchreplace_replaceall : '????????-???',
-searchreplace_cancel : '??????'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/fr.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/fr.js
@@ -1,22 +1,22 @@
-// Franch lang variables by Laurent Dran
+// Franch lang variables by Laurent Dran

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Trouver',

+searchreplace_searchnext_desc : 'Trouver encore',

+searchreplace_replace_desc : 'Trouver/Remplacer',

+searchreplace_notfound : 'Votre recherche a &eacute;t&eacute; compl&eacute;&eacute;. La recherche de la chaine pourra ne pas aboutir.',

+searchreplace_search_title : 'Trouver',

+searchreplace_replace_title : 'Trouver/Remplacer',

+searchreplace_allreplaced : 'Toutes les occurences de la chaine ont &eacute;t&eacute; remplc&eacute;es.',

+searchreplace_findwhat : 'Trouver le mot',

+searchreplace_replacewith : 'Remplacer avec',

+searchreplace_direction : 'Direction',

+searchreplace_up : 'Haut',

+searchreplace_down : 'Base',

+searchreplace_case : 'Respecter la casse',

+searchreplace_findnext : 'Trouver le prochain',

+searchreplace_replace : 'Remplacer',

+searchreplace_replaceall : 'Remplacer tout',

+searchreplace_cancel : 'Annuler'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Trouver',
-searchreplace_searchnext_desc : 'Trouver encore',
-searchreplace_replace_desc : 'Trouver/Remplacer',
-searchreplace_notfound : 'Votre recherche a &eacute;t&eacute; compl&eacute;&eacute;. La recherche de la chaine pourra ne pas aboutir.',
-searchreplace_search_title : 'Trouver',
-searchreplace_replace_title : 'Trouver/Remplacer',
-searchreplace_allreplaced : 'Toutes les occurences de la chaine ont &eacute;t&eacute; remplc&eacute;es.',
-searchreplace_findwhat : 'Trouver le mot',
-searchreplace_replacewith : 'Remplacer avec',
-searchreplace_direction : 'Direction',
-searchreplace_up : 'Haut',
-searchreplace_down : 'Base',
-searchreplace_case : 'Respecter la casse',
-searchreplace_findnext : 'Trouver le prochain',
-searchreplace_replace : 'Remplacer',
-searchreplace_replaceall : 'Remplacer tout',
-searchreplace_cancel : 'Annuler'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/fr_ca.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/fr_ca.js
@@ -1,22 +1,22 @@
-// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15
+// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Chercher',

+searchreplace_searchnext_desc : 'Chercher suivant',

+searchreplace_replace_desc : 'Chercher/Remplacer',


+searchreplace_search_title : 'Chercher',

+searchreplace_replace_title : 'Chercher/Remplacer',


+searchreplace_findwhat : 'Chercher quoi',

+searchreplace_replacewith : 'Remplacer par',

+searchreplace_direction : 'Direction',

+searchreplace_up : 'Monter',

+searchreplace_down : 'Descendre',


+searchreplace_findnext : 'Chercher&nbsp,suivant',

+searchreplace_replace : 'Remplacer',

+searchreplace_replaceall : 'Remplacer&nbsp,tous',

+searchreplace_cancel : 'Annuler'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Chercher',
-searchreplace_searchnext_desc : 'Chercher suivant',
-searchreplace_replace_desc : 'Chercher/Remplacer',

-searchreplace_search_title : 'Chercher',
-searchreplace_replace_title : 'Chercher/Remplacer',

-searchreplace_findwhat : 'Chercher quoi',
-searchreplace_replacewith : 'Remplacer par',
-searchreplace_direction : 'Direction',
-searchreplace_up : 'Monter',
-searchreplace_down : 'Descendre',

-searchreplace_findnext : 'Chercher&nbsp,suivant',
-searchreplace_replace : 'Remplacer',
-searchreplace_replaceall : 'Remplacer&nbsp,tous',
-searchreplace_cancel : 'Annuler'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/he.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/he.js
@@ -1,22 +1,22 @@
-// HE lang variables by Liron Newman, http://eesh.net
+// HE lang variables by Liron Newman, http://eesh.net

+

+tinyMCE.addToLang('',{


















+});

 
-tinyMCE.addToLang('',{

















-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/hu.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/hu.js
@@ -1,22 +1,22 @@
-// HU lang variables
+// HU lang variables

+

+tinyMCE.addToLang('',{





+searchreplace_search_title : 'Keres',



+searchreplace_findwhat : 'Mit keres',



+searchreplace_up : 'Fel',

+searchreplace_down : 'Le',






+});

 
-tinyMCE.addToLang('',{




-searchreplace_search_title : 'Keres',


-searchreplace_findwhat : 'Mit keres',


-searchreplace_up : 'Fel',
-searchreplace_down : 'Le',





-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/nl.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/nl.js
@@ -1,22 +1,22 @@
-// NL lang variables
+// NL lang variables

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Zoeken',

+searchreplace_searchnext_desc : 'Opnieuw zoeken',

+searchreplace_replace_desc : 'Zoeken/Vervang',

+searchreplace_notfound : 'De zoekopdracht is klaar. Het zoekargument was niet gevonden.',

+searchreplace_search_title : 'Zoeken',

+searchreplace_replace_title : 'Zoeken/Vervangen',

+searchreplace_allreplaced : 'Alle zoekargumenten werden vervangen.',

+searchreplace_findwhat : 'Zoek argument',

+searchreplace_replacewith : 'Vervang met',

+searchreplace_direction : 'Richting',

+searchreplace_up : 'Op',

+searchreplace_down : 'Neer',

+searchreplace_case : 'Identieke hoofdletters',

+searchreplace_findnext : 'Volgende zoeken',

+searchreplace_replace : 'Vervang',

+searchreplace_replaceall : 'Vervang&nbsp;alles',

+searchreplace_cancel : 'Annuleer'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Zoeken',
-searchreplace_searchnext_desc : 'Opnieuw zoeken',
-searchreplace_replace_desc : 'Zoeken/Vervang',
-searchreplace_notfound : 'De zoekopdracht is klaar. Het zoekargument was niet gevonden.',
-searchreplace_search_title : 'Zoeken',
-searchreplace_replace_title : 'Zoeken/Vervangen',
-searchreplace_allreplaced : 'Alle zoekargumenten werden vervangen.',
-searchreplace_findwhat : 'Zoek argument',
-searchreplace_replacewith : 'Vervang met',
-searchreplace_direction : 'Richting',
-searchreplace_up : 'Op',
-searchreplace_down : 'Neer',
-searchreplace_case : 'Identieke hoofdletters',
-searchreplace_findnext : 'Volgende zoeken',
-searchreplace_replace : 'Vervang',
-searchreplace_replaceall : 'Vervang&nbsp;alles',
-searchreplace_cancel : 'Annuleer'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/no.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/no.js
@@ -1,22 +1,22 @@
-// NO lang variables by Knut B. Jacobsen
+// NO lang variables by Knut B. Jacobsen

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'S&oslash;k',

+searchreplace_searchnext_desc : 'S&oslash;k igjen',

+searchreplace_replace_desc : 'S&oslash;k/Erstatt',

+searchreplace_notfound : 'S&oslash;kingen avsluttet. Fant ikke s&oslash;kestrengen.',

+searchreplace_search_title : 'S&oslash;k',

+searchreplace_replace_title : 'S&oslash;k/Erstatt',

+searchreplace_allreplaced : 'Alle treff p&aring; s&oslash;kestrengen erstattes',

+searchreplace_findwhat : 'S&oslash;k p&aring;',

+searchreplace_replacewith : 'Erstatt med',

+searchreplace_direction : 'S&oslash;keretning',

+searchreplace_up : 'Oppover',

+searchreplace_down : 'Nedover',

+searchreplace_case : 'Skill mellom store og sm&aring; tegn',

+searchreplace_findnext : 'Neste s&oslash;k',

+searchreplace_replace : 'Erstatt',

+searchreplace_replaceall : 'Erstatt&nbsp;alle',

+searchreplace_cancel : 'Avbryt'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'S&oslash;k',
-searchreplace_searchnext_desc : 'S&oslash;k igjen',
-searchreplace_replace_desc : 'S&oslash;k/Erstatt',
-searchreplace_notfound : 'S&oslash;kingen avsluttet. Fant ikke s&oslash;kestrengen.',
-searchreplace_search_title : 'S&oslash;k',
-searchreplace_replace_title : 'S&oslash;k/Erstatt',
-searchreplace_allreplaced : 'Alle treff p&aring; s&oslash;kestrengen erstattes',
-searchreplace_findwhat : 'S&oslash;k p&aring;',
-searchreplace_replacewith : 'Erstatt med',
-searchreplace_direction : 'S&oslash;keretning',
-searchreplace_up : 'Oppover',
-searchreplace_down : 'Nedover',
-searchreplace_case : 'Skill mellom store og sm&aring; tegn',
-searchreplace_findnext : 'Neste s&oslash;k',
-searchreplace_replace : 'Erstatt',
-searchreplace_replaceall : 'Erstatt&nbsp;alle',
-searchreplace_cancel : 'Avbryt'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/pl.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/pl.js
@@ -1,22 +1,22 @@
-// PL lang variables
+// PL lang variables

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Znajdz',

+searchreplace_searchnext_desc : 'Znajdz ponownie',

+searchreplace_replace_desc : 'Znajdz/Zastap',

+searchreplace_notfound : 'Ukonczono wyszukiwanie. Poszukiwana fraza nie zostala odnaleziona.',

+searchreplace_search_title : 'Znajdz',

+searchreplace_replace_title : 'Znajdz/Zastap',

+searchreplace_allreplaced : 'Wszystkie wystapienia poszukiwanej frazy zostaly zastapione. ',

+searchreplace_findwhat : 'Znajdz',

+searchreplace_replacewith : 'Zastap',

+searchreplace_direction : 'Kierunek',

+searchreplace_up : 'Do góry',

+searchreplace_down : 'Do dolu',

+searchreplace_case : 'Wielkosc liter',

+searchreplace_findnext : 'Znajdz&nbsp;nastepny',

+searchreplace_replace : 'Zastap',

+searchreplace_replaceall : 'Zastap&nbsp;wszystkie',

+searchreplace_cancel : 'Wyjdz'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Znajdz',
-searchreplace_searchnext_desc : 'Znajdz ponownie',
-searchreplace_replace_desc : 'Znajdz/Zastap',
-searchreplace_notfound : 'Ukonczono wyszukiwanie. Poszukiwana fraza nie zostala odnaleziona.',
-searchreplace_search_title : 'Znajdz',
-searchreplace_replace_title : 'Znajdz/Zastap',
-searchreplace_allreplaced : 'Wszystkie wystapienia poszukiwanej frazy zostaly zastapione. ',
-searchreplace_findwhat : 'Znajdz',
-searchreplace_replacewith : 'Zastap',
-searchreplace_direction : 'Kierunek',
-searchreplace_up : 'Do góry',
-searchreplace_down : 'Do dolu',
-searchreplace_case : 'Wielkosc liter',
-searchreplace_findnext : 'Znajdz&nbsp;nastepny',
-searchreplace_replace : 'Zastap',
-searchreplace_replaceall : 'Zastap&nbsp;wszystkie',
-searchreplace_cancel : 'Wyjdz'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/pt_br.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/pt_br.js
@@ -1,22 +1,22 @@
-// pt_BR lang variables
+// pt_BR lang variables

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'Procurar',

+searchreplace_searchnext_desc : 'Procurar novamente',

+searchreplace_replace_desc : 'Procurar/Substituir',


+searchreplace_search_title : 'Procurar',

+searchreplace_replace_title : 'Procurar/Substituir',


+searchreplace_findwhat : 'Procurar por',

+searchreplace_replacewith : 'Substituir com',


+searchreplace_up : 'Acima',

+searchreplace_down : 'Abaixo',

+searchreplace_case : 'Procurar exatamente',


+searchreplace_replace : 'Substituir',

+searchreplace_replaceall : 'Substituir&nbsp,tudo',

+searchreplace_cancel : 'Cancelar'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'Procurar',
-searchreplace_searchnext_desc : 'Procurar novamente',
-searchreplace_replace_desc : 'Procurar/Substituir',

-searchreplace_search_title : 'Procurar',
-searchreplace_replace_title : 'Procurar/Substituir',

-searchreplace_findwhat : 'Procurar por',
-searchreplace_replacewith : 'Substituir com',

-searchreplace_up : 'Acima',
-searchreplace_down : 'Abaixo',
-searchreplace_case : 'Procurar exatamente',

-searchreplace_replace : 'Substituir',
-searchreplace_replaceall : 'Substituir&nbsp,tudo',
-searchreplace_cancel : 'Cancelar'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/sv.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/sv.js
@@ -1,22 +1,22 @@
-// SE lang variables
+// SE lang variables

+

+tinyMCE.addToLang('',{

+searchreplace_search_desc : 'S&ouml;k',

+searchreplace_searchnext_desc : 'S&ouml;k igen',

+searchreplace_replace_desc : 'S&ouml;k/Ers&auml;tt',

+searchreplace_notfound : 'S&ouml;kningen &auml;r slutf&ouml;rd. S&ouml;kstr&auml;ngen kunde inte hittas.',

+searchreplace_search_title : 'S&ouml;k',

+searchreplace_replace_title : 'S&ouml;k/Ers&auml;tt',

+searchreplace_allreplaced : 'Alla tr&auml;ffar p&aring; s&ouml;kstr&auml;ngen ersattes',

+searchreplace_findwhat : 'S&ouml;k p&aring;',

+searchreplace_replacewith : 'Ers&auml;tt med',

+searchreplace_direction : 'S&ouml;kriktning',

+searchreplace_up : 'Upp&aring;t',

+searchreplace_down : 'Ner&aring;t',

+searchreplace_case : 'Matcha gemener/VERSALER',

+searchreplace_findnext : 'S&ouml;k&nbsp;n&auml;sta',

+searchreplace_replace : 'Ers&auml;tt',

+searchreplace_replaceall : 'Ers&auml;tt&nbsp;alla',

+searchreplace_cancel : 'Avbryt'

+});

 
-tinyMCE.addToLang('',{
-searchreplace_search_desc : 'S&ouml;k',
-searchreplace_searchnext_desc : 'S&ouml;k igen',
-searchreplace_replace_desc : 'S&ouml;k/Ers&auml;tt',
-searchreplace_notfound : 'S&ouml;kningen &auml;r slutf&ouml;rd. S&ouml;kstr&auml;ngen kunde inte hittas.',
-searchreplace_search_title : 'S&ouml;k',
-searchreplace_replace_title : 'S&ouml;k/Ers&auml;tt',
-searchreplace_allreplaced : 'Alla tr&auml;ffar p&aring; s&ouml;kstr&auml;ngen ersattes',
-searchreplace_findwhat : 'S&ouml;k p&aring;',
-searchreplace_replacewith : 'Ers&auml;tt med',
-searchreplace_direction : 'S&ouml;kriktning',
-searchreplace_up : 'Upp&aring;t',
-searchreplace_down : 'Ner&aring;t',
-searchreplace_case : 'Matcha gemener/VERSALER',
-searchreplace_findnext : 'S&ouml;k&nbsp;n&auml;sta',
-searchreplace_replace : 'Ers&auml;tt',
-searchreplace_replaceall : 'Ers&auml;tt&nbsp;alla',
-searchreplace_cancel : 'Avbryt'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/zh_cn.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/langs/zh_cn.js
@@ -1,23 +1,23 @@
-// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com)

+// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com)


+

+tinyMCE.addToLang('',{


















+});

 
-tinyMCE.addToLang('',{

















-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/replace.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/replace.htm
@@ -1,50 +1,50 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{$lang_searchreplace_replace_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/replace.js"></script>
-	<base target="_self" />
-</head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
-<form onsubmit="searchNext('none');return false;" action="#">
-  <table border="0" cellspacing="0" cellpadding="2">
-	  <tr>
-		<td><label for="searchstring">{$lang_searchreplace_findwhat}</label></td>
-		<td><input type="text" id="searchstring" name="searchstring" style="width: 200px" /></td>
-	  </tr>
-	  <tr>
-		<td><label for="replacestring">{$lang_searchreplace_replacewith}</label></td>
-		<td><input type="text" id="replacestring" name="replacestring" style="width: 200px" /></td>
-	  </tr>
-        <tr>
-          <td colspan="2"><!--<table border="0" cellspacing="0" cellpadding="0">
-            <tr>
-              <td><label>{$lang_searchreplace_direction}</label></td>
-              <td><input id="backwardsu" name="backwards" class="radio" type="radio" value="true" /></td>
-              <td><label for="backwardsu">{$lang_searchreplace_up}</label></td>
-              <td><input id="backwardsd" name="backwards" class="radio" type="radio" value="false" /></td>
-              <td><label for="backwardsd">{$lang_searchreplace_down}</label></td>
-            </tr>
-          </table>--></td>
-        </tr>
-        <tr>
-<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
-  <tr>
-    <td><input id="casesensitivebox" name="casesensitivebox" class="checkbox" type="checkbox" value="true" /></td>
-    <td><label for="casesensitivebox">{$lang_searchreplace_case}</label></td>
-  </tr>
-</table></td>
-</tr>
-      </table>
-  <table border="0" width="300" cellspacing="0" cellpadding="4">
-    <tr>
-      <td><input id="insertBtn" name="insertBtn" type="button" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" /></td>
-      <td><input name="replaceBtn" type="button" id="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" /></td>
-      <td><input name="replaceBtn" type="button" id="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');" /></td>
-     <td align="right"><input name="cancelBtn" type="button" id="cancelBtn" value="{$lang_searchreplace_cancel}" onclick="cancelAction();" /></td>
-    </tr>
-  </table>
-</form>
-</body>
-</html>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_searchreplace_replace_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/replace.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">

+<form onsubmit="searchNext('none');return false;" action="#">

+  <table border="0" cellspacing="0" cellpadding="2">

+	  <tr>

+		<td><label for="searchstring">{$lang_searchreplace_findwhat}</label></td>

+		<td><input type="text" id="searchstring" name="searchstring" style="width: 200px" /></td>

+	  </tr>

+	  <tr>

+		<td><label for="replacestring">{$lang_searchreplace_replacewith}</label></td>

+		<td><input type="text" id="replacestring" name="replacestring" style="width: 200px" /></td>

+	  </tr>

+        <tr>

+          <td colspan="2"><!--<table border="0" cellspacing="0" cellpadding="0">

+            <tr>

+              <td><label>{$lang_searchreplace_direction}</label></td>

+              <td><input id="backwardsu" name="backwards" class="radio" type="radio" value="true" /></td>

+              <td><label for="backwardsu">{$lang_searchreplace_up}</label></td>

+              <td><input id="backwardsd" name="backwards" class="radio" type="radio" value="false" /></td>

+              <td><label for="backwardsd">{$lang_searchreplace_down}</label></td>

+            </tr>

+          </table>--></td>

+        </tr>

+        <tr>

+<td colspan="2"><table border="0" cellspacing="0" cellpadding="0">

+  <tr>

+    <td><input id="casesensitivebox" name="casesensitivebox" class="checkbox" type="checkbox" value="true" /></td>

+    <td><label for="casesensitivebox">{$lang_searchreplace_case}</label></td>

+  </tr>

+</table></td>

+</tr>

+      </table>

+  <table border="0" width="300" cellspacing="0" cellpadding="4">

+    <tr>

+      <td><input id="insertBtn" name="insertBtn" type="button" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" /></td>

+      <td><input name="replaceBtn" type="button" id="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" /></td>

+      <td><input name="replaceBtn" type="button" id="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');" /></td>

+     <td align="right"><input name="cancelBtn" type="button" id="cancelBtn" value="{$lang_searchreplace_cancel}" onclick="cancelAction();" /></td>

+    </tr>

+  </table>

+</form>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/search.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/search.htm
@@ -1,43 +1,43 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{$lang_searchreplace_search_title}</title>
-	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script language="javascript" type="text/javascript" src="jscripts/search.js"></script>
-	<base target="_self" />
-</head>
-<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
-<form onsubmit="searchNext();return false;" action="#">
-  <table border="0" cellspacing="0" cellpadding="2">
-        <tr>
-          <td><label for="searchstring">{$lang_searchreplace_findwhat}</label>&nbsp;<input type="text" id="searchstring" name="searchstring" style="width: 200px" /></td>
-        </tr>
-        <tr>
-          <td><table border="0" cellspacing="0" cellpadding="0">
-            <tr>
-              <td><label>{$lang_searchreplace_direction}</label></td>
-              <td><input id="backwardsu" name="backwards" class="radio" type="radio" value="true" /></td>
-              <td><label for="backwardsu">{$lang_searchreplace_up}</label></td>
-              <td><input id="backwardsd" name="backwards" class="radio" type="radio" value="false" /></td>
-              <td><label for="backwardsd">{$lang_searchreplace_down}</label></td>
-            </tr>
-          </table></td>
-        </tr>
-        <tr>
-<td><table border="0" cellspacing="0" cellpadding="0">
-  <tr>
-    <td><input id="casesensitivebox" name="casesensitivebox" class="checkbox" type="checkbox" value="true" /></td>
-    <td><label for="casesensitivebox">{$lang_searchreplace_case}</label></td>
-  </tr>
-</table></td>
-</tr>
-      </table>
-  <table border="0" width="300" cellspacing="0" cellpadding="4">
-    <tr>
-      <td><input id="insert" name="insert" type="submit" value="{$lang_searchreplace_findnext}" /></td>
-      <td align="right"><input id="cancel" name="cancel" type="button" value="{$lang_searchreplace_cancel}" onclick="cancelAction();" /></td>
-    </tr>
-  </table>
-</form>
-</body>
-</html>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_searchreplace_search_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/search.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">

+<form onsubmit="searchNext();return false;" action="#">

+  <table border="0" cellspacing="0" cellpadding="2">

+        <tr>

+          <td><label for="searchstring">{$lang_searchreplace_findwhat}</label>&nbsp;<input type="text" id="searchstring" name="searchstring" style="width: 200px" /></td>

+        </tr>

+        <tr>

+          <td><table border="0" cellspacing="0" cellpadding="0">

+            <tr>

+              <td><label>{$lang_searchreplace_direction}</label></td>

+              <td><input id="backwardsu" name="backwards" class="radio" type="radio" value="true" /></td>

+              <td><label for="backwardsu">{$lang_searchreplace_up}</label></td>

+              <td><input id="backwardsd" name="backwards" class="radio" type="radio" value="false" /></td>

+              <td><label for="backwardsd">{$lang_searchreplace_down}</label></td>

+            </tr>

+          </table></td>

+        </tr>

+        <tr>

+<td><table border="0" cellspacing="0" cellpadding="0">

+  <tr>

+    <td><input id="casesensitivebox" name="casesensitivebox" class="checkbox" type="checkbox" value="true" /></td>

+    <td><label for="casesensitivebox">{$lang_searchreplace_case}</label></td>

+  </tr>

+</table></td>

+</tr>

+      </table>

+  <table border="0" width="300" cellspacing="0" cellpadding="4">

+    <tr>

+      <td><input id="insert" name="insert" type="submit" value="{$lang_searchreplace_findnext}" /></td>

+      <td align="right"><input id="cancel" name="cancel" type="button" value="{$lang_searchreplace_cancel}" onclick="cancelAction();" /></td>

+    </tr>

+  </table>

+</form>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
@@ -1,106 +1,108 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#searchreplace_dlg.replace_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="js/searchreplace.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
-	<base target="_self" />
-</head>
-<body style="display:none;">
-<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="search_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>
-			<li id="replace_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_searchreplace_replace_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/searchreplace.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/searchreplace.css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">

+<form onsubmit="return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="search_tab"><span><a href="javascript:mcTabs.displayTab('search_tab','search_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_search_desc}</a></span></li>

+			<li id="replace_tab"><span><a href="javascript:mcTabs.displayTab('replace_tab','replace_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_replace}</a></span></li>

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+

+		<div id="search_panel" class="panel">

+			<table border="0" cellspacing="0" cellpadding="2">

+				<tr>

+					<td><label for="search_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>

+					<td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>

+				</tr>

+				<tr>

+					<td colspan="2">

+						<table border="0" cellspacing="0" cellpadding="0" class="direction">

+							<tr>

+								<td><label>{$lang_searchreplace_direction}</label></td>

+								<td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>

+								<td><label for="search_panel_backwardsu">{$lang_searchreplace_up}</label></td>

+								<td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" /></td>

+								<td><label for="search_panel_backwardsd">{$lang_searchreplace_down}</label></td>

+							</tr>

+						</table>

+					</td>

+				</tr>

+				<tr>

+					<td colspan="2">

+						<table border="0" cellspacing="0" cellpadding="0">

+							<tr>

+								<td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>

+								<td><label for="search_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>

+							</tr>

+						</table>

+					</td>

+				</tr>

+			</table>

+		</div>

+

+		<div id="replace_panel" class="panel">

+			<table border="0" cellspacing="0" cellpadding="2">

+				<tr>

+					<td><label for="replace_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>

+					<td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>

+				</tr>

+				<tr>

+					<td><label for="replace_panel_replacestring">{$lang_searchreplace_replacewith}</label></td>

+					<td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>

+				</tr>

+				<tr>

+					<td colspan="2">

+						<table border="0" cellspacing="0" cellpadding="0" class="direction">

+							<tr>

+								<td><label>{$lang_searchreplace_direction}</label></td>

+								<td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>

+								<td><label for="replace_panel_backwardsu">{$lang_searchreplace_up}</label></td>

+								<td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" /></td>

+								<td><label for="replace_panel_backwardsd">{$lang_searchreplace_down}</label></td>

+							</tr>

+						</table>

+					</td>

+				</tr>

+				<tr>

+					<td colspan="2">

+						<table border="0" cellspacing="0" cellpadding="0">

+							<tr>

+								<td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>

+								<td><label for="replace_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>

+							</tr>

+						</table>

+					</td>

+				</tr>

+			</table>

+		</div>

+

+	</div>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" />

+			<span id="replace_buttons">

+				<input type="button" id="replaceBtn" name="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" />

+				<input type="button" id="replaceAllBtn" name="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');;" />

+			</span>

+		</div>

+

+		<div style="float: right">	

+			<input type="button" id="cancel" name="cancel" value="{$lang_searchreplace_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="search_panel" class="panel">
-			<table border="0" cellspacing="0" cellpadding="2">
-				<tr>
-					<td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
-					<td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>
-				</tr>
-				<tr>
-					<td colspan="2">
-						<table border="0" cellspacing="0" cellpadding="0" class="direction">
-							<tr>
-								<td><label>{#searchreplace_dlg.direction}</label></td>
-								<td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
-								<td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
-								<td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>
-								<td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<tr>
-					<td colspan="2">
-						<table border="0" cellspacing="0" cellpadding="0">
-							<tr>
-								<td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
-								<td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-			</table>
-		</div>
-
-		<div id="replace_panel" class="panel">
-			<table border="0" cellspacing="0" cellpadding="2">
-				<tr>
-					<td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
-					<td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>
-				</tr>
-				<tr>
-					<td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>
-					<td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>
-				</tr>
-				<tr>
-					<td colspan="2">
-						<table border="0" cellspacing="0" cellpadding="0" class="direction">
-							<tr>
-								<td><label>{#searchreplace_dlg.direction}</label></td>
-								<td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
-								<td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
-								<td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>
-								<td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-				<tr>
-					<td colspan="2">
-						<table border="0" cellspacing="0" cellpadding="0">
-							<tr>
-								<td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
-								<td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
-							</tr>
-						</table>
-					</td>
-				</tr>
-			</table>
-		</div>
-
-	</div>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
-			<input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
-			<input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
-		</div>
-
-		<div style="float: right">	
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/spellchecker/css/content.css
+++ /dev/null
@@ -1,2 +1,1 @@
-.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
 

--- a/tinymce/2/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
+++ /dev/null
@@ -1,1 +1,1 @@
-(function(){var JSONRequest=tinymce.util.JSONRequest,each=tinymce.each,DOM=tinymce.DOM;tinymce.create('tinymce.plugins.SpellcheckerPlugin',{getInfo:function(){return{longname:'Spellchecker',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',version:tinymce.majorVersion+"."+tinymce.minorVersion};},init:function(ed,url){var t=this,cm;t.url=url;t.editor=ed;ed.addCommand('mceSpellCheck',function(){if(!t.active){ed.setProgressState(1);t._sendRPC('checkWords',[t.selectedLang,t._getWords()],function(r){if(r.length>0){t.active=1;t._markWords(r);ed.setProgressState(0);ed.nodeChanged();}else{ed.setProgressState(0);ed.windowManager.alert('spellchecker.no_mpell');}});}else t._done();});ed.onInit.add(function(){if(ed.settings.content_css!==false)ed.dom.loadCSS(url+'/css/content.css');});ed.onClick.add(t._showMenu,t);ed.onContextMenu.add(t._showMenu,t);ed.onBeforeGetContent.add(function(){if(t.active)t._removeWords();});ed.onNodeChange.add(function(ed,cm){cm.setActive('spellchecker',t.active);});ed.onSetContent.add(function(){t._done();});ed.onBeforeGetContent.add(function(){t._done();});ed.onBeforeExecCommand.add(function(ed,cmd){if(cmd=='mceFullScreen')t._done();});t.languages={};each(ed.getParam('spellchecker_languages','+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv','hash'),function(v,k){if(k.indexOf('+')===0){k=k.substring(1);t.selectedLang=v;}t.languages[k]=v;});},createControl:function(n,cm){var t=this,c,ed=t.editor;if(n=='spellchecker'){c=cm.createSplitButton(n,{title:'spellchecker.desc',cmd:'mceSpellCheck',scope:t});c.onRenderMenu.add(function(c,m){m.add({title:'spellchecker.langs','class':'mceMenuItemTitle'}).setDisabled(1);each(t.languages,function(v,k){var o={icon:1},mi;o.onclick=function(){mi.setSelected(1);t.selectedItem.setSelected(0);t.selectedItem=mi;t.selectedLang=v;};o.title=k;mi=m.add(o);mi.setSelected(v==t.selectedLang);if(v==t.selectedLang)t.selectedItem=mi;})});return c;}},_walk:function(n,f){var d=this.editor.getDoc(),w;if(d.createTreeWalker){w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while((n=w.nextNode())!=null)f.call(this,n);}else tinymce.walk(n,f,'childNodes');},_getSeparators:function(){var re='',i,str=this.editor.getParam('spellchecker_word_separator_chars','\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}����������������\u201d\u201c');for(i=0;i<str.length;i++)re+='\\'+str.charAt(i);return re;},_getWords:function(){var ed=this.editor,wl=[],tx='',lo={};this._walk(ed.getBody(),function(n){if(n.nodeType==3)tx+=n.nodeValue+' ';});tx=tx.replace(new RegExp('([0-9]|['+this._getSeparators()+'])','g'),' ');tx=tinymce.trim(tx.replace(/(\s+)/g,' '));each(tx.split(' '),function(v){if(!lo[v]){wl.push(v);lo[v]=1;}});return wl;},_removeWords:function(w){var ed=this.editor,dom=ed.dom,se=ed.selection,b=se.getBookmark();each(dom.select('span').reverse(),function(n){if(n&&(dom.hasClass(n,'mceItemHiddenSpellWord')||dom.hasClass(n,'mceItemHidden'))){if(!w||dom.decode(n.innerHTML)==w)dom.remove(n,1);}});se.moveToBookmark(b);},_markWords:function(wl){var r1,r2,r3,r4,r5,w='',ed=this.editor,re=this._getSeparators(),dom=ed.dom,nl=[];var se=ed.selection,b=se.getBookmark();each(wl,function(v){w+=(w?'|':'')+v;});r1=new RegExp('(['+re+'])('+w+')(['+re+'])','g');r2=new RegExp('^('+w+')','g');r3=new RegExp('('+w+')(['+re+']?)$','g');r4=new RegExp('^('+w+')(['+re+']?)$','g');r5=new RegExp('('+w+')(['+re+'])','g');this._walk(this.editor.getBody(),function(n){if(n.nodeType==3){nl.push(n);}});each(nl,function(n){var v;if(n.nodeType==3){v=n.nodeValue;if(r1.test(v)||r2.test(v)||r3.test(v)||r4.test(v)){v=dom.encode(v);v=v.replace(r5,'<span class="mceItemHiddenSpellWord">$1</span>$2');v=v.replace(r3,'<span class="mceItemHiddenSpellWord">$1</span>$2');dom.replace(dom.create('span',{'class':'mceItemHidden'},v),n);}}});se.moveToBookmark(b);},_showMenu:function(ed,e){var t=this,ed=t.editor,m=t._menu,p1,dom=ed.dom,vp=dom.getViewPort(ed.getWin());if(!m){p1=DOM.getPos(ed.getContentAreaContainer());m=ed.controlManager.createDropMenu('spellcheckermenu',{offset_x:p1.x,offset_y:p1.y,'class':'mceNoIcons'});t._menu=m;}if(dom.hasClass(e.target,'mceItemHiddenSpellWord')){m.removeAll();m.add({title:'spellchecker.wait','class':'mceMenuItemTitle'}).setDisabled(1);t._sendRPC('getSuggestions',[t.selectedLang,dom.decode(e.target.innerHTML)],function(r){m.removeAll();if(r.length>0){m.add({title:'spellchecker.sug','class':'mceMenuItemTitle'}).setDisabled(1);each(r,function(v){m.add({title:v,onclick:function(){dom.replace(ed.getDoc().createTextNode(v),e.target);t._checkDone();}});});m.addSeparator();}else m.add({title:'spellchecker.no_sug','class':'mceMenuItemTitle'}).setDisabled(1);m.add({title:'spellchecker.ignore_word',onclick:function(){dom.remove(e.target,1);t._checkDone();}});m.add({title:'spellchecker.ignore_words',onclick:function(){t._removeWords(dom.decode(e.target.innerHTML));t._checkDone();}});m.update();});ed.selection.select(e.target);p1=dom.getPos(e.target);m.showMenu(p1.x,p1.y+e.target.offsetHeight-vp.y);return tinymce.dom.Event.cancel(e);}else m.hideMenu();},_checkDone:function(){var t=this,ed=t.editor,dom=ed.dom,o;each(dom.select('span'),function(n){if(n&&dom.hasClass(n,'mceItemHiddenSpellWord')){o=true;return false;}});if(!o)t._done();},_done:function(){var t=this,la=t.active;if(t.active){t.active=0;t._removeWords();if(t._menu)t._menu.hideMenu();if(la)t.editor.nodeChanged();}},_sendRPC:function(m,p,cb){var t=this,url=t.editor.getParam("spellchecker_rpc_url","{backend}");if(url=='{backend}'){t.editor.setProgressState(0);alert('Please specify: spellchecker_rpc_url');return;}JSONRequest.sendRPC({url:url,method:m,params:p,success:cb,error:function(e,x){t.editor.setProgressState(0);t.editor.windowManager.alert(e.errstr||('Error response: '+x.responseText));}});}});tinymce.PluginManager.add('spellchecker',tinymce.plugins.SpellcheckerPlugin);})();
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js
+++ /dev/null
@@ -1,338 +1,1 @@
-/**
- * $Id: editor_plugin_src.js 425 2007-11-21 15:17:39Z spocke $
- *
- * @author Moxiecode

- */
 
-(function() {
-	var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
-
-	tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
-		getInfo : function() {
-			return {
-				longname : 'Spellchecker',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		init : function(ed, url) {
-			var t = this, cm;
-
-			t.url = url;
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceSpellCheck', function() {
-				if (!t.active) {
-					ed.setProgressState(1);
-					t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
-						if (r.length > 0) {
-							t.active = 1;
-							t._markWords(r);
-							ed.setProgressState(0);
-							ed.nodeChanged();
-						} else {
-							ed.setProgressState(0);
-							ed.windowManager.alert('spellchecker.no_mpell');
-						}
-					});
-				} else
-					t._done();
-			});
-
-			ed.onInit.add(function() {
-				if (ed.settings.content_css !== false)
-					ed.dom.loadCSS(url + '/css/content.css');
-			});
-
-			ed.onClick.add(t._showMenu, t);
-			ed.onContextMenu.add(t._showMenu, t);
-			ed.onBeforeGetContent.add(function() {
-				if (t.active)
-					t._removeWords();
-			});
-
-			ed.onNodeChange.add(function(ed, cm) {
-				cm.setActive('spellchecker', t.active);
-			});
-
-			ed.onSetContent.add(function() {
-				t._done();
-			});
-
-			ed.onBeforeGetContent.add(function() {
-				t._done();
-			});
-
-			ed.onBeforeExecCommand.add(function(ed, cmd) {
-				if (cmd == 'mceFullScreen')
-					t._done();
-			});
-
-			// Find selected language
-			t.languages = {};
-			each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
-				if (k.indexOf('+') === 0) {
-					k = k.substring(1);
-					t.selectedLang = v;
-				}
-
-				t.languages[k] = v;
-			});
-		},
-
-		createControl : function(n, cm) {
-			var t = this, c, ed = t.editor;
-
-			if (n == 'spellchecker') {
-				c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
-
-				c.onRenderMenu.add(function(c, m) {
-					m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-					each(t.languages, function(v, k) {
-						var o = {icon : 1}, mi;
-
-						o.onclick = function() {
-							mi.setSelected(1);
-							t.selectedItem.setSelected(0);
-							t.selectedItem = mi;
-							t.selectedLang = v;
-						};
-
-						o.title = k;
-						mi = m.add(o);
-						mi.setSelected(v == t.selectedLang);
-
-						if (v == t.selectedLang)
-							t.selectedItem = mi;
-					})
-				});
-
-				return c;
-			}
-		},
-
-		// Internal functions
-
-		_walk : function(n, f) {
-			var d = this.editor.getDoc(), w;
-
-			if (d.createTreeWalker) {
-				w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-
-				while ((n = w.nextNode()) != null)
-					f.call(this, n);
-			} else
-				tinymce.walk(n, f, 'childNodes');
-		},
-
-		_getSeparators : function() {

-
-			// Build word separator regexp
-			for (i=0; i<str.length; i++)
-				re += '\\' + str.charAt(i);
-
-			return re;
-		},
-
-		_getWords : function() {
-			var ed = this.editor, wl = [], tx = '', lo = {};
-
-			// Get area text
-			this._walk(ed.getBody(), function(n) {
-				if (n.nodeType == 3)
-					tx += n.nodeValue + ' ';
-			});
-
-			// Split words by separator
-			tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
-			tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
-
-			// Build word array and remove duplicates
-			each(tx.split(' '), function(v) {
-				if (!lo[v]) {
-					wl.push(v);
-					lo[v] = 1;
-				}
-			});
-
-			return wl;
-		},
-
-		_removeWords : function(w) {
-			var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();
-
-			each(dom.select('span').reverse(), function(n) {
-				if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
-					if (!w || dom.decode(n.innerHTML) == w)
-						dom.remove(n, 1);
-				}
-			});
-
-			se.moveToBookmark(b);
-		},
-
-		_markWords : function(wl) {
-			var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = [];
-			var se = ed.selection, b = se.getBookmark();
-
-			each(wl, function(v) {
-				w += (w ? '|' : '') + v;
-			});
-
-			r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g');
-			r2 = new RegExp('^(' + w + ')', 'g');
-			r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g');
-			r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g');
-			r5 = new RegExp('(' + w + ')([' + re + '])', 'g');
-
-			// Collect all text nodes
-			this._walk(this.editor.getBody(), function(n) {
-				if (n.nodeType == 3) {
-					nl.push(n);
-				}
-			});
-
-			// Wrap incorrect words in spans
-			each(nl, function(n) {
-				var v;
-
-				if (n.nodeType == 3) {
-					v = n.nodeValue;
-
-					if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) {
-						v = dom.encode(v);
-						v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2');
-						v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2');
-
-						dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n);
-					}
-				}
-			});
-
-			se.moveToBookmark(b);
-		},
-
-		_showMenu : function(ed, e) {
-			var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin());
-
-			if (!m) {
-				p1 = DOM.getPos(ed.getContentAreaContainer());
-				//p2 = DOM.getPos(ed.getContainer());
-
-				m = ed.controlManager.createDropMenu('spellcheckermenu', {
-					offset_x : p1.x,
-					offset_y : p1.y,
-					'class' : 'mceNoIcons'
-				});
-
-				t._menu = m;
-			}
-
-			if (dom.hasClass(e.target, 'mceItemHiddenSpellWord')) {
-				m.removeAll();
-				m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-
-				t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(e.target.innerHTML)], function(r) {
-					m.removeAll();
-
-					if (r.length > 0) {
-						m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-						each(r, function(v) {
-							m.add({title : v, onclick : function() {
-								dom.replace(ed.getDoc().createTextNode(v), e.target);
-								t._checkDone();
-							}});
-						});
-
-						m.addSeparator();
-					} else
-						m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-
-					m.add({
-						title : 'spellchecker.ignore_word',
-						onclick : function() {
-							dom.remove(e.target, 1);
-							t._checkDone();
-						}
-					});
-
-					m.add({
-						title : 'spellchecker.ignore_words',
-						onclick : function() {
-							t._removeWords(dom.decode(e.target.innerHTML));
-							t._checkDone();
-						}
-					});
-
-					m.update();
-				});
-
-				ed.selection.select(e.target);
-				p1 = dom.getPos(e.target);
-				m.showMenu(p1.x, p1.y + e.target.offsetHeight - vp.y);
-
-				return tinymce.dom.Event.cancel(e);
-			} else
-				m.hideMenu();
-		},
-
-		_checkDone : function() {
-			var t = this, ed = t.editor, dom = ed.dom, o;
-
-			each(dom.select('span'), function(n) {
-				if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
-					o = true;
-					return false;
-				}
-			});
-
-			if (!o)
-				t._done();
-		},
-
-		_done : function() {
-			var t = this, la = t.active;
-
-			if (t.active) {
-				t.active = 0;
-				t._removeWords();
-
-				if (t._menu)
-					t._menu.hideMenu();
-
-				if (la)
-					t.editor.nodeChanged();
-			}
-		},
-
-		_sendRPC : function(m, p, cb) {
-			var t = this, url = t.editor.getParam("spellchecker_rpc_url", "{backend}");
-
-			if (url == '{backend}') {
-				t.editor.setProgressState(0);
-				alert('Please specify: spellchecker_rpc_url');
-				return;
-			}
-
-			JSONRequest.sendRPC({
-				url : url,
-				method : m,
-				params : p,
-				success : cb,
-				error : function(e, x) {
-					t.editor.setProgressState(0);
-					t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
-				}
-			});
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
-})();

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/style/css/props.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/css/props.css
@@ -1,14 +1,63 @@
-#text_font {width:250px;}
-#text_size {width:70px;}
-.mceAddSelectValue {background:#DDD;}
-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 {border-left:1px solid gray;}
-.tdelim {border-bottom:1px solid gray;}
-#block_display {width:145px;}
-#list_type {width:115px;}
-.disabled {background:#EEE;}
+#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 {

+	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;

+}

+

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.StylePlugin',{init:function(ed,url){ed.addCommand('mceStyleProps',function(){ed.windowManager.open({file:url+'/props.htm',width:480+parseInt(ed.getLang('style.delta_width',0)),height:320+parseInt(ed.getLang('style.delta_height',0)),inline:1},{plugin_url:url,style_text:ed.selection.getNode().style.cssText});});ed.addCommand('mceSetElementStyle',function(ui,v){if(e=ed.selection.getNode()){ed.dom.setAttrib(e,'style',v);ed.execCommand('mceRepaint');}});ed.onNodeChange.add(function(ed,cm,n){cm.setDisabled('styleprops',n.nodeName==='BODY');});ed.addButton('styleprops',{title:'style.desc',cmd:'mceStyleProps'});},getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('style',tinymce.plugins.StylePlugin);})();
+tinyMCE.importPluginLanguagePack('style');var TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"styleprops":return tinyMCE.getButtonHTML(cn,'lang_style_styleinfo_desc','{$pluginurl}/images/styleprops.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){if(node.nodeName=='BODY')tinyMCE.switchClass(editor_id+'_styleprops','mceButtonDisabled');else tinyMCE.switchClass(editor_id+'_styleprops','mceButtonNormal')},_styleProps:function(){var e=tinyMCE.selectedInstance.selection.getFocusElement();if(!e||e.nodeName=='BODY')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);

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/editor_plugin_src.js
@@ -1,52 +1,84 @@
-/**
- * $Id: editor_plugin_src.js 787 2008-04-10 11:40:57Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('style');

+

+var TinyMCE_StylePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Style',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "styleprops":

+				return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.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) {

+		if (node.nodeName == 'BODY')

+			tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonDisabled');

+		else

+			tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonNormal');

+	},

+

+	// Private plugin specific methods

+

+	_styleProps : function() {

+		var e = tinyMCE.selectedInstance.selection.getFocusElement();

+

+		if (!e || e.nodeName == 'BODY')

+			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);

 
-(function() {
-	tinymce.create('tinymce.plugins.StylePlugin', {
-		init : function(ed, url) {
-			// Register commands
-			ed.addCommand('mceStyleProps', function() {
-				ed.windowManager.open({
-					file : url + '/props.htm',
-					width : 480 + parseInt(ed.getLang('style.delta_width', 0)),
-					height : 320 + parseInt(ed.getLang('style.delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url,
-					style_text : ed.selection.getNode().style.cssText
-				});
-			});
-
-			ed.addCommand('mceSetElementStyle', function(ui, v) {
-				if (e = ed.selection.getNode()) {
-					ed.dom.setAttrib(e, 'style', v);
-					ed.execCommand('mceRepaint');
-				}
-			});
-
-			ed.onNodeChange.add(function(ed, cm, n) {
-				cm.setDisabled('styleprops', n.nodeName === 'BODY');
-			});
-
-			// Register buttons
-			ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Style',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/js/props.js
+++ /dev/null
@@ -1,642 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-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;em;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'), h;
-
-	ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
-
-	h = getBrowserHTML('background_image_browser','background_image','image','advimage');
-	document.getElementById("background_image_browser").innerHTML = h;
-
-	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 = tinyMCEPopup.editor.dom.toHex(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 = tinyMCEPopup.editor.dom.toHex(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');
-
-	f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);
-	f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);
-	f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);
-	f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);
-
-	// 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', '', '', ['top', 'right', 'bottom', 'left']);
-
-	s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
-	s = s.replace(/,/g, ' ');
-
-	if (!hasEqualValues([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 = s.split(' ');
-
-	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 = ['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 = [], i, x;
-
-	if (typeof(b) == "undefined")
-		b = ['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<a.length; i++) {
-		if (a[i] == null)
-			return false;
-
-		for (x=0; x<a.length; x++) {
-			if (a[x] != a[i])
-				return false;
-		}
-	}
-
-	return true;
-};
-
-function hasEqualValues(a) {
-	var i, x;
-
-	for (i=0; i<a.length; i++) {
-		if (a[i] == null)
-			return false;
-
-		for (x=0; x<a.length; x++) {
-			if (a[x] != a[i])
-				return false;
-		}
-	}
-
-	return true;
-}
-
-function applyAction() {
-	var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
-
-	generateCSS();
-
-	tinyMCEPopup.restoreSelection();
-	ed.dom.setAttrib(ed.selection.getNode(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));
-}
-
-function updateAction() {
-	applyAction();
-	tinyMCEPopup.close();
-}
-
-function generateCSS() {
-	var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
-
-	ce.style.cssText = "";
-
-	// Build text styles
-	ce.style.fontFamily = f.text_font.value;
-	ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");
-	ce.style.fontStyle = f.text_style.value;
-	ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
-	ce.style.textTransform = f.text_case.value;
-	ce.style.fontWeight = f.text_weight.value;
-	ce.style.fontVariant = f.text_variant.value;
-	ce.style.color = f.text_color.value;
-
-	s = "";
-	s += f.text_underline.checked ? " underline" : "";
-	s += f.text_overline.checked ? " overline" : "";
-	s += f.text_linethrough.checked ? " line-through" : "";
-	s += f.text_blink.checked ? " blink" : "";
-	s = s.length > 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 = 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<f.length; i++) {
-		for (a=0; a<f[i].elements.length; a++) {
-			if (f[i].elements[a].disabled)
-				tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");
-			else
-				tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");
-		}
-	}
-}
-
-function fillSelect(f, s, param, dval, sep, em) {
-	var i, ar, p, se;
-
-	f = document.forms[f];
-	sep = typeof(sep) == "undefined" ? ";" : sep;
-
-	if (em)
-		addSelectValue(f, s, "", "");
-
-	ar = tinyMCEPopup.getParam(param, dval).split(sep);
-	for (i=0; i<ar.length; i++) {
-		se = false;
-
-		if (ar[i].charAt(0) == '+') {
-			ar[i] = ar[i].substring(1);
-			se = true;
-		}
-
-		p = ar[i].split('=');
-
-		if (p.length > 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);
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/jscripts/props.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/jscripts/props.js
@@ -1,634 +1,634 @@
-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 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'), h;

+

+	ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');

+

+	h = getBrowserHTML('background_image_browser','background_image','image','advimage');

+	document.getElementById("background_image_browser").innerHTML = h;

+

+	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<a.length; i++) {

+		if (a[i] == null)

+			return false;

+

+		for (x=0; x<a.length; x++) {

+			if (a[x] != a[i])

+				return false;

+		}

+	}

+

+	return true;

+};

+

+function hasEqualValues(a) {

+	var i, x;

+

+	for (i=0; i<a.length; i++) {

+		if (a[i] == null)

+			return false;

+

+		for (x=0; x<a.length; x++) {

+			if (a[x] != a[i])

+				return false;

+		}

+	}

+

+	return true;

+}

+

+function applyAction() {

+	var ce = document.getElementById('container');

+

+	generateCSS();

+

+	tinyMCEPopup.execCommand('mceSetElementStyle', false, tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)));

+}

+

+function updateAction() {

+	applyAction();

+	tinyMCEPopup.close();

+}

+

+function generateCSS() {

+	var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;

+

+	ce.style.cssText = "";

+

+	// Build text styles

+	ce.style.fontFamily = f.text_font.value;

+	ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? f.text_size_measurement.value : "");

+	ce.style.fontStyle = f.text_style.value;

+	ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");

+	ce.style.textTransform = f.text_case.value;

+	ce.style.fontWeight = f.text_weight.value;

+	ce.style.fontVariant = f.text_variant.value;

+	ce.style.color = f.text_color.value;

+

+	s = "";

+	s += f.text_underline.checked ? " underline" : "";

+	s += f.text_overline.checked ? " overline" : "";

+	s += f.text_linethrough.checked ? " line-through" : "";

+	s += f.text_blink.checked ? " blink" : "";

+	s = s.length > 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<f.length; i++) {

+		for (a=0; a<f[i].elements.length; a++) {

+			if (f[i].elements[a].disabled)

+				tinyMCE.addCSSClass(f[i].elements[a], "disabled");

+			else

+				tinyMCE.removeCSSClass(f[i].elements[a], "disabled");

+		}

+	}

+}

+

+function fillSelect(f, s, param, dval, sep, em) {

+	var i, ar, p, se;

+

+	f = document.forms[f];

+	sep = typeof(sep) == "undefined" ? ";" : sep;

+

+	if (em)

+		addSelectValue(f, s, "", "");

+

+	ar = tinyMCE.getParam(param, dval).split(sep);

+	for (i=0; i<ar.length; i++) {

+		se = false;

+

+		if (ar[i].charAt(0) == '+') {

+			ar[i] = ar[i].substring(1);

+			se = true;

+		}

+

+		p = ar[i].split('=');

+

+		if (p.length > 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);

+}

 
-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'), h;
-
-	ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
-
-	h = getBrowserHTML('background_image_browser','background_image','image','advimage');
-	document.getElementById("background_image_browser").innerHTML = h;
-
-	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<a.length; i++) {
-		if (a[i] == null)
-			return false;
-
-		for (x=0; x<a.length; x++) {
-			if (a[x] != a[i])
-				return false;
-		}
-	}
-
-	return true;
-};
-
-function hasEqualValues(a) {
-	var i, x;
-
-	for (i=0; i<a.length; i++) {
-		if (a[i] == null)
-			return false;
-
-		for (x=0; x<a.length; x++) {
-			if (a[x] != a[i])
-				return false;
-		}
-	}
-
-	return true;
-}
-
-function applyAction() {
-	var ce = document.getElementById('container');
-
-	generateCSS();
-
-	tinyMCEPopup.execCommand('mceSetElementStyle', false, tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)));
-}
-
-function updateAction() {
-	applyAction();
-	tinyMCEPopup.close();
-}
-
-function generateCSS() {
-	var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
-
-	ce.style.cssText = "";
-
-	// Build text styles
-	ce.style.fontFamily = f.text_font.value;
-	ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? f.text_size_measurement.value : "");
-	ce.style.fontStyle = f.text_style.value;
-	ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
-	ce.style.textTransform = f.text_case.value;
-	ce.style.fontWeight = f.text_weight.value;
-	ce.style.fontVariant = f.text_variant.value;
-	ce.style.color = f.text_color.value;
-
-	s = "";
-	s += f.text_underline.checked ? " underline" : "";
-	s += f.text_overline.checked ? " overline" : "";
-	s += f.text_linethrough.checked ? " line-through" : "";
-	s += f.text_blink.checked ? " blink" : "";
-	s = s.length > 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<f.length; i++) {
-		for (a=0; a<f[i].elements.length; a++) {
-			if (f[i].elements[a].disabled)
-				tinyMCE.addCSSClass(f[i].elements[a], "disabled");
-			else
-				tinyMCE.removeCSSClass(f[i].elements[a], "disabled");
-		}
-	}
-}
-
-function fillSelect(f, s, param, dval, sep, em) {
-	var i, ar, p, se;
-
-	f = document.forms[f];
-	sep = typeof(sep) == "undefined" ? ";" : sep;
-
-	if (em)
-		addSelectValue(f, s, "", "");
-
-	ar = tinyMCE.getParam(param, dval).split(sep);
-	for (i=0; i<ar.length; i++) {
-		se = false;
-
-		if (ar[i].charAt(0) == '+') {
-			ar[i] = ar[i].substring(1);
-			se = true;
-		}
-
-		p = ar[i].split('=');
-
-		if (p.length > 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);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/langs/en.js
@@ -1,67 +1,67 @@
-// UK lang variables
+// 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'

+});

 
-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'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/langs/en_dlg.js
+++ /dev/null
@@ -1,63 +1,1 @@
-tinyMCE.addI18n('en.style_dlg',{
-title:"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"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/props.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/props.htm
@@ -1,27 +1,26 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-	<title>{#style_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="js/props.js"></script>
+	<title>{$lang_style_title}</title>
+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
+	<script language="javascript" type="text/javascript" src="jscripts/props.js"></script>
 	<link href="css/props.css" rel="stylesheet" type="text/css" />
 	<base target="_self" />
 </head>
 
-<body id="styleprops" style="display: none">
-<form onsubmit="updateAction();return false;" action="#">
+<body id="styleprops" onLoad="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
+<form onSubmit="updateAction();return false;" action="#">
 <div class="tabs">
 	<ul>
-		<li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li>
-		<li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li>
-		<li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li>
-		<li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li>
-		<li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li>
-		<li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li>
-		<li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li>
+		<li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{$lang_style_text_tab}</a></span></li>
+		<li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{$lang_style_background_tab}</a></span></li>
+		<li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{$lang_style_block_tab}</a></span></li>
+		<li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{$lang_style_box_tab}</a></span></li>
+		<li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{$lang_style_border_tab}</a></span></li>
+		<li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{$lang_style_list_tab}</a></span></li>
+		<li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{$lang_style_positioning_tab}</a></span></li>
 	</ul>
 </div>
 
@@ -29,13 +28,13 @@
 <div id="text_panel" class="panel current">
 	<table border="0" width="100%">
 		<tr>
-			<td><label for="text_font">{#style_dlg.text_font}</label></td>
+			<td><label for="text_font">{$lang_style_text_font}</label></td>
 			<td colspan="3">
-				<select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select>
-			</td>
-		</tr>
-		<tr>
-			<td><label for="text_size">{#style_dlg.text_size}</label></td>
+				<select id="text_font" name="text_font" class="mceEditableSelect" onChange="alert(this.options[this.selectedIndex].value);"></select>
+			</td>
+		</tr>
+		<tr>
+			<td><label for="text_size">{$lang_style_text_size}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
@@ -45,23 +44,23 @@
 					</tr>
 				</table>
 			</td>
-			<td><label for="text_weight">{#style_dlg.text_weight}</label></td>
+			<td><label for="text_weight">{$lang_style_text_weight}</label></td>
 			<td>
 				<select id="text_weight" name="text_weight"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_style">{#style_dlg.text_style}</label></td>
+			<td><label for="text_style">{$lang_style_text_style}</label></td>
 			<td>
 				<select id="text_style" name="text_style" class="mceEditableSelect"></select>
 			</td>
-			<td><label for="text_variant">{#style_dlg.text_variant}</label></td>
+			<td><label for="text_variant">{$lang_style_text_variant}</label></td>
 			<td>
 				<select id="text_variant" name="text_variant"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td>
+			<td><label for="text_lineheight">{$lang_style_text_lineheight}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
@@ -69,17 +68,17 @@
 							<select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
 						</td>
 						<td>&nbsp;</td>
-						<td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
-					</tr>
-				</table>
-			</td>
-			<td><label for="text_case">{#style_dlg.text_case}</label></td>
+      <td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td>
+					</tr>
+				</table>
+			</td>
+			<td><label for="text_case">{$lang_style_text_case}</label></td>
 			<td>
 				<select id="text_case" name="text_case"></select>
 			</td>
 		</tr>
 		<tr>
-			<td><label for="text_color">{#style_dlg.text_color}</label></td>
+			<td><label for="text_color">{$lang_style_text_color}</label></td>
 			<td colspan="2">
 				<table border="0" cellpadding="0" cellspacing="0">
 					<tr>
@@ -90,28 +89,28 @@
 			</td>
 		</tr>
 		<tr>
-			<td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td>
+			<td valign="top" style="vertical-align: top; padding-top: 3px;">{$lang_style_text_decoration}</td>
 			<td colspan="2">
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_underline">{#style_dlg.text_underline}</label></td>
+						<td><label for="text_underline">{$lang_style_text_underline}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_overline">{#style_dlg.text_overline}</label></td>
+						<td><label for="text_overline">{$lang_style_text_overline}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td>
+						<td><label for="text_linethrough">{$lang_style_text_striketrough}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_blink">{#style_dlg.text_blink}</label></td>
+						<td><label for="text_blink">{$lang_style_text_blink}</label></td>
 					</tr>
 					<tr>
 						<td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td>
-						<td><label for="text_none">{#style_dlg.text_none}</label></td>
+						<td><label for="text_none">{$lang_style_text_none}</label></td>
 					</tr>
 				</table>
 			</td>
@@ -122,7 +121,7 @@
 <div id="background_panel" class="panel">
 	<table border="0">
 		<tr>
-			<td><label for="background_color">{#style_dlg.background_color}</label></td>
+			<td><label for="background_color">{$lang_style_background_color}</label></td>
 			<td>
 				<table border="0" cellpadding="0" cellspacing="0">
 					<tr>
@@ -134,7 +133,7 @@
 		</tr>
 
 		<tr>
-			<td><label for="background_image">{#style_dlg.background_image}</label></td>
+			<td><label for="background_image">{$lang_style_background_image}</label></td>
 			<td><table border="0" cellspacing="0" cellpadding="0">
 				<tr> 
 				  <td><input id="background_image" name="background_image" type="text" /></td> 
@@ -145,36 +144,36 @@
 		</tr>
 
 		<tr>
-			<td><label for="background_repeat">{#style_dlg.background_repeat}</label></td>
+			<td><label for="background_repeat">{$lang_style_background_repeat}</label></td>
 			<td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="background_attachment">{#style_dlg.background_attachment}</label></td>
+			<td><label for="background_attachment">{$lang_style_background_attachment}</label></td>
 			<td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="background_hpos">{#style_dlg.background_hpos}</label></td>
+			<td><label for="background_hpos">{$lang_style_background_hpos}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-						<td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-
-		<tr>
-			<td><label for="background_vpos">{#style_dlg.background_vpos}</label></td>
+      <td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="background_vpos">{$lang_style_background_vpos}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-						<td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
+      <td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td>
 					</tr>
 				</table>
 			</td>
@@ -185,61 +184,61 @@
 <div id="block_panel" class="panel">
 	<table border="0">
 		<tr>
-			<td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td>
+			<td><label for="block_wordspacing">{$lang_style_block_wordspacing}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-						<td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-
-		<tr>
-			<td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td>
+      <td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="block_letterspacing">{$lang_style_block_letterspacing}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
 						<td>&nbsp;</td>
-						<td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-
-		<tr>
-			<td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td>
+      <td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="block_vertical_alignment">{$lang_style_block_vertical_alignment}</label></td>
 			<td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="block_text_align">{#style_dlg.block_text_align}</label></td>
+			<td><label for="block_text_align">{$lang_style_block_text_align}</label></td>
 			<td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td>
+			<td><label for="block_text_indent">{$lang_style_block_text_indent}</label></td>
 			<td>
 				<table border="0" cellspacing="0" cellpadding="0">
 					<tr>
 						<td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
 						<td>&nbsp;</td>
-						<td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-
-		<tr>
-			<td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td>
+      <td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td>
+					</tr>
+				</table>
+			</td>
+		</tr>
+
+		<tr>
+			<td><label for="block_whitespace">{$lang_style_block_whitespace}</label></td>
 			<td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="block_display">{#style_dlg.block_display}</label></td>
+			<td><label for="block_display">{$lang_style_block_display}</label></td>
 			<td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
 		</tr>
 	</table>
@@ -248,88 +247,88 @@
 <div id="box_panel" class="panel">
 <table border="0">
 	<tr>
-		<td><label for="box_width">{#style_dlg.box_width}</label></td>
+		<td><label for="box_width">{$lang_style_box_width}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
 					<td>&nbsp;</td>
-					<td><select id="box_width_measurement" name="box_width_measurement"></select></td>
+     <td><select id="box_width_measurement" name="box_width_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="box_float">{#style_dlg.box_float}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="box_float">{$lang_style_box_float}</label></td>
 		<td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
 	</tr>
 
 	<tr>
-		<td><label for="box_height">{#style_dlg.box_height}</label></td>
+		<td><label for="box_height">{$lang_style_box_height}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
 					<td>&nbsp;</td>
-					<td><select id="box_height_measurement" name="box_height_measurement"></select></td>
+     <td><select id="box_height_measurement" name="box_height_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{#style_dlg.box_clear}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{$lang_style_box_clear}</label></td>
 		<td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
 	</tr>
 </table>
 <div style="float: left; width: 49%">
 	<fieldset>
-		<legend>{#style_dlg.padding}</legend>
+		<legend>{$lang_style_padding}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td>
-			</tr>
-			<tr>
-				<td><label for="box_padding_top">{#style_dlg.top}</label></td>
+				<td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_top">{$lang_style_top}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td><label for="box_padding_right">{#style_dlg.right}</label></td>
+       <td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_right">{$lang_style_right}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td>
+       <td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_bottom">{$lang_style_bottom}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td><label for="box_padding_left">{#style_dlg.left}</label></td>
+       <td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_padding_left">{$lang_style_left}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
+       <td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -340,57 +339,57 @@
 
 <div style="float: right; width: 49%">
 	<fieldset>
-		<legend>{#style_dlg.margin}</legend>
+		<legend>{$lang_style_margin}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td>
-			</tr>
-			<tr>
-				<td><label for="box_margin_top">{#style_dlg.top}</label></td>
+				<td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_top">{$lang_style_top}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td><label for="box_margin_right">{#style_dlg.right}</label></td>
+       <td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_right">{$lang_style_right}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td>
+       <td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_bottom">{$lang_style_bottom}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td><label for="box_margin_left">{#style_dlg.left}</label></td>
+       <td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td><label for="box_margin_left">{$lang_style_left}</label></td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
+       <td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -406,25 +405,25 @@
 <tr>
 	<td class="tdelim">&nbsp;</td>
 	<td class="tdelim delim">&nbsp;</td>
-	<td class="tdelim">{#style_dlg.style}</td>
+	<td class="tdelim">{$lang_style_style}</td>
 	<td class="tdelim delim">&nbsp;</td>
-	<td class="tdelim">{#style_dlg.width}</td>
+	<td class="tdelim">{$lang_style_width}</td>
 	<td class="tdelim delim">&nbsp;</td>
-	<td class="tdelim">{#style_dlg.color}</td>
+	<td class="tdelim">{$lang_style_color}</td>
 </tr>
 
 <tr>
 	<td>&nbsp;</td>
 	<td class="delim">&nbsp;</td>
-	<td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td>
-	<td class="delim">&nbsp;</td>
-	<td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td>
-	<td class="delim">&nbsp;</td>
-	<td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td>
+	<td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{$lang_style_same}</label></td>
+	<td class="delim">&nbsp;</td>
+	<td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{$lang_style_same}</label></td>
+	<td class="delim">&nbsp;</td>
+	<td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{$lang_style_same}</label></td>
 </tr>
 
 <tr>
-	<td>{#style_dlg.top}</td>
+	<td>{$lang_style_top}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -433,7 +432,7 @@
 			<tr>
 				<td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
 				<td>&nbsp;</td>
-				<td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
+    <td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -449,7 +448,7 @@
 </tr>
 
 <tr>
-	<td>{#style_dlg.right}</td>
+	<td>{$lang_style_right}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -458,7 +457,7 @@
 			<tr>
 				<td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
 				<td>&nbsp;</td>
-				<td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
+    <td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -474,7 +473,7 @@
 </tr>
 
 <tr>
-	<td>{#style_dlg.bottom}</td>
+	<td>{$lang_style_bottom}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -483,7 +482,7 @@
 			<tr>
 				<td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
 				<td>&nbsp;</td>
-				<td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
+    <td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -499,7 +498,7 @@
 </tr>
 
 <tr>
-	<td>{#style_dlg.left}</td>
+	<td>{$lang_style_left}</td>
 	<td class="delim">&nbsp;</td>
 	<td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
 	<td class="delim">&nbsp;</td>
@@ -508,7 +507,7 @@
 			<tr>
 				<td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
 				<td>&nbsp;</td>
-				<td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
+    <td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td>
 			</tr>
 		</table>
 	</td>
@@ -528,17 +527,17 @@
 <div id="list_panel" class="panel">
 	<table border="0">
 		<tr>
-			<td><label for="list_type">{#style_dlg.list_type}</label></td>
+			<td><label for="list_type">{$lang_style_list_type}</label></td>
 			<td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
 		</tr>
 
 		<tr>
-			<td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td>
+			<td><label for="list_bullet_image">{$lang_style_bullet_image}</label></td>
 			<td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
 		</tr>
 
 		<tr>
-			<td><label for="list_position">{#style_dlg.position}</label></td>
+			<td><label for="list_position">{$lang_style_position}</label></td>
 			<td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
 		</tr>
 	</table>
@@ -547,96 +546,96 @@
 <div id="positioning_panel" class="panel">
 <table border="0">
 	<tr>
-		<td><label for="positioning_type">{#style_dlg.positioning_type}</label></td>
+		<td><label for="positioning_type">{$lang_style_positioning_type}</label></td>
 		<td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{#style_dlg.visibility}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{$lang_style_visibility}</label></td>
 		<td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
 	</tr>
 
 	<tr>
-		<td><label for="positioning_width">{#style_dlg.width}</label></td>
+		<td><label for="positioning_width">{$lang_style_width}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
 					<td>&nbsp;</td>
-					<td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
+     <td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{#style_dlg.zindex}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{$lang_style_zindex}</label></td>
 		<td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
 	</tr>
 
 	<tr>
-		<td><label for="positioning_height">{#style_dlg.height}</label></td>
+		<td><label for="positioning_height">{$lang_style_height}</label></td>
 		<td>
 			<table border="0" cellspacing="0" cellpadding="0">
 				<tr>
 					<td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
 					<td>&nbsp;</td>
-					<td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
+     <td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td>
 				</tr>
 			</table>
 		</td>
-		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{#style_dlg.overflow}</label></td>
+		<td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{$lang_style_overflow}</label></td>
 		<td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
 	</tr>
 </table>
 
 <div style="float: left; width: 49%">
 	<fieldset>
-		<legend>{#style_dlg.placement}</legend>
+		<legend>{$lang_style_placement}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.top}</td>
+				<td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td>{$lang_style_top}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.right}</td>
+       <td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_right}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.bottom}</td>
+       <td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_bottom}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.left}</td>
+       <td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_left}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
+       <td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -647,57 +646,57 @@
 
 <div style="float: right; width: 49%">
 	<fieldset>
-		<legend>{#style_dlg.clip}</legend>
+		<legend>{$lang_style_clip}</legend>
 
 		<table border="0">
 			<tr>
 				<td>&nbsp;</td>
-				<td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.top}</td>
+				<td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{$lang_style_same}</label></td>
+			</tr>
+			<tr>
+				<td>{$lang_style_top}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.right}</td>
+       <td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_right}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.bottom}</td>
+       <td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_bottom}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
-						</tr>
-					</table>
-				</td>
-			</tr>
-			<tr>
-				<td>{#style_dlg.left}</td>
+       <td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+			<tr>
+				<td>{$lang_style_left}</td>
 				<td>
 					<table border="0" cellspacing="0" cellpadding="0">
 						<tr>
 							<td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
 							<td>&nbsp;</td>
-							<td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
+       <td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td>
 						</tr>
 					</table>
 				</td>
@@ -711,14 +710,14 @@
 
 <div class="mceActionPanel">
 	<div style="float: left">
-		<div style="float: left"><input type="submit" id="insert" name="insert" value="{#update}" /></div>
-
-		<div style="float: left">&nbsp;<input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" /></div>
+		<div style="float: left"><input type="button" id="insert" name="insert" value="{$lang_update}" onClick="updateAction();" /></div>
+
+		<div style="float: left">&nbsp;<input type="button" id="apply" name="apply" value="{$lang_style_apply}" onClick="applyAction();" class="updateButton" /></div>
 		<br style="clear: both" />
 	</div>
 
 	<div style="float: right">
-		<input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" />
+		<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onClick="tinyMCEPopup.close();" />
 	</div>
 </div>
 </form>
@@ -726,7 +725,6 @@
 <div style="display: none">
 	<div id="container"></div>
 </div>
-
 </body>
 </html>
 

--- a/tinymce/2/jscripts/tiny_mce/plugins/style/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/style/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/cell.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/cell.htm
@@ -1,185 +1,183 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#table_dlg.cell_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/cell.js"></script>
-	<link href="css/cell.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="tablecell" style="display: none">
-	<form onsubmit="updateAction();return false;" action="#">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_table_cell_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/cell.js"></script>

+	<link href="css/cell.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="tablecell" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+	<form onsubmit="updateAction();return false;" action="#">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_table_general_props}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td><label for="align">{$lang_table_align}</label></td>

+							<td>

+								<select id="align" name="align">

+									<option value="">{$lang_not_set}</option>

+									<option value="center">{$lang_table_align_middle}</option>

+									<option value="left">{$lang_table_align_left}</option>

+									<option value="right">{$lang_table_align_right}</option>

+								</select>

+							</td>

+		

+							<td><label for="celltype">{$lang_table_cell_type}</label></td>

+							<td>

+								<select id="celltype" name="celltype">

+									<option value="td">{$lang_table_td}</option>

+									<option value="th">{$lang_table_th}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="valign">{$lang_table_valign}</label></td>

+							<td>

+								<select id="valign" name="valign">

+									<option value="">{$lang_not_set}</option>

+									<option value="top">{$lang_table_align_top}</option>

+									<option value="middle">{$lang_table_align_middle}</option>

+									<option value="bottom">{$lang_table_align_bottom}</option>

+								</select>

+							</td>

+

+							<td><label for="scope">{$lang_table_scope}</label></td>

+							<td>

+								<select id="scope" name="scope">

+									<option value="">{$lang_not_set}</option>

+									<option value="col">{$lang_table_col}</option>

+									<option value="row">{$lang_table_row}</option>

+									<option value="rowgroup">{$lang_table_rowgroup}</option>

+									<option value="colgroup">{$lang_table_colgroup}</option>

+								</select>

+							</td>

+

+						</tr>

+

+						<tr>

+							<td><label for="width">{$lang_table_width}</label></td>

+							<td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>

+

+							<td><label for="height">{$lang_table_height}</label></td>

+							<td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>

+						</tr>

+

+						<tr id="styleSelectRow">

+							<td><label for="class">{$lang_class_name}</label></td>

+							<td colspan="3">

+								<select id="class" name="class">

+									<option value="" selected="selected">{$lang_not_set}</option>

+								</select>

+							</td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_table_advanced_props}</legend>

+

+					<table border="0" cellpadding="0" cellspacing="4">

+						<tr>

+							<td class="column1"><label for="id">{$lang_table_id}</label></td> 

+							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 

+						</tr>

+

+						<tr>

+							<td><label for="style">{$lang_table_style}</label></td>

+							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 

+							<td>

+								<select id="dir" name="dir" style="width: 200px"> 

+										<option value="">{$lang_not_set}</option> 

+										<option value="ltr">{$lang_table_ltr}</option> 

+										<option value="rtl">{$lang_table_rtl}</option> 

+								</select>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 

+							<td>

+								<input id="lang" name="lang" type="text" value="" style="width: 200px" />

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>

+										<td id="backgroundimagebrowsercontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>

+										<td id="bordercolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>

+										<td id="bgcolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div>

+				<select id="action" name="action">

+					<option value="cell">{$lang_table_cell_cell}</option>

+					<option value="row">{$lang_table_cell_row}</option>

+					<option value="all">{$lang_table_cell_all}</option>

+				</select>

+			</div>

+

+			<div style="float: left">

+				<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-					<legend>{#table_dlg.general_props}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td><label for="align">{#table_dlg.align}</label></td>
-							<td>
-								<select id="align" name="align" class="mceFocus">
-									<option value="">{#not_set}</option>
-									<option value="center">{#table_dlg.align_middle}</option>
-									<option value="left">{#table_dlg.align_left}</option>
-									<option value="right">{#table_dlg.align_right}</option>
-								</select>
-							</td>
-		
-							<td><label for="celltype">{#table_dlg.cell_type}</label></td>
-							<td>
-								<select id="celltype" name="celltype">
-									<option value="td">{#table_dlg.td}</option>
-									<option value="th">{#table_dlg.th}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="valign">{#table_dlg.valign}</label></td>
-							<td>
-								<select id="valign" name="valign">
-									<option value="">{#not_set}</option>
-									<option value="top">{#table_dlg.align_top}</option>
-									<option value="middle">{#table_dlg.align_middle}</option>
-									<option value="bottom">{#table_dlg.align_bottom}</option>
-								</select>
-							</td>
-
-							<td><label for="scope">{#table_dlg.scope}</label></td>
-							<td>
-								<select id="scope" name="scope">
-									<option value="">{#not_set}</option>
-									<option value="col">{#table.col}</option>
-									<option value="row">{#table.row}</option>
-									<option value="rowgroup">{#table_dlg.rowgroup}</option>
-									<option value="colgroup">{#table_dlg.colgroup}</option>
-								</select>
-							</td>
-
-						</tr>
-
-						<tr>
-							<td><label for="width">{#table_dlg.width}</label></td>
-							<td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
-
-							<td><label for="height">{#table_dlg.height}</label></td>
-							<td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
-						</tr>
-
-						<tr id="styleSelectRow">
-							<td><label for="class">{#class_name}</label></td>
-							<td colspan="3">
-								<select id="class" name="class" class="mceEditableSelect">
-									<option value="" selected="selected">{#not_set}</option>
-								</select>
-							</td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-				<fieldset>
-					<legend>{#table_dlg.advanced_props}</legend>
-
-					<table border="0" cellpadding="0" cellspacing="4">
-						<tr>
-							<td class="column1"><label for="id">{#table_dlg.id}</label></td> 
-							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
-						</tr>
-
-						<tr>
-							<td><label for="style">{#table_dlg.style}</label></td>
-							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> 
-							<td>
-								<select id="dir" name="dir" style="width: 200px"> 
-										<option value="">{#not_set}</option> 
-										<option value="ltr">{#table_dlg.ltr}</option> 
-										<option value="rtl">{#table_dlg.rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> 
-							<td>
-								<input id="lang" name="lang" type="text" value="" style="width: 200px" />
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
-										<td id="backgroundimagebrowsercontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
-										<td id="bordercolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
-										<td id="bgcolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div>
-				<select id="action" name="action">
-					<option value="cell">{#table_dlg.cell_cell}</option>
-					<option value="row">{#table_dlg.cell_row}</option>
-					<option value="all">{#table_dlg.cell_all}</option>
-				</select>
-			</div>
-
-			<div style="float: left">
-				<div><input type="submit" id="insert" name="insert" value="{#update}" /></div>
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/css/cell.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/css/cell.css
@@ -1,17 +1,17 @@
-/* CSS file for cell dialog in the table plugin */
-
-.panel_wrapper div.current {
-	height: 200px;
+/* CSS file for cell dialog in the table plugin */

+

+.panel_wrapper div.current {

+	height: 200px;

+}

+

+.advfield {

+	width: 200px;

+}

+

+#action {

+	margin-bottom: 3px;

+}

+

+#class {

+	width: 150px;

 }
-
-.advfield {
-	width: 200px;
-}
-
-#action {
-	margin-bottom: 3px;
-}
-
-#class {
-	width: 150px;
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/css/row.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/css/row.css
@@ -1,26 +1,26 @@
-/* CSS file for row dialog in the table plugin */
+/* CSS file for row dialog in the table plugin */

+

+.panel_wrapper div.current {

+	height: 200px;

+}

+

+.advfield {

+	width: 200px;

+}

+

+#action {

+	margin-bottom: 3px;

+}

+

+#rowtype,#align,#valign,#class,#height {

+	width: 150px;

+}

+

+#height {

+	width: 50px;	

+}

+

+.col2 {

+	padding-left: 20px;

+}

 
-.panel_wrapper div.current {
-	height: 200px;
-}
-
-.advfield {
-	width: 200px;
-}
-
-#action {
-	margin-bottom: 3px;
-}
-
-#rowtype,#align,#valign,#class,#height {
-	width: 150px;
-}
-
-#height {
-	width: 50px;	
-}
-
-.col2 {
-	padding-left: 20px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/css/table.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/css/table.css
@@ -1,14 +1,14 @@
-/* CSS file for table dialog in the table plugin */
+/* CSS file for table dialog in the table plugin */

+

+.panel_wrapper div.current {

+	height: 220px;

+}

+

+.advfield {

+	width: 200px;

+}

+

+#class {

+	width: 150px;

+}

 
-.panel_wrapper div.current {
-	height: 245px;
-}
-
-.advfield {
-	width: 200px;
-}
-
-#class {
-	width: 150px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TablePlugin',{init:function(ed,url){var t=this;t.editor=ed;t.url=url;each([['table','table.desc','mceInsertTable',true],['delete_table','table.del','mceTableDelete'],['delete_col','table.delete_col_desc','mceTableDeleteCol'],['delete_row','table.delete_row_desc','mceTableDeleteRow'],['col_after','table.col_after_desc','mceTableInsertColAfter'],['col_before','table.col_before_desc','mceTableInsertColBefore'],['row_after','table.row_after_desc','mceTableInsertRowAfter'],['row_before','table.row_before_desc','mceTableInsertRowBefore'],['row_props','table.row_desc','mceTableRowProps',true],['cell_props','table.cell_desc','mceTableCellProps',true],['split_cells','table.split_cells_desc','mceTableSplitCells',true],['merge_cells','table.merge_cells_desc','mceTableMergeCells',true]],function(c){ed.addButton(c[0],{title:c[1],cmd:c[2],ui:c[3]});});ed.onInit.add(function(){if(ed&&ed.plugins.contextmenu){ed.plugins.contextmenu.onContextMenu.add(function(th,m,e){var sm,se=ed.selection,el=se.getNode()||ed.getBody();if(ed.dom.getParent(e,'td')||ed.dom.getParent(e,'th')){m.removeAll();if(el.nodeName=='A'&&!ed.dom.getAttrib(el,'name')){m.add({title:'advanced.link_desc',icon:'link',cmd:ed.plugins.advlink?'mceAdvLink':'mceLink',ui:true});m.add({title:'advanced.unlink_desc',icon:'unlink',cmd:'UnLink'});m.addSeparator();}if(el.nodeName=='IMG'&&el.className.indexOf('mceItem')==-1){m.add({title:'advanced.image_desc',icon:'image',cmd:ed.plugins.advimage?'mceAdvImage':'mceImage',ui:true});m.addSeparator();}m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true,value:{action:'insert'}});m.add({title:'table.props_desc',icon:'table_props',cmd:'mceInsertTable',ui:true});m.add({title:'table.del',icon:'delete_table',cmd:'mceTableDelete',ui:true});m.addSeparator();sm=m.addMenu({title:'table.cell'});sm.add({title:'table.cell_desc',icon:'cell_props',cmd:'mceTableCellProps',ui:true});sm.add({title:'table.split_cells_desc',icon:'split_cells',cmd:'mceTableSplitCells',ui:true});sm.add({title:'table.merge_cells_desc',icon:'merge_cells',cmd:'mceTableMergeCells',ui:true});sm=m.addMenu({title:'table.row'});sm.add({title:'table.row_desc',icon:'row_props',cmd:'mceTableRowProps',ui:true});sm.add({title:'table.row_before_desc',icon:'row_before',cmd:'mceTableInsertRowBefore'});sm.add({title:'table.row_after_desc',icon:'row_after',cmd:'mceTableInsertRowAfter'});sm.add({title:'table.delete_row_desc',icon:'delete_row',cmd:'mceTableDeleteRow'});sm.addSeparator();sm.add({title:'table.cut_row_desc',icon:'cut',cmd:'mceTableCutRow'});sm.add({title:'table.copy_row_desc',icon:'copy',cmd:'mceTableCopyRow'});sm.add({title:'table.paste_row_before_desc',icon:'paste',cmd:'mceTablePasteRowBefore'});sm.add({title:'table.paste_row_after_desc',icon:'paste',cmd:'mceTablePasteRowAfter'});sm=m.addMenu({title:'table.col'});sm.add({title:'table.col_before_desc',icon:'col_before',cmd:'mceTableInsertColBefore'});sm.add({title:'table.col_after_desc',icon:'col_after',cmd:'mceTableInsertColAfter'});sm.add({title:'table.delete_col_desc',icon:'delete_col',cmd:'mceTableDeleteCol'});}else m.add({title:'table.desc',icon:'table',cmd:'mceInsertTable',ui:true});});}});ed.onKeyDown.add(function(ed,e){if(e.keyCode==9&&ed.dom.getParent(ed.selection.getNode(),'TABLE')){if(!tinymce.isGecko&&!tinymce.isOpera){tinyMCE.execInstanceCommand(ed.editorId,"mceTableMoveToNextRow",true);return tinymce.dom.Event.cancel(e);}ed.undoManager.add();}});if(!tinymce.isIE){if(ed.getParam('table_selection',true)){ed.onClick.add(function(ed,e){e=e.target;if(e.nodeName==='TABLE')ed.selection.select(e);});}}ed.onNodeChange.add(function(ed,cm,n){var p=ed.dom.getParent(n,'td,th,caption');cm.setActive('table',n.nodeName==='TABLE'||!!p);if(p&&p.nodeName==='CAPTION')p=null;cm.setDisabled('delete_table',!p);cm.setDisabled('delete_col',!p);cm.setDisabled('delete_table',!p);cm.setDisabled('delete_row',!p);cm.setDisabled('col_after',!p);cm.setDisabled('col_before',!p);cm.setDisabled('row_after',!p);cm.setDisabled('row_before',!p);cm.setDisabled('row_props',!p);cm.setDisabled('cell_props',!p);cm.setDisabled('split_cells',!p||(parseInt(ed.dom.getAttrib(p,'colspan','1'))<2&&parseInt(ed.dom.getAttrib(p,'rowspan','1'))<2));cm.setDisabled('merge_cells',!p);});if(!tinymce.isIE){ed.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g,tinymce.isOpera?'<$1$2>&nbsp;</$1>':'<$1$2><br mce_bogus="1" /></$1>');});}},execCommand:function(cmd,ui,val){var ed=this.editor,b;switch(cmd){case"mceTableMoveToNextRow":case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":ed.execCommand('mceBeginUndoLevel');this._doExecCommand(cmd,ui,val);ed.execCommand('mceEndUndoLevel');return true;}return false;},getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_doExecCommand:function(command,user_interface,value){var inst=this.editor,ed=inst,url=this.url;var focusElm=inst.selection.getNode();var trElm=inst.dom.getParent(focusElm,"tr");var tdElm=inst.dom.getParent(focusElm,"td,th");var tableElm=inst.dom.getParent(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function select(dx,dy){var td;grid=getTableGrid(tableElm);dx=dx||0;dy=dy||0;dx=Math.max(cpos.cellindex+dx,0);dy=Math.max(cpos.rowindex+dy,0);inst.execCommand('mceRepaint');td=getCell(grid,dy,dx);if(td){inst.selection.select(td.firstChild||td);inst.selection.collapse(1);}};function makeTD(){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';}function getColRowSpan(td){var colspan=inst.dom.getAttrib(td,"colspan");var rowspan=inst.dom.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getNextCell(table,cell){var cells=[],x=0,i,j,cell,nextCell;for(i=0;i<table.rows.length;i++)for(j=0;j<table.rows[i].cells.length;j++,x++)cells[x]=table.rows[i].cells[j];for(i=0;i<cells.length;i++)if(cells[i]==cell)if(nextCell=cells[i+1])return nextCell;}function getTableGrid(table){var grid=[],rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=[];for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td;}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node;}}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';if(tinymce.isIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=inst.dom.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableMoveToNextRow":var nextCell=getNextCell(tableElm,tdElm);if(!nextCell){inst.execCommand("mceTableInsertRowAfter",tdElm);nextCell=getNextCell(tableElm,tdElm);}inst.selection.select(nextCell);inst.selection.collapse(true);return true;case"mceTableRowProps":if(trElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/row.htm',width:400+parseInt(inst.getLang('table.rowprops_delta_width',0)),height:295+parseInt(inst.getLang('table.rowprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){inst.windowManager.open({url:url+'/cell.htm',width:400+parseInt(inst.getLang('table.cellprops_delta_width',0)),height:295+parseInt(inst.getLang('table.cellprops_delta_height',0)),inline:1},{plugin_url:url});}return true;case"mceInsertTable":if(user_interface){inst.windowManager.open({url:url+'/table.htm',width:400+parseInt(inst.getLang('table.table_delta_width',0)),height:320+parseInt(inst.getLang('table.table_delta_height',0)),inline:1},{plugin_url:url,action:value?value.action:0});}return true;case"mceTableDelete":var table=inst.dom.getParent(inst.selection.getNode(),"table");if(table){table.parentNode.removeChild(table);inst.execCommand('mceRepaint');}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);select(0,1);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}select(0,1);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1&&tableElm.nodeName=='TBODY'){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);select(0,-1);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}select();break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}select(1);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if((grid.length>1&&grid[0].length<=1)&&tableElm.nodeName=='TBODY'){inst.dom.remove(inst.dom.getParent(tableElm,"table"));return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}select(-1);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");if(!tinymce.isIE)newTD.innerHTML='<br mce_bogus="1"/>';trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");break;case"mceTableMergeCells":var rows=[];var sel=inst.selection.getSel();var grid=getTableGrid(tableElm);if(tinymce.isIE||sel.rangeCount==1){if(user_interface){var sp=getColRowSpan(tdElm);inst.windowManager.open({url:url+'/merge_cells.htm',width:240+parseInt(inst.getLang('table.merge_cells_delta_width',0)),height:110+parseInt(inst.getLang('table.merge_cells_delta_height',0)),inline:1},{action:"update",numcols:sp.colspan,numrows:sp.rowspan,plugin_url:url});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=[];for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;var td=getCell(grid,cpos.rowindex,cpos.cellindex);each(ed.dom.select('br',td),function(e,i){if(i>0&&ed.dom.getAttrib('mce_bogus'))ed.dom.remove(e);});}}}else{var cells=[];var sel=inst.selection.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD"||tdElm.nodeName=="TH")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=[];for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=[];var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=html.replace(/[ \t\r\n]/g,"");if(chk!="<br/>"&&chk!="<br>"&&chk!='<br mce_bogus="1"/>'&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}each(ed.dom.select('br',tdElm),function(e,i){if(i>0&&ed.dom.getAttrib(e,'mce_bogus'))ed.dom.remove(e);});break;}tableElm=inst.dom.getParent(inst.selection.getNode(),"table");inst.addVisual(tableElm);inst.nodeChanged();}return true;}return false;}});tinymce.PluginManager.add('table',tinymce.plugins.TablePlugin);})();
+tinyMCE.importPluginLanguagePack('table');var TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_TablePlugin._mouseDownHandler)}inst.tableRowClipboard=null},getControlHTML:function(control_name){var controls=new Array(['table','table.gif','lang_table_desc','mceInsertTable',true],['delete_table','table_delete.gif','lang_table_del','mceTableDelete'],['delete_col','table_delete_col.gif','lang_table_delete_col_desc','mceTableDeleteCol'],['delete_row','table_delete_row.gif','lang_table_delete_row_desc','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','lang_table_col_after_desc','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','lang_table_col_before_desc','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','lang_table_row_after_desc','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','lang_table_row_before_desc','mceTableInsertRowBefore'],['row_props','table_row_props.gif','lang_table_row_desc','mceTableRowProps',true],['cell_props','table_cell_props.gif','lang_table_cell_desc','mceTableCellProps',true],['split_cells','table_split_cells.gif','lang_table_split_cells_desc','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','lang_table_merge_cells_desc','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name)return tinyMCE.getButtonHTML(control_name,but[2],'{$pluginurl}/images/'+but[1],but[3],(but.length>4?but[4]:false))}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_TablePlugin._doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1",tdElm;var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClass(editor_id+'_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_cell_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_split_cells','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonDisabled');if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClass(editor_id+'_cell_props','mceButtonSelected');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonNormal');colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClass(editor_id+'_split_cells','mceButtonNormal')}if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClass(editor_id+'_row_props','mceButtonSelected');if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClass(editor_id+'_table','mceButtonSelected');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonNormal')}},_mouseDownHandler:function(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance)},10)}},_doExecCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true}return false}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan}}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y}}}return null}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null}function getTableGrid(table){var grid=new Array(),rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td}}}return grid}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td}deleteMarked(tableElm)}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node}return null}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node}}return null}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td)}while((td=nexttd)!=null)}}while((tr=next)!=null)}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR")}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;"}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm}return newTR}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceInsertTable":if(user_interface){var template=new Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value})}return true;case"mceTableDelete":var table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint()}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}trElm.parentNode.insertBefore(newTR,trElm);grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex+1,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR)}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD)}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true}lastTDElm=tdElm}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex+1),tinyMCE.isGecko,true);break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm)}lastTDElm=tdElm}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan)}addRows(tdElm,trElm,rowspan)}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td}}if(rowCells.length>0)rows[rows.length]=rowCells}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td}}}if(rowCells.length>0)rows[rows.length]=rowCells}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y}x2=x;y2=y;grid[y][x]._selected=true}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true}lastRowSpan=sd['rowspan']}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true}lastColSpan=sd['colspan']}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.rowSpan--}}}}break}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint()}return true}return false}};tinyMCE.addPlugin("table",TinyMCE_TablePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
@@ -1,1115 +1,1074 @@
-/**
- * $Id: editor_plugin_src.js 853 2008-05-27 08:05:35Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('table');

+

+var TinyMCE_TablePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Tables',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		if (tinyMCE.isGecko) {

+			var doc = inst.getDoc();

+			tinyMCE.addEvent(doc, "mouseup", TinyMCE_TablePlugin._mouseDownHandler);

+		}

+

+		inst.tableRowClipboard = null;

+	},

+

+	/**

+	 * Returns the HTML contents of the table control.

+	 */

+	getControlHTML : function(control_name) {

+		var controls = new Array(

+			['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true],

+			['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'],

+			['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'],

+			['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'],

+			['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'],

+			['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'],

+			['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'],

+			['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'],

+			['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true],

+			['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true],

+			['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true],

+			['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]);

+

+		// Render table control

+		for (var i=0; i<controls.length; i++) {

+			var but = controls[i];

+			var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] + '\', ' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;';

+

+			if (but[0] == control_name)

+				return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false));

+		}

+

+		// Special tablecontrols

+		if (control_name == "tablecontrols") {

+			var html = "";

+

+			html += tinyMCE.getControlHTML("table");

+			html += tinyMCE.getControlHTML("separator");

+			html += tinyMCE.getControlHTML("row_props");

+			html += tinyMCE.getControlHTML("cell_props");

+			html += tinyMCE.getControlHTML("separator");

+			html += tinyMCE.getControlHTML("row_before");

+			html += tinyMCE.getControlHTML("row_after");

+			html += tinyMCE.getControlHTML("delete_row");

+			html += tinyMCE.getControlHTML("separator");

+			html += tinyMCE.getControlHTML("col_before");

+			html += tinyMCE.getControlHTML("col_after");

+			html += tinyMCE.getControlHTML("delete_col");

+			html += tinyMCE.getControlHTML("separator");

+			html += tinyMCE.getControlHTML("split_cells");

+			html += tinyMCE.getControlHTML("merge_cells");

+

+			return html;

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes the table commands.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Is table command

+		switch (command) {

+			case "mceInsertTable":

+			case "mceTableRowProps":

+			case "mceTableCellProps":

+			case "mceTableSplitCells":

+			case "mceTableMergeCells":

+			case "mceTableInsertRowBefore":

+			case "mceTableInsertRowAfter":

+			case "mceTableDeleteRow":

+			case "mceTableInsertColBefore":

+			case "mceTableInsertColAfter":

+			case "mceTableDeleteCol":

+			case "mceTableCutRow":

+			case "mceTableCopyRow":

+			case "mceTablePasteRowBefore":

+			case "mceTablePasteRowAfter":

+			case "mceTableDelete":

+				var inst = tinyMCE.getInstanceById(editor_id);

+

+				inst.execCommand('mceBeginUndoLevel');

+				TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value);

+				inst.execCommand('mceEndUndoLevel');

+

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		var colspan = "1", rowspan = "1", tdElm;

+

+		var inst = tinyMCE.getInstanceById(editor_id);

+

+		// Reset table controls

+		tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled');

+

+		// Within a td element

+		if (tdElm = tinyMCE.getParentElement(node, "td,th")) {

+			tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected');

+			tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal');

+

+			colspan = tinyMCE.getAttrib(tdElm, "colspan");

+			rowspan = tinyMCE.getAttrib(tdElm, "rowspan");

+

+			colspan = colspan == "" ? "1" : colspan;

+			rowspan = rowspan == "" ? "1" : rowspan;

+

+			if (colspan != "1" || rowspan != "1")

+				tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal');

+		}

+

+		// Within a tr element

+		if (tinyMCE.getParentElement(node, "tr"))

+			tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected');

+

+		// Within table

+		if (tinyMCE.getParentElement(node, "table")) {

+			tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected');

+			tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal');

+		}

+	},

+

+	// Private plugin internal methods

+

+	_mouseDownHandler : function(e) {

+		var elm = tinyMCE.isMSIE ? event.srcElement : e.target;

+		var focusElm = tinyMCE.selectedInstance.getFocusElement();

+

+		// If press on special Mozilla create TD/TR thingie

+		if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) {

+			window.setTimeout(function() {

+				var tableElm = tinyMCE.getParentElement(focusElm, "table");

+				tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);

+			}, 10);

+		}

+	},

+

+	/**

+	 * Executes the table commands.

+	 */

+	_doExecCommand : function(editor_id, element, command, user_interface, value) {

+		var inst = tinyMCE.getInstanceById(editor_id);

+		var focusElm = inst.getFocusElement();

+		var trElm = tinyMCE.getParentElement(focusElm, "tr");

+		var tdElm = tinyMCE.getParentElement(focusElm, "td,th");

+		var tableElm = tinyMCE.getParentElement(focusElm, "table");

+		var doc = inst.contentWindow.document;

+		var tableBorder = tableElm ? tableElm.getAttribute("border") : "";

+

+		// Get first TD if no TD found

+		if (trElm && tdElm == null)

+			tdElm = trElm.cells[0];

+

+		// ------- Inner functions ---------

+		function inArray(ar, v) {

+			for (var i=0; i<ar.length; i++) {

+				// Is array

+				if (ar[i].length > 0 && inArray(ar[i], v))

+					return true;

+

+				// Found value

+				if (ar[i] == v)

+					return true;

+			}

+

+			return false;

+		}

+

+		function makeTD() {

+			var newTD = doc.createElement("td");

+			newTD.innerHTML = "&nbsp;";

+		}

+

+		function getColRowSpan(td) {

+			var colspan = tinyMCE.getAttrib(td, "colspan");

+			var rowspan = tinyMCE.getAttrib(td, "rowspan");

+

+			colspan = colspan == "" ? 1 : parseInt(colspan);

+			rowspan = rowspan == "" ? 1 : parseInt(rowspan);

+

+			return {colspan : colspan, rowspan : rowspan};

+		}

+

+		function getCellPos(grid, td) {

+			var x, y;

+

+			for (y=0; y<grid.length; y++) {

+				for (x=0; x<grid[y].length; x++) {

+					if (grid[y][x] == td)

+						return {cellindex : x, rowindex : y};

+				}

+			}

+

+			return null;

+		}

+

+		function getCell(grid, row, col) {

+			if (grid[row] && grid[row][col])

+				return grid[row][col];

+

+			return null;

+		}

+

+		function getTableGrid(table) {

+			var grid = new Array(), rows = table.rows, x, y, td, sd, xstart, x2, y2;

+

+			for (y=0; y<rows.length; y++) {

+				for (x=0; x<rows[y].cells.length; x++) {

+					td = rows[y].cells[x];

+					sd = getColRowSpan(td);

+

+					// All ready filled

+					for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;

+

+					// Fill box

+					for (y2=y; y2<y+sd['rowspan']; y2++) {

+						if (!grid[y2])

+							grid[y2] = new Array();

+

+						for (x2=xstart; x2<xstart+sd['colspan']; x2++)

+							grid[y2][x2] = td;

+					}

+				}

+			}

+

+			return grid;

+		}

+

+		function trimRow(table, tr, td, new_tr) {

+			var grid = getTableGrid(table), cpos = getCellPos(grid, td);

+			var cells, lastElm;

+

+			// Time to crop away some

+			if (new_tr.cells.length != tr.childNodes.length) {

+				cells = tr.childNodes;

+				lastElm = null;

+

+				for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {

+					var remove = true;

+					var sd = getColRowSpan(td);

+

+					// Remove due to rowspan

+					if (inArray(cells, td)) {

+						new_tr.childNodes[x]._delete = true;

+					} else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan

+						for (var i=x; i<x+td.colSpan; i++)

+							new_tr.childNodes[i]._delete = true;

+					}

+

+					if ((lastElm == null || td != lastElm) && sd.rowspan > 1)

+						td.rowSpan = sd.rowspan + 1;

+

+					lastElm = td;

+				}

+

+				deleteMarked(tableElm);

+			}

+		}

+

+		function prevElm(node, name) {

+			while ((node = node.previousSibling) != null) {

+				if (node.nodeName == name)

+					return node;

+			}

+

+			return null;

+		}

+

+		function nextElm(node, names) {

+			var namesAr = names.split(',');

+

+			while ((node = node.nextSibling) != null) {

+				for (var i=0; i<namesAr.length; i++) {

+					if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )

+						return node;

+				}

+			}

+

+			return null;

+		}

+

+		function deleteMarked(tbl) {

+			if (tbl.rows == 0)

+				return;

+

+			var tr = tbl.rows[0];

+			do {

+				var next = nextElm(tr, "TR");

+

+				// Delete row

+				if (tr._delete) {

+					tr.parentNode.removeChild(tr);

+					continue;

+				}

+

+				// Delete cells

+				var td = tr.cells[0];

+				if (td.cells > 1) {

+					do {

+						var nexttd = nextElm(td, "TD,TH");

+

+						if (td._delete)

+							td.parentNode.removeChild(td);

+					} while ((td = nexttd) != null);

+				}

+			} while ((tr = next) != null);

+		}

+

+		function addRows(td_elm, tr_elm, rowspan) {

+			// Add rows

+			td_elm.rowSpan = 1;

+			var trNext = nextElm(tr_elm, "TR");

+			for (var i=1; i<rowspan && trNext; i++) {

+				var newTD = doc.createElement("td");

+				newTD.innerHTML = "&nbsp;";

+

+				if (tinyMCE.isMSIE)

+					trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));

+				else

+					trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);

+

+				trNext = nextElm(trNext, "TR");

+			}

+		}

+

+		function copyRow(doc, table, tr) {

+			var grid = getTableGrid(table);

+			var newTR = tr.cloneNode(false);

+			var cpos = getCellPos(grid, tr.cells[0]);

+			var lastCell = null;

+			var tableBorder = tinyMCE.getAttrib(table, "border");

+			var tdElm = null;

+

+			for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {

+				var newTD = null;

+

+				if (lastCell != tdElm) {

+					for (var i=0; i<tr.cells.length; i++) {

+						if (tdElm == tr.cells[i]) {

+							newTD = tdElm.cloneNode(true);

+							break;

+						}

+					}

+				}

+

+				if (newTD == null) {

+					newTD = doc.createElement("td");

+					newTD.innerHTML = "&nbsp;";

+				}

+

+				// Reset col/row span

+				newTD.colSpan = 1;

+				newTD.rowSpan = 1;

+

+				newTR.appendChild(newTD);

+

+				lastCell = tdElm;

+			}

+

+			return newTR;

+		}

+

+		// ---- Commands -----

+

+		// Handle commands

+		switch (command) {

+			case "mceTableRowProps":

+				if (trElm == null)

+					return true;

+

+				if (user_interface) {

+					// Setup template

+					var template = new Array();

+

+					template['file'] = '../../plugins/table/row.htm';

+					template['width'] = 380;

+					template['height'] = 295;

+

+					// Language specific width and height addons

+					template['width'] += tinyMCE.getLang('lang_table_rowprops_delta_width', 0);

+					template['height'] += tinyMCE.getLang('lang_table_rowprops_delta_height', 0);

+

+					// Open window

+					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});

+				}

+

+				return true;

+

+			case "mceTableCellProps":

+				if (tdElm == null)

+					return true;

+

+				if (user_interface) {

+					// Setup template

+					var template = new Array();

+

+					template['file'] = '../../plugins/table/cell.htm';

+					template['width'] = 380;

+					template['height'] = 295;

+

+					// Language specific width and height addons

+					template['width'] += tinyMCE.getLang('lang_table_cellprops_delta_width', 0);

+					template['height'] += tinyMCE.getLang('lang_table_cellprops_delta_height', 0);

+

+					// Open window

+					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes"});

+				}

+

+				return true;

+

+			case "mceInsertTable":

+				if (user_interface) {

+					// Setup template

+					var template = new Array();

+

+					template['file'] = '../../plugins/table/table.htm';

+					template['width'] = 380;

+					template['height'] = 295;

+

+					// Language specific width and height addons

+					template['width'] += tinyMCE.getLang('lang_table_table_delta_width', 0);

+					template['height'] += tinyMCE.getLang('lang_table_table_delta_height', 0);

+

+					// Open window

+					tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : value});

+				}

+

+				return true;

+

+			case "mceTableDelete":

+				var table = tinyMCE.getParentElement(inst.getFocusElement(), "table");

+				if (table) {

+					table.parentNode.removeChild(table);

+					inst.repaint();

+				}

+				return true;

+

+			case "mceTableSplitCells":

+			case "mceTableMergeCells":

+			case "mceTableInsertRowBefore":

+			case "mceTableInsertRowAfter":

+			case "mceTableDeleteRow":

+			case "mceTableInsertColBefore":

+			case "mceTableInsertColAfter":

+			case "mceTableDeleteCol":

+			case "mceTableCutRow":

+			case "mceTableCopyRow":

+			case "mceTablePasteRowBefore":

+			case "mceTablePasteRowAfter":

+				// No table just return (invalid command)

+				if (!tableElm)

+					return true;

+

+				// Table has a tbody use that reference

+				// Changed logic by ApTest 2005.07.12 (www.aptest.com)

+				// Now lookk at the focused element and take its parentNode.  That will be a tbody or a table.

+				if (trElm && tableElm != trElm.parentNode)

+					tableElm = trElm.parentNode;

+

+				if (tableElm && trElm) {

+					switch (command) {

+						case "mceTableCutRow":

+							if (!trElm || !tdElm)

+								return true;

+

+							inst.tableRowClipboard = copyRow(doc, tableElm, trElm);

+							inst.execCommand("mceTableDeleteRow");

+							break;

+

+						case "mceTableCopyRow":

+							if (!trElm || !tdElm)

+								return true;

+

+							inst.tableRowClipboard = copyRow(doc, tableElm, trElm);

+							break;

+

+						case "mceTablePasteRowBefore":

+							if (!trElm || !tdElm)

+								return true;

+

+							var newTR = inst.tableRowClipboard.cloneNode(true);

+

+							var prevTR = prevElm(trElm, "TR");

+							if (prevTR != null)

+								trimRow(tableElm, prevTR, prevTR.cells[0], newTR);

+

+							trElm.parentNode.insertBefore(newTR, trElm);

+							break;

+

+						case "mceTablePasteRowAfter":

+							if (!trElm || !tdElm)

+								return true;

+							

+							var nextTR = nextElm(trElm, "TR");

+							var newTR = inst.tableRowClipboard.cloneNode(true);

+

+							trimRow(tableElm, trElm, tdElm, newTR);

+

+							if (nextTR == null)

+								trElm.parentNode.appendChild(newTR);

+							else

+								nextTR.parentNode.insertBefore(newTR, nextTR);

+

+							break;

+

+						case "mceTableInsertRowBefore":

+							if (!trElm || !tdElm)

+								return true;

+

+							var grid = getTableGrid(tableElm);

+							var cpos = getCellPos(grid, tdElm);

+							var newTR = doc.createElement("tr");

+							var lastTDElm = null;

+

+							cpos.rowindex--;

+							if (cpos.rowindex < 0)

+								cpos.rowindex = 0;

+

+							// Create cells

+							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {

+								if (tdElm != lastTDElm) {

+									var sd = getColRowSpan(tdElm);

+

+									if (sd['rowspan'] == 1) {

+										var newTD = doc.createElement("td");

+

+										newTD.innerHTML = "&nbsp;";

+										newTD.colSpan = tdElm.colSpan;

+

+										newTR.appendChild(newTD);

+									} else

+										tdElm.rowSpan = sd['rowspan'] + 1;

+

+									lastTDElm = tdElm;

+								}

+							}

+

+							trElm.parentNode.insertBefore(newTR, trElm);

+

+							grid = getTableGrid(tableElm);

+							inst.selection.selectNode(getCell(grid, cpos.rowindex + 1, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko

+						break;

+

+						case "mceTableInsertRowAfter":

+							if (!trElm || !tdElm)

+								return true;

+

+							var grid = getTableGrid(tableElm);

+							var cpos = getCellPos(grid, tdElm);

+							var newTR = doc.createElement("tr");

+							var lastTDElm = null;

+

+							// Create cells

+							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {

+								if (tdElm != lastTDElm) {

+									var sd = getColRowSpan(tdElm);

+

+									if (sd['rowspan'] == 1) {

+										var newTD = doc.createElement("td");

+

+										newTD.innerHTML = "&nbsp;";

+										newTD.colSpan = tdElm.colSpan;

+

+										newTR.appendChild(newTD);

+									} else

+										tdElm.rowSpan = sd['rowspan'] + 1;

+

+									lastTDElm = tdElm;

+								}

+							}

+

+							if (newTR.hasChildNodes()) {

+								var nextTR = nextElm(trElm, "TR");

+								if (nextTR)

+									nextTR.parentNode.insertBefore(newTR, nextTR);

+								else

+									tableElm.appendChild(newTR);

+							}

+

+							grid = getTableGrid(tableElm);

+							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko

+						break;

+

+						case "mceTableDeleteRow":

+							if (!trElm || !tdElm)

+								return true;

+

+							var grid = getTableGrid(tableElm);

+							var cpos = getCellPos(grid, tdElm);

+

+							// Only one row, remove whole table

+							if (grid.length == 1) {

+								tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody

+								tableElm.parentNode.removeChild(tableElm);

+								return true;

+							}

+

+							// Move down row spanned cells

+							var cells = trElm.cells;

+							var nextTR = nextElm(trElm, "TR");

+							for (var x=0; x<cells.length; x++) {

+								if (cells[x].rowSpan > 1) {

+									var newTD = cells[x].cloneNode(true);

+									var sd = getColRowSpan(cells[x]);

+

+									newTD.rowSpan = sd.rowspan - 1;

+

+									var nextTD = nextTR.cells[x];

+

+									if (nextTD == null)

+										nextTR.appendChild(newTD);

+									else

+										nextTR.insertBefore(newTD, nextTD);

+								}

+							}

+

+							// Delete cells

+							var lastTDElm = null;

+							for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {

+								if (tdElm != lastTDElm) {

+									var sd = getColRowSpan(tdElm);

+

+									if (sd.rowspan > 1) {

+										tdElm.rowSpan = sd.rowspan - 1;

+									} else {

+										trElm = tdElm.parentNode;

+

+										if (trElm.parentNode)

+											trElm._delete = true;

+									}

+

+									lastTDElm = tdElm;

+								}

+							}

+

+							deleteMarked(tableElm);

+

+							cpos.rowindex--;

+							if (cpos.rowindex < 0)

+								cpos.rowindex = 0;

+

+							// Recalculate grid and select

+							grid = getTableGrid(tableElm);

+							inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko

+						break;

+

+						case "mceTableInsertColBefore":

+							if (!trElm || !tdElm)

+								return true;

+

+							var grid = getTableGrid(tableElm);

+							var cpos = getCellPos(grid, tdElm);

+							var lastTDElm = null;

+

+							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {

+								if (tdElm != lastTDElm) {

+									var sd = getColRowSpan(tdElm);

+

+									if (sd['colspan'] == 1) {

+										var newTD = doc.createElement(tdElm.nodeName);

+

+										newTD.innerHTML = "&nbsp;";

+										newTD.rowSpan = tdElm.rowSpan;

+

+										tdElm.parentNode.insertBefore(newTD, tdElm);

+									} else

+										tdElm.colSpan++;

+

+									lastTDElm = tdElm;

+								}

+							}

+

+							grid = getTableGrid(tableElm);

+							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko

+						break;

+

+						case "mceTableInsertColAfter":

+							if (!trElm || !tdElm)

+								return true;

+

+							var grid = getTableGrid(tableElm);

+							var cpos = getCellPos(grid, tdElm);

+							var lastTDElm = null;

+

+							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {

+								if (tdElm != lastTDElm) {

+									var sd = getColRowSpan(tdElm);

+

+									if (sd['colspan'] == 1) {

+										var newTD = doc.createElement(tdElm.nodeName);

+

+										newTD.innerHTML = "&nbsp;";

+										newTD.rowSpan = tdElm.rowSpan;

+

+										var nextTD = nextElm(tdElm, "TD,TH");

+										if (nextTD == null)

+											tdElm.parentNode.appendChild(newTD);

+										else

+											nextTD.parentNode.insertBefore(newTD, nextTD);

+									} else

+										tdElm.colSpan++;

+

+									lastTDElm = tdElm;

+								}

+							}

+

+							grid = getTableGrid(tableElm);

+							inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko

+						break;

+

+						case "mceTableDeleteCol":

+							if (!trElm || !tdElm)

+								return true;

+

+							var grid = getTableGrid(tableElm);

+							var cpos = getCellPos(grid, tdElm);

+							var lastTDElm = null;

+

+							// Only one col, remove whole table

+							if (grid.length > 1 && grid[0].length <= 1) {

+								tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody

+								tableElm.parentNode.removeChild(tableElm);

+								return true;

+							}

+

+							// Delete cells

+							for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {

+								if (tdElm != lastTDElm) {

+									var sd = getColRowSpan(tdElm);

+

+									if (sd['colspan'] > 1)

+										tdElm.colSpan = sd['colspan'] - 1;

+									else {

+										if (tdElm.parentNode)

+											tdElm.parentNode.removeChild(tdElm);

+									}

+

+									lastTDElm = tdElm;

+								}

+							}

+

+							cpos.cellindex--;

+							if (cpos.cellindex < 0)

+								cpos.cellindex = 0;

+

+							// Recalculate grid and select

+							grid = getTableGrid(tableElm);

+							inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko

+						break;

+

+					case "mceTableSplitCells":

+						if (!trElm || !tdElm)

+							return true;

+

+						var spandata = getColRowSpan(tdElm);

+

+						var colspan = spandata["colspan"];

+						var rowspan = spandata["rowspan"];

+

+						// Needs splitting

+						if (colspan > 1 || rowspan > 1) {

+							// Generate cols

+							tdElm.colSpan = 1;

+							for (var i=1; i<colspan; i++) {

+								var newTD = doc.createElement("td");

+

+								newTD.innerHTML = "&nbsp;";

+

+								trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));

+

+								if (rowspan > 1)

+									addRows(newTD, trElm, rowspan);

+							}

+

+							addRows(tdElm, trElm, rowspan);

+						}

+

+						// Apply visual aids

+						tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");

+						break;

+

+					case "mceTableMergeCells":

+						var rows = new Array();

+						var sel = inst.getSel();

+						var grid = getTableGrid(tableElm);

+

+						if (tinyMCE.isMSIE || sel.rangeCount == 1) {

+							if (user_interface) {

+								// Setup template

+								var template = new Array();

+								var sp = getColRowSpan(tdElm);

+

+								template['file'] = '../../plugins/table/merge_cells.htm';

+								template['width'] = 250;

+								template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0);

+

+								// Language specific width and height addons

+								template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0);

+								template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0);

+

+								// Open window

+								tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan});

+

+								return true;

+							} else {

+								var numRows = parseInt(value['numrows']);

+								var numCols = parseInt(value['numcols']);

+								var cpos = getCellPos(grid, tdElm);

+

+								if (("" + numRows) == "NaN")

+									numRows = 1;

+

+								if (("" + numCols) == "NaN")

+									numCols = 1;

+

+								// Get rows and cells

+								var tRows = tableElm.rows;

+								for (var y=cpos.rowindex; y<grid.length; y++) {

+									var rowCells = new Array();

+

+									for (var x=cpos.cellindex; x<grid[y].length; x++) {

+										var td = getCell(grid, y, x);

+

+										if (td && !inArray(rows, td) && !inArray(rowCells, td)) {

+											var cp = getCellPos(grid, td);

+

+											// Within range

+											if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)

+												rowCells[rowCells.length] = td;

+										}

+									}

+

+									if (rowCells.length > 0)

+										rows[rows.length] = rowCells;

+								}

+

+								//return true;

+							}

+						} else {

+							var cells = new Array();

+							var sel = inst.getSel();

+							var lastTR = null;

+							var curRow = null;

+							var x1 = -1, y1 = -1, x2, y2;

+

+							// Only one cell selected, whats the point?

+							if (sel.rangeCount < 2)

+								return true;

+

+							// Get all selected cells

+							for (var i=0; i<sel.rangeCount; i++) {

+								var rng = sel.getRangeAt(i);

+								var tdElm = rng.startContainer.childNodes[rng.startOffset];

+

+								if (!tdElm)

+									break;

+

+								if (tdElm.nodeName == "TD")

+									cells[cells.length] = tdElm;

+							}

+

+							// Get rows and cells

+							var tRows = tableElm.rows;

+							for (var y=0; y<tRows.length; y++) {

+								var rowCells = new Array();

+

+								for (var x=0; x<tRows[y].cells.length; x++) {

+									var td = tRows[y].cells[x];

+

+									for (var i=0; i<cells.length; i++) {

+										if (td == cells[i]) {

+											rowCells[rowCells.length] = td;

+										}

+									}

+								}

+

+								if (rowCells.length > 0)

+									rows[rows.length] = rowCells;

+							}

+

+							// Find selected cells in grid and box

+							var curRow = new Array();

+							var lastTR = null;

+							for (var y=0; y<grid.length; y++) {

+								for (var x=0; x<grid[y].length; x++) {

+									grid[y][x]._selected = false;

+

+									for (var i=0; i<cells.length; i++) {

+										if (grid[y][x] == cells[i]) {

+											// Get start pos

+											if (x1 == -1) {

+												x1 = x;

+												y1 = y;

+											}

+

+											// Get end pos

+											x2 = x;

+											y2 = y;

+

+											grid[y][x]._selected = true;

+										}

+									}

+								}

+							}

+

+							// Is there gaps, if so deny

+							for (var y=y1; y<=y2; y++) {

+								for (var x=x1; x<=x2; x++) {

+									if (!grid[y][x]._selected) {

+										alert("Invalid selection for merge.");

+										return true;

+									}

+								}

+							}

+						}

+

+						// Validate selection and get total rowspan and colspan

+						var rowSpan = 1, colSpan = 1;

+

+						// Validate horizontal and get total colspan

+						var lastRowSpan = -1;

+						for (var y=0; y<rows.length; y++) {

+							var rowColSpan = 0;

+

+							for (var x=0; x<rows[y].length; x++) {

+								var sd = getColRowSpan(rows[y][x]);

+

+								rowColSpan += sd['colspan'];

+

+								if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {

+									alert("Invalid selection for merge.");

+									return true;

+								}

+

+								lastRowSpan = sd['rowspan'];

+							}

+

+							if (rowColSpan > colSpan)

+								colSpan = rowColSpan;

+

+							lastRowSpan = -1;

+						}

+

+						// Validate vertical and get total rowspan

+						var lastColSpan = -1;

+						for (var x=0; x<rows[0].length; x++) {

+							var colRowSpan = 0;

+

+							for (var y=0; y<rows.length; y++) {

+								var sd = getColRowSpan(rows[y][x]);

+

+								colRowSpan += sd['rowspan'];

+

+								if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {

+									alert("Invalid selection for merge.");

+									return true;

+								}

+

+								lastColSpan = sd['colspan'];

+							}

+

+							if (colRowSpan > rowSpan)

+								rowSpan = colRowSpan;

+

+							lastColSpan = -1;

+						}

+

+						// Setup td

+						tdElm = rows[0][0];

+						tdElm.rowSpan = rowSpan;

+						tdElm.colSpan = colSpan;

+

+						// Merge cells

+						for (var y=0; y<rows.length; y++) {

+							for (var x=0; x<rows[y].length; x++) {

+								var html = rows[y][x].innerHTML;

+								var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "");

+

+								if (chk != "<br/>" && chk != "<br>" && chk != "&nbsp;" && (x+y > 0))

+									tdElm.innerHTML += html;

+

+								// Not current cell

+								if (rows[y][x] != tdElm && !rows[y][x]._deleted) {

+									var cpos = getCellPos(grid, rows[y][x]);

+									var tr = rows[y][x].parentNode;

+

+									tr.removeChild(rows[y][x]);

+									rows[y][x]._deleted = true;

+

+									// Empty TR, remove it

+									if (!tr.hasChildNodes()) {

+										tr.parentNode.removeChild(tr);

+

+										var lastCell = null;

+										for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {

+											if (cellElm != lastCell && cellElm.rowSpan > 1)

+												cellElm.rowSpan--;

+

+											lastCell = cellElm;

+										}

+

+										if (tdElm.rowSpan > 1)

+											tdElm.rowSpan--;

+									}

+								}

+							}

+						}

+

+						break;

+					}

+

+					tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");

+					tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);

+					tinyMCE.triggerNodeChange();

+					inst.repaint();

+				}

+

+			return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	}

+};

+

+tinyMCE.addPlugin("table", TinyMCE_TablePlugin);

 
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('tinymce.plugins.TablePlugin', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-			t.url = url;
-
-			// Register buttons
-			each([
-				['table', 'table.desc', 'mceInsertTable', true],
-				['delete_table', 'table.del', 'mceTableDelete'],
-				['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],
-				['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],
-				['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],
-				['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],
-				['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],
-				['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],
-				['row_props', 'table.row_desc', 'mceTableRowProps', true],
-				['cell_props', 'table.cell_desc', 'mceTableCellProps', true],
-				['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],
-				['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]
-			], function(c) {
-				ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});
-			});
-
-			ed.onInit.add(function() {
-				if (ed && ed.plugins.contextmenu) {
-					ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
-						var sm, se = ed.selection, el = se.getNode() || ed.getBody();
-
-						if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th')) {
-							m.removeAll();
-
-							if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {
-								m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
-								m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
-								m.addSeparator();
-							}
-
-							if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {
-								m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
-								m.addSeparator();
-							}
-
-							m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true, value : {action : 'insert'}});
-							m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable', ui : true});
-							m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete', ui : true});
-							m.addSeparator();
-
-							// Cell menu
-							sm = m.addMenu({title : 'table.cell'});
-							sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps', ui : true});
-							sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells', ui : true});
-							sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells', ui : true});
-
-							// Row menu
-							sm = m.addMenu({title : 'table.row'});
-							sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps', ui : true});
-							sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});
-							sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});
-							sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});
-							sm.addSeparator();
-							sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});
-							sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});
-							sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'});
-							sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'});
-
-							// Column menu
-							sm = m.addMenu({title : 'table.col'});
-							sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});
-							sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});
-							sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});
-						} else
-							m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', ui : true});
-					});
-				}
-			});
-
-			// Add undo level when new rows are created using the tab key
-			ed.onKeyDown.add(function(ed, e) {
-				if (e.keyCode == 9 && ed.dom.getParent(ed.selection.getNode(), 'TABLE')) {
-					if (!tinymce.isGecko && !tinymce.isOpera) {
-						tinyMCE.execInstanceCommand(ed.editorId, "mceTableMoveToNextRow", true);
-						return tinymce.dom.Event.cancel(e);
-					}
-
-					ed.undoManager.add();
-				}
-			});
-
-			// Select whole table is a table border is clicked
-			if (!tinymce.isIE) {
-				if (ed.getParam('table_selection', true)) {
-					ed.onClick.add(function(ed, e) {
-						e = e.target;
-
-						if (e.nodeName === 'TABLE')
-							ed.selection.select(e);
-					});
-				}
-			}
-
-			ed.onNodeChange.add(function(ed, cm, n) {
-				var p = ed.dom.getParent(n, 'td,th,caption');
-
-				cm.setActive('table', n.nodeName === 'TABLE' || !!p);
-				if (p && p.nodeName === 'CAPTION')
-					p = null;
-
-				cm.setDisabled('delete_table', !p);
-				cm.setDisabled('delete_col', !p);
-				cm.setDisabled('delete_table', !p);
-				cm.setDisabled('delete_row', !p);
-				cm.setDisabled('col_after', !p);
-				cm.setDisabled('col_before', !p);
-				cm.setDisabled('row_after', !p);
-				cm.setDisabled('row_before', !p);
-				cm.setDisabled('row_props', !p);
-				cm.setDisabled('cell_props', !p);
-				cm.setDisabled('split_cells', !p || (parseInt(ed.dom.getAttrib(p, 'colspan', '1')) < 2 && parseInt(ed.dom.getAttrib(p, 'rowspan', '1')) < 2));
-				cm.setDisabled('merge_cells', !p);
-			});
-
-			// Padd empty table cells
-			if (!tinymce.isIE) {
-				ed.onBeforeSetContent.add(function(ed, o) {
-					if (o.initial)
-						o.content = o.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g, tinymce.isOpera ? '<$1$2>&nbsp;</$1>' : '<$1$2><br mce_bogus="1" /></$1>');
-				});
-			}
-		},
-
-		execCommand : function(cmd, ui, val) {
-			var ed = this.editor, b;
-
-			// Is table command
-			switch (cmd) {
-				case "mceTableMoveToNextRow":
-				case "mceInsertTable":
-				case "mceTableRowProps":
-				case "mceTableCellProps":
-				case "mceTableSplitCells":
-				case "mceTableMergeCells":
-				case "mceTableInsertRowBefore":
-				case "mceTableInsertRowAfter":
-				case "mceTableDeleteRow":
-				case "mceTableInsertColBefore":
-				case "mceTableInsertColAfter":
-				case "mceTableDeleteCol":
-				case "mceTableCutRow":
-				case "mceTableCopyRow":
-				case "mceTablePasteRowBefore":
-				case "mceTablePasteRowAfter":
-				case "mceTableDelete":
-					ed.execCommand('mceBeginUndoLevel');
-					this._doExecCommand(cmd, ui, val);
-					ed.execCommand('mceEndUndoLevel');
-
-					return true;
-			}
-
-			// Pass to next handler in chain
-			return false;
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Tables',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private plugin internal methods
-
-		/**
-		 * Executes the table commands.
-		 */
-		_doExecCommand : function(command, user_interface, value) {
-			var inst = this.editor, ed = inst, url = this.url;
-			var focusElm = inst.selection.getNode();
-			var trElm = inst.dom.getParent(focusElm, "tr");
-			var tdElm = inst.dom.getParent(focusElm, "td,th");
-			var tableElm = inst.dom.getParent(focusElm, "table");
-			var doc = inst.contentWindow.document;
-			var tableBorder = tableElm ? tableElm.getAttribute("border") : "";
-
-			// Get first TD if no TD found
-			if (trElm && tdElm == null)
-				tdElm = trElm.cells[0];
-
-			function inArray(ar, v) {
-				for (var i=0; i<ar.length; i++) {
-					// Is array
-					if (ar[i].length > 0 && inArray(ar[i], v))
-						return true;
-
-					// Found value
-					if (ar[i] == v)
-						return true;
-				}
-
-				return false;
-			}
-
-			function select(dx, dy) {
-				var td;
-
-				grid = getTableGrid(tableElm);
-				dx = dx || 0;
-				dy = dy || 0;
-				dx = Math.max(cpos.cellindex + dx, 0);
-				dy = Math.max(cpos.rowindex + dy, 0);
-
-				// Recalculate grid and select
-				inst.execCommand('mceRepaint');
-				td = getCell(grid, dy, dx);
-
-				if (td) {
-					inst.selection.select(td.firstChild || td);
-					inst.selection.collapse(1);
-				}
-			};
-
-			function makeTD() {
-				var newTD = doc.createElement("td");
-
-				if (!tinymce.isIE)
-					newTD.innerHTML = '<br mce_bogus="1"/>';
-			}
-
-			function getColRowSpan(td) {
-				var colspan = inst.dom.getAttrib(td, "colspan");
-				var rowspan = inst.dom.getAttrib(td, "rowspan");
-
-				colspan = colspan == "" ? 1 : parseInt(colspan);
-				rowspan = rowspan == "" ? 1 : parseInt(rowspan);
-
-				return {colspan : colspan, rowspan : rowspan};
-			}
-
-			function getCellPos(grid, td) {
-				var x, y;
-
-				for (y=0; y<grid.length; y++) {
-					for (x=0; x<grid[y].length; x++) {
-						if (grid[y][x] == td)
-							return {cellindex : x, rowindex : y};
-					}
-				}
-
-				return null;
-			}
-
-			function getCell(grid, row, col) {
-				if (grid[row] && grid[row][col])
-					return grid[row][col];
-
-				return null;
-			}
-
-			function getNextCell(table, cell) {
-				var cells = [], x = 0, i, j, cell, nextCell;
-
-				for (i = 0; i < table.rows.length; i++)
-					for (j = 0; j < table.rows[i].cells.length; j++, x++)
-						cells[x] = table.rows[i].cells[j];
-
-				for (i = 0; i < cells.length; i++)
-					if (cells[i] == cell)
-						if (nextCell = cells[i+1])
-							return nextCell;
-			}
-
-			function getTableGrid(table) {
-				var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2;
-
-				for (y=0; y<rows.length; y++) {
-					for (x=0; x<rows[y].cells.length; x++) {
-						td = rows[y].cells[x];
-						sd = getColRowSpan(td);
-
-						// All ready filled
-						for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
-
-						// Fill box
-						for (y2=y; y2<y+sd['rowspan']; y2++) {
-							if (!grid[y2])
-								grid[y2] = [];
-
-							for (x2=xstart; x2<xstart+sd['colspan']; x2++)
-								grid[y2][x2] = td;
-						}
-					}
-				}
-
-				return grid;
-			}
-
-			function trimRow(table, tr, td, new_tr) {
-				var grid = getTableGrid(table), cpos = getCellPos(grid, td);
-				var cells, lastElm;
-
-				// Time to crop away some
-				if (new_tr.cells.length != tr.childNodes.length) {
-					cells = tr.childNodes;
-					lastElm = null;
-
-					for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
-						var remove = true;
-						var sd = getColRowSpan(td);
-
-						// Remove due to rowspan
-						if (inArray(cells, td)) {
-							new_tr.childNodes[x]._delete = true;
-						} else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { // Remove due to colspan
-							for (var i=x; i<x+td.colSpan; i++)
-								new_tr.childNodes[i]._delete = true;
-						}
-
-						if ((lastElm == null || td != lastElm) && sd.rowspan > 1)
-							td.rowSpan = sd.rowspan + 1;
-
-						lastElm = td;
-					}
-
-					deleteMarked(tableElm);
-				}
-			}
-
-			function prevElm(node, name) {
-				while ((node = node.previousSibling) != null) {
-					if (node.nodeName == name)
-						return node;
-				}
-
-				return null;
-			}
-
-			function nextElm(node, names) {
-				var namesAr = names.split(',');
-
-				while ((node = node.nextSibling) != null) {
-					for (var i=0; i<namesAr.length; i++) {
-						if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )
-							return node;
-					}
-				}
-
-				return null;
-			}
-
-			function deleteMarked(tbl) {
-				if (tbl.rows == 0)
-					return;
-
-				var tr = tbl.rows[0];
-				do {
-					var next = nextElm(tr, "TR");
-
-					// Delete row
-					if (tr._delete) {
-						tr.parentNode.removeChild(tr);
-						continue;
-					}
-
-					// Delete cells
-					var td = tr.cells[0];
-					if (td.cells > 1) {
-						do {
-							var nexttd = nextElm(td, "TD,TH");
-
-							if (td._delete)
-								td.parentNode.removeChild(td);
-						} while ((td = nexttd) != null);
-					}
-				} while ((tr = next) != null);
-			}
-
-			function addRows(td_elm, tr_elm, rowspan) {
-				// Add rows
-				td_elm.rowSpan = 1;
-				var trNext = nextElm(tr_elm, "TR");
-				for (var i=1; i<rowspan && trNext; i++) {
-					var newTD = doc.createElement("td");
-
-					if (!tinymce.isIE)
-						newTD.innerHTML = '<br mce_bogus="1"/>';
-
-					if (tinymce.isIE)
-						trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));
-					else
-						trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);
-
-					trNext = nextElm(trNext, "TR");
-				}
-			}
-
-			function copyRow(doc, table, tr) {
-				var grid = getTableGrid(table);
-				var newTR = tr.cloneNode(false);
-				var cpos = getCellPos(grid, tr.cells[0]);
-				var lastCell = null;
-				var tableBorder = inst.dom.getAttrib(table, "border");
-				var tdElm = null;
-
-				for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-					var newTD = null;
-
-					if (lastCell != tdElm) {
-						for (var i=0; i<tr.cells.length; i++) {
-							if (tdElm == tr.cells[i]) {
-								newTD = tdElm.cloneNode(true);
-								break;
-							}
-						}
-					}
-
-					if (newTD == null) {
-						newTD = doc.createElement("td");
-
-						if (!tinymce.isIE)
-							newTD.innerHTML = '<br mce_bogus="1"/>';
-					}
-
-					// Reset col/row span
-					newTD.colSpan = 1;
-					newTD.rowSpan = 1;
-
-					newTR.appendChild(newTD);
-
-					lastCell = tdElm;
-				}
-
-				return newTR;
-			}
-
-			// ---- Commands -----
-
-			// Handle commands
-			switch (command) {
-				case "mceTableMoveToNextRow":
-					var nextCell = getNextCell(tableElm, tdElm);
-
-					if (!nextCell) {
-						inst.execCommand("mceTableInsertRowAfter", tdElm);
-						nextCell = getNextCell(tableElm, tdElm);
-					}
-
-					inst.selection.select(nextCell);
-					inst.selection.collapse(true);
-
-					return true;
-
-				case "mceTableRowProps":
-					if (trElm == null)
-						return true;
-
-					if (user_interface) {
-						inst.windowManager.open({
-							url : url + '/row.htm',
-							width : 400 + parseInt(inst.getLang('table.rowprops_delta_width', 0)),
-							height : 295 + parseInt(inst.getLang('table.rowprops_delta_height', 0)),
-							inline : 1
-						}, {
-							plugin_url : url
-						});
-					}
-
-					return true;
-
-				case "mceTableCellProps":
-					if (tdElm == null)
-						return true;
-
-					if (user_interface) {
-						inst.windowManager.open({
-							url : url + '/cell.htm',
-							width : 400 + parseInt(inst.getLang('table.cellprops_delta_width', 0)),
-							height : 295 + parseInt(inst.getLang('table.cellprops_delta_height', 0)),
-							inline : 1
-						}, {
-							plugin_url : url
-						});
-					}
-
-					return true;
-
-				case "mceInsertTable":
-					if (user_interface) {
-						inst.windowManager.open({
-							url : url + '/table.htm',
-							width : 400 + parseInt(inst.getLang('table.table_delta_width', 0)),
-							height : 320 + parseInt(inst.getLang('table.table_delta_height', 0)),
-							inline : 1
-						}, {
-							plugin_url : url,
-							action : value ? value.action : 0
-						});
-					}
-
-					return true;
-
-				case "mceTableDelete":
-					var table = inst.dom.getParent(inst.selection.getNode(), "table");
-					if (table) {
-						table.parentNode.removeChild(table);
-						inst.execCommand('mceRepaint');
-					}
-					return true;
-
-				case "mceTableSplitCells":
-				case "mceTableMergeCells":
-				case "mceTableInsertRowBefore":
-				case "mceTableInsertRowAfter":
-				case "mceTableDeleteRow":
-				case "mceTableInsertColBefore":
-				case "mceTableInsertColAfter":
-				case "mceTableDeleteCol":
-				case "mceTableCutRow":
-				case "mceTableCopyRow":
-				case "mceTablePasteRowBefore":
-				case "mceTablePasteRowAfter":
-					// No table just return (invalid command)
-					if (!tableElm)
-						return true;
-
-					// Table has a tbody use that reference
-					// Changed logic by ApTest 2005.07.12 (www.aptest.com)
-					// Now lookk at the focused element and take its parentNode.  That will be a tbody or a table.
-					if (trElm && tableElm != trElm.parentNode)
-						tableElm = trElm.parentNode;
-
-					if (tableElm && trElm) {
-						switch (command) {
-							case "mceTableCutRow":
-								if (!trElm || !tdElm)
-									return true;
-
-								inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
-								inst.execCommand("mceTableDeleteRow");
-								break;
-
-							case "mceTableCopyRow":
-								if (!trElm || !tdElm)
-									return true;
-
-								inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
-								break;
-
-							case "mceTablePasteRowBefore":
-								if (!trElm || !tdElm)
-									return true;
-
-								var newTR = inst.tableRowClipboard.cloneNode(true);
-
-								var prevTR = prevElm(trElm, "TR");
-								if (prevTR != null)
-									trimRow(tableElm, prevTR, prevTR.cells[0], newTR);
-
-								trElm.parentNode.insertBefore(newTR, trElm);
-								break;
-
-							case "mceTablePasteRowAfter":
-								if (!trElm || !tdElm)
-									return true;
-								
-								var nextTR = nextElm(trElm, "TR");
-								var newTR = inst.tableRowClipboard.cloneNode(true);
-
-								trimRow(tableElm, trElm, tdElm, newTR);
-
-								if (nextTR == null)
-									trElm.parentNode.appendChild(newTR);
-								else
-									nextTR.parentNode.insertBefore(newTR, nextTR);
-
-								break;
-
-							case "mceTableInsertRowBefore":
-								if (!trElm || !tdElm)
-									return true;
-
-								var grid = getTableGrid(tableElm);
-								var cpos = getCellPos(grid, tdElm);
-								var newTR = doc.createElement("tr");
-								var lastTDElm = null;
-
-								cpos.rowindex--;
-								if (cpos.rowindex < 0)
-									cpos.rowindex = 0;
-
-								// Create cells
-								for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-									if (tdElm != lastTDElm) {
-										var sd = getColRowSpan(tdElm);
-
-										if (sd['rowspan'] == 1) {
-											var newTD = doc.createElement("td");
-
-											if (!tinymce.isIE)
-												newTD.innerHTML = '<br mce_bogus="1"/>';
-
-											newTD.colSpan = tdElm.colSpan;
-
-											newTR.appendChild(newTD);
-										} else
-											tdElm.rowSpan = sd['rowspan'] + 1;
-
-										lastTDElm = tdElm;
-									}
-								}
-
-								trElm.parentNode.insertBefore(newTR, trElm);
-								select(0, 1);
-							break;
-
-							case "mceTableInsertRowAfter":
-								if (!trElm || !tdElm)
-									return true;
-
-								var grid = getTableGrid(tableElm);
-								var cpos = getCellPos(grid, tdElm);
-								var newTR = doc.createElement("tr");
-								var lastTDElm = null;
-
-								// Create cells
-								for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-									if (tdElm != lastTDElm) {
-										var sd = getColRowSpan(tdElm);
-
-										if (sd['rowspan'] == 1) {
-											var newTD = doc.createElement("td");
-
-											if (!tinymce.isIE)
-												newTD.innerHTML = '<br mce_bogus="1"/>';
-
-											newTD.colSpan = tdElm.colSpan;
-
-											newTR.appendChild(newTD);
-										} else
-											tdElm.rowSpan = sd['rowspan'] + 1;
-
-										lastTDElm = tdElm;
-									}
-								}
-
-								if (newTR.hasChildNodes()) {
-									var nextTR = nextElm(trElm, "TR");
-									if (nextTR)
-										nextTR.parentNode.insertBefore(newTR, nextTR);
-									else
-										tableElm.appendChild(newTR);
-								}
-
-								select(0, 1);
-							break;
-
-							case "mceTableDeleteRow":
-								if (!trElm || !tdElm)
-									return true;
-
-								var grid = getTableGrid(tableElm);
-								var cpos = getCellPos(grid, tdElm);
-
-								// Only one row, remove whole table
-								if (grid.length == 1 && tableElm.nodeName == 'TBODY') {
-									inst.dom.remove(inst.dom.getParent(tableElm, "table"));
-									return true;
-								}
-
-								// Move down row spanned cells
-								var cells = trElm.cells;
-								var nextTR = nextElm(trElm, "TR");
-								for (var x=0; x<cells.length; x++) {
-									if (cells[x].rowSpan > 1) {
-										var newTD = cells[x].cloneNode(true);
-										var sd = getColRowSpan(cells[x]);
-
-										newTD.rowSpan = sd.rowspan - 1;
-
-										var nextTD = nextTR.cells[x];
-
-										if (nextTD == null)
-											nextTR.appendChild(newTD);
-										else
-											nextTR.insertBefore(newTD, nextTD);
-									}
-								}
-
-								// Delete cells
-								var lastTDElm = null;
-								for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
-									if (tdElm != lastTDElm) {
-										var sd = getColRowSpan(tdElm);
-
-										if (sd.rowspan > 1) {
-											tdElm.rowSpan = sd.rowspan - 1;
-										} else {
-											trElm = tdElm.parentNode;
-
-											if (trElm.parentNode)
-												trElm._delete = true;
-										}
-
-										lastTDElm = tdElm;
-									}
-								}
-
-								deleteMarked(tableElm);
-
-								select(0, -1);
-							break;
-
-							case "mceTableInsertColBefore":
-								if (!trElm || !tdElm)
-									return true;
-
-								var grid = getTableGrid(tableElm);
-								var cpos = getCellPos(grid, tdElm);
-								var lastTDElm = null;
-
-								for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
-									if (tdElm != lastTDElm) {
-										var sd = getColRowSpan(tdElm);
-
-										if (sd['colspan'] == 1) {
-											var newTD = doc.createElement(tdElm.nodeName);
-
-											if (!tinymce.isIE)
-												newTD.innerHTML = '<br mce_bogus="1"/>';
-
-											newTD.rowSpan = tdElm.rowSpan;
-
-											tdElm.parentNode.insertBefore(newTD, tdElm);
-										} else
-											tdElm.colSpan++;
-
-										lastTDElm = tdElm;
-									}
-								}
-
-								select();
-							break;
-
-							case "mceTableInsertColAfter":
-								if (!trElm || !tdElm)
-									return true;
-
-								var grid = getTableGrid(tableElm);
-								var cpos = getCellPos(grid, tdElm);
-								var lastTDElm = null;
-
-								for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
-									if (tdElm != lastTDElm) {
-										var sd = getColRowSpan(tdElm);
-
-										if (sd['colspan'] == 1) {
-											var newTD = doc.createElement(tdElm.nodeName);
-
-											if (!tinymce.isIE)
-												newTD.innerHTML = '<br mce_bogus="1"/>';
-
-											newTD.rowSpan = tdElm.rowSpan;
-
-											var nextTD = nextElm(tdElm, "TD,TH");
-											if (nextTD == null)
-												tdElm.parentNode.appendChild(newTD);
-											else
-												nextTD.parentNode.insertBefore(newTD, nextTD);
-										} else
-											tdElm.colSpan++;
-
-										lastTDElm = tdElm;
-									}
-								}
-
-								select(1);
-							break;
-
-							case "mceTableDeleteCol":
-								if (!trElm || !tdElm)
-									return true;
-
-								var grid = getTableGrid(tableElm);
-								var cpos = getCellPos(grid, tdElm);
-								var lastTDElm = null;
-
-								// Only one col, remove whole table
-								if ((grid.length > 1 && grid[0].length <= 1) && tableElm.nodeName == 'TBODY') {
-									inst.dom.remove(inst.dom.getParent(tableElm, "table"));
-									return true;
-								}
-
-								// Delete cells
-								for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) {
-									if (tdElm != lastTDElm) {
-										var sd = getColRowSpan(tdElm);
-
-										if (sd['colspan'] > 1)
-											tdElm.colSpan = sd['colspan'] - 1;
-										else {
-											if (tdElm.parentNode)
-												tdElm.parentNode.removeChild(tdElm);
-										}
-
-										lastTDElm = tdElm;
-									}
-								}
-
-								select(-1);
-							break;
-
-						case "mceTableSplitCells":
-							if (!trElm || !tdElm)
-								return true;
-
-							var spandata = getColRowSpan(tdElm);
-
-							var colspan = spandata["colspan"];
-							var rowspan = spandata["rowspan"];
-
-							// Needs splitting
-							if (colspan > 1 || rowspan > 1) {
-								// Generate cols
-								tdElm.colSpan = 1;
-								for (var i=1; i<colspan; i++) {
-									var newTD = doc.createElement("td");
-
-									if (!tinymce.isIE)
-										newTD.innerHTML = '<br mce_bogus="1"/>';
-
-									trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));
-
-									if (rowspan > 1)
-										addRows(newTD, trElm, rowspan);
-								}
-
-								addRows(tdElm, trElm, rowspan);
-							}
-
-							// Apply visual aids
-							tableElm = inst.dom.getParent(inst.selection.getNode(), "table");
-							break;
-
-						case "mceTableMergeCells":
-							var rows = [];
-							var sel = inst.selection.getSel();
-							var grid = getTableGrid(tableElm);
-
-							if (tinymce.isIE || sel.rangeCount == 1) {
-								if (user_interface) {
-									// Setup template
-									var sp = getColRowSpan(tdElm);
-
-									inst.windowManager.open({
-										url : url + '/merge_cells.htm',
-										width : 240 + parseInt(inst.getLang('table.merge_cells_delta_width', 0)),
-										height : 110 + parseInt(inst.getLang('table.merge_cells_delta_height', 0)),
-										inline : 1
-									}, {
-										action : "update",
-										numcols : sp.colspan,
-										numrows : sp.rowspan,
-										plugin_url : url
-									});
-
-									return true;
-								} else {
-									var numRows = parseInt(value['numrows']);
-									var numCols = parseInt(value['numcols']);
-									var cpos = getCellPos(grid, tdElm);
-
-									if (("" + numRows) == "NaN")
-										numRows = 1;
-
-									if (("" + numCols) == "NaN")
-										numCols = 1;
-
-									// Get rows and cells
-									var tRows = tableElm.rows;
-									for (var y=cpos.rowindex; y<grid.length; y++) {
-										var rowCells = [];
-
-										for (var x=cpos.cellindex; x<grid[y].length; x++) {
-											var td = getCell(grid, y, x);
-
-											if (td && !inArray(rows, td) && !inArray(rowCells, td)) {
-												var cp = getCellPos(grid, td);
-
-												// Within range
-												if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex < cpos.rowindex+numRows)
-													rowCells[rowCells.length] = td;
-											}
-										}
-
-										if (rowCells.length > 0)
-											rows[rows.length] = rowCells;
-
-										var td = getCell(grid, cpos.rowindex, cpos.cellindex);
-										each(ed.dom.select('br', td), function(e, i) {
-											if (i > 0 && ed.dom.getAttrib('mce_bogus'))
-												ed.dom.remove(e);
-										});
-									}
-
-									//return true;
-								}
-							} else {
-								var cells = [];
-								var sel = inst.selection.getSel();
-								var lastTR = null;
-								var curRow = null;
-								var x1 = -1, y1 = -1, x2, y2;
-
-								// Only one cell selected, whats the point?
-								if (sel.rangeCount < 2)
-									return true;
-
-								// Get all selected cells
-								for (var i=0; i<sel.rangeCount; i++) {
-									var rng = sel.getRangeAt(i);
-									var tdElm = rng.startContainer.childNodes[rng.startOffset];
-
-									if (!tdElm)
-										break;
-
-									if (tdElm.nodeName == "TD" || tdElm.nodeName == "TH")
-										cells[cells.length] = tdElm;
-								}
-
-								// Get rows and cells
-								var tRows = tableElm.rows;
-								for (var y=0; y<tRows.length; y++) {
-									var rowCells = [];
-
-									for (var x=0; x<tRows[y].cells.length; x++) {
-										var td = tRows[y].cells[x];
-
-										for (var i=0; i<cells.length; i++) {
-											if (td == cells[i]) {
-												rowCells[rowCells.length] = td;
-											}
-										}
-									}
-
-									if (rowCells.length > 0)
-										rows[rows.length] = rowCells;
-								}
-
-								// Find selected cells in grid and box
-								var curRow = [];
-								var lastTR = null;
-								for (var y=0; y<grid.length; y++) {
-									for (var x=0; x<grid[y].length; x++) {
-										grid[y][x]._selected = false;
-
-										for (var i=0; i<cells.length; i++) {
-											if (grid[y][x] == cells[i]) {
-												// Get start pos
-												if (x1 == -1) {
-													x1 = x;
-													y1 = y;
-												}
-
-												// Get end pos
-												x2 = x;
-												y2 = y;
-
-												grid[y][x]._selected = true;
-											}
-										}
-									}
-								}
-
-								// Is there gaps, if so deny
-								for (var y=y1; y<=y2; y++) {
-									for (var x=x1; x<=x2; x++) {
-										if (!grid[y][x]._selected) {
-											alert("Invalid selection for merge.");
-											return true;
-										}
-									}
-								}
-							}
-
-							// Validate selection and get total rowspan and colspan
-							var rowSpan = 1, colSpan = 1;
-
-							// Validate horizontal and get total colspan
-							var lastRowSpan = -1;
-							for (var y=0; y<rows.length; y++) {
-								var rowColSpan = 0;
-
-								for (var x=0; x<rows[y].length; x++) {
-									var sd = getColRowSpan(rows[y][x]);
-
-									rowColSpan += sd['colspan'];
-
-									if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {
-										alert("Invalid selection for merge.");
-										return true;
-									}
-
-									lastRowSpan = sd['rowspan'];
-								}
-
-								if (rowColSpan > colSpan)
-									colSpan = rowColSpan;
-
-								lastRowSpan = -1;
-							}
-
-							// Validate vertical and get total rowspan
-							var lastColSpan = -1;
-							for (var x=0; x<rows[0].length; x++) {
-								var colRowSpan = 0;
-
-								for (var y=0; y<rows.length; y++) {
-									var sd = getColRowSpan(rows[y][x]);
-
-									colRowSpan += sd['rowspan'];
-
-									if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {
-										alert("Invalid selection for merge.");
-										return true;
-									}
-
-									lastColSpan = sd['colspan'];
-								}
-
-								if (colRowSpan > rowSpan)
-									rowSpan = colRowSpan;
-
-								lastColSpan = -1;
-							}
-
-							// Setup td
-							tdElm = rows[0][0];
-							tdElm.rowSpan = rowSpan;
-							tdElm.colSpan = colSpan;
-
-							// Merge cells
-							for (var y=0; y<rows.length; y++) {
-								for (var x=0; x<rows[y].length; x++) {
-									var html = rows[y][x].innerHTML;
-									var chk = html.replace(/[ \t\r\n]/g, "");
-
-									if (chk != "<br/>" && chk != "<br>" && chk != '<br mce_bogus="1"/>' && (x+y > 0))
-										tdElm.innerHTML += html;
-
-									// Not current cell
-									if (rows[y][x] != tdElm && !rows[y][x]._deleted) {
-										var cpos = getCellPos(grid, rows[y][x]);
-										var tr = rows[y][x].parentNode;
-
-										tr.removeChild(rows[y][x]);
-										rows[y][x]._deleted = true;
-
-										// Empty TR, remove it
-										if (!tr.hasChildNodes()) {
-											tr.parentNode.removeChild(tr);
-
-											var lastCell = null;
-											for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) {
-												if (cellElm != lastCell && cellElm.rowSpan > 1)
-													cellElm.rowSpan--;
-
-												lastCell = cellElm;
-											}
-
-											if (tdElm.rowSpan > 1)
-												tdElm.rowSpan--;
-										}
-									}
-								}
-							}
-
-							// Remove all but one bogus br
-							each(ed.dom.select('br', tdElm), function(e, i) {
-								if (i > 0 && ed.dom.getAttrib(e, 'mce_bogus'))
-									ed.dom.remove(e);
-							});
-
-							break;
-						}
-
-						tableElm = inst.dom.getParent(inst.selection.getNode(), "table");
-						inst.addVisual(tableElm);
-						inst.nodeChanged();
-					}
-
-				return true;
-			}
-
-			// Pass to next handler in chain
-			return false;
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);
-})();

 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/table/images/buttons.gif and b/tinymce/2/jscripts/tiny_mce/plugins/table/images/buttons.gif differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif and b/tinymce/2/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif differ
 Binary files a/tinymce/2/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif and b/tinymce/2/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif differ
--- a/tinymce/2/jscripts/tiny_mce/plugins/table/js/cell.js
+++ /dev/null
@@ -1,260 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var ed;
-
-function init() {
-	ed = tinyMCEPopup.editor;
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
-
-	var inst = ed;
-	var tdElm = ed.dom.getParent(ed.selection.getNode(), "td,th");
-	var formObj = document.forms[0];
-	var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
-
-	// Get table cell data
-	var celltype = tdElm.nodeName.toLowerCase();
-	var align = ed.dom.getAttrib(tdElm, 'align');
-	var valign = ed.dom.getAttrib(tdElm, 'valign');
-	var width = trimSize(getStyle(tdElm, 'width', 'width'));
-	var height = trimSize(getStyle(tdElm, 'height', 'height'));
-	var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
-	var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
-	var className = ed.dom.getAttrib(tdElm, 'class');
-	var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
-	var id = ed.dom.getAttrib(tdElm, 'id');
-	var lang = ed.dom.getAttrib(tdElm, 'lang');
-	var dir = ed.dom.getAttrib(tdElm, 'dir');
-	var scope = ed.dom.getAttrib(tdElm, 'scope');
-
-	// Setup form
-	addClassesToList('class', 'table_cell_styles');
-	TinyMCE_EditableSelects.init();
-
-	formObj.bordercolor.value = bordercolor;
-	formObj.bgcolor.value = bgcolor;
-	formObj.backgroundimage.value = backgroundimage;
-	formObj.width.value = width;
-	formObj.height.value = height;
-	formObj.id.value = id;
-	formObj.lang.value = lang;
-	formObj.style.value = ed.dom.serializeStyle(st);
-	selectByValue(formObj, 'align', align);
-	selectByValue(formObj, 'valign', valign);
-	selectByValue(formObj, 'class', className, true, true);
-	selectByValue(formObj, 'celltype', celltype);
-	selectByValue(formObj, 'dir', dir);
-	selectByValue(formObj, 'scope', scope);
-
-	// Resize some elements
-	if (isVisible('backgroundimagebrowser'))
-		document.getElementById('backgroundimage').style.width = '180px';
-
-	updateColor('bordercolor_pick', 'bordercolor');
-	updateColor('bgcolor_pick', 'bgcolor');
-}
-
-function updateAction() {
-	var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
-
-	tinyMCEPopup.restoreSelection();
-	el = ed.selection.getNode();
-	tdElm = ed.dom.getParent(el, "td,th");
-	trElm = ed.dom.getParent(el, "tr");
-	tableElm = ed.dom.getParent(el, "table");
-
-	ed.execCommand('mceBeginUndoLevel');
-
-	switch (getSelectValue(formObj, 'action')) {
-		case "cell":
-			var celltype = getSelectValue(formObj, 'celltype');
-			var scope = getSelectValue(formObj, 'scope');
-
-			if (ed.getParam("accessibility_warnings")) {
-				if (celltype == "th" && scope == "")
-					var answer = confirm(ed.getLang('table_dlg.missing_scope', '', true));
-				else
-					var answer = true;
-
-				if (!answer)
-					return;
-			}
-
-			updateCell(tdElm);
-			break;
-
-		case "row":
-			var cell = trElm.firstChild;
-
-			if (cell.nodeName != "TD" && cell.nodeName != "TH")
-				cell = nextCell(cell);
-
-			do {
-				cell = updateCell(cell, true);
-			} while ((cell = nextCell(cell)) != null);
-
-			break;
-
-		case "all":
-			var rows = tableElm.getElementsByTagName("tr");
-
-			for (var i=0; i<rows.length; i++) {
-				var cell = rows[i].firstChild;
-
-				if (cell.nodeName != "TD" && cell.nodeName != "TH")
-					cell = nextCell(cell);
-
-				do {
-					cell = updateCell(cell, true);
-				} while ((cell = nextCell(cell)) != null);
-			}
-
-			break;
-	}
-
-	ed.addVisual();
-	ed.nodeChanged();
-	inst.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function nextCell(elm) {
-	while ((elm = elm.nextSibling) != null) {
-		if (elm.nodeName == "TD" || elm.nodeName == "TH")
-			return elm;
-	}
-
-	return null;
-}
-
-function updateCell(td, skip_id) {
-	var inst = ed;
-	var formObj = document.forms[0];
-	var curCellType = td.nodeName.toLowerCase();
-	var celltype = getSelectValue(formObj, 'celltype');
-	var doc = inst.getDoc();
-	var dom = ed.dom;
-
-	if (!skip_id)
-		td.setAttribute('id', formObj.id.value);
-
-	td.setAttribute('align', formObj.align.value);
-	td.setAttribute('vAlign', formObj.valign.value);
-	td.setAttribute('lang', formObj.lang.value);
-	td.setAttribute('dir', getSelectValue(formObj, 'dir'));
-	td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
-	td.setAttribute('scope', formObj.scope.value);
-	ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
-
-	// Clear deprecated attributes
-	ed.dom.setAttrib(td, 'width', '');
-	ed.dom.setAttrib(td, 'height', '');
-	ed.dom.setAttrib(td, 'bgColor', '');
-	ed.dom.setAttrib(td, 'borderColor', '');
-	ed.dom.setAttrib(td, 'background', '');
-
-	// Set styles
-	td.style.width = getCSSSize(formObj.width.value);
-	td.style.height = getCSSSize(formObj.height.value);
-	if (formObj.bordercolor.value != "") {
-		td.style.borderColor = formObj.bordercolor.value;
-		td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
-		td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
-	} else
-		td.style.borderColor = '';
-
-	td.style.backgroundColor = formObj.bgcolor.value;
-
-	if (formObj.backgroundimage.value != "")
-		td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
-	else
-		td.style.backgroundImage = '';
-
-	if (curCellType != celltype) {
-		// changing to a different node type
-		var newCell = doc.createElement(celltype);
-
-		for (var c=0; c<td.childNodes.length; c++)
-			newCell.appendChild(td.childNodes[c].cloneNode(1));
-
-		for (var a=0; a<td.attributes.length; a++)
-			ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
-
-		td.parentNode.replaceChild(newCell, td);
-		td = newCell;
-	}
-
-	dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
-
-	return td;
-}
-
-function changedBackgroundImage() {
-	var formObj = document.forms[0];
-	var st = ed.dom.parseStyle(formObj.style.value);
-
-	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
-	formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedSize() {
-	var formObj = document.forms[0];
-	var st = ed.dom.parseStyle(formObj.style.value);
-
-	var width = formObj.width.value;
-	if (width != "")
-		st['width'] = getCSSSize(width);
-	else
-		st['width'] = "";
-
-	var height = formObj.height.value;
-	if (height != "")
-		st['height'] = getCSSSize(height);
-	else
-		st['height'] = "";
-
-	formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedColor() {
-	var formObj = document.forms[0];
-	var st = ed.dom.parseStyle(formObj.style.value);
-
-	st['background-color'] = formObj.bgcolor.value;
-	st['border-color'] = formObj.bordercolor.value;
-
-	formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedStyle() {
-	var formObj = document.forms[0];
-	var st = ed.dom.parseStyle(formObj.style.value);
-
-	if (st['background-image'])
-		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-	else
-		formObj.backgroundimage.value = '';
-
-	if (st['width'])
-		formObj.width.value = trimSize(st['width']);
-
-	if (st['height'])
-		formObj.height.value = trimSize(st['height']);
-
-	if (st['background-color']) {
-		formObj.bgcolor.value = st['background-color'];
-		updateColor('bgcolor_pick','bgcolor');
-	}
-
-	if (st['border-color']) {
-		formObj.bordercolor.value = st['border-color'];
-		updateColor('bordercolor_pick','bordercolor');
-	}
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/js/merge_cells.js
+++ /dev/null
@@ -1,30 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-function init() {
-	var f = document.forms[0], v;
-
-	tinyMCEPopup.resizeToInnerSize();
-
-	f.numcols.value = tinyMCEPopup.getWindowArg('numcols', 1);
-	f.numrows.value = tinyMCEPopup.getWindowArg('numrows', 1);
-}
-
-function mergeCells() {
-	var args = [], f = document.forms[0];
-
-	tinyMCEPopup.restoreSelection();
-
-	if (!AutoValidator.validate(f)) {
-		alert(tinyMCEPopup.getLang('invalid_data'));
-		return false;
-	}
-
-	args["numcols"] = f.numcols.value;
-	args["numrows"] = f.numrows.value;
-
-	tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/js/row.js
+++ /dev/null
@@ -1,213 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
-	var inst = tinyMCEPopup.editor;
-	var dom = inst.dom;
-	var trElm = dom.getParent(inst.selection.getNode(), "tr");
-	var formObj = document.forms[0];
-	var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
-
-	// Get table row data
-	var rowtype = trElm.parentNode.nodeName.toLowerCase();
-	var align = dom.getAttrib(trElm, 'align');
-	var valign = dom.getAttrib(trElm, 'valign');
-	var height = trimSize(getStyle(trElm, 'height', 'height'));
-	var className = dom.getAttrib(trElm, 'class');
-	var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
-	var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
-	var id = dom.getAttrib(trElm, 'id');
-	var lang = dom.getAttrib(trElm, 'lang');
-	var dir = dom.getAttrib(trElm, 'dir');
-
-	// Setup form
-	addClassesToList('class', 'table_row_styles');
-	TinyMCE_EditableSelects.init();
-
-	formObj.bgcolor.value = bgcolor;
-	formObj.backgroundimage.value = backgroundimage;
-	formObj.height.value = height;
-	formObj.id.value = id;
-	formObj.lang.value = lang;
-	formObj.style.value = dom.serializeStyle(st);
-	selectByValue(formObj, 'align', align);
-	selectByValue(formObj, 'valign', valign);
-	selectByValue(formObj, 'class', className, true, true);
-	selectByValue(formObj, 'rowtype', rowtype);
-	selectByValue(formObj, 'dir', dir);
-
-	// Resize some elements
-	if (isVisible('backgroundimagebrowser'))
-		document.getElementById('backgroundimage').style.width = '180px';
-
-	updateColor('bgcolor_pick', 'bgcolor');
-}
-
-function updateAction() {
-	var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
-	var action = getSelectValue(formObj, 'action');
-
-	tinyMCEPopup.restoreSelection();
-	trElm = dom.getParent(inst.selection.getNode(), "tr");
-	tableElm = dom.getParent(inst.selection.getNode(), "table");
-
-	inst.execCommand('mceBeginUndoLevel');
-
-	switch (action) {
-		case "row":
-			updateRow(trElm);
-			break;
-
-		case "all":
-			var rows = tableElm.getElementsByTagName("tr");
-
-			for (var i=0; i<rows.length; i++)
-				updateRow(rows[i], true);
-
-			break;
-
-		case "odd":
-		case "even":
-			var rows = tableElm.getElementsByTagName("tr");
-
-			for (var i=0; i<rows.length; i++) {
-				if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
-					updateRow(rows[i], true, true);
-			}
-
-			break;
-	}
-
-	inst.addVisual();
-	inst.nodeChanged();
-	inst.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function updateRow(tr_elm, skip_id, skip_parent) {
-	var inst = tinyMCEPopup.editor;
-	var formObj = document.forms[0];
-	var dom = inst.dom;
-	var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
-	var rowtype = getSelectValue(formObj, 'rowtype');
-	var doc = inst.getDoc();
-
-	// Update row element
-	if (!skip_id)
-		tr_elm.setAttribute('id', formObj.id.value);
-
-	tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
-	tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
-	tr_elm.setAttribute('lang', formObj.lang.value);
-	tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
-	tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
-	dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
-
-	// Clear deprecated attributes
-	tr_elm.setAttribute('background', '');
-	tr_elm.setAttribute('bgColor', '');
-	tr_elm.setAttribute('height', '');
-
-	// Set styles
-	tr_elm.style.height = getCSSSize(formObj.height.value);
-	tr_elm.style.backgroundColor = formObj.bgcolor.value;
-
-	if (formObj.backgroundimage.value != "")
-		tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
-	else
-		tr_elm.style.backgroundImage = '';
-
-	// Setup new rowtype
-	if (curRowType != rowtype && !skip_parent) {
-		// first, clone the node we are working on
-		var newRow = tr_elm.cloneNode(1);
-
-		// next, find the parent of its new destination (creating it if necessary)
-		var theTable = dom.getParent(tr_elm, "table");
-		var dest = rowtype;
-		var newParent = null;
-		for (var i = 0; i < theTable.childNodes.length; i++) {
-			if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
-				newParent = theTable.childNodes[i];
-		}
-
-		if (newParent == null) {
-			newParent = doc.createElement(dest);
-
-			if (dest == "thead") {
-				if (theTable.firstChild.nodeName == 'CAPTION')
-					inst.dom.insertAfter(newParent, theTable.firstChild);
-				else
-					theTable.insertBefore(newParent, theTable.firstChild);
-			} else
-				theTable.appendChild(newParent);
-		}
-
-		// append the row to the new parent
-		newParent.appendChild(newRow);
-
-		// remove the original
-		tr_elm.parentNode.removeChild(tr_elm);
-
-		// set tr_elm to the new node
-		tr_elm = newRow;
-	}
-
-	dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
-}
-
-function changedBackgroundImage() {
-	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-	var st = dom.parseStyle(formObj.style.value);
-
-	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedStyle() {
-	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-	var st = dom.parseStyle(formObj.style.value);
-
-	if (st['background-image'])
-		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-	else
-		formObj.backgroundimage.value = '';
-
-	if (st['height'])
-		formObj.height.value = trimSize(st['height']);
-
-	if (st['background-color']) {
-		formObj.bgcolor.value = st['background-color'];
-		updateColor('bgcolor_pick','bgcolor');
-	}
-}
-
-function changedSize() {
-	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-	var st = dom.parseStyle(formObj.style.value);
-
-	var height = formObj.height.value;
-	if (height != "")
-		st['height'] = getCSSSize(height);
-	else
-		st['height'] = "";
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedColor() {
-	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-	var st = dom.parseStyle(formObj.style.value);
-
-	st['background-color'] = formObj.bgcolor.value;
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/js/table.js
+++ /dev/null
@@ -1,411 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
-
-function insertTable() {
-	var formObj = document.forms[0];
-	var inst = tinyMCEPopup.editor, dom = inst.dom;
-	var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
-	var html = '', capEl, elm;
-	var cellLimit, rowLimit, colLimit;
-
-	tinyMCEPopup.restoreSelection();
-
-	if (!AutoValidator.validate(formObj)) {
-		alert(inst.getLang('invalid_data'));
-		return false;
-	}
-
-	elm = dom.getParent(inst.selection.getNode(), 'table');
-
-	// Get form data
-	cols = formObj.elements['cols'].value;
-	rows = formObj.elements['rows'].value;
-	border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
-	cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
-	cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
-	align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
-	frame = formObj.elements['frame'].options[formObj.elements['frame'].selectedIndex].value;
-	rules = formObj.elements['rules'].options[formObj.elements['rules'].selectedIndex].value;
-	width = formObj.elements['width'].value;
-	height = formObj.elements['height'].value;
-	bordercolor = formObj.elements['bordercolor'].value;
-	bgcolor = formObj.elements['bgcolor'].value;
-	className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
-	id = formObj.elements['id'].value;
-	summary = formObj.elements['summary'].value;
-	style = formObj.elements['style'].value;
-	dir = formObj.elements['dir'].value;
-	lang = formObj.elements['lang'].value;
-	background = formObj.elements['backgroundimage'].value;
-	caption = formObj.elements['caption'].checked;
-
-	cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
-	rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
-	colLimit = tinyMCEPopup.getParam('table_col_limit', false);
-
-	// Validate table size
-	if (colLimit && cols > colLimit) {
-		inst.windowManager.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
-		return false;
-	} else if (rowLimit && rows > rowLimit) {
-		inst.windowManager.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
-		return false;
-	} else if (cellLimit && cols * rows > cellLimit) {
-		inst.windowManager.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
-		return false;
-	}
-
-	// Update table
-	if (action == "update") {
-		inst.execCommand('mceBeginUndoLevel');
-
-		dom.setAttrib(elm, 'cellPadding', cellpadding, true);
-		dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
-		dom.setAttrib(elm, 'border', border);
-		dom.setAttrib(elm, 'align', align);
-		dom.setAttrib(elm, 'frame', frame);
-		dom.setAttrib(elm, 'rules', rules);
-		dom.setAttrib(elm, 'class', className);
-		dom.setAttrib(elm, 'style', style);
-		dom.setAttrib(elm, 'id', id);
-		dom.setAttrib(elm, 'summary', summary);
-		dom.setAttrib(elm, 'dir', dir);
-		dom.setAttrib(elm, 'lang', lang);
-
-		capEl = inst.dom.select('caption', elm)[0];
-
-		if (capEl && !caption)
-			capEl.parentNode.removeChild(capEl);
-
-		if (!capEl && caption) {
-			capEl = elm.ownerDocument.createElement('caption');
-
-			if (!tinymce.isIE)
-				capEl.innerHTML = '<br mce_bogus="1"/>';
-
-			elm.insertBefore(capEl, elm.firstChild);
-		}
-
-		if (width && /(pt|em|cm)$/.test(width)) {
-			dom.setStyle(elm, 'width', width);
-			dom.setAttrib(elm, 'width', '');
-		} else {
-			dom.setAttrib(elm, 'width', width, true);
-			dom.setStyle(elm, 'width', '');
-		}
-
-		// Remove these since they are not valid XHTML
-		dom.setAttrib(elm, 'borderColor', '');
-		dom.setAttrib(elm, 'bgColor', '');
-		dom.setAttrib(elm, 'background', '');
-
-		if (height) {
-			dom.setStyle(elm, 'height', height);
-			dom.setAttrib(elm, 'height', '');
-		}
-
-		if (background != '')
-			elm.style.backgroundImage = "url('" + background + "')";
-		else
-			elm.style.backgroundImage = '';
-
-/*		if (tinyMCEPopup.getParam("inline_styles")) {
-			if (width != '')
-				elm.style.width = getCSSSize(width);
-		}*/
-
-		if (bordercolor != "") {
-			elm.style.borderColor = bordercolor;
-			elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
-			elm.style.borderWidth = border == "" ? "1px" : border;
-		} else
-			elm.style.borderColor = '';
-
-		elm.style.backgroundColor = bgcolor;
-		elm.style.height = getCSSSize(height);
-
-		inst.addVisual();
-
-		// Fix for stange MSIE align bug
-		//elm.outerHTML = elm.outerHTML;
-
-		inst.nodeChanged();
-		inst.execCommand('mceEndUndoLevel');
-
-		// Repaint if dimensions changed
-		if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
-			inst.execCommand('mceRepaint');
-
-		tinyMCEPopup.close();
-		return true;
-	}
-
-	// Create new table
-	html += '<table';
-
-	html += makeAttrib('id', id);
-	html += makeAttrib('border', border);
-	html += makeAttrib('cellpadding', cellpadding);
-	html += makeAttrib('cellspacing', cellspacing);
-
-	if (width && /(pt|em|cm)$/.test(width)) {
-		if (style)
-			style += '; ';
-
-		style += 'width: ' + width;
-	} else
-		html += makeAttrib('width', width);
-
-/*	if (height) {
-		if (style)
-			style += '; ';
-
-		style += 'height: ' + height;
-	}*/
-
-	//html += makeAttrib('height', height);
-	//html += makeAttrib('bordercolor', bordercolor);
-	//html += makeAttrib('bgcolor', bgcolor);
-	html += makeAttrib('align', align);
-	html += makeAttrib('frame', frame);
-	html += makeAttrib('rules', rules);
-	html += makeAttrib('class', className);
-	html += makeAttrib('style', style);
-	html += makeAttrib('summary', summary);
-	html += makeAttrib('dir', dir);
-	html += makeAttrib('lang', lang);
-	html += '>';
-
-	if (caption) {
-		if (!tinymce.isIE)
-			html += '<caption><br mce_bogus="1"/></caption>';
-		else
-			html += '<caption></caption>';
-	}
-
-	for (var y=0; y<rows; y++) {
-		html += "<tr>";
-
-		for (var x=0; x<cols; x++) {
-			if (!tinymce.isIE)
-				html += '<td><br mce_bogus="1"/></td>';
-			else
-				html += '<td></td>';
-		}
-
-		html += "</tr>";
-	}
-
-	html += "</table>";
-
-	inst.execCommand('mceBeginUndoLevel');
-	inst.execCommand('mceInsertContent', false, html);
-	inst.addVisual();
-	inst.execCommand('mceEndUndoLevel');
-
-	tinyMCEPopup.close();
-}
-
-function makeAttrib(attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value == "")
-		return "";
-
-	// XML encode it
-	value = value.replace(/&/g, '&amp;');
-	value = value.replace(/\"/g, '&quot;');
-	value = value.replace(/</g, '&lt;');
-	value = value.replace(/>/g, '&gt;');
-
-	return ' ' + attrib + '="' + value + '"';
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
-	var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
-	var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
-	var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame;
-	var inst = tinyMCEPopup.editor, dom = inst.dom;
-	var formObj = document.forms[0];
-	var elm = dom.getParent(inst.selection.getNode(), "table");
-
-	action = tinyMCEPopup.getWindowArg('action');
-
-	if (!action)
-		action = elm ? "update" : "insert";
-
-	if (elm && action != "insert") {
-		var rowsAr = elm.rows;
-		var cols = 0;
-		for (var i=0; i<rowsAr.length; i++)
-			if (rowsAr[i].cells.length > cols)
-				cols = rowsAr[i].cells.length;
-
-		cols = cols;
-		rows = rowsAr.length;
-
-		st = dom.parseStyle(dom.getAttrib(elm, "style"));
-		border = trimSize(getStyle(elm, 'border', 'borderWidth'));
-		cellpadding = dom.getAttrib(elm, 'cellpadding', "");
-		cellspacing = dom.getAttrib(elm, 'cellspacing', "");
-		width = trimSize(getStyle(elm, 'width', 'width'));
-		height = trimSize(getStyle(elm, 'height', 'height'));
-		bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
-		bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
-		align = dom.getAttrib(elm, 'align', align);
-		frame = dom.getAttrib(elm, 'frame');
-		rules = dom.getAttrib(elm, 'rules');
-		className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
-		id = dom.getAttrib(elm, 'id');
-		summary = dom.getAttrib(elm, 'summary');
-		style = dom.serializeStyle(st);
-		dir = dom.getAttrib(elm, 'dir');
-		lang = dom.getAttrib(elm, 'lang');
-		background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-		formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
-
-		orgTableWidth = width;
-		orgTableHeight = height;
-
-		action = "update";
-		formObj.insert.value = inst.getLang('update');
-	}
-
-	addClassesToList('class', "table_styles");
-	TinyMCE_EditableSelects.init();
-
-	// Update form
-	selectByValue(formObj, 'align', align);
-	selectByValue(formObj, 'frame', frame);
-	selectByValue(formObj, 'rules', rules);
-	selectByValue(formObj, 'class', className, true, true);
-	formObj.cols.value = cols;
-	formObj.rows.value = rows;
-	formObj.border.value = border;
-	formObj.cellpadding.value = cellpadding;
-	formObj.cellspacing.value = cellspacing;
-	formObj.width.value = width;
-	formObj.height.value = height;
-	formObj.bordercolor.value = bordercolor;
-	formObj.bgcolor.value = bgcolor;
-	formObj.id.value = id;
-	formObj.summary.value = summary;
-	formObj.style.value = style;
-	formObj.dir.value = dir;
-	formObj.lang.value = lang;
-	formObj.backgroundimage.value = background;
-
-	updateColor('bordercolor_pick', 'bordercolor');
-	updateColor('bgcolor_pick', 'bgcolor');
-
-	// Resize some elements
-	if (isVisible('backgroundimagebrowser'))
-		document.getElementById('backgroundimage').style.width = '180px';
-
-	// Disable some fields in update mode
-	if (action == "update") {
-		formObj.cols.disabled = true;
-		formObj.rows.disabled = true;
-	}
-}
-
-function changedSize() {
-	var formObj = document.forms[0];
-	var st = dom.parseStyle(formObj.style.value);
-
-/*	var width = formObj.width.value;
-	if (width != "")
-		st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
-	else
-		st['width'] = "";*/
-
-	var height = formObj.height.value;
-	if (height != "")
-		st['height'] = getCSSSize(height);
-	else
-		st['height'] = "";
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedBackgroundImage() {
-	var formObj = document.forms[0];
-	var st = dom.parseStyle(formObj.style.value);
-
-	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedBorder() {
-	var formObj = document.forms[0];
-	var st = dom.parseStyle(formObj.style.value);
-
-	// Update border width if the element has a color
-	if (formObj.border.value != "" && formObj.bordercolor.value != "")
-		st['border-width'] = formObj.border.value + "px";
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedColor() {
-	var formObj = document.forms[0];
-	var st = dom.parseStyle(formObj.style.value);
-
-	st['background-color'] = formObj.bgcolor.value;
-
-	if (formObj.bordercolor.value != "") {
-		st['border-color'] = formObj.bordercolor.value;
-
-		// Add border-width if it's missing
-		if (!st['border-width'])
-			st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
-	}
-
-	formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedStyle() {
-	var formObj = document.forms[0];
-	var st = dom.parseStyle(formObj.style.value);
-
-	if (st['background-image'])
-		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-	else
-		formObj.backgroundimage.value = '';
-
-	if (st['width'])
-		formObj.width.value = trimSize(st['width']);
-
-	if (st['height'])
-		formObj.height.value = trimSize(st['height']);
-
-	if (st['background-color']) {
-		formObj.bgcolor.value = st['background-color'];
-		updateColor('bgcolor_pick','bgcolor');
-	}
-
-	if (st['border-color']) {
-		formObj.bordercolor.value = st['border-color'];
-		updateColor('bordercolor_pick','bordercolor');
-	}
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/cell.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/cell.js
@@ -1,250 +1,250 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');

+	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');

+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')

+

+	var inst = tinyMCE.selectedInstance;

+	var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style"));

+

+	// Get table cell data

+	var celltype = tdElm.nodeName.toLowerCase();

+	var align = tinyMCE.getAttrib(tdElm, 'align');

+	var valign = tinyMCE.getAttrib(tdElm, 'valign');

+	var width = trimSize(getStyle(tdElm, 'width', 'width'));

+	var height = trimSize(getStyle(tdElm, 'height', 'height'));

+	var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));

+	var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));

+	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false);

+	var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;

+	var id = tinyMCE.getAttrib(tdElm, 'id');

+	var lang = tinyMCE.getAttrib(tdElm, 'lang');

+	var dir = tinyMCE.getAttrib(tdElm, 'dir');

+	var scope = tinyMCE.getAttrib(tdElm, 'scope');

+

+	// Setup form

+	addClassesToList('class', 'table_cell_styles');

+	formObj.bordercolor.value = bordercolor;

+	formObj.bgcolor.value = bgcolor;

+	formObj.backgroundimage.value = backgroundimage;

+	formObj.width.value = width;

+	formObj.height.value = height;

+	formObj.id.value = id;

+	formObj.lang.value = lang;

+	formObj.style.value = tinyMCE.serializeStyle(st);

+	selectByValue(formObj, 'align', align);

+	selectByValue(formObj, 'valign', valign);

+	selectByValue(formObj, 'class', className);

+	selectByValue(formObj, 'celltype', celltype);

+	selectByValue(formObj, 'dir', dir);

+	selectByValue(formObj, 'scope', scope);

+

+	// Resize some elements

+	if (isVisible('backgroundimagebrowser'))

+		document.getElementById('backgroundimage').style.width = '180px';

+

+	updateColor('bordercolor_pick', 'bordercolor');

+	updateColor('bgcolor_pick', 'bgcolor');

+}

+

+function updateAction() {

+	tinyMCEPopup.restoreSelection();

+

+	var inst = tinyMCE.selectedInstance;

+	var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");

+	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");

+	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");

+	var formObj = document.forms[0];

+

+	inst.execCommand('mceBeginUndoLevel');

+

+	switch (getSelectValue(formObj, 'action')) {

+		case "cell":

+			var celltype = getSelectValue(formObj, 'celltype');

+			var scope = getSelectValue(formObj, 'scope');

+

+			if (tinyMCE.getParam("accessibility_warnings")) {

+				if (celltype == "th" && scope == "")

+					var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true));

+				else

+					var answer = true;

+

+				if (!answer)

+					return;

+			}

+

+			updateCell(tdElm);

+			break;

+

+		case "row":

+			var cell = trElm.firstChild;

+

+			if (cell.nodeName != "TD" && cell.nodeName != "TH")

+				cell = nextCell(cell);

+

+			do {

+				cell = updateCell(cell, true);

+			} while ((cell = nextCell(cell)) != null);

+

+			break;

+

+		case "all":

+			var rows = tableElm.getElementsByTagName("tr");

+

+			for (var i=0; i<rows.length; i++) {

+				var cell = rows[i].firstChild;

+

+				if (cell.nodeName != "TD" && cell.nodeName != "TH")

+					cell = nextCell(cell);

+

+				do {

+					cell = updateCell(cell, true);

+				} while ((cell = nextCell(cell)) != null);

+			}

+

+			break;

+	}

+

+	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);

+	tinyMCE.triggerNodeChange();

+	inst.execCommand('mceEndUndoLevel');

+	tinyMCEPopup.close();

+}

+

+function nextCell(elm) {

+	while ((elm = elm.nextSibling) != null) {

+		if (elm.nodeName == "TD" || elm.nodeName == "TH")

+			return elm;

+	}

+

+	return null;

+}

+

+function updateCell(td, skip_id) {

+	var inst = tinyMCE.selectedInstance;

+	var formObj = document.forms[0];

+	var curCellType = td.nodeName.toLowerCase();

+	var celltype = getSelectValue(formObj, 'celltype');

+	var doc = inst.getDoc();

+

+	if (!skip_id)

+		td.setAttribute('id', formObj.id.value);

+

+	td.setAttribute('align', formObj.align.value);

+	td.setAttribute('vAlign', formObj.valign.value);

+	td.setAttribute('lang', formObj.lang.value);

+	td.setAttribute('dir', getSelectValue(formObj, 'dir'));

+	td.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));

+	td.setAttribute('scope', formObj.scope.value);

+	tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));

+

+	// Clear deprecated attributes

+	tinyMCE.setAttrib(td, 'width', '');

+	tinyMCE.setAttrib(td, 'height', '');

+	tinyMCE.setAttrib(td, 'bgColor', '');

+	tinyMCE.setAttrib(td, 'borderColor', '');

+	tinyMCE.setAttrib(td, 'background', '');

+

+	// Set styles

+	td.style.width = getCSSSize(formObj.width.value);

+	td.style.height = getCSSSize(formObj.height.value);

+	if (formObj.bordercolor.value != "") {

+		td.style.borderColor = formObj.bordercolor.value;

+		td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;

+		td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;

+	} else

+		td.style.borderColor = '';

+

+	td.style.backgroundColor = formObj.bgcolor.value;

+

+	if (formObj.backgroundimage.value != "")

+		td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";

+	else

+		td.style.backgroundImage = '';

+

+	if (curCellType != celltype) {

+		// changing to a different node type

+		var newCell = doc.createElement(celltype);

+

+		for (var c=0; c<td.childNodes.length; c++)

+			newCell.appendChild(td.childNodes[c].cloneNode(1));

+

+		for (var a=0; a<td.attributes.length; a++) {

+			var attr = td.attributes[a];

+			newCell.setAttribute(attr.name, attr.value);

+		}

+

+		td.parentNode.replaceChild(newCell, td);

+		td = newCell;

+	}

+

+	return td;

+}

+

+function changedBackgroundImage() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedSize() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	var width = formObj.width.value;

+	if (width != "")

+		st['width'] = getCSSSize(width);

+	else

+		st['width'] = "";

+

+	var height = formObj.height.value;

+	if (height != "")

+		st['height'] = getCSSSize(height);

+	else

+		st['height'] = "";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedColor() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	st['background-color'] = formObj.bgcolor.value;

+	st['border-color'] = formObj.bordercolor.value;

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedStyle() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	if (st['background-image'])

+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");

+	else

+		formObj.backgroundimage.value = '';

+

+	if (st['width'])

+		formObj.width.value = trimSize(st['width']);

+

+	if (st['height'])

+		formObj.height.value = trimSize(st['height']);

+

+	if (st['background-color']) {

+		formObj.bgcolor.value = st['background-color'];

+		updateColor('bgcolor_pick','bgcolor');

+	}

+

+	if (st['border-color']) {

+		formObj.bordercolor.value = st['border-color'];

+		updateColor('bordercolor_pick','bordercolor');

+	}

+}

 
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
-
-	var inst = tinyMCE.selectedInstance;
-	var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style"));
-
-	// Get table cell data
-	var celltype = tdElm.nodeName.toLowerCase();
-	var align = tinyMCE.getAttrib(tdElm, 'align');
-	var valign = tinyMCE.getAttrib(tdElm, 'valign');
-	var width = trimSize(getStyle(tdElm, 'width', 'width'));
-	var height = trimSize(getStyle(tdElm, 'height', 'height'));
-	var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
-	var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
-	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false);
-	var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
-	var id = tinyMCE.getAttrib(tdElm, 'id');
-	var lang = tinyMCE.getAttrib(tdElm, 'lang');
-	var dir = tinyMCE.getAttrib(tdElm, 'dir');
-	var scope = tinyMCE.getAttrib(tdElm, 'scope');
-
-	// Setup form
-	addClassesToList('class', 'table_cell_styles');
-	formObj.bordercolor.value = bordercolor;
-	formObj.bgcolor.value = bgcolor;
-	formObj.backgroundimage.value = backgroundimage;
-	formObj.width.value = width;
-	formObj.height.value = height;
-	formObj.id.value = id;
-	formObj.lang.value = lang;
-	formObj.style.value = tinyMCE.serializeStyle(st);
-	selectByValue(formObj, 'align', align);
-	selectByValue(formObj, 'valign', valign);
-	selectByValue(formObj, 'class', className);
-	selectByValue(formObj, 'celltype', celltype);
-	selectByValue(formObj, 'dir', dir);
-	selectByValue(formObj, 'scope', scope);
-
-	// Resize some elements
-	if (isVisible('backgroundimagebrowser'))
-		document.getElementById('backgroundimage').style.width = '180px';
-
-	updateColor('bordercolor_pick', 'bordercolor');
-	updateColor('bgcolor_pick', 'bgcolor');
-}
-
-function updateAction() {
-	tinyMCEPopup.restoreSelection();
-
-	var inst = tinyMCE.selectedInstance;
-	var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");
-	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
-	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-	var formObj = document.forms[0];
-
-	inst.execCommand('mceBeginUndoLevel');
-
-	switch (getSelectValue(formObj, 'action')) {
-		case "cell":
-			var celltype = getSelectValue(formObj, 'celltype');
-			var scope = getSelectValue(formObj, 'scope');
-
-			if (tinyMCE.getParam("accessibility_warnings")) {
-				if (celltype == "th" && scope == "")
-					var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true));
-				else
-					var answer = true;
-
-				if (!answer)
-					return;
-			}
-
-			updateCell(tdElm);
-			break;
-
-		case "row":
-			var cell = trElm.firstChild;
-
-			if (cell.nodeName != "TD" && cell.nodeName != "TH")
-				cell = nextCell(cell);
-
-			do {
-				cell = updateCell(cell, true);
-			} while ((cell = nextCell(cell)) != null);
-
-			break;
-
-		case "all":
-			var rows = tableElm.getElementsByTagName("tr");
-
-			for (var i=0; i<rows.length; i++) {
-				var cell = rows[i].firstChild;
-
-				if (cell.nodeName != "TD" && cell.nodeName != "TH")
-					cell = nextCell(cell);
-
-				do {
-					cell = updateCell(cell, true);
-				} while ((cell = nextCell(cell)) != null);
-			}
-
-			break;
-	}
-
-	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-	tinyMCE.triggerNodeChange();
-	inst.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function nextCell(elm) {
-	while ((elm = elm.nextSibling) != null) {
-		if (elm.nodeName == "TD" || elm.nodeName == "TH")
-			return elm;
-	}
-
-	return null;
-}
-
-function updateCell(td, skip_id) {
-	var inst = tinyMCE.selectedInstance;
-	var formObj = document.forms[0];
-	var curCellType = td.nodeName.toLowerCase();
-	var celltype = getSelectValue(formObj, 'celltype');
-	var doc = inst.getDoc();
-
-	if (!skip_id)
-		td.setAttribute('id', formObj.id.value);
-
-	td.setAttribute('align', formObj.align.value);
-	td.setAttribute('vAlign', formObj.valign.value);
-	td.setAttribute('lang', formObj.lang.value);
-	td.setAttribute('dir', getSelectValue(formObj, 'dir'));
-	td.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
-	td.setAttribute('scope', formObj.scope.value);
-	tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
-
-	// Clear deprecated attributes
-	tinyMCE.setAttrib(td, 'width', '');
-	tinyMCE.setAttrib(td, 'height', '');
-	tinyMCE.setAttrib(td, 'bgColor', '');
-	tinyMCE.setAttrib(td, 'borderColor', '');
-	tinyMCE.setAttrib(td, 'background', '');
-
-	// Set styles
-	td.style.width = getCSSSize(formObj.width.value);
-	td.style.height = getCSSSize(formObj.height.value);
-	if (formObj.bordercolor.value != "") {
-		td.style.borderColor = formObj.bordercolor.value;
-		td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
-		td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
-	} else
-		td.style.borderColor = '';
-
-	td.style.backgroundColor = formObj.bgcolor.value;
-
-	if (formObj.backgroundimage.value != "")
-		td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
-	else
-		td.style.backgroundImage = '';
-
-	if (curCellType != celltype) {
-		// changing to a different node type
-		var newCell = doc.createElement(celltype);
-
-		for (var c=0; c<td.childNodes.length; c++)
-			newCell.appendChild(td.childNodes[c].cloneNode(1));
-
-		for (var a=0; a<td.attributes.length; a++) {
-			var attr = td.attributes[a];
-			newCell.setAttribute(attr.name, attr.value);
-		}
-
-		td.parentNode.replaceChild(newCell, td);
-		td = newCell;
-	}
-
-	return td;
-}
-
-function changedBackgroundImage() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedSize() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	var width = formObj.width.value;
-	if (width != "")
-		st['width'] = getCSSSize(width);
-	else
-		st['width'] = "";
-
-	var height = formObj.height.value;
-	if (height != "")
-		st['height'] = getCSSSize(height);
-	else
-		st['height'] = "";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedColor() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	st['background-color'] = formObj.bgcolor.value;
-	st['border-color'] = formObj.bordercolor.value;
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedStyle() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	if (st['background-image'])
-		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-	else
-		formObj.backgroundimage.value = '';
-
-	if (st['width'])
-		formObj.width.value = trimSize(st['width']);
-
-	if (st['height'])
-		formObj.height.value = trimSize(st['height']);
-
-	if (st['background-color']) {
-		formObj.bgcolor.value = st['background-color'];
-		updateColor('bgcolor_pick','bgcolor');
-	}
-
-	if (st['border-color']) {
-		formObj.bordercolor.value = st['border-color'];
-		updateColor('bordercolor_pick','bordercolor');
-	}
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/merge_cells.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/merge_cells.js
@@ -1,25 +1,25 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var formObj = document.forms[0];

+

+	formObj.numcols.value = tinyMCE.getWindowArg('numcols', 1);

+	formObj.numrows.value = tinyMCE.getWindowArg('numrows', 1);

+}

+

+function mergeCells() {

+	var args = new Array();

+	var formObj = document.forms[0];

+

+	if (!AutoValidator.validate(formObj)) {

+		alert(tinyMCE.getLang('lang_invalid_data'));

+		return false;

+	}

+

+	args["numcols"] = formObj.numcols.value;

+	args["numrows"] = formObj.numrows.value;

+

+	tinyMCEPopup.execCommand("mceTableMergeCells", false, args);

+	tinyMCEPopup.close();

+}

 
-	var formObj = document.forms[0];
-
-	formObj.numcols.value = tinyMCE.getWindowArg('numcols', 1);
-	formObj.numrows.value = tinyMCE.getWindowArg('numrows', 1);
-}
-
-function mergeCells() {
-	var args = new Array();
-	var formObj = document.forms[0];
-
-	if (!AutoValidator.validate(formObj)) {
-		alert(tinyMCE.getLang('lang_invalid_data'));
-		return false;
-	}
-
-	args["numcols"] = formObj.numcols.value;
-	args["numrows"] = formObj.numrows.value;
-
-	tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/row.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/row.js
@@ -1,201 +1,201 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');

+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');

+

+	var inst = tinyMCE.selectedInstance;

+	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));

+

+	// Get table row data

+	var rowtype = trElm.parentNode.nodeName.toLowerCase();

+	var align = tinyMCE.getAttrib(trElm, 'align');

+	var valign = tinyMCE.getAttrib(trElm, 'valign');

+	var height = trimSize(getStyle(trElm, 'height', 'height'));

+	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'), false);

+	var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));

+	var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;

+	var id = tinyMCE.getAttrib(trElm, 'id');

+	var lang = tinyMCE.getAttrib(trElm, 'lang');

+	var dir = tinyMCE.getAttrib(trElm, 'dir');

+

+	// Setup form

+	addClassesToList('class', 'table_row_styles');

+	formObj.bgcolor.value = bgcolor;

+	formObj.backgroundimage.value = backgroundimage;

+	formObj.height.value = height;

+	formObj.id.value = id;

+	formObj.lang.value = lang;

+	formObj.style.value = tinyMCE.serializeStyle(st);

+	selectByValue(formObj, 'align', align);

+	selectByValue(formObj, 'valign', valign);

+	selectByValue(formObj, 'class', className);

+	selectByValue(formObj, 'rowtype', rowtype);

+	selectByValue(formObj, 'dir', dir);

+

+	// Resize some elements

+	if (isVisible('backgroundimagebrowser'))

+		document.getElementById('backgroundimage').style.width = '180px';

+

+	updateColor('bgcolor_pick', 'bgcolor');

+}

+

+function updateAction() {

+	tinyMCEPopup.restoreSelection();

+

+	var inst = tinyMCE.selectedInstance;

+	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");

+	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");

+	var formObj = document.forms[0];

+	var action = getSelectValue(formObj, 'action');

+

+	inst.execCommand('mceBeginUndoLevel');

+

+	switch (action) {

+		case "row":

+			updateRow(trElm);

+			break;

+

+		case "all":

+			var rows = tableElm.getElementsByTagName("tr");

+

+			for (var i=0; i<rows.length; i++)

+				updateRow(rows[i], true);

+

+			break;

+

+		case "odd":

+		case "even":

+			var rows = tableElm.getElementsByTagName("tr");

+

+			for (var i=0; i<rows.length; i++) {

+				if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))

+					updateRow(rows[i], true, true);

+			}

+

+			break;

+	}

+

+	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);

+	tinyMCE.triggerNodeChange();

+	inst.execCommand('mceEndUndoLevel');

+	tinyMCEPopup.close();

+}

+

+function updateRow(tr_elm, skip_id, skip_parent) {

+	var inst = tinyMCE.selectedInstance;

+	var formObj = document.forms[0];

+	var curRowType = tr_elm.parentNode.nodeName.toLowerCase();

+	var rowtype = getSelectValue(formObj, 'rowtype');

+	var doc = inst.getDoc();

+

+	// Update row element

+	if (!skip_id)

+		tr_elm.setAttribute('id', formObj.id.value);

+

+	tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));

+	tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));

+	tr_elm.setAttribute('lang', formObj.lang.value);

+	tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));

+	tr_elm.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));

+	tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));

+

+	// Clear deprecated attributes

+	tr_elm.setAttribute('background', '');

+	tr_elm.setAttribute('bgColor', '');

+	tr_elm.setAttribute('height', '');

+

+	// Set styles

+	tr_elm.style.height = getCSSSize(formObj.height.value);

+	tr_elm.style.backgroundColor = formObj.bgcolor.value;

+

+	if (formObj.backgroundimage.value != "")

+		tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";

+	else

+		tr_elm.style.backgroundImage = '';

+

+	// Setup new rowtype

+	if (curRowType != rowtype && !skip_parent) {

+		// first, clone the node we are working on

+		var newRow = tr_elm.cloneNode(1);

+

+		// next, find the parent of its new destination (creating it if necessary)

+		var theTable = tinyMCE.getParentElement(tr_elm, "table");

+		var dest = rowtype;

+		var newParent = null;

+		for (var i = 0; i < theTable.childNodes.length; i++) {

+			if (theTable.childNodes[i].nodeName.toLowerCase() == dest)

+				newParent = theTable.childNodes[i];

+		}

+

+		if (newParent == null) {

+			newParent = doc.createElement(dest);

+

+			if (dest == "thead")

+				theTable.insertBefore(newParent, theTable.firstChild);

+			else

+				theTable.appendChild(newParent);

+		}

+

+		// append the row to the new parent

+		newParent.appendChild(newRow);

+

+		// remove the original

+		tr_elm.parentNode.removeChild(tr_elm);

+

+		// set tr_elm to the new node

+		tr_elm = newRow;

+	}

+}

+

+function changedBackgroundImage() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedStyle() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	if (st['background-image'])

+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");

+	else

+		formObj.backgroundimage.value = '';

+

+	if (st['height'])

+		formObj.height.value = trimSize(st['height']);

+

+	if (st['background-color']) {

+		formObj.bgcolor.value = st['background-color'];

+		updateColor('bgcolor_pick','bgcolor');

+	}

+}

+

+function changedSize() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	var height = formObj.height.value;

+	if (height != "")

+		st['height'] = getCSSSize(height);

+	else

+		st['height'] = "";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedColor() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	st['background-color'] = formObj.bgcolor.value;

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

 
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
-	var inst = tinyMCE.selectedInstance;
-	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));
-
-	// Get table row data
-	var rowtype = trElm.parentNode.nodeName.toLowerCase();
-	var align = tinyMCE.getAttrib(trElm, 'align');
-	var valign = tinyMCE.getAttrib(trElm, 'valign');
-	var height = trimSize(getStyle(trElm, 'height', 'height'));
-	var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'), false);
-	var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
-	var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
-	var id = tinyMCE.getAttrib(trElm, 'id');
-	var lang = tinyMCE.getAttrib(trElm, 'lang');
-	var dir = tinyMCE.getAttrib(trElm, 'dir');
-
-	// Setup form
-	addClassesToList('class', 'table_row_styles');
-	formObj.bgcolor.value = bgcolor;
-	formObj.backgroundimage.value = backgroundimage;
-	formObj.height.value = height;
-	formObj.id.value = id;
-	formObj.lang.value = lang;
-	formObj.style.value = tinyMCE.serializeStyle(st);
-	selectByValue(formObj, 'align', align);
-	selectByValue(formObj, 'valign', valign);
-	selectByValue(formObj, 'class', className);
-	selectByValue(formObj, 'rowtype', rowtype);
-	selectByValue(formObj, 'dir', dir);
-
-	// Resize some elements
-	if (isVisible('backgroundimagebrowser'))
-		document.getElementById('backgroundimage').style.width = '180px';
-
-	updateColor('bgcolor_pick', 'bgcolor');
-}
-
-function updateAction() {
-	tinyMCEPopup.restoreSelection();
-
-	var inst = tinyMCE.selectedInstance;
-	var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
-	var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-	var formObj = document.forms[0];
-	var action = getSelectValue(formObj, 'action');
-
-	inst.execCommand('mceBeginUndoLevel');
-
-	switch (action) {
-		case "row":
-			updateRow(trElm);
-			break;
-
-		case "all":
-			var rows = tableElm.getElementsByTagName("tr");
-
-			for (var i=0; i<rows.length; i++)
-				updateRow(rows[i], true);
-
-			break;
-
-		case "odd":
-		case "even":
-			var rows = tableElm.getElementsByTagName("tr");
-
-			for (var i=0; i<rows.length; i++) {
-				if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
-					updateRow(rows[i], true, true);
-			}
-
-			break;
-	}
-
-	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-	tinyMCE.triggerNodeChange();
-	inst.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function updateRow(tr_elm, skip_id, skip_parent) {
-	var inst = tinyMCE.selectedInstance;
-	var formObj = document.forms[0];
-	var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
-	var rowtype = getSelectValue(formObj, 'rowtype');
-	var doc = inst.getDoc();
-
-	// Update row element
-	if (!skip_id)
-		tr_elm.setAttribute('id', formObj.id.value);
-
-	tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
-	tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
-	tr_elm.setAttribute('lang', formObj.lang.value);
-	tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
-	tr_elm.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
-	tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
-
-	// Clear deprecated attributes
-	tr_elm.setAttribute('background', '');
-	tr_elm.setAttribute('bgColor', '');
-	tr_elm.setAttribute('height', '');
-
-	// Set styles
-	tr_elm.style.height = getCSSSize(formObj.height.value);
-	tr_elm.style.backgroundColor = formObj.bgcolor.value;
-
-	if (formObj.backgroundimage.value != "")
-		tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
-	else
-		tr_elm.style.backgroundImage = '';
-
-	// Setup new rowtype
-	if (curRowType != rowtype && !skip_parent) {
-		// first, clone the node we are working on
-		var newRow = tr_elm.cloneNode(1);
-
-		// next, find the parent of its new destination (creating it if necessary)
-		var theTable = tinyMCE.getParentElement(tr_elm, "table");
-		var dest = rowtype;
-		var newParent = null;
-		for (var i = 0; i < theTable.childNodes.length; i++) {
-			if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
-				newParent = theTable.childNodes[i];
-		}
-
-		if (newParent == null) {
-			newParent = doc.createElement(dest);
-
-			if (dest == "thead")
-				theTable.insertBefore(newParent, theTable.firstChild);
-			else
-				theTable.appendChild(newParent);
-		}
-
-		// append the row to the new parent
-		newParent.appendChild(newRow);
-
-		// remove the original
-		tr_elm.parentNode.removeChild(tr_elm);
-
-		// set tr_elm to the new node
-		tr_elm = newRow;
-	}
-}
-
-function changedBackgroundImage() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedStyle() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	if (st['background-image'])
-		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-	else
-		formObj.backgroundimage.value = '';
-
-	if (st['height'])
-		formObj.height.value = trimSize(st['height']);
-
-	if (st['background-color']) {
-		formObj.bgcolor.value = st['background-color'];
-		updateColor('bgcolor_pick','bgcolor');
-	}
-}
-
-function changedSize() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	var height = formObj.height.value;
-	if (height != "")
-		st['height'] = getCSSSize(height);
-	else
-		st['height'] = "";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedColor() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	st['background-color'] = formObj.bgcolor.value;
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/table.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/jscripts/table.js
@@ -1,365 +1,365 @@
-var action, orgTableWidth, orgTableHeight;
+var action, orgTableWidth, orgTableHeight;

+

+function insertTable() {

+	var formObj = document.forms[0];

+	var inst = tinyMCE.selectedInstance;

+	var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption;

+	var html = '', capEl;

+	var elm = tinyMCE.tableElm;

+	var cellLimit, rowLimit, colLimit;

+

+	if (!AutoValidator.validate(formObj)) {

+		alert(tinyMCE.getLang('lang_invalid_data'));

+		return false;

+	}

+

+	tinyMCEPopup.restoreSelection();

+

+	// Get form data

+	cols = formObj.elements['cols'].value;

+	rows = formObj.elements['rows'].value;

+	border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;

+	cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";

+	cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";

+	align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;

+	width = formObj.elements['width'].value;

+	height = formObj.elements['height'].value;

+	bordercolor = formObj.elements['bordercolor'].value;

+	bgcolor = formObj.elements['bgcolor'].value;

+	className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;

+	id = formObj.elements['id'].value;

+	summary = formObj.elements['summary'].value;

+	style = formObj.elements['style'].value;

+	dir = formObj.elements['dir'].value;

+	lang = formObj.elements['lang'].value;

+	background = formObj.elements['backgroundimage'].value;

+	caption = formObj.elements['caption'].checked;

+

+	cellLimit = tinyMCE.getParam('table_cell_limit', false);

+	rowLimit = tinyMCE.getParam('table_row_limit', false);

+	colLimit = tinyMCE.getParam('table_col_limit', false);

+

+	// Validate table size

+	if (colLimit && cols > colLimit) {

+		alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit}));

+		return false;

+	} else if (rowLimit && rows > rowLimit) {

+		alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit}));

+		return false;

+	} else if (cellLimit && cols * rows > cellLimit) {

+		alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit}));

+		return false;

+	}

+

+	// Update table

+	if (action == "update") {

+		inst.execCommand('mceBeginUndoLevel');

+

+		tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);

+		tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);

+		tinyMCE.setAttrib(elm, 'border', border, true);

+		tinyMCE.setAttrib(elm, 'align', align);

+		tinyMCE.setAttrib(elm, 'class', className);

+		tinyMCE.setAttrib(elm, 'style', style);

+		tinyMCE.setAttrib(elm, 'id', id);

+		tinyMCE.setAttrib(elm, 'summary', summary);

+		tinyMCE.setAttrib(elm, 'dir', dir);

+		tinyMCE.setAttrib(elm, 'lang', lang);

+

+		capEl = elm.getElementsByTagName('caption')[0];

+

+		if (capEl && !caption)

+			capEl.parentNode.removeChild(capEl);

+

+		if (!capEl && caption) {

+			capEl = elm.ownerDocument.createElement('caption');

+			capEl.innerHTML = '&nbsp;';

+			elm.insertBefore(capEl, elm.firstChild);

+		}

+

+		// Not inline styles

+		if (!tinyMCE.getParam("inline_styles"))

+			tinyMCE.setAttrib(elm, 'width', width, true);

+

+		// Remove these since they are not valid XHTML

+		tinyMCE.setAttrib(elm, 'borderColor', '');

+		tinyMCE.setAttrib(elm, 'bgColor', '');

+		tinyMCE.setAttrib(elm, 'background', '');

+		tinyMCE.setAttrib(elm, 'height', '');

+

+		if (background != '')

+			elm.style.backgroundImage = "url('" + background + "')";

+		else

+			elm.style.backgroundImage = '';

+

+		if (tinyMCE.getParam("inline_styles"))

+			elm.style.borderWidth = border + "px";

+

+		if (tinyMCE.getParam("inline_styles")) {

+			if (width != '')

+				elm.style.width = getCSSSize(width);

+		}

+

+		if (bordercolor != "") {

+			elm.style.borderColor = bordercolor;

+			elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;

+			elm.style.borderWidth = border == "" ? "1px" : border;

+		} else

+			elm.style.borderColor = '';

+

+		elm.style.backgroundColor = bgcolor;

+		elm.style.height = getCSSSize(height);

+

+		tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);

+

+		// Fix for stange MSIE align bug

+		tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;

+

+		tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);

+		tinyMCE.triggerNodeChange();

+		inst.execCommand('mceEndUndoLevel');

+

+		// Repaint if dimensions changed

+		if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)

+			inst.repaint();

+

+		tinyMCEPopup.close();

+		return true;

+	}

+

+	// Create new table

+	html += '<table';

+

+	html += makeAttrib('id', id);

+	html += makeAttrib('border', border);

+	html += makeAttrib('cellpadding', cellpadding);

+	html += makeAttrib('cellspacing', cellspacing);

+	html += makeAttrib('width', width);

+	//html += makeAttrib('height', height);

+	//html += makeAttrib('bordercolor', bordercolor);

+	//html += makeAttrib('bgcolor', bgcolor);

+	html += makeAttrib('align', align);

+	html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));

+	html += makeAttrib('style', style);

+	html += makeAttrib('summary', summary);

+	html += makeAttrib('dir', dir);

+	html += makeAttrib('lang', lang);

+	html += '>';

+

+	if (caption)

+		html += '<caption>&nbsp;</caption>';

+

+	for (var y=0; y<rows; y++) {

+		html += "<tr>";

+

+		for (var x=0; x<cols; x++)

+			html += '<td>&nbsp;</td>';

+

+		html += "</tr>";

+	}

+

+	html += "</table>";

+

+	inst.execCommand('mceBeginUndoLevel');

+	inst.execCommand('mceInsertContent', false, html);

+	tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);

+	inst.execCommand('mceEndUndoLevel');

+

+	tinyMCEPopup.close();

+}

+

+function makeAttrib(attrib, value) {

+	var formObj = document.forms[0];

+	var valueElm = formObj.elements[attrib];

+

+	if (typeof(value) == "undefined" || value == null) {

+		value = "";

+

+		if (valueElm)

+			value = valueElm.value;

+	}

+

+	if (value == "")

+		return "";

+

+	// XML encode it

+	value = value.replace(/&/g, '&amp;');

+	value = value.replace(/\"/g, '&quot;');

+	value = value.replace(/</g, '&lt;');

+	value = value.replace(/>/g, '&gt;');

+

+	return ' ' + attrib + '="' + value + '"';

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');

+	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');

+	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');

+	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');

+

+	var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');

+	var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";

+	var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";

+	var inst = tinyMCE.selectedInstance;

+	var formObj = document.forms[0];

+	var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");

+

+	tinyMCE.tableElm = elm;

+	action = tinyMCE.getWindowArg('action');

+	if (action == null)

+		action = tinyMCE.tableElm ? "update" : "insert";

+

+	if (tinyMCE.tableElm && action != "insert") {

+		var rowsAr = tinyMCE.tableElm.rows;

+		var cols = 0;

+		for (var i=0; i<rowsAr.length; i++)

+			if (rowsAr[i].cells.length > cols)

+				cols = rowsAr[i].cells.length;

+

+		cols = cols;

+		rows = rowsAr.length;

+

+		st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));

+		border = trimSize(getStyle(elm, 'border', 'borderWidth'));

+		cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");

+		cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");

+		width = trimSize(getStyle(elm, 'width', 'width'));

+		height = trimSize(getStyle(elm, 'height', 'height'));

+		bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));

+		bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));

+		align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);

+		className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);

+		id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');

+		summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');

+		style = tinyMCE.serializeStyle(st);

+		dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');

+		lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');

+		background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");

+		formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0;

+

+		orgTableWidth = width;

+		orgTableHeight = height;

+

+		action = "update";

+	}

+

+	addClassesToList('class', "table_styles");

+

+	// Update form

+	selectByValue(formObj, 'align', align);

+	selectByValue(formObj, 'class', className);

+	formObj.cols.value = cols;

+	formObj.rows.value = rows;

+	formObj.border.value = border;

+	formObj.cellpadding.value = cellpadding;

+	formObj.cellspacing.value = cellspacing;

+	formObj.width.value = width;

+	formObj.height.value = height;

+	formObj.bordercolor.value = bordercolor;

+	formObj.bgcolor.value = bgcolor;

+	formObj.id.value = id;

+	formObj.summary.value = summary;

+	formObj.style.value = style;

+	formObj.dir.value = dir;

+	formObj.lang.value = lang;

+	formObj.backgroundimage.value = background;

+	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 

+

+	updateColor('bordercolor_pick', 'bordercolor');

+	updateColor('bgcolor_pick', 'bgcolor');

+

+	// Resize some elements

+	if (isVisible('backgroundimagebrowser'))

+		document.getElementById('backgroundimage').style.width = '180px';

+

+	// Disable some fields in update mode

+	if (action == "update") {

+		formObj.cols.disabled = true;

+		formObj.rows.disabled = true;

+	}

+}

+

+function changedSize() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	var width = formObj.width.value;

+	if (width != "")

+		st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";

+	else

+		st['width'] = "";

+

+	var height = formObj.height.value;

+	if (height != "")

+		st['height'] = getCSSSize(height);

+	else

+		st['height'] = "";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedBackgroundImage() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedBorder() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	// Update border width if the element has a color

+	if (formObj.border.value != "" && formObj.bordercolor.value != "")

+		st['border-width'] = formObj.border.value + "px";

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedColor() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	st['background-color'] = formObj.bgcolor.value;

+

+	if (formObj.bordercolor.value != "") {

+		st['border-color'] = formObj.bordercolor.value;

+

+		// Add border-width if it's missing

+		if (!st['border-width'])

+			st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";

+	}

+

+	formObj.style.value = tinyMCE.serializeStyle(st);

+}

+

+function changedStyle() {

+	var formObj = document.forms[0];

+	var st = tinyMCE.parseStyle(formObj.style.value);

+

+	if (st['background-image'])

+		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");

+	else

+		formObj.backgroundimage.value = '';

+

+	if (st['width'])

+		formObj.width.value = trimSize(st['width']);

+

+	if (st['height'])

+		formObj.height.value = trimSize(st['height']);

+

+	if (st['background-color']) {

+		formObj.bgcolor.value = st['background-color'];

+		updateColor('bgcolor_pick','bgcolor');

+	}

+

+	if (st['border-color']) {

+		formObj.bordercolor.value = st['border-color'];

+		updateColor('bordercolor_pick','bordercolor');

+	}

+}

 
-function insertTable() {
-	var formObj = document.forms[0];
-	var inst = tinyMCE.selectedInstance;
-	var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption;
-	var html = '', capEl;
-	var elm = tinyMCE.tableElm;
-	var cellLimit, rowLimit, colLimit;
-
-	if (!AutoValidator.validate(formObj)) {
-		alert(tinyMCE.getLang('lang_invalid_data'));
-		return false;
-	}
-
-	tinyMCEPopup.restoreSelection();
-
-	// Get form data
-	cols = formObj.elements['cols'].value;
-	rows = formObj.elements['rows'].value;
-	border = formObj.elements['border'].value != "" ? formObj.elements['border'].value  : 0;
-	cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
-	cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
-	align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
-	width = formObj.elements['width'].value;
-	height = formObj.elements['height'].value;
-	bordercolor = formObj.elements['bordercolor'].value;
-	bgcolor = formObj.elements['bgcolor'].value;
-	className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
-	id = formObj.elements['id'].value;
-	summary = formObj.elements['summary'].value;
-	style = formObj.elements['style'].value;
-	dir = formObj.elements['dir'].value;
-	lang = formObj.elements['lang'].value;
-	background = formObj.elements['backgroundimage'].value;
-	caption = formObj.elements['caption'].checked;
-
-	cellLimit = tinyMCE.getParam('table_cell_limit', false);
-	rowLimit = tinyMCE.getParam('table_row_limit', false);
-	colLimit = tinyMCE.getParam('table_col_limit', false);
-
-	// Validate table size
-	if (colLimit && cols > colLimit) {
-		alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit}));
-		return false;
-	} else if (rowLimit && rows > rowLimit) {
-		alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit}));
-		return false;
-	} else if (cellLimit && cols * rows > cellLimit) {
-		alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit}));
-		return false;
-	}
-
-	// Update table
-	if (action == "update") {
-		inst.execCommand('mceBeginUndoLevel');
-
-		tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true);
-		tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true);
-		tinyMCE.setAttrib(elm, 'border', border, true);
-		tinyMCE.setAttrib(elm, 'align', align);
-		tinyMCE.setAttrib(elm, 'class', className);
-		tinyMCE.setAttrib(elm, 'style', style);
-		tinyMCE.setAttrib(elm, 'id', id);
-		tinyMCE.setAttrib(elm, 'summary', summary);
-		tinyMCE.setAttrib(elm, 'dir', dir);
-		tinyMCE.setAttrib(elm, 'lang', lang);
-
-		capEl = elm.getElementsByTagName('caption')[0];
-
-		if (capEl && !caption)
-			capEl.parentNode.removeChild(capEl);
-
-		if (!capEl && caption) {
-			capEl = elm.ownerDocument.createElement('caption');
-			capEl.innerHTML = '&nbsp;';
-			elm.insertBefore(capEl, elm.firstChild);
-		}
-
-		// Not inline styles
-		if (!tinyMCE.getParam("inline_styles"))
-			tinyMCE.setAttrib(elm, 'width', width, true);
-
-		// Remove these since they are not valid XHTML
-		tinyMCE.setAttrib(elm, 'borderColor', '');
-		tinyMCE.setAttrib(elm, 'bgColor', '');
-		tinyMCE.setAttrib(elm, 'background', '');
-		tinyMCE.setAttrib(elm, 'height', '');
-
-		if (background != '')
-			elm.style.backgroundImage = "url('" + background + "')";
-		else
-			elm.style.backgroundImage = '';
-
-		if (tinyMCE.getParam("inline_styles"))
-			elm.style.borderWidth = border + "px";
-
-		if (tinyMCE.getParam("inline_styles")) {
-			if (width != '')
-				elm.style.width = getCSSSize(width);
-		}
-
-		if (bordercolor != "") {
-			elm.style.borderColor = bordercolor;
-			elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
-			elm.style.borderWidth = border == "" ? "1px" : border;
-		} else
-			elm.style.borderColor = '';
-
-		elm.style.backgroundColor = bgcolor;
-		elm.style.height = getCSSSize(height);
-
-		tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst);
-
-		// Fix for stange MSIE align bug
-		tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML;
-
-		tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-		tinyMCE.triggerNodeChange();
-		inst.execCommand('mceEndUndoLevel');
-
-		// Repaint if dimensions changed
-		if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
-			inst.repaint();
-
-		tinyMCEPopup.close();
-		return true;
-	}
-
-	// Create new table
-	html += '<table';
-
-	html += makeAttrib('id', id);
-	html += makeAttrib('border', border);
-	html += makeAttrib('cellpadding', cellpadding);
-	html += makeAttrib('cellspacing', cellspacing);
-	html += makeAttrib('width', width);
-	//html += makeAttrib('height', height);
-	//html += makeAttrib('bordercolor', bordercolor);
-	//html += makeAttrib('bgcolor', bgcolor);
-	html += makeAttrib('align', align);
-	html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
-	html += makeAttrib('style', style);
-	html += makeAttrib('summary', summary);
-	html += makeAttrib('dir', dir);
-	html += makeAttrib('lang', lang);
-	html += '>';
-
-	if (caption)
-		html += '<caption>&nbsp;</caption>';
-
-	for (var y=0; y<rows; y++) {
-		html += "<tr>";
-
-		for (var x=0; x<cols; x++)
-			html += '<td>&nbsp;</td>';
-
-		html += "</tr>";
-	}
-
-	html += "</table>";
-
-	inst.execCommand('mceBeginUndoLevel');
-	inst.execCommand('mceInsertContent', false, html);
-	tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
-	inst.execCommand('mceEndUndoLevel');
-
-	tinyMCEPopup.close();
-}
-
-function makeAttrib(attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value == "")
-		return "";
-
-	// XML encode it
-	value = value.replace(/&/g, '&amp;');
-	value = value.replace(/\"/g, '&quot;');
-	value = value.replace(/</g, '&lt;');
-	value = value.replace(/>/g, '&gt;');
-
-	return ' ' + attrib + '="' + value + '"';
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
-	document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
-	document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
-	var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');
-	var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
-	var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
-	var inst = tinyMCE.selectedInstance;
-	var formObj = document.forms[0];
-	var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
-
-	tinyMCE.tableElm = elm;
-	action = tinyMCE.getWindowArg('action');
-	if (action == null)
-		action = tinyMCE.tableElm ? "update" : "insert";
-
-	if (tinyMCE.tableElm && action != "insert") {
-		var rowsAr = tinyMCE.tableElm.rows;
-		var cols = 0;
-		for (var i=0; i<rowsAr.length; i++)
-			if (rowsAr[i].cells.length > cols)
-				cols = rowsAr[i].cells.length;
-
-		cols = cols;
-		rows = rowsAr.length;
-
-		st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style"));
-		border = trimSize(getStyle(elm, 'border', 'borderWidth'));
-		cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', "");
-		cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', "");
-		width = trimSize(getStyle(elm, 'width', 'width'));
-		height = trimSize(getStyle(elm, 'height', 'height'));
-		bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
-		bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
-		align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align);
-		className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false);
-		id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id');
-		summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary');
-		style = tinyMCE.serializeStyle(st);
-		dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir');
-		lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang');
-		background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-		formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0;
-
-		orgTableWidth = width;
-		orgTableHeight = height;
-
-		action = "update";
-	}
-
-	addClassesToList('class', "table_styles");
-
-	// Update form
-	selectByValue(formObj, 'align', align);
-	selectByValue(formObj, 'class', className);
-	formObj.cols.value = cols;
-	formObj.rows.value = rows;
-	formObj.border.value = border;
-	formObj.cellpadding.value = cellpadding;
-	formObj.cellspacing.value = cellspacing;
-	formObj.width.value = width;
-	formObj.height.value = height;
-	formObj.bordercolor.value = bordercolor;
-	formObj.bgcolor.value = bgcolor;
-	formObj.id.value = id;
-	formObj.summary.value = summary;
-	formObj.style.value = style;
-	formObj.dir.value = dir;
-	formObj.lang.value = lang;
-	formObj.backgroundimage.value = background;
-	formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); 
-
-	updateColor('bordercolor_pick', 'bordercolor');
-	updateColor('bgcolor_pick', 'bgcolor');
-
-	// Resize some elements
-	if (isVisible('backgroundimagebrowser'))
-		document.getElementById('backgroundimage').style.width = '180px';
-
-	// Disable some fields in update mode
-	if (action == "update") {
-		formObj.cols.disabled = true;
-		formObj.rows.disabled = true;
-	}
-}
-
-function changedSize() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	var width = formObj.width.value;
-	if (width != "")
-		st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : "";
-	else
-		st['width'] = "";
-
-	var height = formObj.height.value;
-	if (height != "")
-		st['height'] = getCSSSize(height);
-	else
-		st['height'] = "";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedBackgroundImage() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedBorder() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	// Update border width if the element has a color
-	if (formObj.border.value != "" && formObj.bordercolor.value != "")
-		st['border-width'] = formObj.border.value + "px";
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedColor() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	st['background-color'] = formObj.bgcolor.value;
-
-	if (formObj.bordercolor.value != "") {
-		st['border-color'] = formObj.bordercolor.value;
-
-		// Add border-width if it's missing
-		if (!st['border-width'])
-			st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
-	}
-
-	formObj.style.value = tinyMCE.serializeStyle(st);
-}
-
-function changedStyle() {
-	var formObj = document.forms[0];
-	var st = tinyMCE.parseStyle(formObj.style.value);
-
-	if (st['background-image'])
-		formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-	else
-		formObj.backgroundimage.value = '';
-
-	if (st['width'])
-		formObj.width.value = trimSize(st['width']);
-
-	if (st['height'])
-		formObj.height.value = trimSize(st['height']);
-
-	if (st['background-color']) {
-		formObj.bgcolor.value = st['background-color'];
-		updateColor('bgcolor_pick','bgcolor');
-	}
-
-	if (st['border-color']) {
-		formObj.bordercolor.value = st['border-color'];
-		updateColor('bordercolor_pick','bordercolor');
-	}
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/langs/en.js
@@ -1,80 +1,80 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('table',{

+general_tab : 'General',

+advanced_tab : 'Advanced',

+general_props : 'General properties',

+advanced_props : 'Advanced properties',

+desc : 'Inserts a new table',

+row_before_desc : 'Insert row before',

+row_after_desc : 'Insert row after',

+delete_row_desc : 'Delete row',

+col_before_desc : 'Insert column before',

+col_after_desc : 'Insert column after',

+delete_col_desc : 'Remove column',

+rowtype : 'Row in table part',

+title : 'Insert/Modify table',

+width : 'Width',

+height : 'Height',

+cols : 'Columns',

+rows : 'Rows',

+cellspacing : 'Cellspacing',

+cellpadding : 'Cellpadding',

+border : 'Border',

+align : 'Alignment',

+align_default : 'Default',

+align_left : 'Left',

+align_right : 'Right',

+align_middle : 'Center',

+row_title : 'Table row properties',

+cell_title : 'Table cell properties',

+cell_type : 'Cell type',

+row_desc : 'Table row properties',

+cell_desc : 'Table cell properties',

+valign : 'Vertical alignment',

+align_top : 'Top',

+align_bottom : 'Bottom',

+props_desc : 'Table properties',

+bordercolor : 'Border color',

+bgcolor : 'Background color',

+merge_cells_title : 'Merge table cells',

+split_cells_desc : 'Split merged table cells',

+merge_cells_desc : 'Merge table cells',

+cut_row_desc : 'Cut table row',

+copy_row_desc : 'Copy table row',

+paste_row_before_desc : 'Paste table row before',

+paste_row_after_desc : 'Paste table row after',

+id : 'Id',

+style: 'Style',

+langdir : 'Language direction',

+langcode : 'Language code',

+mime : 'Target MIME type',

+ltr : 'Left to right',

+rtl : 'Right to left',

+bgimage : 'Background image',

+summary : 'Summary',

+td : "Data",

+th : "Header",

+cell_cell : 'Update current cell',

+cell_row : 'Update all cells in row',

+cell_all : 'Update all cells in table',

+row_row : 'Update current row',

+row_odd : 'Update odd rows in table',

+row_even : 'Update even rows in table',

+row_all : 'Update all rows in table',

+thead : 'Table Head',

+tbody : 'Table Body',

+tfoot : 'Table Foot',

+del : 'Delete table',

+scope : 'Scope',

+row : 'Row',

+col : 'Col',

+rowgroup : 'Row Group',

+colgroup : 'Col Group',

+col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.',

+row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.',

+cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.',

+missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.',

+caption : 'Table caption'

+});

 
-tinyMCE.addToLang('table',{
-general_tab : 'General',
-advanced_tab : 'Advanced',
-general_props : 'General properties',
-advanced_props : 'Advanced properties',
-desc : 'Inserts a new table',
-row_before_desc : 'Insert row before',
-row_after_desc : 'Insert row after',
-delete_row_desc : 'Delete row',
-col_before_desc : 'Insert column before',
-col_after_desc : 'Insert column after',
-delete_col_desc : 'Remove column',
-rowtype : 'Row in table part',
-title : 'Insert/Modify table',
-width : 'Width',
-height : 'Height',
-cols : 'Columns',
-rows : 'Rows',
-cellspacing : 'Cellspacing',
-cellpadding : 'Cellpadding',
-border : 'Border',
-align : 'Alignment',
-align_default : 'Default',
-align_left : 'Left',
-align_right : 'Right',
-align_middle : 'Center',
-row_title : 'Table row properties',
-cell_title : 'Table cell properties',
-cell_type : 'Cell type',
-row_desc : 'Table row properties',
-cell_desc : 'Table cell properties',
-valign : 'Vertical alignment',
-align_top : 'Top',
-align_bottom : 'Bottom',
-props_desc : 'Table properties',
-bordercolor : 'Border color',
-bgcolor : 'Background color',
-merge_cells_title : 'Merge table cells',
-split_cells_desc : 'Split table cells',
-merge_cells_desc : 'Merge table cells',
-cut_row_desc : 'Cut table row',
-copy_row_desc : 'Copy table row',
-paste_row_before_desc : 'Paste table row before',
-paste_row_after_desc : 'Paste table row after',
-id : 'Id',
-style: 'Style',
-langdir : 'Language direction',
-langcode : 'Language code',
-mime : 'Target MIME type',
-ltr : 'Left to right',
-rtl : 'Right to left',
-bgimage : 'Background image',
-summary : 'Summary',
-td : "Data",
-th : "Header",
-cell_cell : 'Update current cell',
-cell_row : 'Update all cells in row',
-cell_all : 'Update all cells in table',
-row_row : 'Update current row',
-row_odd : 'Update odd rows in table',
-row_even : 'Update even rows in table',
-row_all : 'Update all rows in table',
-thead : 'Table Head',
-tbody : 'Table Body',
-tfoot : 'Table Foot',
-del : 'Delete table',
-scope : 'Scope',
-row : 'Row',
-col : 'Col',
-rowgroup : 'Row Group',
-colgroup : 'Col Group',
-col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.',
-row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.',
-cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.',
-missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.',
-caption : 'Table caption'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/langs/en_dlg.js
+++ /dev/null
@@ -1,74 +1,1 @@
-tinyMCE.addI18n('en.table_dlg',{
-general_tab:"General",
-advanced_tab:"Advanced",
-general_props:"General properties",
-advanced_props:"Advanced properties",
-rowtype:"Row in table part",
-title:"Insert/Modify table",
-width:"Width",
-height:"Height",
-cols:"Cols",
-rows:"Rows",
-cellspacing:"Cellspacing",
-cellpadding:"Cellpadding",
-border:"Border",
-align:"Alignment",
-align_default:"Default",
-align_left:"Left",
-align_right:"Right",
-align_middle:"Center",
-row_title:"Table row properties",
-cell_title:"Table cell properties",
-cell_type:"Cell type",
-valign:"Vertical alignment",
-align_top:"Top",
-align_bottom:"Bottom",
-bordercolor:"Border color",
-bgcolor:"Background color",
-merge_cells_title:"Merge table cells",
-id:"Id",
-style:"Style",
-langdir:"Language direction",
-langcode:"Language code",
-mime:"Target MIME type",
-ltr:"Left to right",
-rtl:"Right to left",
-bgimage:"Background image",
-summary:"Summary",
-td:"Data",
-th:"Header",
-cell_cell:"Update current cell",
-cell_row:"Update all cells in row",
-cell_all:"Update all cells in table",
-row_row:"Update current row",
-row_odd:"Update odd rows in table",
-row_even:"Update even rows in table",
-row_all:"Update all rows in table",
-thead:"Table Head",
-tbody:"Table Body",
-tfoot:"Table Foot",
-scope:"Scope",
-rowgroup:"Row Group",
-colgroup:"Col Group",
-col_limit:"You've exceeded the maximum number of columns of {$cols}.",
-row_limit:"You've exceeded the maximum number of rows of {$rows}.",
-cell_limit:"You've exceeded the maximum number of cells of {$cells}.",
-missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",
-caption:"Table caption",
-frame:"Frame",
-frame_none:"none",
-frame_groups:"groups",
-frame_rows:"rows",
-frame_cols:"cols",
-frame_all:"all",
-rules:"Rules",
-rules_void:"void",
-rules_above:"above",
-rules_below:"below",
-rules_hsides:"hsides",
-rules_lhs:"lhs",
-rules_rhs:"rhs",
-rules_vsides:"vsides",
-rules_box:"box",
-rules_border:"border"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/merge_cells.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/merge_cells.htm
@@ -1,39 +1,39 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#table_dlg.merge_cells_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/validate.js"></script>
-	<script type="text/javascript" src="js/merge_cells.js"></script>
-	<base target="_self" />
-</head>
-<body style="margin: 8px" style="display: none">
-<form onsubmit="mergeCells();return false;" action="#">
-	<fieldset>
-		<legend>{#table_dlg.merge_cells_title}</legend>
-		  <table border="0" cellpadding="0" cellspacing="3" width="100%">
-			  <tr>
-				<td>{#table_dlg.cols}:</td>
-				<td align="right"><input type="text" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" /></td>
-			  </tr>
-			  <tr>
-				<td>{#table_dlg.rows}:</td>
-				<td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
-			  </tr>
-		  </table>
-	</fieldset>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_table_merge_cells_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/merge_cells.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="margin: 8px" style="display: none">

+<form onsubmit="insertTable();return false;" action="#">

+	<fieldset>

+		<legend>{$lang_table_merge_cells_title}</legend>

+		  <table border="0" cellpadding="0" cellspacing="3" width="100%">

+			  <tr>

+				<td>{$lang_table_cols}:</td>

+				<td align="right"><input type="text" name="numcols" value="" class="number min1" style="width: 30px" /></td>

+				<td>

+			  </tr>

+			  <tr>

+				<td>{$lang_table_rows}:</td>

+				<td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>

+			  </tr>

+		  </table>

+	</fieldset>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="mergeCells();" />

+		</div>

+

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+</form>

+</body>

+</html>

 
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/row.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/row.htm
@@ -1,162 +1,160 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#table_dlg.row_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/row.js"></script>
-	<link href="css/row.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="tablerow" style="display: none">
-	<form onsubmit="updateAction();return false;">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_table_row_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/row.js"></script>

+	<link href="css/row.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="tablerow" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+	<form onsubmit="updateAction();return false;">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_table_general_props}</legend>

+

+					<table border="0" cellpadding="4" cellspacing="0">

+						<tr>

+							<td><label for="rowtype">{$lang_table_rowtype}</label></td>

+							<td class="col2">

+								<select id="rowtype" name="rowtype">

+									<option value="thead">{$lang_table_thead}</option>

+									<option value="tbody">{$lang_table_tbody}</option>

+									<option value="tfoot">{$lang_table_tfoot}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="align">{$lang_table_align}</label></td>

+							<td class="col2">

+								<select id="align" name="align">

+									<option value="">{$lang_not_set}</option>

+									<option value="center">{$lang_table_align_middle}</option>

+									<option value="left">{$lang_table_align_left}</option>

+									<option value="right">{$lang_table_align_right}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="valign">{$lang_table_valign}</label></td>

+							<td class="col2">

+								<select id="valign" name="valign">

+									<option value="">{$lang_not_set}</option>

+									<option value="top">{$lang_table_align_top}</option>

+									<option value="middle">{$lang_table_align_middle}</option>

+									<option value="bottom">{$lang_table_align_bottom}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr id="styleSelectRow">

+							<td><label for="class">{$lang_class_name}</label></td>

+							<td class="col2">

+								<select id="class" name="class">

+									<option value="" selected="selected">{$lang_not_set}</option>

+								</select>

+							</td>

+						</tr>

+

+						<tr>

+							<td><label for="height">{$lang_table_height}</label></td>

+							<td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_table_advanced_props}</legend>

+

+					<table border="0" cellpadding="0" cellspacing="4">

+						<tr>

+							<td class="column1"><label for="id">{$lang_table_id}</label></td> 

+							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 

+						</tr>

+

+						<tr>

+							<td><label for="style">{$lang_table_style}</label></td>

+							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 

+							<td>

+								<select id="dir" name="dir" style="width: 200px"> 

+										<option value="">{$lang_not_set}</option> 

+										<option value="ltr">{$lang_table_ltr}</option> 

+										<option value="rtl">{$lang_table_rtl}</option> 

+								</select>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="lang">{$lang_table_langcode}</label></td> 

+							<td>

+								<input id="lang" name="lang" type="text" value="" style="width: 200px" />

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>

+										<td id="backgroundimagebrowsercontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>

+										<td id="bgcolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div>

+				<select id="action" name="action">

+					<option value="row">{$lang_table_row_row}</option>

+					<option value="odd">{$lang_table_row_odd}</option>

+					<option value="even">{$lang_table_row_even}</option>

+					<option value="all">{$lang_table_row_all}</option>

+				</select>

+			</div>

+

+			<div style="float: left">

+				<div><input type="button" id="insert" name="insert" value="{$lang_update}" onclick="updateAction();" /></div>

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-					<legend>{#table_dlg.general_props}</legend>
-
-					<table border="0" cellpadding="4" cellspacing="0">
-						<tr>
-							<td><label for="rowtype">{#table_dlg.rowtype}</label></td>
-							<td class="col2">
-								<select id="rowtype" name="rowtype" class="mceFocus">
-									<option value="thead">{#table_dlg.thead}</option>
-									<option value="tbody">{#table_dlg.tbody}</option>
-									<option value="tfoot">{#table_dlg.tfoot}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="align">{#table_dlg.align}</label></td>
-							<td class="col2">
-								<select id="align" name="align">
-									<option value="">{#not_set}</option>
-									<option value="center">{#table_dlg.align_middle}</option>
-									<option value="left">{#table_dlg.align_left}</option>
-									<option value="right">{#table_dlg.align_right}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="valign">{#table_dlg.valign}</label></td>
-							<td class="col2">
-								<select id="valign" name="valign">
-									<option value="">{#not_set}</option>
-									<option value="top">{#table_dlg.align_top}</option>
-									<option value="middle">{#table_dlg.align_middle}</option>
-									<option value="bottom">{#table_dlg.align_bottom}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr id="styleSelectRow">
-							<td><label for="class">{#class_name}</label></td>
-							<td class="col2">
-								<select id="class" name="class" class="mceEditableSelect">
-									<option value="" selected="selected">{#not_set}</option>
-								</select>
-							</td>
-						</tr>
-
-						<tr>
-							<td><label for="height">{#table_dlg.height}</label></td>
-							<td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-				<fieldset>
-					<legend>{#table_dlg.advanced_props}</legend>
-
-					<table border="0" cellpadding="0" cellspacing="4">
-						<tr>
-							<td class="column1"><label for="id">{#table_dlg.id}</label></td> 
-							<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td> 
-						</tr>
-
-						<tr>
-							<td><label for="style">{#table_dlg.style}</label></td>
-							<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> 
-							<td>
-								<select id="dir" name="dir" style="width: 200px"> 
-										<option value="">{#not_set}</option> 
-										<option value="ltr">{#table_dlg.ltr}</option> 
-										<option value="rtl">{#table_dlg.rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="lang">{#table_dlg.langcode}</label></td> 
-							<td>
-								<input id="lang" name="lang" type="text" value="" style="width: 200px" />
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
-										<td id="backgroundimagebrowsercontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
-										<td id="bgcolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div>
-				<select id="action" name="action">
-					<option value="row">{#table_dlg.row_row}</option>
-					<option value="odd">{#table_dlg.row_odd}</option>
-					<option value="even">{#table_dlg.row_even}</option>
-					<option value="all">{#table_dlg.row_all}</option>
-				</select>
-			</div>
-
-			<div style="float: left">
-				<div><input type="submit" id="insert" name="insert" value="{#update}" /></div>
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/table/table.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/table/table.htm
@@ -1,194 +1,161 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#table_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/validate.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/table.js"></script>
-	<link href="css/table.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body id="table" style="display: none">
-	<form onsubmit="insertTable();return false;" action="#">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
-				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_table_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/table.js"></script>

+	<link href="css/table.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body id="table" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+	<form onsubmit="insertTable();return false;" action="#">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_table_general_tab}</a></span></li>

+				<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_table_advanced_tab}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<fieldset>

+					<legend>{$lang_table_general_props}</legend>

+

+					  <table border="0" cellpadding="4" cellspacing="0" width="100%">

+							  <tr>

+								<td><label id="colslabel" for="cols">{$lang_table_cols}</label></td>

+								<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>

+								<td><label id="rowslabel" for="rows">{$lang_table_rows}</label></td>

+								<td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>

+							  </tr>

+							  <tr>

+								<td><label id="cellpaddinglabel" for="cellpadding">{$lang_table_cellpadding}</label></td>

+								<td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>

+								<td><label id="cellspacinglabel" for="cellspacing">{$lang_table_cellspacing}</label></td>

+								<td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>

+							  </tr>

+							  <tr>

+								<td><label id="alignlabel" for="align">{$lang_table_align}</label></td>

+								<td><select id="align" name="align">

+									<option value="">{$lang_not_set}</option>

+									<option value="center">{$lang_table_align_middle}</option>

+									<option value="left">{$lang_table_align_left}</option>

+									<option value="right">{$lang_table_align_right}</option>

+								  </select></td>

+								<td><label id="borderlabel" for="border">{$lang_table_border}</label></td>

+								<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>

+							  </tr>

+							  <tr id="width_row">

+								<td><label id="widthlabel" for="width">{$lang_table_width}</label></td>

+								<td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>

+								<td><label id="heightlabel" for="height">{$lang_table_height}</label></td>

+								<td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>

+							  </tr>

+							  <tr id="styleSelectRow">

+								<td><label id="classlabel" for="class">{$lang_class_name}</label></td>

+								<td colspan="3">

+								 <select id="class" name="class">

+									<option value="" selected>{$lang_not_set}</option>

+								 </select></td>

+							  </tr>

+							  <tr>

+								<td class="column1"><label for="caption">{$lang_table_caption}</label></td> 

+								<td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td> 

+							  </tr>

+							</table>

+				</fieldset>

+			</div>

+

+			<div id="advanced_panel" class="panel">

+				<fieldset>

+					<legend>{$lang_table_advanced_props}</legend>

+

+					<table border="0" cellpadding="0" cellspacing="4">

+						<tr>

+							<td class="column1"><label for="id">{$lang_table_id}</label></td> 

+							<td><input id="id" name="id" type="text" value="" class="advfield" /></td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="summary">{$lang_table_summary}</label></td> 

+							<td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> 

+						</tr>

+

+						<tr>

+							<td><label for="style">{$lang_table_style}</label></td>

+							<td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="dir">{$lang_table_langdir}</label></td> 

+							<td>

+								<select id="dir" name="dir" class="advfield"> 

+										<option value="">{$lang_not_set}</option> 

+										<option value="ltr">{$lang_table_ltr}</option> 

+										<option value="rtl">{$lang_table_rtl}</option> 

+								</select>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label id="langlabel" for="lang">{$lang_table_langcode}</label></td> 

+							<td>

+								<input id="lang" name="lang" type="text" value="" class="advfield" />

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="backgroundimage">{$lang_table_bgimage}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>

+										<td id="backgroundimagebrowsercontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="bordercolor">{$lang_table_bordercolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>

+										<td id="bordercolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+

+						<tr>

+							<td class="column1"><label for="bgcolor">{$lang_table_bgcolor}</label></td> 

+							<td>

+								<table border="0" cellpadding="0" cellspacing="0">

+									<tr>

+										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>

+										<td id="bgcolor_pickcontainer">&nbsp;</td>

+									</tr>

+								</table>

+							</td> 

+						</tr>

+					</table>

+				</fieldset>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertTable();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<fieldset>
-					<legend>{#table_dlg.general_props}</legend>
-					  <table border="0" cellpadding="4" cellspacing="0" width="100%">
-							  <tr>
-								<td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>
-								<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" /></td>
-								<td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>
-								<td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
-							  </tr>
-							  <tr>
-								<td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>
-								<td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
-								<td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>
-								<td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
-							  </tr>
-							  <tr>
-								<td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>
-								<td><select id="align" name="align">
-									<option value="">{#not_set}</option>
-									<option value="center">{#table_dlg.align_middle}</option>
-									<option value="left">{#table_dlg.align_left}</option>
-									<option value="right">{#table_dlg.align_right}</option>
-								  </select></td>
-								<td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>
-								<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
-							  </tr>
-							  <tr id="width_row">
-								<td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>
-								<td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
-								<td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>
-								<td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
-							  </tr>
-							  <tr id="styleSelectRow">
-								<td><label id="classlabel" for="class">{#class_name}</label></td>
-								<td colspan="3">
-								 <select id="class" name="class" class="mceEditableSelect">
-									<option value="" selected>{#not_set}</option>
-								 </select></td>
-							  </tr>
-							  <tr>
-								<td class="column1"><label for="caption">{#table_dlg.caption}</label></td> 
-								<td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td> 
-							  </tr>
-							</table>
-				</fieldset>
-			</div>
-
-			<div id="advanced_panel" class="panel">
-				<fieldset>
-					<legend>{#table_dlg.advanced_props}</legend>
-
-					<table border="0" cellpadding="0" cellspacing="4">
-						<tr>
-							<td class="column1"><label for="id">{#table_dlg.id}</label></td> 
-							<td><input id="id" name="id" type="text" value="" class="advfield" /></td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="summary">{#table_dlg.summary}</label></td> 
-							<td><input id="summary" name="summary" type="text" value="" class="advfield" /></td> 
-						</tr>
-
-						<tr>
-							<td><label for="style">{#table_dlg.style}</label></td>
-							<td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
-						</tr>
-
-						<tr>
-							<td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td> 
-							<td>
-								<input id="lang" name="lang" type="text" value="" class="advfield" />
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
-										<td id="backgroundimagebrowsercontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="frame">{#table_dlg.frame}</label></td> 
-							<td>
-								<select id="frame" name="frame" class="advfield"> 
-										<option value="">{#not_set}</option>
-										<option value="void">{#table_dlg.rules_void}</option>
-										<option value="above">{#table_dlg.rules_above}</option> 
-										<option value="below">{#table_dlg.rules_below}</option> 
-										<option value="hsides">{#table_dlg.rules_hsides}</option> 
-										<option value="lhs">{#table_dlg.rules_lhs}</option> 
-										<option value="rhs">{#table_dlg.rules_rhs}</option> 
-										<option value="vsides">{#table_dlg.rules_vsides}</option> 
-										<option value="box">{#table_dlg.rules_box}</option> 
-										<option value="border">{#table_dlg.rules_border}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="rules">{#table_dlg.rules}</label></td> 
-							<td>
-								<select id="rules" name="rules" class="advfield"> 
-										<option value="">{#not_set}</option> 
-										<option value="none">{#table_dlg.frame_none}</option>
-										<option value="groups">{#table_dlg.frame_groups}</option>
-										<option value="rows">{#table_dlg.frame_rows}</option>
-										<option value="cols">{#table_dlg.frame_cols}</option>
-										<option value="all">{#table_dlg.frame_all}</option>
-									</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td> 
-							<td>
-								<select id="dir" name="dir" class="advfield"> 
-										<option value="">{#not_set}</option> 
-										<option value="ltr">{#table_dlg.ltr}</option> 
-										<option value="rtl">{#table_dlg.rtl}</option> 
-								</select>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
-										<td id="bordercolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-
-						<tr>
-							<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td> 
-							<td>
-								<table border="0" cellpadding="0" cellspacing="0">
-									<tr>
-										<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
-										<td id="bgcolor_pickcontainer">&nbsp;</td>
-									</tr>
-								</table>
-							</td> 
-						</tr>
-					</table>
-				</fieldset>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" id="insert" name="insert" value="{#insert}" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/blank.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/blank.htm
@@ -1,13 +1,24 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>blank_page</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-	<script type="text/javascript">
-		parent.TemplateDialog.loadCSSFiles(document);
-	</script>
-</head>
-<body id="mceTemplatePreview" class="mceContentBody">
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>blank_page</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

+	<script type="text/javascript">

+		var tinyMCE = parent.tinyMCE, css = tinyMCE.getParam("content_css").split(','), i, u;

+

+		// Load content CSS files

+		for (i=0; i<css.length; i++) {

+			u = css[i];

+

+			// Fix relative

+			if (u.charAt(0) != '/' && u.indexOf('://') == -1)

+				u = tinyMCE.documentBasePath + "/" + u;

+

+			document.write('<link href="' + u + '" rel="stylesheet" type="text/css" />');

+		}

+	</script>

+</head>

+<body id="mceTemplatePreview" class="mceContentBody">

+

+</body>

+</html>

 
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/css/template.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/css/template.css
@@ -1,24 +1,24 @@
-#frmbody {
-	padding: 10px;
-	background-color: #FFF;
-	border: 1px solid #CCC;
-}
+#frmbody {

+	padding: 10px;

+	background-color: #FFF;

+	border: 1px solid #CCC;

+}

+

+.frmRow {

+	margin-bottom: 10px;

+}

+

+#templatesrc {

+	border: none;

+	width: 320px;

+	height: 240px;

+}

+

+.title {

+	padding-bottom: 5px;

+}

+

+.mceActionPanel {

+	padding-top: 5px;

+}

 
-.frmRow {
-	margin-bottom: 10px;
-}
-
-#templatesrc {
-	border: none;
-	width: 320px;
-	height: 240px;
-}
-
-.title {
-	padding-bottom: 5px;
-}
-
-.mceActionPanel {
-	padding-top: 5px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){var each=tinymce.each;tinymce.create('tinymce.plugins.TemplatePlugin',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceTemplate',function(ui){ed.windowManager.open({file:url+'/template.htm',width:ed.getParam('template_popup_width',750),height:ed.getParam('template_popup_height',600),inline:1},{plugin_url:url});});ed.addCommand('mceInsertTemplate',t._insertTemplate,t);ed.addButton('template',{title:'template.desc',cmd:'mceTemplate'});ed.onPreProcess.add(function(ed,o){var dom=ed.dom;each(dom.select('div',o.node),function(e){if(dom.hasClass(e,'mceTmpl')){each(dom.select('*',e),function(e){if(dom.hasClass(e,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))e.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));});t._replaceVals(e);}});});},getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_insertTemplate:function(ui,v){var t=this,ed=t.editor,h,el,dom=ed.dom,sel=ed.selection.getContent();h=v.content;each(t.editor.getParam('template_replace_values'),function(v,k){if(typeof(v)!='function')h=h.replace(new RegExp('\\{\\$'+k+'\\}','g'),v);});el=dom.create('div',null,h);n=dom.select('.mceTmpl',el);if(n&&n.length>0){el=dom.create('div',null);el.appendChild(n[0].cloneNode(true));}function hasClass(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className);};each(dom.select('*',el),function(n){if(hasClass(n,ed.getParam('template_cdate_classes','cdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_cdate_format",ed.getLang("template.cdate_format")));if(hasClass(n,ed.getParam('template_mdate_classes','mdate').replace(/\s+/g,'|')))n.innerHTML=t._getDateTime(new Date(),ed.getParam("template_mdate_format",ed.getLang("template.mdate_format")));if(hasClass(n,ed.getParam('template_selected_content_classes','selcontent').replace(/\s+/g,'|')))n.innerHTML=sel;});t._replaceVals(el);ed.execCommand('mceInsertContent',false,el.innerHTML);ed.addVisual();},_replaceVals:function(e){var dom=this.editor.dom,vl=this.editor.getParam('template_replace_values');each(dom.select('*',e),function(e){each(vl,function(v,k){if(dom.hasClass(e,k)){if(typeof(vl[k])=='function')vl[k](e);}});});},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length<len){for(i=0;i<(len-value.length);i++)value="0"+value;}return value;}fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);fmt=fmt.replace("%%","%");return fmt;}});tinymce.PluginManager.add('template',tinymce.plugins.TemplatePlugin);})();
+tinyMCE.importPluginLanguagePack('template');var TinyMCE_TemplatePlugin={getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){var cdate,mdate,content,x=0,key,value,rvals,ds=inst.getData('template');cdate=tinyMCE.getParam("template_cdate_classes",'').split(/\s+/);mdate=tinyMCE.getParam("template_mdate_classes",'').split(/\s+/);content=tinyMCE.getParam("template_selected_content_classes",'').split(/\s+/);for(x=0;x<cdate.length;x++)TinyMCE_TemplatePlugin.functions[cdate[x]]=TinyMCE_TemplatePlugin.functions['cdate'];for(x=0;x<mdate.length;x++)TinyMCE_TemplatePlugin.functions[mdate[x]]=TinyMCE_TemplatePlugin.functions['mdate'];for(x=0;x<content.length;x++)TinyMCE_TemplatePlugin.functions[content[x]]=TinyMCE_TemplatePlugin.functions['selectedContent'];rvals=tinyMCE.getParam("template_replace_values",false);for(key in rvals){value=rvals[key];if(typeof value=="function")TinyMCE_TemplatePlugin.functions[key]=value;else TinyMCE_TemplatePlugin.functions[key]=TinyMCE_TemplatePlugin.functions['generateReplacer'](value)}rvals=tinyMCE.getParam("template_replace_values",false);ds.replace_items={};for(key in rvals)ds.replace_items[key]=rvals[key];inst.addShortcut('ctrl','t','lang_template_desc','mceTemplate');ds.currentAction="insert";ds.currentTmplNode=null},getControlHTML:function(cn){switch(cn){case"template":return tinyMCE.getButtonHTML(cn,'lang_template_desc','{$pluginurl}/images/template.gif','mceTemplate',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var nodeArray,current,newTmpl,x,inst=tinyMCE.getInstanceById(editor_id),ds=inst.getData('template'),telm;switch(command){case"mceTemplate":if(user_interface){tinyMCE.openWindow({file:'../../plugins/template/template.htm',width:tinyMCE.getParam('template_popup_width',750),height:tinyMCE.getParam('template_popup_height',600)},{editor_id:editor_id,resizable:"yes",scrollbars:"no",pluginObj:TinyMCE_TemplatePlugin})}else{telm=TinyMCE_TemplatePlugin._convertToNode(value.body);nodeArray=tinyMCE.selectElements(telm,'div',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});telm=nodeArray.length>0?nodeArray[0]:null;nodeArray=[];if(ds.currentAction=="insert"){if(telm){tinyMCE.execCommand('mceBeginUndoLevel');ds.currentAction="insert-new";TinyMCE_TemplatePlugin._insertTemplate(editor_id,telm,value.title,value.tsrc,true);ds.currentAction=="insert";tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}else tinyMCE.execCommand('mceInsertContent',false,this._replaceValues(value.body))}else{nodeArray=TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);current=[];newTmpl=[];tinyMCE.getNodeTree(telm,newTmpl);for(x=0;x<nodeArray.length;x++)tinyMCE.getNodeTree(nodeArray[x],current);var _test=function(elm){var replaced=true;if(elm.className){var names=elm.className.split(/\s+/),c,n;for(c=0;c<names.length;c++){if(names[c].match(/^mce/i))continue;for(n=0;n<newTmpl.length;n++){replaced=false;if(newTmpl[n].className&&newTmpl[n].className.match(new RegExp(names[c],"gi"))){newTmpl[n].innerHTML=elm.innerHTML;replaced=true;break}}}}return replaced};var cont=true;var asked=false;for(x=0;x<current.length;x++){if(!_test(current[x])){cont=(asked||confirm("The new template has less elements than the currently selected content.\nIf you proceed you will loose content.\nAre you sure you want to proceed?","Proceed?"));asked=true;if(!cont)break}};if(cont){tinyMCE.execCommand('mceBeginUndoLevel');TinyMCE_TemplatePlugin._replaceTemplateContent(current[0],editor_id,telm,value.title,value.tsrc);tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}}tinyMCE.triggerNodeChange(true)}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var inst=tinyMCE.getInstanceById(editor_id),ds=inst.getData('template');if(tinyMCE.hasCSSClass(node,TinyMCE_TemplatePlugin.TMPL_ELEMENT)||tinyMCE.hasCSSClass(node.parentNode,TinyMCE_TemplatePlugin.TMPL_ELEMENT)){tinyMCE.switchClass(editor_id+'_template','mceButtonSelected');ds.currentAction="update";ds.currentTmplNode=node;return true}ds.currentAction="insert";ds.currentTmplNode=null;tinyMCE.switchClass(editor_id+'_template','mceButtonNormal');return false},cleanup:function(type,content,inst){var nodes=[];switch(type){case"get_from_editor":content=content.replace(new RegExp('<div class="'+TinyMCE_TemplatePlugin.TMPL+'">','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_BEGINS+' -->');content=content.replace(new RegExp('<div class="'+TinyMCE_TemplatePlugin.TMPL+'">(\s|&nbsp;|&#160;)?(<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->|\s)?</div>','gi'),'');content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->');break;case"insert_to_editor":content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_BEGINS+' -->','gi'),'<div class="'+TinyMCE_TemplatePlugin.TMPL+'">');content=content.replace(new RegExp('<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' -->','gi'),'<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>');break;case"get_from_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break;case"insert_to_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break}return content},_convertToNode:function(html){var elm=document.createElement('div');elm.innerHTML=html;return elm},_prepareTemplateContent:function(elms){var x,n,nodes=[];if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x<elms.length;x++)tinyMCE.getNodeTree(elms[x],nodes,1);for(n=0;n<nodes.length;n++){tinyMCE.addCSSClass(nodes[n],TinyMCE_TemplatePlugin.TMPL_ELEMENT);TinyMCE_TemplatePlugin._applyFunctions(nodes[n],TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)}return elms},_replaceValues:function(s){var t=this,ds=tinyMCE.selectedInstance.getData('template');return s.replace(/\{\$([^\}]+)\}/g,function(a,b){var it=ds.replace_items[b];if(it){if(typeof(it)!='function')return it}return b})},_applyFunctions:function(elms,editor_event){var x,elm,names,c,f;if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x<elms.length;x++){elm=elms[x];if(elm.className){names=elm.className.split(/\s+/);for(c=0;c<names.length;c++){if(names[c]==TinyMCE_TemplatePlugin.TMPL_ELEMENT)continue;f=(TinyMCE_TemplatePlugin.functions[names[c]]?TinyMCE_TemplatePlugin.functions[names[c]]:TinyMCE_TemplatePlugin.functions['blank']);f(elm,editor_event)}}}return elms},_collectTemplateElements:function(node){var nodeArray=[],p;p=tinyMCE.getParentElement(node,'DIV',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});if(p)tinyMCE.getNodeTree(p,nodeArray);return nodeArray},_replaceTemplateContent:function(currentNode,editor_id,newTemplate,title,tsrc){TinyMCE_TemplatePlugin._deleteTemplateContent(currentNode);TinyMCE_TemplatePlugin._insertTemplate(editor_id,newTemplate,title,tsrc,false)},_deleteTemplateContent:function(node){var p=tinyMCE.getParentElement(node,'DIV',function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL)});if(p)p.parentNode.removeChild(p,true)},_insertTemplate:function(editor_id,elm,title,tsrc,incComments){var html;TinyMCE_TemplatePlugin._prepareTemplateContent(elm);html='<div class="'+TinyMCE_TemplatePlugin.TMPL+'">';html+=elm.innerHTML;html+='<!-- '+TinyMCE_TemplatePlugin.TMPL_ENDS+' --></div>';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,html)},functions:{blank:function(elm,editor_event){},cdate:function(elm,editor_event){var d,dsrc;if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;d=new Date();dsrc=elm.innerHTML.match(new RegExp("<!-- "+TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR+":(.*)  -->","gi"));if(dsrc)d=new Date(RegExp.$1);elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_cdate_format",tinyMCE.getLang("lang_template_def_date_format")));elm.innerHTML+="<!-- "+TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR+":"+d.toUTCString()+"  -->"},mdate:function(elm,editor_event){var d=new Date();elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_mdate_format",tinyMCE.getLang("lang_template_def_date_format")))},selectedContent:function(elm,editor_event){var ds=tinyMCE.selectedInstance.getData('template');if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;if(ds.currentAction=="insert-new"&&!tinyMCE.hasCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)){elm.innerHTML=tinyMCE.selectedInstance.selection.getSelectedHTML();tinyMCE.addCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)}},generateReplacer:function(s){return function(elm,editor_event){elm.innerHTML=""+s}}},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length<len){for(i=0;i<(len-value.length);i++)value="0"+value}return value}fmt=fmt.replace("%D","%m/%d/%y");fmt=fmt.replace("%r","%I:%M:%S %p");fmt=fmt.replace("%Y",""+d.getFullYear());fmt=fmt.replace("%y",""+d.getYear());fmt=fmt.replace("%m",addZeros(d.getMonth()+1,2));fmt=fmt.replace("%d",addZeros(d.getDate(),2));fmt=fmt.replace("%H",""+addZeros(d.getHours(),2));fmt=fmt.replace("%M",""+addZeros(d.getMinutes(),2));fmt=fmt.replace("%S",""+addZeros(d.getSeconds(),2));fmt=fmt.replace("%I",""+((d.getHours()+11)%12+1));fmt=fmt.replace("%p",""+(d.getHours()<12?"AM":"PM"));fmt=fmt.replace("%B",""+tinyMCE.getLang("lang_template_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_template_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_template_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_template_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return fmt},TMPL_ELEMENT:'mceTmplElm',TMPL:'mceTmpl',TMPL_BEGINS:'mceTmplBegins',TMPL_SEL_HTML_DONE:'mceSelHTMLDone',TMPL_ENDS:'mceTmplEnds',TMPL_DATE_SRC_ATTR:'mcetmpldtesrc',TMPL_TEMPLATE_EVENT:'prepare_template'};tinyMCE.addPlugin("template",TinyMCE_TemplatePlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/editor_plugin_src.js
@@ -1,156 +1,552 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id: editor_plugin_src.js 162 2007-01-03 16:16:52Z spocke $

+ *

+ * @author Moxiecode


+ */

+

+tinyMCE.importPluginLanguagePack('template');

+

+var TinyMCE_TemplatePlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Template plugin',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://www.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		var cdate, mdate, content, x = 0, key, value, rvals, ds = inst.getData('template');

+

+		// ensure the required elements and sttributes are added

+		//inst.cleanup.addRuleStr('*[' + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + '],div[title,tsrc]');

+

+		//setup template content functions

+		// creation date and modified date classes

+		cdate = tinyMCE.getParam("template_cdate_classes", '').split(/\s+/);

+		mdate = tinyMCE.getParam("template_mdate_classes", '').split(/\s+/);

+

+		// classes that specify where selected content should go

+		content = tinyMCE.getParam("template_selected_content_classes", '').split(/\s+/);

+

+		for (x = 0; x < cdate.length; x++)

+			TinyMCE_TemplatePlugin.functions[cdate[x]] = TinyMCE_TemplatePlugin.functions['cdate'];	

+

+		for (x = 0; x < mdate.length; x++)

+			TinyMCE_TemplatePlugin.functions[mdate[x]] = TinyMCE_TemplatePlugin.functions['mdate'];

+

+		for (x = 0; x < content.length; x++)

+			TinyMCE_TemplatePlugin.functions[content[x]] = TinyMCE_TemplatePlugin.functions['selectedContent'];

+

+		// special template functions for replacing template content

+		rvals = tinyMCE.getParam("template_replace_values", false);

+		for (key in rvals) {

+			value = rvals[key];

+

+			if (typeof value == "function")

+				TinyMCE_TemplatePlugin.functions[key] = value;

+			else

+				TinyMCE_TemplatePlugin.functions[key] = TinyMCE_TemplatePlugin.functions['generateReplacer'](value);

+		}

+

+		// Setup replace_items

+		rvals = tinyMCE.getParam("template_replace_values", false);

+		ds.replace_items = {};

+

+		for (key in rvals)

+			ds.replace_items[key] = rvals[key];

+

+		inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate');

+

+		// Setup data storage

+		ds.currentAction = "insert";

+		ds.currentTmplNode = null;

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "template":

+				return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true);

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		var nodeArray, current, newTmpl, x, inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template'), telm;

+

+		switch (command) {

+			case "mceTemplate":

+				if (user_interface) {

+					// called from toolbar button - show the popup

+					tinyMCE.openWindow({

+						file : '../../plugins/template/template.htm', // Relative to theme

+						width : tinyMCE.getParam('template_popup_width', 750),

+						height : tinyMCE.getParam('template_popup_height', 600)

+					}, {editor_id : editor_id, resizable : "yes", scrollbars : "no", pluginObj : TinyMCE_TemplatePlugin});

+				} else {

+					// internal command do the template stuff

+

+					// get the returned HTML string from the pop-up and appened it to a DIV element

+					telm = TinyMCE_TemplatePlugin._convertToNode(value.body);

+

+					// Find template body

+					nodeArray = tinyMCE.selectElements(telm, 'div', function(n) {

+						return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);

+					});

+

+					telm = nodeArray.length > 0 ? nodeArray[0] : null;

+					nodeArray = [];

+

+					if (ds.currentAction == "insert") {

+						//insert new template after applying all the template content functions

+

+						// Is it a template or snippet

+						if (telm) {

+							tinyMCE.execCommand('mceBeginUndoLevel');

+							ds.currentAction = "insert-new";

+							TinyMCE_TemplatePlugin._insertTemplate(editor_id, telm, value.title, value.tsrc, true);

+							ds.currentAction == "insert";

+							tinyMCE.execCommand('mceEndUndoLevel');

+							tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false);

+						} else

+							tinyMCE.execCommand('mceInsertContent', false, this._replaceValues(value.body));

+					} else {

+						// First collect the selected template in the editor

+						nodeArray = TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);

+						current = [];

+						newTmpl = [];

+						tinyMCE.getNodeTree(telm, newTmpl);

+

+						for (x=0; x<nodeArray.length; x++)

+							tinyMCE.getNodeTree(nodeArray[x], current);

+

+						/** 

+						 * inner function used in the loop below.

+						 * compares the supplied HTML element to the new template to:

+						 * - find a match with the new template and copy the element's content over

+						 * - find no match and indicate content will be lost

+						 */

+						var _test = function(elm) {

+							var replaced = true;

+

+							if (elm.className) {

+								var names = elm.className.split(/\s+/), c, n;

+

+								for (c = 0; c<names.length; c++) {

+									if (names[c].match(/^mce/i))

+										continue; // ignore all internal class names

+

+									for (n=0; n<newTmpl.length; n++){

+										replaced = false;

+

+										if (newTmpl[n].className && newTmpl[n].className.match(new RegExp(names[c], "gi"))) {

+											newTmpl[n].innerHTML = elm.innerHTML;

+											//if(tinyMCE.getAttrib(elm,TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR,"") != "") {

+											//	tinyMCE.setAttrib(newTmpl[n], TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR, tinyMCE.getAttrib(elm,TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR)); 

+											//}

+											replaced = true;

+											break;

+										}

+

+									}

+								}

+							}

+	

+							return replaced;

+						};

+

+						// comparison loop - first mis-match alerts user for confirmation.

+						var cont = true;

+						var asked = false;

+

+						for (x = 0; x < current.length; x++) {

+							if(!_test(current[x])) {

+								cont = (asked || confirm("The new template has less elements than the currently selected content.\nIf you proceed you will loose content.\nAre you sure you want to proceed?", "Proceed?"));

+								asked = true;

+

+								if (!cont)

+									break;

+							}

+						};

+

+						// apply replacement if allowed to

+						if (cont) {

+							tinyMCE.execCommand('mceBeginUndoLevel');

+							TinyMCE_TemplatePlugin._replaceTemplateContent(current[0], editor_id, telm, value.title, value.tsrc);

+							tinyMCE.execCommand('mceEndUndoLevel');

+							tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false);

+						}

+					}

+

+					tinyMCE.triggerNodeChange(true);

+				}

+

+				return true;

+		}

+

+		return false;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {

+		var inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template');

+

+		if (tinyMCE.hasCSSClass(node, TinyMCE_TemplatePlugin.TMPL_ELEMENT) || tinyMCE.hasCSSClass(node.parentNode, TinyMCE_TemplatePlugin.TMPL_ELEMENT)) {

+			tinyMCE.switchClass(editor_id + '_template', 'mceButtonSelected');

+			ds.currentAction = "update";

+			ds.currentTmplNode = node;

+

+			return true;

+		}

+

+		ds.currentAction = "insert";

+		ds.currentTmplNode = null;

+		tinyMCE.switchClass(editor_id + '_template', 'mceButtonNormal');

+

+		return false;

+	},

+

+	cleanup : function(type, content, inst) {

+		var nodes = [];

+

+		switch (type) {

+			case "get_from_editor":

+				// replace the opening wrapper div tag with a HTML comment

+				content = content.replace(

+					new RegExp('<div class="' + TinyMCE_TemplatePlugin.TMPL + '">', 'gi'),

+					'<!-- ' + TinyMCE_TemplatePlugin.TMPL_BEGINS + ' -->'

+				);

+

+				// delete any empty template wrappers

+				content = content.replace(

+					new RegExp('<div class="' + TinyMCE_TemplatePlugin.TMPL + '">(\s|&nbsp;|&#160;)?(<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->|\s)?</div>', 'gi'),

+					''

+				);

+

+				// replace the closing wrapper tag

+				content = content.replace(

+					new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>', 'gi'),

+					'<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->'

+				);

+

+				break;

+

+			case "insert_to_editor":

+				// replace HTML comment with DIV wrapper

+				content = content.replace(

+					new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_BEGINS + ' -->', 'gi'),

+					'<div class="' + TinyMCE_TemplatePlugin.TMPL + '">'

+				);

+

+				content = content.replace(

+					new RegExp('<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' -->', 'gi'),

+					'<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>'

+				);

+

+				break;

+

+			case "get_from_editor_dom":

+				// apply template content replacement functions

+				nodes = tinyMCE.selectNodes(content, function(n) {

+						return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT);

+					}

+				);

+

+				TinyMCE_TemplatePlugin._applyFunctions(nodes, type);

+

+				break;

+

+			case "insert_to_editor_dom":

+				// apply template content replacement functions

+				nodes = tinyMCE.selectNodes(content, function(n) {

+						return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT);

+					}

+				);

+

+				TinyMCE_TemplatePlugin._applyFunctions(nodes, type);

+

+				break;

+		}

+

+		return content;

+	},

+

+	// Private plugin internal methods

+

+	/**

+	 * Creates a HTML DIV element and sets the innerHTML to equal the temlate innerHTML so that the template can be manipulated as DOM nodes.

+	 *

+	 * @param {string} Template innerHTML

+	 * @return a HTML Element

+	 * @type HTMLElement

+	 */

+	_convertToNode : function(html) {

+		var elm = document.createElement('div');

+

+		elm.innerHTML = html;

+

+		return elm;

+	},

+

+	/**

+	 * pass an array of template html elements and they will have the template class name added and any template functions applied

+	 *

+	 * @param {array} template HTML elements

+	 * @return array of template HTML elements

+	 * @type array

+	 */

+	_prepareTemplateContent : function(elms) {

+		var x, n, nodes = [];

+

+		if (!elms)

+			return {};

+

+		if (!elms.length)

+			elms = [elms];

+

+		for (x = 0; x<elms.length; x++)

+			tinyMCE.getNodeTree(elms[x], nodes, 1);

+

+		for (n = 0; n<nodes.length; n++) {

+			tinyMCE.addCSSClass(nodes[n], TinyMCE_TemplatePlugin.TMPL_ELEMENT);

+			TinyMCE_TemplatePlugin._applyFunctions(nodes[n], TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT);

+		}

+

+		return elms;

+	},

+

+	_replaceValues : function(s) {

+		var t = this, ds = tinyMCE.selectedInstance.getData('template');

+

+		return s.replace(/\{\$([^\}]+)\}/g, function(a, b) {

+			var it = ds.replace_items[b];

+

+			if (it) {

+				// Only supports text for now

+				if (typeof(it) != 'function')

+					return it;

+			}

+

+			return b;

+		});

+	},

+

+	/**

+	 * Applies any special functions to the template elements

+	 *

+	 * @param {array} template HTML elements

+	 * @return array of template HTML elements

+	 * @type array

+	 */

+	_applyFunctions : function(elms, editor_event) {

+		var x, elm, names, c, f;

+

+		if (!elms)

+			return {};

+

+		if (!elms.length)

+			elms = [elms];

+

+		for(x = 0; x < elms.length; x++) {

+			elm = elms[x];

+

+			if (elm.className){

+				names = elm.className.split(/\s+/);

+

+				for (c = 0; c < names.length; c++){

+					if (names[c] == TinyMCE_TemplatePlugin.TMPL_ELEMENT)

+						continue;

+

+					f = (TinyMCE_TemplatePlugin.functions[names[c]] ? TinyMCE_TemplatePlugin.functions[names[c]] : TinyMCE_TemplatePlugin.functions['blank']);

+					f(elm, editor_event);

+				}

+			}

+		}

+

+		return elms;

+	},

+

+	/**

+	 * Given one node reference this function will collect all the nodes of the template to which it belongs.

+	 * It does this by finding the parent template wrapper DIV and returning all child nodes.

+	 *

+	 * @param {HTMLElement} a HTMLElement which is part of a template

+	 * @return array of template HTML elements

+	 * @type array

+	 */

+	_collectTemplateElements : function(node) {

+		var nodeArray = [], p;

+

+		p = tinyMCE.getParentElement(node, 'DIV', function(n) {

+			return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);

+		});

+

+		if (p)

+			tinyMCE.getNodeTree(p, nodeArray);

+

+		return nodeArray;

+	},

+

+	/**

+	 * Simply calls TinyMCE_TemplatePlugin._deleteTemplateContent and then TinyMCE_TemplatePlugin._insertTemplate

+	 *

+	 * @param {HTMLElement} currently selected template node in editor

+	 * @param {string} id of editor instance

+	 * @param {HTMLElement} template contents as a HTMLElement (the parent DIV wrapper)

+	 * @param {string} title of template (unused as yet)

+	 * @param {string} source URI of the template file (unused as yet)

+	 * @return array of template HTML elements

+	 * @type array

+	 */

+	_replaceTemplateContent : function(currentNode, editor_id, newTemplate, title, tsrc) {

+		TinyMCE_TemplatePlugin._deleteTemplateContent(currentNode);

+		TinyMCE_TemplatePlugin._insertTemplate(editor_id, newTemplate, title, tsrc, false);

+	},

+

+	/**

+	 * Deletes a template from the editor content

+	 * Finds the parent DIV wrapper and deletes it and all children

+	 * @param {HTMLElement} currently selected template node in editor

+	 */

+	_deleteTemplateContent : function(node) {

+		var p = tinyMCE.getParentElement(node, 'DIV', function(n) {

+			return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL);

+		});

+

+		if (p)

+			p.parentNode.removeChild(p, true);

+	},

+

+	/**

+	 *  Inserts a template into the specified editor

+	 *

+	 * @param {string} id of editor instance

+	 * @param {HTMLElement} template contents as a HTMLElement (the parent DIV wrapper)

+	 * @param {string} title of template (unused as yet)

+	 * @param {string} source URI of the template file (unused as yet)

+	 */

+	_insertTemplate : function(editor_id, elm, title, tsrc, incComments) {

+		var html;

+

+		TinyMCE_TemplatePlugin._prepareTemplateContent(elm);

+

+		html = '<div class="' + TinyMCE_TemplatePlugin.TMPL + '">';

+		html += elm.innerHTML;

+		html += '<!-- ' + TinyMCE_TemplatePlugin.TMPL_ENDS + ' --></div>';

+

+		tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html);

+	},

+

+	/**

+	 * template functions - functions for modifying template content

+	 */

+	functions : { 

+		blank : function(elm, editor_event) {},

+

+		cdate : function(elm, editor_event) {

+			var d, dsrc;

+

+			if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)

+				return;

+

+			d = new Date();

+			// find out if the creation date was previously stored

+			dsrc = elm.innerHTML.match(new RegExp("<!-- " + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + ":(.*)  -->", "gi"));

+

+			if (dsrc)

+				d = new Date(RegExp.$1);

+

+			elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_cdate_format", tinyMCE.getLang("lang_template_def_date_format")));

+			//now we have to store the date value in a format easily read again, in case a future template change changes the date format...

+			elm.innerHTML += "<!-- " + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + ":" + d.toUTCString() + "  -->";

+		},

+

+		mdate : function(elm, editor_event) {

+			var d = new Date();

+			elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_mdate_format", tinyMCE.getLang("lang_template_def_date_format")));

+		},

+

+		/**

+		 * This will insert the currently selected editor content into the template element.

+		 * It only does this if the template inserted is a new one and if the element does not have the special class.

+		 * The special class name prevents this from happening more than once.

+		 */

+		selectedContent : function(elm, editor_event) {

+			var ds = tinyMCE.selectedInstance.getData('template');

+	

+			if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)

+				return;

+

+			if (ds.currentAction == "insert-new" && !tinyMCE.hasCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)) {

+				elm.innerHTML = tinyMCE.selectedInstance.selection.getSelectedHTML();

+				tinyMCE.addCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE);

+			}

+		},

+

+		/**

+		 * When the plugin is initialised this generates the functions that insert configured strings into template elements.

+		 */

+		generateReplacer : function(s) {

+			return function(elm, editor_event) {elm.innerHTML = "" + s;};

+		}

+	},

+

+	/**

+	 * formats a date according to the format string - straight from the 'insert date/time' plugin

+	 *

+	 * @param {Date} date object

+	 * @param {string} format string

+	 * @return formatted date

+	 * @type string

+	 */

+	_getDateTime : function(d,fmt) {

+			if (!fmt)

+				return "";

+

+			function addZeros(value, len) {

+				var i;

+

+				value = "" + value;

+

+				if (value.length < len) {

+					for (i=0; i<(len-value.length); i++)

+						value = "0" + value;

+				}

+

+				return value;

+			}

+

+			fmt = fmt.replace("%D", "%m/%d/%y");

+			fmt = fmt.replace("%r", "%I:%M:%S %p");

+			fmt = fmt.replace("%Y", "" + d.getFullYear());

+			fmt = fmt.replace("%y", "" + d.getYear());

+			fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));

+			fmt = fmt.replace("%d", addZeros(d.getDate(), 2));

+			fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));

+			fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));

+			fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));

+			fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));

+			fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));

+			fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_template_months_long")[d.getMonth()]);

+			fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_template_months_short")[d.getMonth()]);

+			fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_template_day_long")[d.getDay()]);

+			fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_template_day_short")[d.getDay()]);

+			fmt = fmt.replace("%%", "%");

+

+			return fmt;

+	},

+

+	TMPL_ELEMENT : 'mceTmplElm',

+	TMPL : 'mceTmpl',

+	TMPL_BEGINS : 'mceTmplBegins',

+	TMPL_SEL_HTML_DONE : 'mceSelHTMLDone',

+	TMPL_ENDS : 'mceTmplEnds',

+	TMPL_DATE_SRC_ATTR : 'mcetmpldtesrc',

+	TMPL_TEMPLATE_EVENT : 'prepare_template'

+};

+

+tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin);

 
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('tinymce.plugins.TemplatePlugin', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceTemplate', function(ui) {
-				ed.windowManager.open({
-					file : url + '/template.htm',
-					width : ed.getParam('template_popup_width', 750),
-					height : ed.getParam('template_popup_height', 600),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			ed.addCommand('mceInsertTemplate', t._insertTemplate, t);
-
-			// Register buttons
-			ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});
-
-			ed.onPreProcess.add(function(ed, o) {
-				var dom = ed.dom;
-
-				each(dom.select('div', o.node), function(e) {
-					if (dom.hasClass(e, 'mceTmpl')) {
-						each(dom.select('*', e), function(e) {
-							if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
-								e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
-						});
-
-						t._replaceVals(e);
-					}
-				});
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Template plugin',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://www.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		_insertTemplate : function(ui, v) {
-			var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();
-
-			h = v.content;
-
-			each(t.editor.getParam('template_replace_values'), function(v, k) {
-				if (typeof(v) != 'function')
-					h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
-			});
-
-			el = dom.create('div', null, h);
-
-			// Find template element within div
-			n = dom.select('.mceTmpl', el);
-			if (n && n.length > 0) {
-				el = dom.create('div', null);
-				el.appendChild(n[0].cloneNode(true));
-			}
-
-			function hasClass(n, c) {
-				return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
-			};
-
-			each(dom.select('*', el), function(n) {
-				// Replace cdate
-				if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))
-					n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));
-
-				// Replace mdate
-				if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
-					n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
-
-				// Replace selection
-				if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))
-					n.innerHTML = sel;
-			});
-
-			t._replaceVals(el);
-
-			ed.execCommand('mceInsertContent', false, el.innerHTML);
-			ed.addVisual();
-		},
-
-		_replaceVals : function(e) {
-			var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');
-
-			each(dom.select('*', e), function(e) {
-				each(vl, function(v, k) {
-					if (dom.hasClass(e, k)) {
-						if (typeof(vl[k]) == 'function')
-							vl[k](e);
-					}
-				});
-			});
-		},
-
-		_getDateTime : function(d, fmt) {
-				if (!fmt)
-					return "";
-
-				function addZeros(value, len) {
-					var i;
-
-					value = "" + value;
-
-					if (value.length < len) {
-						for (i=0; i<(len-value.length); i++)
-							value = "0" + value;
-					}
-
-					return value;
-				}
-
-				fmt = fmt.replace("%D", "%m/%d/%y");
-				fmt = fmt.replace("%r", "%I:%M:%S %p");
-				fmt = fmt.replace("%Y", "" + d.getFullYear());
-				fmt = fmt.replace("%y", "" + d.getYear());
-				fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
-				fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
-				fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
-				fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
-				fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
-				fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
-				fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
-				fmt = fmt.replace("%B", "" + tinyMCE.getLang("template_months_long").split(',')[d.getMonth()]);
-				fmt = fmt.replace("%b", "" + tinyMCE.getLang("template_months_short").split(',')[d.getMonth()]);
-				fmt = fmt.replace("%A", "" + tinyMCE.getLang("template_day_long").split(',')[d.getDay()]);
-				fmt = fmt.replace("%a", "" + tinyMCE.getLang("template_day_short").split(',')[d.getDay()]);
-				fmt = fmt.replace("%%", "%");
-
-				return fmt;
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/js/template.js
+++ /dev/null
@@ -1,107 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var TemplateDialog = {
-	preInit : function() {
-		var url = tinyMCEPopup.getParam("template_external_list_url");
-
-		if (url != null)
-			document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');
-	},
-
-	init : function() {
-		var ed = tinyMCEPopup.editor, tsrc, sel, x, u;
-
- 		tsrc = ed.getParam("template_templates", false);
- 		sel = document.getElementById('tpath');
-
-		// Setup external template list
-		if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
-			for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
-				tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
-		}
-
-		for (x=0; x<tsrc.length; x++)
-			sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));
-
-		this.resize();
-		this.tsrc = tsrc;
-	},
-
-	resize : function() {
-		var w, h, e;
-
-		if (!self.innerWidth) {
-			w = document.body.clientWidth - 50;
-			h = document.body.clientHeight - 160;
-		} else {
-			w = self.innerWidth - 50;
-			h = self.innerHeight - 170;
-		}
-
-		e = document.getElementById('templatesrc');
-
-		if (e) {
-			e.style.height = Math.abs(h) + 'px';
-			e.style.width  = Math.abs(w - 5) + 'px';
-		}
-	},
-
-	loadCSSFiles : function(d) {
-		var ed = tinyMCEPopup.editor;
-
-		tinymce.each(ed.getParam("content_css", '').split(','), function(u) {
-			d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');
-		});
-	},
-
-	selectTemplate : function(u, ti) {
-		var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;
-
-		if (!u)
-			return;
-
-		d.body.innerHTML = this.templateHTML = this.getFileContents(u);
-
-		for (x=0; x<tsrc.length; x++) {
-			if (tsrc[x].title == ti)
-				document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';
-		}
-	},
-
- 	insert : function() {
-		tinyMCEPopup.execCommand('mceInsertTemplate', false, {
-			content : this.templateHTML,
-			selection : tinyMCEPopup.editor.selection.getContent()
-		});
-
-		tinyMCEPopup.close();
-	},
-
-	getFileContents : function(u) {
-		var x, d, t = 'text/plain';
-
-		function g(s) {
-			x = 0;
-
-			try {
-				x = new ActiveXObject(s);
-			} catch (s) {
-			}
-
-			return x;
-		};
-
-		x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
-
-		// Synchronous AJAX load file
-		x.overrideMimeType && x.overrideMimeType(t);
-		x.open("GET", u, false);
-		x.send(null);
-
-		return x.responseText;
-	}
-};
-
-TemplateDialog.preInit();
-tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/jscripts/template.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/jscripts/template.js
@@ -1,144 +1,144 @@
-// Import external list url javascript
-var url = tinyMCE.getParam("template_external_list_url");
-if (url != null) {
-	// Fix relative
-	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-		url = tinyMCE.documentBasePath + "/" + url;
+// Import external list url javascript

+var url = tinyMCE.getParam("template_external_list_url");

+if (url != null) {

+	// Fix relative

+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+		url = tinyMCE.documentBasePath + "/" + url;

+

+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+}

+

+var TPU = { //Template Popup Utils

+	currentTemplateHTML : null,

+	templates : [],

+	inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),

+	plugin : tinyMCE.getWindowArg('pluginObj'),

+	data : tinyMCE.selectedInstance.getData('template'),

+

+ 	init : function() {

+ 		document.forms[0].insert.value = tinyMCE.getLang('lang_' + this.data.currentAction, 'Insert', true); 

+		TPU.loadTemplatePaths();

+

+		if (this.data.currentAction == "update")

+			document.getElementById('warning').innerHTML = tinyMCE.getLang('lang_template_warning');

+

+		this.resizeInputs();

+	},

+

+ 	loadTemplatePaths : function() {

+		var tsrc, sel, x, u;

+

+ 		tsrc = tinyMCE.getParam("template_templates", false);

+ 		sel = document.getElementById('tpath');

+

+		// Setup external template list

+		if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {

+			for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)

+				tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});

+		}

+

+		for (x=0; x<tsrc.length; x++) {

+			u = tsrc[x].src;

+

+			// Force absolute

+			if (u.indexOf('://') == -1 && u.indexOf('/') != 0)

+				u = tinyMCE.documentBasePath + "/" + u;

+

+			tsrc[x].src = u;

+		}

+

+		TPU.templates = tsrc;

+

+		for (x = 0; x < tsrc.length; x++)

+			sel.options[sel.options.length] = new Option(tsrc[x].title, tsrc[x].src);

+	},

+

+ 	selectTemplate : function(o) {

+		var x, d = window.frames['templatesrc'].document;

+

+		this.currentTemplateHTML = this.plugin._replaceValues(this.getFileContents(o.value));

+

+		// Force complete document

+/*		if (!/<body/gi.test(this.currentTemplateHTML)) {

+			this.currentTemplateHTML = '<html xmlns="http://www.w3.org/1999/xhtml">' + 

+				'<head>' + 

+					'<title>blank_page</title>' + 

+					'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' + 

+				'</head>' + 

+				'<body>' + 

+				this.currentTemplateHTML + 

+				'</body>' + 

+				'</html>';

+		}*/

+

+		// Write HTML to preview iframe

+		d.body.innerHTML = this.currentTemplateHTML;

+

+		// Display description

+ 		for (x = 0; x < TPU.templates.length; x++) {

+			if (TPU.templates[x].src == o.value) {

+				document.getElementById('tmpldesc').innerHTML = TPU.templates[x].description;

+				break;

+			}

+		}

+ 	},

+

+ 	insertTemplate : function() {

+		var sel, opt;

+

+		sel = document.getElementById('tpath');

+		opt = sel.options[sel.selectedIndex];

+

+		// Is it a template or snippet

+		if (TPU.currentTemplateHTML.indexOf('mceTmpl'))

+			tinyMCEPopup.execCommand('mceTemplate', false, {title : opt.text, tsrc : opt.value, body : TPU.currentTemplateHTML});

+		else

+			tinyMCEPopup.execCommand('mceInsertContent', false, TPU.currentTemplateHTML);

+

+		tinyMCEPopup.close();

+	},

+

+	getFileContents : function(u) {

+		var x, d, t = 'text/plain';

+

+		function g(s) {

+			x = 0;

+

+			try {

+				x = new ActiveXObject(s);

+			} catch (s) {

+			}

+

+			return x;

+		};

+

+		x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();

+

+		// Synchronous AJAX load file

+		x.overrideMimeType && x.overrideMimeType(t);

+		x.open("GET", u, false);

+		x.send(null);

+

+		return x.responseText;

+	},

+

+	resizeInputs : function() {

+		var wHeight, wWidth, elm;

+

+		if (!self.innerWidth) {

+			wHeight = document.body.clientHeight - 160;

+			wWidth = document.body.clientWidth - 40;

+		} else {

+			wHeight = self.innerHeight - 160;

+			wWidth = self.innerWidth - 40;

+		}

+

+		elm = document.getElementById('templatesrc');

+

+		if (elm) {

+			elm.style.height = Math.abs(wHeight) + 'px';

+			elm.style.width  = Math.abs(wWidth - 5) + 'px';

+		}

+	}

+};

 
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-}
-
-var TPU = { //Template Popup Utils
-	currentTemplateHTML : null,
-	templates : [],
-	inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),
-	plugin : tinyMCE.getWindowArg('pluginObj'),
-	data : tinyMCE.selectedInstance.getData('template'),
-
- 	init : function() {
- 		document.forms[0].insert.value = tinyMCE.getLang('lang_' + this.data.currentAction, 'Insert', true); 
-		TPU.loadTemplatePaths();
-
-		if (this.data.currentAction == "update")
-			document.getElementById('warning').innerHTML = tinyMCE.getLang('lang_template_warning');
-
-		this.resizeInputs();
-	},
-
- 	loadTemplatePaths : function() {
-		var tsrc, sel, x, u;
-
- 		tsrc = tinyMCE.getParam("template_templates", false);
- 		sel = document.getElementById('tpath');
-
-		// Setup external template list
-		if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
-			for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
-				tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
-		}
-
-		for (x=0; x<tsrc.length; x++) {
-			u = tsrc[x].src;
-
-			// Force absolute
-			if (u.indexOf('://') == -1 && u.indexOf('/') != 0)
-				u = tinyMCE.documentBasePath + "/" + u;
-
-			tsrc[x].src = u;
-		}
-
-		TPU.templates = tsrc;
-
-		for (x = 0; x < tsrc.length; x++)
-			sel.options[sel.options.length] = new Option(tsrc[x].title, tsrc[x].src);
-	},
-
- 	selectTemplate : function(o) {
-		var x, d = window.frames['templatesrc'].document;
-
-		this.currentTemplateHTML = this.plugin._replaceValues(this.getFileContents(o.value));
-
-		// Force complete document
-		if (!/<body/gi.test(this.currentTemplateHTML)) {
-			this.currentTemplateHTML = '<html xmlns="http://www.w3.org/1999/xhtml">' + 
-				'<head>' + 
-					'<title>blank_page</title>' + 
-					'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' + 
-				'</head>' + 
-				'<body>' + 
-				this.currentTemplateHTML + 
-				'</body>' + 
-				'</html>';
-		}
-
-		// Write HTML to preview iframe
-		d.body.innerHTML = this.currentTemplateHTML;
-
-		// Display description
- 		for (x = 0; x < TPU.templates.length; x++) {
-			if (TPU.templates[x].src == o.value) {
-				document.getElementById('tmpldesc').innerHTML = TPU.templates[x].description;
-				break;
-			}
-		}
- 	},
-
- 	insertTemplate : function() {
-		var sel, opt;
-
-		sel = document.getElementById('tpath');
-		opt = sel.options[sel.selectedIndex];
-
-		// Is it a template or snippet
-		if (TPU.currentTemplateHTML.indexOf('mceTmpl'))
-			tinyMCEPopup.execCommand('mceTemplate', false, {title : opt.text, tsrc : opt.value, body : TPU.currentTemplateHTML});
-		else
-			tinyMCEPopup.execCommand('mceInsertContent', false, TPU.currentTemplateHTML);
-
-		tinyMCEPopup.close();
-	},
-
-	getFileContents : function(u) {
-		var x, d, t = 'text/plain';
-
-		function g(s) {
-			x = 0;
-
-			try {
-				x = new ActiveXObject(s);
-			} catch (s) {
-			}
-
-			return x;
-		};
-
-		x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
-
-		// Synchronous AJAX load file
-		x.overrideMimeType && x.overrideMimeType(t);
-		x.open("GET", u, false);
-		x.send(null);
-
-		return x.responseText;
-	},
-
-	resizeInputs : function() {
-		var wHeight, wWidth, elm;
-
-		if (!self.innerWidth) {
-			wHeight = document.body.clientHeight - 160;
-			wWidth = document.body.clientWidth - 40;
-		} else {
-			wHeight = self.innerHeight - 160;
-			wWidth = self.innerWidth - 40;
-		}
-
-		elm = document.getElementById('templatesrc');
-
-		if (elm) {
-			elm.style.height = Math.abs(wHeight) + 'px';
-			elm.style.width  = Math.abs(wWidth - 5) + 'px';
-		}
-	}
-};
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/langs/en.js
@@ -1,17 +1,17 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('template',{

+title : 'Templates',

+label : 'Template',

+desc_label : 'Description',

+desc : 'Insert predefined template content',

+select : 'Select a template',

+preview : 'Preview',

+warning : 'Warning: Updating a template with a different one may cause data loss.',

+def_date_format : '%Y-%m-%d %H:%M:%S',

+months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),

+months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),

+day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),

+day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")

+});

 
-tinyMCE.addToLang('template',{
-title : 'Templates',
-label : 'Template',
-desc_label : 'Description',
-desc : 'Insert predefined template content',
-select : 'Select a template',
-preview : 'Preview',
-warning : 'Warning: Updating a template with a different one may cause data loss.',
-def_date_format : '%Y-%m-%d %H:%M:%S',
-months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"),
-months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"),
-day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"),
-day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/langs/en_dlg.js
+++ /dev/null
@@ -1,15 +1,1 @@
-tinyMCE.addI18n('en.template_dlg',{
-title:"Templates",
-label:"Template",
-desc_label:"Description",
-desc:"Insert predefined template content",
-select:"Select a template",
-preview:"Preview",
-warning:"Warning: Updating a template with a different one may cause data loss.",
-mdate_format:"%Y-%m-%d %H:%M:%S",
-cdate_format:"%Y-%m-%d %H:%M:%S",
-months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
-months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
-day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
-day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/template/template.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/template/template.htm
@@ -1,40 +1,38 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#template_dlg.title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/template.js"></script>
-	<link href="css/template.css" rel="stylesheet" type="text/css" />
-	<base target="_self" />
-</head>
-<body onresize="TemplateDialog.resize();"> 
-	<form onsubmit="TemplateDialog.insert();return false;">
-		<div id="frmbody">
-			<div class="title">{#template_dlg.desc}</div>
-			<div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>
-			<select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">
-				<option value="">{#template_dlg.select}...</option>
-			</select>
-			<span id="warning"></span></div>
-			<div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>
-			<span id="tmpldesc"></span></div>
-			<fieldset>
-				<legend>{#template_dlg.preview}</legend>
-				<iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
-			</fieldset>
-		</div>
-		
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" id="insert" name="insert" value="{#insert}" />
-			</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_template_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/template.js"></script>

+	<link href="css/template.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('TPU.init();');" onresize="TPU.resizeInputs();"> 

+	<form onsubmit="insert();return false;">

+		<div id="frmbody">

+			<div class="title">{$lang_template_desc}</div>

+			<div class="frmRow"><label for="tpath" title="{$lang_template_select}">{$lang_template_label}:</label>

+			<select id="tpath" name="tpath" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="TPU.selectTemplate(this.options[this.selectedIndex]);">

+				<option value="">{$lang_template_select}...</option>

+			</select>

+			<span id="warning"></span></div>

+			<div class="frmRow"><label for="tdesc">{$lang_template_desc_label}:</label>

+			<span id="tmpldesc"></span></div>

+			<fieldset>

+				<legend>{$lang_template_preview}</legend>

+				<iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>

+			</fieldset>

+		</div>

+		

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="TPU.insertTemplate();" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+	</form>

+</body> 

+</html> 

 
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-			</div>
-
-			<br style="clear:both" />
-		</div>
-	</form>
-</body> 
-</html> 
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.VisualChars',{init:function(ed,url){var t=this;t.editor=ed;ed.addCommand('mceVisualChars',t._toggleVisualChars,t);ed.addButton('visualchars',{title:'visualchars.desc',cmd:'mceVisualChars'});ed.onBeforeGetContent.add(function(ed,o){if(t.state){t.state=true;t._toggleVisualChars();}});},getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinymce.majorVersion+"."+tinymce.minorVersion};},_toggleVisualChars:function(){var t=this,ed=t.editor,nl,i,h,d=ed.getDoc(),b=ed.getBody(),nv,s=ed.selection,bo;t.state=!t.state;ed.controlManager.setActive('visualchars',t.state);if(t.state){nl=[];tinymce.walk(b,function(n){if(n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1)nl.push(n);},'childNodes');for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHidden mceVisualNbsp">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');ed.dom.setOuterHTML(nl[i],nv,d);}}else{nl=tinymce.grep(ed.dom.select('span',b),function(n){return ed.dom.hasClass(n,'mceVisualNbsp');});for(i=0;i<nl.length;i++)ed.dom.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(&middot;|\u00b7)/g,'&nbsp;'),d);}}});tinymce.PluginManager.add('visualchars',tinymce.plugins.VisualChars);})();
+tinyMCE.importPluginLanguagePack('visualchars');var TinyMCE_VisualCharsPlugin={getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.visualChars={state:false}},getControlHTML:function(cn){switch(cn){case"visualchars":return tinyMCE.getButtonHTML(cn,'lang_visualchars_desc','{$pluginurl}/images/visualchars.gif','mceVisualChars',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);switch(command){case"mceVisualChars":this._toggleVisualChars(editor_id,inst);return true}return false},cleanup:function(type,content,inst){if(type=="insert_to_editor_dom"||type=="get_from_editor_dom"){inst.visualChars.state=true;this._toggleVisualChars(inst.editorId,inst)}return content},_toggleVisualChars:function(editor_id,inst){var nl,i,h,d=inst.getDoc(),b=inst.getBody(),nv,s=inst.selection,bo;inst.visualChars.state=!inst.visualChars.state;bo=s.getBookmark(true);tinyMCE.switchClass(editor_id+'_visualchars',inst.visualChars.state?'mceButtonSelected':'mceButtonNormal');if(inst.visualChars.state){nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1});for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHiddenVisualChar">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');tinyMCE.setOuterHTML(nl[i],nv,d)}}else{nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==1&&n.nodeName=='SPAN'&&n.className=='mceItemHiddenVisualChar'});for(i=0;i<nl.length;i++)tinyMCE.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(&middot;|\u00b7)/g,'&nbsp;'),d)}}};tinyMCE.addPlugin("visualchars",TinyMCE_VisualCharsPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js
@@ -1,73 +1,90 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('visualchars');

+

+var TinyMCE_VisualCharsPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Visual characters',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		inst.visualChars = {

+			state : false

+		};

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "visualchars":

+				return tinyMCE.getButtonHTML(cn, 'lang_visualchars_desc', '{$pluginurl}/images/visualchars.gif', 'mceVisualChars', false);

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		var inst = tinyMCE.getInstanceById(editor_id);

+

+		switch (command) {

+			case "mceVisualChars":

+				this._toggleVisualChars(editor_id, inst);

+				return true;

+		}

+

+		return false;

+	},

+

+	cleanup : function(type, content, inst) {

+		if (type == "insert_to_editor_dom" || type == "get_from_editor_dom") {

+			inst.visualChars.state = true;

+			this._toggleVisualChars(inst.editorId, inst);

+		}

+

+		return content;

+	},

+

+	// Private plugin internal methods

+

+	_toggleVisualChars : function(editor_id, inst) {

+		var nl, i, h, d = inst.getDoc(), b = inst.getBody(), nv, s = inst.selection, bo;

+

+		inst.visualChars.state = !inst.visualChars.state;

+

+		bo = s.getBookmark(true);

+

+		tinyMCE.switchClass(editor_id + '_visualchars', inst.visualChars.state ? 'mceButtonSelected' : 'mceButtonNormal');

+

+		if (inst.visualChars.state) {

+			nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1;});

+

+			for (i=0; i<nl.length; i++) {

+				nv = nl[i].nodeValue;

+				nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHiddenVisualChar">$1</span>');

+				nv = nv.replace(/\u00a0/g, '\u00b7');

+				tinyMCE.setOuterHTML(nl[i], nv, d);

+			}

+		} else {

+			nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';});

+

+			for (i=0; i<nl.length; i++)

+				tinyMCE.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(&middot;|\u00b7)/g, '&nbsp;'), d);

+		}

+

+		//s.moveToBookmark(bo);

+	}

+};

+

+tinyMCE.addPlugin("visualchars", TinyMCE_VisualCharsPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.VisualChars', {
-		init : function(ed, url) {
-			var t = this;
-
-			t.editor = ed;
-
-			// Register commands
-			ed.addCommand('mceVisualChars', t._toggleVisualChars, t);
-
-			// Register buttons
-			ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});
-
-			ed.onBeforeGetContent.add(function(ed, o) {
-				if (t.state) {
-					t.state = true;
-					t._toggleVisualChars();
-				}
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Visual characters',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		},
-
-		// Private methods
-
-		_toggleVisualChars : function() {
-			var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo;
-
-			t.state = !t.state;
-			ed.controlManager.setActive('visualchars', t.state);
-
-			if (t.state) {
-				nl = [];
-				tinymce.walk(b, function(n) {
-					if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)
-						nl.push(n);
-				}, 'childNodes');
-
-				for (i=0; i<nl.length; i++) {
-					nv = nl[i].nodeValue;
-					nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHidden mceVisualNbsp">$1</span>');
-					nv = nv.replace(/\u00a0/g, '\u00b7');
-					ed.dom.setOuterHTML(nl[i], nv, d);
-				}
-			} else {
-				nl = tinymce.grep(ed.dom.select('span', b), function(n) {
-					return ed.dom.hasClass(n, 'mceVisualNbsp');
-				});
-
-				for (i=0; i<nl.length; i++)
-					ed.dom.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(&middot;|\u00b7)/g, '&nbsp;'), d);
-			}
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/visualchars/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/visualchars/langs/en.js
@@ -1,6 +1,6 @@
-// EN lang variables
+// EN lang variables

+

+tinyMCE.addToLang('visualchars',{

+desc : 'Visual control characters on/off.'

+});

 
-tinyMCE.addToLang('visualchars',{
-desc : 'Visual control characters on/off.'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
@@ -1,150 +1,149 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#xhtmlxtras_dlg.title_abbr_element}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/element_common.js"></script>
-	<script type="text/javascript" src="js/abbr.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
-</head>
-<body style="display: none">
-<form onsubmit="insertAbbr();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_xhtmlxtras_title_abbr_element}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/abbr.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/popup.css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertAbbr();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>

+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 

+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 

+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 

+						<td>

+							<select id="class" name="class" class="field mceEditableSelect">

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+							</select>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 

+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 

+						<td>

+							<select id="dir" name="dir" class="field"> 

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 

+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 

+							</select>

+						</td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 

+						<td>

+							<input id="lang" name="lang" type="text" value="" class="field" />

+						</td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+		<div id="events_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>

+

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label for="onfocus">onfocus</label>:</td> 

+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onblur">onblur</label>:</td> 

+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onclick">onclick</label>:</td> 

+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 

+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 

+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 

+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 

+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 

+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 

+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 

+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 

+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 

+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+	</div>

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAbbr();" />

+		</div>

+		<div style="float: left">

+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAbbr();" style="display: none;" />

+		</div>

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
-						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
-						<td>
-							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{#not_set}</option> 
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
-						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
-						<td>
-							<select id="dir" name="dir" class="field"> 
-								<option value="">{#not_set}</option> 
-								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
-								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
-							</select>
-						</td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
-						<td>
-							<input id="lang" name="lang" type="text" value="" class="field" />
-						</td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div id="events_panel" class="panel">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label for="onfocus">onfocus</label>:</td> 
-						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onblur">onblur</label>:</td> 
-						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onclick">onclick</label>:</td> 
-						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
-						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
-						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
-						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
-						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
-						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
-						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
-						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
-						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
-						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-	</div>
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-		<div style="float: left">
-			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />
-		</div>
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
@@ -1,150 +1,149 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#xhtmlxtras_dlg.title_acronym_element}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/element_common.js"></script>
-	<script type="text/javascript" src="js/acronym.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
-</head>
-<body style="display: none">
-<form onsubmit="insertAcronym();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_xhtmlxtras_title_acronym_element}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/acronym.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/popup.css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertAcronym();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>

+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 

+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 

+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 

+						<td>

+							<select id="class" name="class" class="field mceEditableSelect">

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+							</select>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 

+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 

+						<td>

+							<select id="dir" name="dir" class="field"> 

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 

+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 

+							</select>

+						</td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 

+						<td>

+							<input id="lang" name="lang" type="text" value="" class="field" />

+						</td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+		<div id="events_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>

+

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label for="onfocus">onfocus</label>:</td> 

+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onblur">onblur</label>:</td> 

+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onclick">onclick</label>:</td> 

+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 

+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 

+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 

+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 

+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 

+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 

+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 

+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 

+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 

+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+	</div>

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAcronym();" />

+		</div>

+		<div style="float: left">

+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeAcronym();" style="display: none;" />

+		</div>

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
-						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
-						<td>
-							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{#not_set}</option> 
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
-						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
-						<td>
-							<select id="dir" name="dir" class="field"> 
-								<option value="">{#not_set}</option> 
-								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
-								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
-							</select>
-						</td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
-						<td>
-							<input id="lang" name="lang" type="text" value="" class="field" />
-						</td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div id="events_panel" class="panel">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label for="onfocus">onfocus</label>:</td> 
-						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onblur">onblur</label>:</td> 
-						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onclick">onclick</label>:</td> 
-						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
-						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
-						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
-						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
-						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
-						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
-						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
-						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
-						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
-						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-	</div>
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-		<div style="float: left">
-			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />
-		</div>
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
@@ -1,155 +1,154 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#xhtmlxtras_dlg.attribs_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="js/attributes.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/attributes.css" />
-	<base target="_self" />
-</head>
-<body style="display: none">
-<form onsubmit="insertAction();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>
-			<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_xhtmlxtras_attribs_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/attributes.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/attributes.css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertAction();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_attribute_attrib_tab}</a></span></li>

+			<li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_attribute_events_tab}</a></span></li>

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_attribute_attrib_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 

+						<td><input id="title" name="title" type="text" value="" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 

+						<td><input id="id" name="id" type="text" value="" /></td> 

+					</tr>

+					<tr>

+						<td><label id="classlabel" for="classlist">{$lang_class_name}</label></td>

+						<td>

+							<select id="classlist" name="classlist" class="mceEditableSelect">

+								<option value="" selected>{$lang_not_set}</option>

+							</select>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 

+						<td><input id="style" name="style" type="text" value="" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 

+						<td>

+							<select id="dir" name="dir"> 

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+								<option value="ltr">{$lang_xhtmlxtras_option_ltr}</option> 

+								<option value="rtl">{$lang_xhtmlxtras_option_rtl}</option> 

+							</select>

+						</td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 

+						<td>

+							<input id="lang" name="lang" type="text" value="" />

+						</td> 

+					</tr>

+					<tr>

+							<td><label id="tabindexlabel" for="tabindex">{$lang_xhtmlxtras_attribute_label_tabindex}</label></td>

+							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>

+						</tr>

+

+						<tr>

+							<td><label id="accesskeylabel" for="accesskey">{$lang_xhtmlxtras_attribute_label_accesskey}</label></td>

+							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>

+						</tr>

+				</table>

+			</fieldset>

+		</div>

+		<div id="events_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_attribute_events_tab}</legend>

+

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label for="onfocus">onfocus</label>:</td> 

+						<td><input id="onfocus" name="onfocus" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onblur">onblur</label>:</td> 

+						<td><input id="onblur" name="onblur" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onclick">onclick</label>:</td> 

+						<td><input id="onclick" name="onclick" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 

+						<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 

+						<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 

+						<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 

+						<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 

+						<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 

+						<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 

+						<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 

+						<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 

+						<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+	</div>

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertAction();" />

+		</div>

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="mceFocus" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
-						<td><input id="id" name="id" type="text" value="" /></td> 
-					</tr>
-					<tr>
-						<td><label id="classlabel" for="classlist">{#class_name}</label></td>
-						<td>
-							<select id="classlist" name="classlist" class="mceEditableSelect">
-								<option value="" selected>{#not_set}</option>
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
-						<td><input id="style" name="style" type="text" value="" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
-						<td>
-							<select id="dir" name="dir"> 
-								<option value="">{#not_set}</option> 
-								<option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option> 
-								<option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option> 
-							</select>
-						</td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
-						<td>
-							<input id="lang" name="lang" type="text" value="" />
-						</td> 
-					</tr>
-					<tr>
-							<td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>
-							<td><input type="text" id="tabindex" name="tabindex" value="" /></td>
-						</tr>
-
-						<tr>
-							<td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>
-							<td><input type="text" id="accesskey" name="accesskey" value="" /></td>
-						</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div id="events_panel" class="panel">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>
-
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label for="onfocus">onfocus</label>:</td> 
-						<td><input id="onfocus" name="onfocus" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onblur">onblur</label>:</td> 
-						<td><input id="onblur" name="onblur" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onclick">onclick</label>:</td> 
-						<td><input id="onclick" name="onclick" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
-						<td><input id="ondblclick" name="ondblclick" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
-						<td><input id="onmousedown" name="onmousedown" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
-						<td><input id="onmouseup" name="onmouseup" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
-						<td><input id="onmouseover" name="onmouseover" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
-						<td><input id="onmousemove" name="onmousemove" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
-						<td><input id="onmouseout" name="onmouseout" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
-						<td><input id="onkeypress" name="onkeypress" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
-						<td><input id="onkeydown" name="onkeydown" type="text" value="" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
-						<td><input id="onkeyup" name="onkeyup" type="text" value="" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-	</div>
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#insert}" />
-		</div>
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
@@ -1,150 +1,149 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#xhtmlxtras_dlg.title_cite_element}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/element_common.js"></script>
-	<script type="text/javascript" src="js/cite.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
-</head>
-<body style="display: none">
-<form onsubmit="insertCite();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_xhtmlxtras_title_cite_element}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/cite.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/popup.css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertCite();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>

+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 

+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 

+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 

+						<td>

+							<select id="class" name="class" class="field mceEditableSelect">

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+							</select>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 

+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 

+						<td>

+							<select id="dir" name="dir" class="field"> 

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 

+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 

+							</select>

+						</td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 

+						<td>

+							<input id="lang" name="lang" type="text" value="" class="field" />

+						</td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+		<div id="events_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>

+

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label for="onfocus">onfocus</label>:</td> 

+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onblur">onblur</label>:</td> 

+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onclick">onclick</label>:</td> 

+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 

+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 

+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 

+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 

+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 

+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 

+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 

+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 

+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 

+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+	</div>

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertCite();" />

+		</div>

+		<div style="float: left">

+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeCite();" style="display: none;" />

+		</div>

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
-						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
-						<td>
-							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{#not_set}</option> 
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
-						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
-						<td>
-							<select id="dir" name="dir" class="field"> 
-								<option value="">{#not_set}</option> 
-								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
-								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
-							</select>
-						</td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
-						<td>
-							<input id="lang" name="lang" type="text" value="" class="field" />
-						</td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div id="events_panel" class="panel">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label for="onfocus">onfocus</label>:</td> 
-						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onblur">onblur</label>:</td> 
-						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onclick">onclick</label>:</td> 
-						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
-						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
-						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
-						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
-						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
-						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
-						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
-						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
-						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
-						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-	</div>
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-		<div style="float: left">
-			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />
-		</div>
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css
@@ -1,12 +1,12 @@
-.panel_wrapper div.current {
-	height: 290px;
-}
+.panel_wrapper div.current {

+	height: 290px;

+}

+

+#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {

+	width: 200px;

+}

+

+#events_panel input {

+	width: 200px;

+}

 
-#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
-	width: 200px;
-}
-
-#events_panel input {
-	width: 200px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css
@@ -1,10 +1,47 @@
-input.field, select.field {width:200px;}
-input.picker {width:179px; margin-left: 5px;}
-input.disabled {border-color:#F2F2F2;}
-img.picker {vertical-align:text-bottom; cursor:pointer;}
-h1 {padding: 0 0 5px 0;}
-.panel_wrapper div.current {height:160px;}
-#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}
-a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}
-#datetime {width:180px;}
+a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}

+a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important;  cursor: default;  background-color: #B6BDD2;}

+

+img {

+	border: 0;

+}

+

+input.field, select.field {

+	width: 200px;

+}

+

+input.picker {

+	width: 179px;

+	margin-left: 5px;

+}

+

+input.disabled {

+	border-color: #F2F2F2;

+}

+

+img.picker {

+	vertical-align: text-bottom;

+	cursor: pointer;

+}

+

+h1 {

+	padding: 0 0 5px 0;

+}

+

+#remove {

+	font-weight: bold;

+	width: 90px;

+	height: 21px;

+	border: 0px;

+	background-image: url('../images/remove_button_bg.gif');

+	cursor: pointer;

+	margin-left: 3px;

+}

+

+.panel_wrapper div.current {

+	height: 160px;

+}

+

+#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {

+	height: 220px;

+}

 

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
@@ -1,25 +1,25 @@
-ins {
-	border-bottom: 1px solid green;
-	text-decoration: none;
-	color: green;
-}
+ins {

+	border-bottom: 1px solid green;

+	text-decoration: none;

+	color: green;

+}

+

+del {

+	color: Red;

+	text-decoration: line-through;

+}

+

+cite {

+	border-bottom: 1px dashed blue;

+}

+

+acronym {

+	border-bottom: 1px dotted #CCC;

+	cursor: help;

+}

+

+abbr, html\:abbr {

+	border-bottom: 1px dashed #CCC;

+	cursor: help;

+}

 
-del {
-	color: Red;
-	text-decoration: line-through;
-}
-
-cite {
-	border-bottom: 1px dashed blue;
-}
-
-acronym {
-	border-bottom: 1px dotted #CCC;
-	cursor: help;
-}
-
-abbr, html\:abbr {
-	border-bottom: 1px dashed #CCC;
-	cursor: help;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
@@ -1,171 +1,170 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#xhtmlxtras_dlg.title_del_element}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/element_common.js"></script>
-	<script type="text/javascript" src="js/del.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
-</head>
-<body id="xhtmlxtrasins" style="display: none">
-<form onsubmit="insertDel();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_xhtmlxtras_title_del_element}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/del.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/popup.css" />

+	<base target="_self" />

+</head>

+<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertDel();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>

+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>

+						<td>

+							<table border="0" cellspacing="0" cellpadding="0">

+								<tr> 

+									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td> 

+									<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>

+								</tr>

+							</table>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>

+						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 

+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 

+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 

+						<td>

+							<select id="class" name="class" class="field mceEditableSelect">

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+							</select>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 

+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 

+						<td>

+							<select id="dir" name="dir" class="field"> 

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 

+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 

+							</select>

+						</td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 

+						<td>

+							<input id="lang" name="lang" type="text" value="" class="field" />

+						</td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+		<div id="events_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>

+

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label for="onfocus">onfocus</label>:</td> 

+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onblur">onblur</label>:</td> 

+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onclick">onclick</label>:</td> 

+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 

+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 

+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 

+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 

+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 

+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 

+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 

+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 

+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 

+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+	</div>

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertDel();" />

+		</div>

+		<div style="float: left">

+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeDel();" style="display: none;" />

+		</div>

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
-						<td>
-							<table border="0" cellspacing="0" cellpadding="0">
-								<tr> 
-									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> 
-									<td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" alt="{#xhtmlxtras_dlg.insert_date}" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
-								</tr>
-							</table>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
-						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
-						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
-						<td>
-							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{#not_set}</option> 
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
-						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
-						<td>
-							<select id="dir" name="dir" class="field"> 
-								<option value="">{#not_set}</option> 
-								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
-								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
-							</select>
-						</td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
-						<td>
-							<input id="lang" name="lang" type="text" value="" class="field" />
-						</td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div id="events_panel" class="panel">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label for="onfocus">onfocus</label>:</td> 
-						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onblur">onblur</label>:</td> 
-						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onclick">onclick</label>:</td> 
-						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
-						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
-						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
-						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
-						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
-						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
-						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
-						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
-						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
-						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-	</div>
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-		<div style="float: left">
-			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />
-		</div>
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-
-</form>
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
@@ -1,1 +1,1 @@
-(function(){tinymce.create('tinymce.plugins.XHTMLXtrasPlugin',{init:function(ed,url){ed.addCommand('mceCite',function(){ed.windowManager.open({file:url+'/cite.htm',width:350+parseInt(ed.getLang('xhtmlxtras.cite_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.cite_delta_height',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAcronym',function(){ed.windowManager.open({file:url+'/acronym.htm',width:350+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.acronym_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAbbr',function(){ed.windowManager.open({file:url+'/abbr.htm',width:350+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),height:250+parseInt(ed.getLang('xhtmlxtras.abbr_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceDel',function(){ed.windowManager.open({file:url+'/del.htm',width:340+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.del_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceIns',function(){ed.windowManager.open({file:url+'/ins.htm',width:340+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),height:310+parseInt(ed.getLang('xhtmlxtras.ins_delta_width',0)),inline:1},{plugin_url:url});});ed.addCommand('mceAttributes',function(){ed.windowManager.open({file:url+'/attributes.htm',width:380,height:370,inline:1},{plugin_url:url});});ed.addButton('cite',{title:'xhtmlxtras.cite_desc',cmd:'mceCite'});ed.addButton('acronym',{title:'xhtmlxtras.acronym_desc',cmd:'mceAcronym'});ed.addButton('abbr',{title:'xhtmlxtras.abbr_desc',cmd:'mceAbbr'});ed.addButton('del',{title:'xhtmlxtras.del_desc',cmd:'mceDel'});ed.addButton('ins',{title:'xhtmlxtras.ins_desc',cmd:'mceIns'});ed.addButton('attribs',{title:'xhtmlxtras.attribs_desc',cmd:'mceAttributes'});if(tinymce.isIE){function fix(ed,o){if(o.set){o.content=o.content.replace(/<abbr([^>]+)>/gi,'<html:abbr $1>');o.content=o.content.replace(/<\/abbr>/gi,'</html:abbr>');}};ed.onBeforeSetContent.add(fix);ed.onPostProcess.add(fix);}ed.onNodeChange.add(function(ed,cm,n,co){n=ed.dom.getParent(n,'CITE,ACRONYM,ABBR,DEL,INS');cm.setDisabled('cite',co);cm.setDisabled('acronym',co);cm.setDisabled('abbr',co);cm.setDisabled('del',co);cm.setDisabled('ins',co);cm.setDisabled('attribs',n&&n.nodeName=='BODY');if(n){cm.setDisabled(n.nodeName.toLowerCase(),0);cm.setActive(n.nodeName.toLowerCase(),1);}else{cm.setActive('cite',0);cm.setActive('acronym',0);cm.setActive('abbr',0);cm.setActive('del',0);cm.setActive('ins',0);}});},getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('xhtmlxtras',tinymce.plugins.XHTMLXtrasPlugin);})();
+tinyMCE.importPluginLanguagePack('xhtmlxtras');var TinyMCE_XHTMLXtrasPlugin={getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/xhtmlxtras/css/xhtmlxtras.css")},getControlHTML:function(cn){switch(cn){case"cite":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_cite_desc','{$pluginurl}/images/cite.gif','mceCite',true);case"acronym":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_acronym_desc','{$pluginurl}/images/acronym.gif','mceAcronym',true);case"abbr":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_abbr_desc','{$pluginurl}/images/abbr.gif','mceAbbr',true);case"del":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_del_desc','{$pluginurl}/images/del.gif','mceDel',true);case"ins":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_ins_desc','{$pluginurl}/images/ins.gif','mceIns',true);case"attribs":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_attribs_desc','{$pluginurl}/images/attribs.gif','mceAttributes',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var template,inst,elm;switch(command){case"mceCite":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/cite.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAcronym":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/acronym.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAbbr":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/abbr.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceIns":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/ins.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceDel":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/del.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAttributes":inst=tinyMCE.getInstanceById(editor_id);elm=inst.getFocusElement();if(elm&&elm.nodeName!=='BODY'&&elm.className.indexOf('mceItem')==-1){tinyMCE.openWindow({file:'../../plugins/xhtmlxtras/attributes.htm',width:380,height:370},{editor_id:editor_id})}return true}return false},cleanup:function(type,content,inst){if(type=='insert_to_editor'&&tinyMCE.isIE&&!tinyMCE.isOpera){content=content.replace(/<abbr([^>]+)>/gi,'<html:ABBR $1>');content=content.replace(/<\/abbr>/gi,'</html:ABBR>')}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var elm=tinyMCE.getParentElement(node);if(node==null)return;tinyMCE.switchClass(editor_id+'_attribs','mceButtonDisabled');if(!any_selection){tinyMCE.switchClass(editor_id+'_cite','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_acronym','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_abbr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_del','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_ins','mceButtonDisabled')}else{tinyMCE.switchClass(editor_id+'_cite','mceButtonNormal');tinyMCE.switchClass(editor_id+'_acronym','mceButtonNormal');tinyMCE.switchClass(editor_id+'_abbr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_del','mceButtonNormal');tinyMCE.switchClass(editor_id+'_ins','mceButtonNormal')}if(elm&&elm.nodeName!='BODY'&&elm.className.indexOf('mceItem')==-1)tinyMCE.switchClass(editor_id+'_attribs','mceButtonNormal');switch(node.nodeName){case"CITE":tinyMCE.switchClass(editor_id+'_cite','mceButtonSelected');return true;case"ACRONYM":tinyMCE.switchClass(editor_id+'_acronym','mceButtonSelected');return true;case"abbr":case"HTML:ABBR":case"ABBR":tinyMCE.switchClass(editor_id+'_abbr','mceButtonSelected');return true;case"DEL":tinyMCE.switchClass(editor_id+'_del','mceButtonSelected');return true;case"INS":tinyMCE.switchClass(editor_id+'_ins','mceButtonSelected');return true}return true},_anySel:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),t=inst.selection.getSelectedText(),pe;pe=tinyMCE.getParentElement(inst.getFocusElement(),'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');return pe||inst.getFocusElement().nodeName=="IMG"||(t&&t.length>0)}};tinyMCE.addPlugin("xhtmlxtras",TinyMCE_XHTMLXtrasPlugin);

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
@@ -1,134 +1,200 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+/* Import plugin specific language pack */

+tinyMCE.importPluginLanguagePack('xhtmlxtras');

+

+var TinyMCE_XHTMLXtrasPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'XHTML Xtras Plugin',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	initInstance : function(inst) {

+		tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css");

+	},

+

+	getControlHTML : function(cn) {

+		switch (cn) {

+			case "cite":

+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true);

+

+			case "acronym":

+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true);

+

+			case "abbr":

+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true);

+

+			case "del":

+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true);

+

+			case "ins":

+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true);

+

+			case "attribs":

+				return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_attribs_desc', '{$pluginurl}/images/attribs.gif', 'mceAttributes', true);

+		}

+

+		return "";

+	},

+

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		var template, inst, elm;

+

+		switch (command) {

+			case "mceCite":

+				if (!this._anySel(editor_id))

+					return true;

+

+				template = new Array();

+				template['file'] = '../../plugins/xhtmlxtras/cite.htm';

+				template['width'] = 350;

+				template['height'] = 250;

+				tinyMCE.openWindow(template, {editor_id : editor_id});

+				return true;

+

+			case "mceAcronym":

+				if (!this._anySel(editor_id))

+					return true;

+

+				template = new Array();

+				template['file'] = '../../plugins/xhtmlxtras/acronym.htm';

+				template['width'] = 350;

+				template['height'] = 250;

+				tinyMCE.openWindow(template, {editor_id : editor_id});

+				return true;

+

+			case "mceAbbr":

+				if (!this._anySel(editor_id))

+					return true;

+

+				template = new Array();

+				template['file'] = '../../plugins/xhtmlxtras/abbr.htm';

+				template['width'] = 350;

+				template['height'] = 250;

+				tinyMCE.openWindow(template, {editor_id : editor_id});

+				return true;

+

+			case "mceIns":

+				if (!this._anySel(editor_id))

+					return true;

+

+				template = new Array();

+				template['file'] = '../../plugins/xhtmlxtras/ins.htm';

+				template['width'] = 350;

+				template['height'] = 310;

+				tinyMCE.openWindow(template, {editor_id : editor_id});

+				return true;

+

+			case "mceDel":

+				if (!this._anySel(editor_id))

+					return true;

+

+				template = new Array();

+				template['file'] = '../../plugins/xhtmlxtras/del.htm';

+				template['width'] = 350;

+				template['height'] = 310;

+				tinyMCE.openWindow(template, {editor_id : editor_id});

+				return true;

+

+			case "mceAttributes":

+				inst = tinyMCE.getInstanceById(editor_id);

+				elm = inst.getFocusElement();

+

+				if (elm && elm.nodeName !== 'BODY' && elm.className.indexOf('mceItem') == -1) {

+					tinyMCE.openWindow({

+						file : '../../plugins/xhtmlxtras/attributes.htm',

+						width : 380,

+						height : 370

+					}, {editor_id : editor_id});

+				}

+

+				return true;

+		}

+

+		return false;

+	},

+

+	cleanup : function(type, content, inst) {

+		if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) {

+			content = content.replace(/<abbr([^>]+)>/gi, '<html:ABBR $1>');

+			content = content.replace(/<\/abbr>/gi, '</html:ABBR>');

+		}

+

+		return content;

+	},

+

+	handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) {

+		var elm = tinyMCE.getParentElement(node);

+

+		if (node == null)

+			return;

+

+		tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonDisabled');

+

+		if (!any_selection) {

+			// Disable the buttons

+			tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled');

+			tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled');

+			tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled');

+			tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled');

+			tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled');

+		} else {

+			// A selection means the buttons should be active.

+			tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal');

+		}

+

+		if (elm && elm.nodeName != 'BODY' && elm.className.indexOf('mceItem') == -1)

+			tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonNormal');

+

+		switch (node.nodeName) {

+			case "CITE":

+				tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected');

+				return true;

+

+			case "ACRONYM":

+				tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected');

+				return true;

+

+			case "abbr": // IE

+			case "HTML:ABBR": // FF

+			case "ABBR":

+				tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected');

+				return true;

+

+			case "DEL":

+				tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected');

+				return true;

+

+			case "INS":

+				tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected');

+				return true;

+		}

+

+		return true;

+	},

+

+	_anySel : function(editor_id) {

+		var inst = tinyMCE.getInstanceById(editor_id), t = inst.selection.getSelectedText(), pe;

+

+		pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');

+

+		return pe || inst.getFocusElement().nodeName == "IMG" || (t && t.length > 0);

+	}

+};

+

+tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin);

 
-(function() {
-	tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {
-		init : function(ed, url) {
-			// Register commands
-			ed.addCommand('mceCite', function() {
-				ed.windowManager.open({
-					file : url + '/cite.htm',
-					width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),
-					height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			ed.addCommand('mceAcronym', function() {
-				ed.windowManager.open({
-					file : url + '/acronym.htm',
-					width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
-					height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			ed.addCommand('mceAbbr', function() {
-				ed.windowManager.open({
-					file : url + '/abbr.htm',
-					width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
-					height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			ed.addCommand('mceDel', function() {
-				ed.windowManager.open({
-					file : url + '/del.htm',
-					width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
-					height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			ed.addCommand('mceIns', function() {
-				ed.windowManager.open({
-					file : url + '/ins.htm',
-					width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
-					height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			ed.addCommand('mceAttributes', function() {
-				ed.windowManager.open({
-					file : url + '/attributes.htm',
-					width : 380,
-					height : 370,
-					inline : 1
-				}, {
-					plugin_url : url
-				});
-			});
-
-			// Register buttons
-			ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});
-			ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});
-			ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});
-			ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});
-			ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});
-			ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});
-
-			if (tinymce.isIE) {
-				function fix(ed, o) {
-					if (o.set) {
-						o.content = o.content.replace(/<abbr([^>]+)>/gi, '<html:abbr $1>');
-						o.content = o.content.replace(/<\/abbr>/gi, '</html:abbr>');
-					}
-				};
-
-				ed.onBeforeSetContent.add(fix);
-				ed.onPostProcess.add(fix);
-			}
-
-			ed.onNodeChange.add(function(ed, cm, n, co) {
-				n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');
-
-				cm.setDisabled('cite', co);
-				cm.setDisabled('acronym', co);
-				cm.setDisabled('abbr', co);
-				cm.setDisabled('del', co);
-				cm.setDisabled('ins', co);
-				cm.setDisabled('attribs', n && n.nodeName == 'BODY');
-
-				if (n) {
-					cm.setDisabled(n.nodeName.toLowerCase(), 0);
-					cm.setActive(n.nodeName.toLowerCase(), 1);
-				} else {
-					cm.setActive('cite', 0);
-					cm.setActive('acronym', 0);
-					cm.setActive('abbr', 0);
-					cm.setActive('del', 0);
-					cm.setActive('ins', 0);
-				}
-			});
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'XHTML Xtras Plugin',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			};
-		}
-	});
-
-	// Register plugin
-	tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);
-})();

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
@@ -1,171 +1,170 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#xhtmlxtras_dlg.title_ins_element}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/editable_selects.js"></script>
-	<script type="text/javascript" src="js/element_common.js"></script>
-	<script type="text/javascript" src="js/ins.js"></script>
-	<link rel="stylesheet" type="text/css" href="css/popup.css" />
-	<base target="_self" />
-</head>
-<body id="xhtmlxtrasins" style="display: none">
-<form onsubmit="insertIns();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
-			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_xhtmlxtras_title_ins_element}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/element_common.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/ins.js"></script>

+	<link rel="stylesheet" type="text/css" href="css/popup.css" />

+	<base target="_self" />

+</head>

+<body id="xhtmlxtrasins" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertIns();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_xhtmlxtras_general_tab}</a></span></li>

+			<!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="datetimelabel" for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td> 

+						<td>

+							<table border="0" cellspacing="0" cellpadding="0">

+								<tr> 

+									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field" /></td> 

+									<td><a href="javascript:insertDateTime('datetime');" class="mceButtonNormal"><img src="images/date_time.gif" class="picker" alt="{$lang_xhtmlxtras_insert_date}" title="{$lang_xhtmlxtras_insert_date}" /></a></td>

+								</tr>

+							</table>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="citelabel" for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td> 

+						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label id="titlelabel" for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td> 

+						<td><input id="title" name="title" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="idlabel" for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td> 

+						<td><input id="id" name="id" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="classlabel" for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td> 

+						<td>

+							<select id="class" name="class" class="field mceEditableSelect">

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+							</select>

+						</td>

+					</tr>

+					<tr>

+						<td class="label"><label id="stylelabel" for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td> 

+						<td><input id="style" name="style" type="text" value="" class="field" /></td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="dirlabel" for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td> 

+						<td>

+							<select id="dir" name="dir" class="field"> 

+								<option value="">{$lang_xhtmlxtras_not_set}</option> 

+								<option value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option> 

+								<option value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option> 

+							</select>

+						</td> 

+					</tr>

+					<tr>

+						<td class="label"><label id="langlabel" for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td> 

+						<td>

+							<input id="lang" name="lang" type="text" value="" class="field" />

+						</td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+		<div id="events_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>

+

+				<table border="0" cellpadding="0" cellspacing="4">

+					<tr>

+						<td class="label"><label for="onfocus">onfocus</label>:</td> 

+						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onblur">onblur</label>:</td> 

+						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onclick">onclick</label>:</td> 

+						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 

+						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 

+						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 

+						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 

+						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 

+						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 

+						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 

+						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 

+						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 

+					</tr>

+

+					<tr>

+						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 

+						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 

+					</tr>

+				</table>

+			</fieldset>

+		</div>

+	</div>

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertIns();" />

+		</div>

+		<div style="float: left">

+			<input type="button" id="remove" name="remove" value="{$lang_xhtmlxtras_remove}" onclick="removeIns();" style="display: none;" />

+		</div>

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td> 
-						<td>
-							<table border="0" cellspacing="0" cellpadding="0">
-								<tr> 
-									<td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> 
-									<td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" alt="{#xhtmlxtras_dlg.insert_date}" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
-								</tr>
-							</table>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td> 
-						<td><input id="cite" name="cite" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td> 
-						<td><input id="title" name="title" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td> 
-						<td><input id="id" name="id" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td> 
-						<td>
-							<select id="class" name="class" class="field mceEditableSelect">
-								<option value="">{#not_set}</option> 
-							</select>
-						</td>
-					</tr>
-					<tr>
-						<td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> 
-						<td><input id="style" name="style" type="text" value="" class="field" /></td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td> 
-						<td>
-							<select id="dir" name="dir" class="field"> 
-								<option value="">{#not_set}</option> 
-								<option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option> 
-								<option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option> 
-							</select>
-						</td> 
-					</tr>
-					<tr>
-						<td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td> 
-						<td>
-							<input id="lang" name="lang" type="text" value="" class="field" />
-						</td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div id="events_panel" class="panel">
-			<fieldset>
-				<legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
-				<table border="0" cellpadding="0" cellspacing="4">
-					<tr>
-						<td class="label"><label for="onfocus">onfocus</label>:</td> 
-						<td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onblur">onblur</label>:</td> 
-						<td><input id="onblur" name="onblur" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onclick">onclick</label>:</td> 
-						<td><input id="onclick" name="onclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="ondblclick">ondblclick</label>:</td> 
-						<td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousedown">onmousedown</label>:</td> 
-						<td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseup">onmouseup</label>:</td> 
-						<td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseover">onmouseover</label>:</td> 
-						<td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmousemove">onmousemove</label>:</td> 
-						<td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onmouseout">onmouseout</label>:</td> 
-						<td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeypress">onkeypress</label>:</td> 
-						<td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeydown">onkeydown</label>:</td> 
-						<td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td> 
-					</tr>
-
-					<tr>
-						<td class="label"><label for="onkeyup">onkeyup</label>:</td> 
-						<td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td> 
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-	</div>
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-		<div style="float: left">
-			<input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />
-		</div>
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-
-</form>
-
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js
+++ /dev/null
@@ -1,26 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-function init() {
-	SXE.initElementDialog('abbr');
-	if (SXE.currentAction == "update") {
-		SXE.showRemoveButton();
-	}
-}
-
-function insertAbbr() {
-	SXE.insertElement(tinymce.isIE ? 'html:abbr' : 'abbr');
-	tinyMCEPopup.close();
-}
-
-function removeAbbr() {
-	SXE.removeElement('abbr');
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js
+++ /dev/null
@@ -1,26 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-function init() {
-	SXE.initElementDialog('acronym');
-	if (SXE.currentAction == "update") {
-		SXE.showRemoveButton();
-	}
-}
-
-function insertAcronym() {
-	SXE.insertElement('acronym');
-	tinyMCEPopup.close();
-}
-
-function removeAcronym() {
-	SXE.removeElement('acronym');
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js
+++ /dev/null
@@ -1,124 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	var inst = tinyMCEPopup.editor;
-	var dom = inst.dom;
-	var elm = inst.selection.getNode();
-	var f = document.forms[0];
-	var onclick = dom.getAttrib(elm, 'onclick');
-
-	setFormValue('title', dom.getAttrib(elm, 'title'));
-	setFormValue('id', dom.getAttrib(elm, 'id'));
-	setFormValue('style', dom.getAttrib(elm, "style"));
-	setFormValue('dir', dom.getAttrib(elm, 'dir'));
-	setFormValue('lang', dom.getAttrib(elm, 'lang'));
-	setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
-	setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
-	setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
-	setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
-	setFormValue('onclick', onclick);
-	setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
-	setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
-	setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
-	setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
-	setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
-	setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
-	setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
-	setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
-	setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
-	className = dom.getAttrib(elm, 'class');
-
-	addClassesToList('classlist', 'advlink_styles');
-	selectByValue(f, 'classlist', className, true);
-
-	TinyMCE_EditableSelects.init();
-}
-
-function setFormValue(name, value) {
-	if(value && document.forms[0].elements[name]){
-		document.forms[0].elements[name].value = value;
-	}
-}
-
-function insertAction() {
-	var inst = tinyMCEPopup.editor;
-	var elm = inst.selection.getNode();
-
-	tinyMCEPopup.execCommand("mceBeginUndoLevel");	
-	setAllAttribs(elm);
-	tinyMCEPopup.execCommand("mceEndUndoLevel");
-	tinyMCEPopup.close();
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib.toLowerCase()];
-	var inst = tinyMCEPopup.editor;
-	var dom = inst.dom;
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value != "") {
-		dom.setAttrib(elm, attrib.toLowerCase(), value);
-
-		if (attrib == "style")
-			attrib = "style.cssText";
-
-		if (attrib.substring(0, 2) == 'on')
-			value = 'return true;' + value;
-
-		if (attrib == "class")
-			attrib = "className";
-
-		elm[attrib]=value;
-	} else
-		elm.removeAttribute(attrib);
-}
-
-function setAllAttribs(elm) {
-	var f = document.forms[0];
-
-	setAttrib(elm, 'title');
-	setAttrib(elm, 'id');
-	setAttrib(elm, 'style');
-	setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
-	setAttrib(elm, 'dir');
-	setAttrib(elm, 'lang');
-	setAttrib(elm, 'tabindex');
-	setAttrib(elm, 'accesskey');
-	setAttrib(elm, 'onfocus');
-	setAttrib(elm, 'onblur');
-	setAttrib(elm, 'onclick');
-	setAttrib(elm, 'ondblclick');
-	setAttrib(elm, 'onmousedown');
-	setAttrib(elm, 'onmouseup');
-	setAttrib(elm, 'onmouseover');
-	setAttrib(elm, 'onmousemove');
-	setAttrib(elm, 'onmouseout');
-	setAttrib(elm, 'onkeypress');
-	setAttrib(elm, 'onkeydown');
-	setAttrib(elm, 'onkeyup');
-
-	// Refresh in old MSIE
-//	if (tinyMCE.isMSIE5)
-//		elm.outerHTML = elm.outerHTML;
-}
-
-function insertAttribute() {
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-tinyMCEPopup.requireLangPack();
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js
+++ /dev/null
@@ -1,26 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-function init() {
-	SXE.initElementDialog('cite');
-	if (SXE.currentAction == "update") {
-		SXE.showRemoveButton();
-	}
-}
-
-function insertCite() {
-	SXE.insertElement('cite');
-	tinyMCEPopup.close();
-}
-
-function removeCite() {
-	SXE.removeElement('cite');
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js
+++ /dev/null
@@ -1,51 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-function init() {
-	SXE.initElementDialog('del');
-	if (SXE.currentAction == "update") {
-		setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
-		setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
-		SXE.showRemoveButton();
-	}
-}
-
-function setElementAttribs(elm) {
-	setAllCommonAttribs(elm);
-	setAttrib(elm, 'datetime');
-	setAttrib(elm, 'cite');
-}
-
-function insertDel() {
-	var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');
-
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
-	if (elm == null) {
-		var s = SXE.inst.selection.getContent();
-		if(s.length > 0) {
-			tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');
-			var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';});
-			for (var i=0; i<elementArray.length; i++) {
-				var elm = elementArray[i];
-				setElementAttribs(elm);
-			}
-		}
-	} else {
-		setElementAttribs(elm);
-	}
-	tinyMCEPopup.editor.nodeChanged();
-	tinyMCEPopup.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function removeDel() {
-	SXE.removeElement('del');
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
+++ /dev/null
@@ -1,221 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-tinyMCEPopup.requireLangPack();
-
-function initCommonAttributes(elm) {
-	var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-
-	// Setup form data for common element attributes
-	setFormValue('title', dom.getAttrib(elm, 'title'));
-	setFormValue('id', dom.getAttrib(elm, 'id'));
-	selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);
-	setFormValue('style', dom.getAttrib(elm, 'style'));
-	selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));
-	setFormValue('lang', dom.getAttrib(elm, 'lang'));
-	setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
-	setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
-	setFormValue('onclick', dom.getAttrib(elm, 'onclick'));
-	setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
-	setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
-	setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
-	setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
-	setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
-	setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
-	setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
-	setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
-	setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
-}
-
-function setFormValue(name, value) {
-	if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
-}
-
-function insertDateTime(id) {
-	document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
-}
-
-function getDateTime(d, fmt) {
-	fmt = fmt.replace("%D", "%m/%d/%y");
-	fmt = fmt.replace("%r", "%I:%M:%S %p");
-	fmt = fmt.replace("%Y", "" + d.getFullYear());
-	fmt = fmt.replace("%y", "" + d.getYear());
-	fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
-	fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
-	fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
-	fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
-	fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
-	fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
-	fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
-	fmt = fmt.replace("%%", "%");
-
-	return fmt;
-}
-
-function addZeros(value, len) {
-	var i;
-
-	value = "" + value;
-
-	if (value.length < len) {
-		for (i=0; i<(len-value.length); i++)
-			value = "0" + value;
-	}
-
-	return value;
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
-	if (!form_obj || !form_obj.elements[field_name])
-		return;
-
-	var sel = form_obj.elements[field_name];
-
-	var found = false;
-	for (var i=0; i<sel.options.length; i++) {
-		var option = sel.options[i];
-
-		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
-			option.selected = true;
-			found = true;
-		} else
-			option.selected = false;
-	}
-
-	if (!found && add_custom && value != '') {
-		var option = new Option('Value: ' + value, value);
-		option.selected = true;
-		sel.options[sel.options.length] = option;
-	}
-
-	return found;
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib.toLowerCase()];
-	tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);
-}
-
-function setAllCommonAttribs(elm) {
-	setAttrib(elm, 'title');
-	setAttrib(elm, 'id');
-	setAttrib(elm, 'class');
-	setAttrib(elm, 'style');
-	setAttrib(elm, 'dir');
-	setAttrib(elm, 'lang');
-	/*setAttrib(elm, 'onfocus');
-	setAttrib(elm, 'onblur');
-	setAttrib(elm, 'onclick');
-	setAttrib(elm, 'ondblclick');
-	setAttrib(elm, 'onmousedown');
-	setAttrib(elm, 'onmouseup');
-	setAttrib(elm, 'onmouseover');
-	setAttrib(elm, 'onmousemove');
-	setAttrib(elm, 'onmouseout');
-	setAttrib(elm, 'onkeypress');
-	setAttrib(elm, 'onkeydown');
-	setAttrib(elm, 'onkeyup');*/
-}
-
-SXE = {
-	currentAction : "insert",
-	inst : tinyMCEPopup.editor,
-	updateElement : null
-}
-
-SXE.focusElement = SXE.inst.selection.getNode();
-
-SXE.initElementDialog = function(element_name) {
-	addClassesToList('class', 'xhtmlxtras_styles');
-	TinyMCE_EditableSelects.init();
-
-	element_name = element_name.toLowerCase();
-	var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
-	if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {
-		SXE.currentAction = "update";
-	}
-
-	if (SXE.currentAction == "update") {
-		initCommonAttributes(elm);
-		SXE.updateElement = elm;
-	}
-
-	document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true); 
-}
-
-SXE.insertElement = function(element_name) {
-	var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;
-
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
-	if (elm == null) {
-		var s = SXE.inst.selection.getContent();
-		if(s.length > 0) {
-			tagName = element_name;
-
-			if (tinymce.isIE && element_name.indexOf('html:') == 0)
-				element_name = element_name.substring(5).toLowerCase();
-
-			h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';
-
-			tinyMCEPopup.execCommand('mceInsertContent', false, h);
-
-			var elementArray = tinymce.grep(SXE.inst.dom.select(element_name), function(n) {return n.id == '#sxe_temp_' + element_name + '#';});
-			for (var i=0; i<elementArray.length; i++) {
-				var elm = elementArray[i];
-
-				elm.id = '';
-				elm.setAttribute('id', '');
-				elm.removeAttribute('id');
-
-				setAllCommonAttribs(elm);
-			}
-		}
-	} else {
-		setAllCommonAttribs(elm);
-	}
-	SXE.inst.nodeChanged();
-	tinyMCEPopup.execCommand('mceEndUndoLevel');
-}
-
-SXE.removeElement = function(element_name){
-	element_name = element_name.toLowerCase();
-	elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
-	if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){
-		tinyMCEPopup.execCommand('mceBeginUndoLevel');
-		tinyMCE.execCommand('mceRemoveNode', false, elm);
-		SXE.inst.nodeChanged();
-		tinyMCEPopup.execCommand('mceEndUndoLevel');
-	}
-}
-
-SXE.showRemoveButton = function() {
-		document.getElementById("remove").style.display = 'block';
-}
-
-SXE.containsClass = function(elm,cl) {
-	return (elm.className.indexOf(cl) > -1) ? true : false;
-}
-
-SXE.removeClass = function(elm,cl) {
-	if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
-		return true;
-	}
-	var classNames = elm.className.split(" ");
-	var newClassNames = "";
-	for (var x = 0, cnl = classNames.length; x < cnl; x++) {
-		if (classNames[x] != cl) {
-			newClassNames += (classNames[x] + " ");
-		}
-	}
-	elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
-}
-
-SXE.addClass = function(elm,cl) {
-	if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
-	return true;
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js
+++ /dev/null
@@ -1,50 +1,1 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
 
-function init() {
-	SXE.initElementDialog('ins');
-	if (SXE.currentAction == "update") {
-		setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
-		setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
-		SXE.showRemoveButton();
-	}
-}
-
-function setElementAttribs(elm) {
-	setAllCommonAttribs(elm);
-	setAttrib(elm, 'datetime');
-	setAttrib(elm, 'cite');
-}
-
-function insertIns() {
-	var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
-	if (elm == null) {
-		var s = SXE.inst.selection.getContent();
-		if(s.length > 0) {
-			tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');
-			var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';});
-			for (var i=0; i<elementArray.length; i++) {
-				var elm = elementArray[i];
-				setElementAttribs(elm);
-			}
-		}
-	} else {
-		setElementAttribs(elm);
-	}
-	tinyMCEPopup.editor.nodeChanged();
-	tinyMCEPopup.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function removeIns() {
-	SXE.removeElement('ins');
-	tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
@@ -1,29 +1,29 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+	SXE.initElementDialog('abbr');

+	if (SXE.currentAction == "update") {

+		SXE.showRemoveButton();

+	}

+}

+

+function insertAbbr() {

+	SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr');

+	tinyMCEPopup.close();

+}

+

+function removeAbbr() {

+	SXE.removeElement('abbr');

+	tinyMCEPopup.close();

 }
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	SXE.initElementDialog('abbr');
-	if (SXE.currentAction == "update") {
-		SXE.showRemoveButton();
-	}
-}
-
-function insertAbbr() {
-	SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr');
-	tinyMCEPopup.close();
-}
-
-function removeAbbr() {
-	SXE.removeElement('abbr');
-	tinyMCEPopup.close();
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
@@ -1,29 +1,29 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+	SXE.initElementDialog('acronym');

+	if (SXE.currentAction == "update") {

+		SXE.showRemoveButton();

+	}

+}

+

+function insertAcronym() {

+	SXE.insertElement('acronym');

+	tinyMCEPopup.close();

+}

+

+function removeAcronym() {

+	SXE.removeElement('acronym');

+	tinyMCEPopup.close();

 }
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	SXE.initElementDialog('acronym');
-	if (SXE.currentAction == "update") {
-		SXE.showRemoveButton();
-	}
-}
-
-function insertAcronym() {
-	SXE.insertElement('acronym');
-	tinyMCEPopup.close();
-}
-
-function removeAcronym() {
-	SXE.removeElement('acronym');
-	tinyMCEPopup.close();
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js
@@ -1,130 +1,130 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var elm = inst.getFocusElement();

+

+	var f = document.forms[0];

+	

+	var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));

+

+	setFormValue('title', tinyMCE.getAttrib(elm, 'title'));

+	setFormValue('id', tinyMCE.getAttrib(elm, 'id'));

+	setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));

+	setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));

+	setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));

+	setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));

+	setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));

+	setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));

+	setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));

+	setFormValue('onclick', onclick);

+	setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));

+	setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));

+	setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));

+	setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));

+	setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));

+	setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));

+	setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));

+	setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));

+	setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));

+	

+	className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(elm, 'class'), false);

+		

+	addClassesToList('classlist', 'advlink_styles');

+	selectByValue(f, 'classlist', className, true);

+	

+	TinyMCE_EditableSelects.init();

+}

+

+function setFormValue(name, value) {

+	if(value && document.forms[0].elements[name]){

+		document.forms[0].elements[name].value = value;

+	}

+}

+

+function insertAction() {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var elm = inst.getFocusElement();

+

+	tinyMCEPopup.execCommand("mceBeginUndoLevel");	

+	tinyMCEPopup.restoreSelection();

+	

+	setAllAttribs(elm);

+	

+	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);

+	tinyMCE._setEventsEnabled(inst.getBody(), false);

+	tinyMCEPopup.execCommand("mceEndUndoLevel");

+	tinyMCEPopup.close();

+}

+

+function setAttrib(elm, attrib, value) {

+	var formObj = document.forms[0];

+	var valueElm = formObj.elements[attrib.toLowerCase()];

+

+	if (typeof(value) == "undefined" || value == null) {

+		value = "";

+

+		if (valueElm)

+			value = valueElm.value;

+	}

+

+	if (value != "") {

+		tinyMCE.setAttrib(elm, attrib.toLowerCase(), value);

+

+		if (attrib == "style")

+			attrib = "style.cssText";

+

+		if (attrib.substring(0, 2) == 'on')

+			value = 'return true;' + value;

+

+		if (attrib == "class")

+			attrib = "className";

+

+		eval('elm.' + attrib + "=value;");

+	} else

+		elm.removeAttribute(attrib);

+}

+

+function setAllAttribs(elm) {

+	var f = document.forms[0];

+

+	setAttrib(elm, 'title');

+	setAttrib(elm, 'id');

+	setAttrib(elm, 'style');

+	setAttrib(elm, 'class', getSelectValue(f, 'classlist'));

+	setAttrib(elm, 'dir');

+	setAttrib(elm, 'lang');

+	setAttrib(elm, 'tabindex');

+	setAttrib(elm, 'accesskey');

+	setAttrib(elm, 'onfocus');

+	setAttrib(elm, 'onblur');

+	setAttrib(elm, 'onclick');

+	setAttrib(elm, 'ondblclick');

+	setAttrib(elm, 'onmousedown');

+	setAttrib(elm, 'onmouseup');

+	setAttrib(elm, 'onmouseover');

+	setAttrib(elm, 'onmousemove');

+	setAttrib(elm, 'onmouseout');

+	setAttrib(elm, 'onkeypress');

+	setAttrib(elm, 'onkeydown');

+	setAttrib(elm, 'onkeyup');

+

+	// Refresh in old MSIE

+	if (tinyMCE.isMSIE5)

+		elm.outerHTML = elm.outerHTML;

+}

+

+function insertAttribute() {

+	tinyMCEPopup.close();

 }
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var elm = inst.getFocusElement();
-
-	var f = document.forms[0];
-	
-	var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));
-
-	setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
-	setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
-	setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));
-	setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));
-	setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
-	setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
-	setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
-	setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));
-	setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));
-	setFormValue('onclick', onclick);
-	setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));
-	setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));
-	setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));
-	setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
-	setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));
-	setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
-	setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));
-	setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));
-	setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));
-	
-	className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(elm, 'class'), false);
-		
-	addClassesToList('classlist', 'advlink_styles');
-	selectByValue(f, 'classlist', className, true);
-	
-	TinyMCE_EditableSelects.init();
-}
-
-function setFormValue(name, value) {
-	if(value && document.forms[0].elements[name]){
-		document.forms[0].elements[name].value = value;
-	}
-}
-
-function insertAction() {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var elm = inst.getFocusElement();
-
-	tinyMCEPopup.execCommand("mceBeginUndoLevel");	
-	tinyMCEPopup.restoreSelection();
-	
-	setAllAttribs(elm);
-	
-	tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-	tinyMCE._setEventsEnabled(inst.getBody(), false);
-	tinyMCEPopup.execCommand("mceEndUndoLevel");
-	tinyMCEPopup.close();
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib.toLowerCase()];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value != "") {
-		tinyMCE.setAttrib(elm, attrib.toLowerCase(), value);
-
-		if (attrib == "style")
-			attrib = "style.cssText";
-
-		if (attrib.substring(0, 2) == 'on')
-			value = 'return true;' + value;
-
-		if (attrib == "class")
-			attrib = "className";
-
-		eval('elm.' + attrib + "=value;");
-	} else
-		elm.removeAttribute(attrib);
-}
-
-function setAllAttribs(elm) {
-	var f = document.forms[0];
-
-	setAttrib(elm, 'title');
-	setAttrib(elm, 'id');
-	setAttrib(elm, 'style');
-	setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
-	setAttrib(elm, 'dir');
-	setAttrib(elm, 'lang');
-	setAttrib(elm, 'tabindex');
-	setAttrib(elm, 'accesskey');
-	setAttrib(elm, 'onfocus');
-	setAttrib(elm, 'onblur');
-	setAttrib(elm, 'onclick');
-	setAttrib(elm, 'ondblclick');
-	setAttrib(elm, 'onmousedown');
-	setAttrib(elm, 'onmouseup');
-	setAttrib(elm, 'onmouseover');
-	setAttrib(elm, 'onmousemove');
-	setAttrib(elm, 'onmouseout');
-	setAttrib(elm, 'onkeypress');
-	setAttrib(elm, 'onkeydown');
-	setAttrib(elm, 'onkeyup');
-
-	// Refresh in old MSIE
-	if (tinyMCE.isMSIE5)
-		elm.outerHTML = elm.outerHTML;
-}
-
-function insertAttribute() {
-	tinyMCEPopup.close();
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
@@ -1,29 +1,29 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+	SXE.initElementDialog('cite');

+	if (SXE.currentAction == "update") {

+		SXE.showRemoveButton();

+	}

+}

+

+function insertCite() {

+	SXE.insertElement('cite');

+	tinyMCEPopup.close();

+}

+

+function removeCite() {

+	SXE.removeElement('cite');

+	tinyMCEPopup.close();

 }
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	SXE.initElementDialog('cite');
-	if (SXE.currentAction == "update") {
-		SXE.showRemoveButton();
-	}
-}
-
-function insertCite() {
-	SXE.insertElement('cite');
-	tinyMCEPopup.close();
-}
-
-function removeCite() {
-	SXE.removeElement('cite');
-	tinyMCEPopup.close();
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
@@ -1,54 +1,54 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+	SXE.initElementDialog('del');

+	if (SXE.currentAction == "update") {

+		setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));

+		setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));

+		SXE.showRemoveButton();

+	}

+}

+

+function setElementAttribs(elm) {

+	setAllCommonAttribs(elm);

+	setAttrib(elm, 'datetime');

+	setAttrib(elm, 'cite');

+}

+

+function insertDel() {

+	var elm = tinyMCE.getParentElement(SXE.focusElement, 'del');

+

+	tinyMCEPopup.execCommand('mceBeginUndoLevel');

+	if (elm == null) {

+		var s = SXE.inst.selection.getSelectedHTML();

+		if(s.length > 0) {

+			tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');

+			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#');

+			for (var i=0; i<elementArray.length; i++) {

+				var elm = elementArray[i];

+				setElementAttribs(elm);

+			}

+		}

+	} else {

+		setElementAttribs(elm);

+	}

+	tinyMCE.triggerNodeChange();

+	tinyMCEPopup.execCommand('mceEndUndoLevel');

+	tinyMCEPopup.close();

+}

+

+function removeDel() {

+	SXE.removeElement('del');

+	tinyMCEPopup.close();

 }
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	SXE.initElementDialog('del');
-	if (SXE.currentAction == "update") {
-		setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));
-		setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));
-		SXE.showRemoveButton();
-	}
-}
-
-function setElementAttribs(elm) {
-	setAllCommonAttribs(elm);
-	setAttrib(elm, 'datetime');
-	setAttrib(elm, 'cite');
-}
-
-function insertDel() {
-	var elm = tinyMCE.getParentElement(SXE.focusElement, 'del');
-
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
-	if (elm == null) {
-		var s = SXE.inst.selection.getSelectedHTML();
-		if(s.length > 0) {
-			tinyMCEPopup.execCommand('mceInsertContent', false, '<del id="#sxe_temp_del#">' + s + '</del>');
-			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#');
-			for (var i=0; i<elementArray.length; i++) {
-				var elm = elementArray[i];
-				setElementAttribs(elm);
-			}
-		}
-	} else {
-		setElementAttribs(elm);
-	}
-	tinyMCE.triggerNodeChange();
-	tinyMCEPopup.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function removeDel() {
-	SXE.removeElement('del');
-	tinyMCEPopup.close();
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
@@ -1,241 +1,241 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function initCommonAttributes(elm) {
-	var formObj = document.forms[0];
-
-	// Setup form data for common element attributes
-	setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
-	setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
-	selectByValue(formObj, 'class', tinyMCE.getAttrib(elm, 'class'), true);
-	setFormValue('style', tinyMCE.getAttrib(elm, 'style'));
-	selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
-	setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
-	setFormValue('onfocus', tinyMCE.getAttrib(elm, 'onfocus'));
-	setFormValue('onblur', tinyMCE.getAttrib(elm, 'onblur'));
-	setFormValue('onclick', tinyMCE.getAttrib(elm, 'onclick'));
-	setFormValue('ondblclick', tinyMCE.getAttrib(elm, 'ondblclick'));
-	setFormValue('onmousedown', tinyMCE.getAttrib(elm, 'onmousedown'));
-	setFormValue('onmouseup', tinyMCE.getAttrib(elm, 'onmouseup'));
-	setFormValue('onmouseover', tinyMCE.getAttrib(elm, 'onmouseover'));
-	setFormValue('onmousemove', tinyMCE.getAttrib(elm, 'onmousemove'));
-	setFormValue('onmouseout', tinyMCE.getAttrib(elm, 'onmouseout'));
-	setFormValue('onkeypress', tinyMCE.getAttrib(elm, 'onkeypress'));
-	setFormValue('onkeydown', tinyMCE.getAttrib(elm, 'onkeydown'));
-	setFormValue('onkeyup', tinyMCE.getAttrib(elm, 'onkeyup'));
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function initCommonAttributes(elm) {

+	var formObj = document.forms[0];

+

+	// Setup form data for common element attributes

+	setFormValue('title', tinyMCE.getAttrib(elm, 'title'));

+	setFormValue('id', tinyMCE.getAttrib(elm, 'id'));

+	selectByValue(formObj, 'class', tinyMCE.getAttrib(elm, 'class'), true);

+	setFormValue('style', tinyMCE.getAttrib(elm, 'style'));

+	selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));

+	setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));

+	setFormValue('onfocus', tinyMCE.getAttrib(elm, 'onfocus'));

+	setFormValue('onblur', tinyMCE.getAttrib(elm, 'onblur'));

+	setFormValue('onclick', tinyMCE.getAttrib(elm, 'onclick'));

+	setFormValue('ondblclick', tinyMCE.getAttrib(elm, 'ondblclick'));

+	setFormValue('onmousedown', tinyMCE.getAttrib(elm, 'onmousedown'));

+	setFormValue('onmouseup', tinyMCE.getAttrib(elm, 'onmouseup'));

+	setFormValue('onmouseover', tinyMCE.getAttrib(elm, 'onmouseover'));

+	setFormValue('onmousemove', tinyMCE.getAttrib(elm, 'onmousemove'));

+	setFormValue('onmouseout', tinyMCE.getAttrib(elm, 'onmouseout'));

+	setFormValue('onkeypress', tinyMCE.getAttrib(elm, 'onkeypress'));

+	setFormValue('onkeydown', tinyMCE.getAttrib(elm, 'onkeydown'));

+	setFormValue('onkeyup', tinyMCE.getAttrib(elm, 'onkeyup'));

+}

+

+function setFormValue(name, value) {

+	if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;

+}

+

+function insertDateTime(id) {

+	document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");

+}

+

+function getDateTime(d, fmt) {

+	fmt = fmt.replace("%D", "%m/%d/%y");

+	fmt = fmt.replace("%r", "%I:%M:%S %p");

+	fmt = fmt.replace("%Y", "" + d.getFullYear());

+	fmt = fmt.replace("%y", "" + d.getYear());

+	fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));

+	fmt = fmt.replace("%d", addZeros(d.getDate(), 2));

+	fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));

+	fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));

+	fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));

+	fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));

+	fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));

+	fmt = fmt.replace("%%", "%");

+

+	return fmt;

+}

+

+function addZeros(value, len) {

+	var i;

+

+	value = "" + value;

+

+	if (value.length < len) {

+		for (i=0; i<(len-value.length); i++)

+			value = "0" + value;

+	}

+

+	return value;

+}

+

+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {

+	if (!form_obj || !form_obj.elements[field_name])

+		return;

+

+	var sel = form_obj.elements[field_name];

+

+	var found = false;

+	for (var i=0; i<sel.options.length; i++) {

+		var option = sel.options[i];

+

+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {

+			option.selected = true;

+			found = true;

+		} else

+			option.selected = false;

+	}

+

+	if (!found && add_custom && value != '') {

+		var option = new Option('Value: ' + value, value);

+		option.selected = true;

+		sel.options[sel.options.length] = option;

+	}

+

+	return found;

+}

+

+function setAttrib(elm, attrib, value) {

+	var formObj = document.forms[0];

+	var valueElm = formObj.elements[attrib.toLowerCase()];

+

+	if (typeof(value) == "undefined" || value == null) {

+		value = "";

+

+		if (valueElm)

+			value = valueElm.value;

+	}

+

+	if (value != "") {

+		if (attrib == "style")

+			attrib = "style.cssText";

+

+		if (attrib.substring(0, 2) == 'on')

+			value = 'return true;' + value;

+

+		if (attrib == "class") {

+			tinyMCE.addCSSClass(elm, value);

+			return;

+		}

+

+		elm.setAttribute(attrib.toLowerCase(), value);

+	} else

+		elm.removeAttribute(attrib);

+}

+

+function setAllCommonAttribs(elm) {

+	setAttrib(elm, 'title');

+	setAttrib(elm, 'id');

+	setAttrib(elm, 'class');

+	setAttrib(elm, 'style');

+	setAttrib(elm, 'dir');

+	setAttrib(elm, 'lang');

+	/*setAttrib(elm, 'onfocus');

+	setAttrib(elm, 'onblur');

+	setAttrib(elm, 'onclick');

+	setAttrib(elm, 'ondblclick');

+	setAttrib(elm, 'onmousedown');

+	setAttrib(elm, 'onmouseup');

+	setAttrib(elm, 'onmouseover');

+	setAttrib(elm, 'onmousemove');

+	setAttrib(elm, 'onmouseout');

+	setAttrib(elm, 'onkeypress');

+	setAttrib(elm, 'onkeydown');

+	setAttrib(elm, 'onkeyup');*/

+}

+

+SXE = {

+	currentAction : "insert",

+	inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),

+	updateElement : null

+}

+

+SXE.focusElement = SXE.inst.getFocusElement();

+

+SXE.initElementDialog = function(element_name) {

+	addClassesToList('class', 'xhtmlxtras_styles');

+	TinyMCE_EditableSelects.init();

+

+	element_name = element_name.toLowerCase();

+	var elm = tinyMCE.getParentElement(SXE.focusElement, element_name);

+	if (elm != null && elm.nodeName == element_name.toUpperCase()) {

+		SXE.currentAction = "update";

+	}

+

+	if (SXE.currentAction == "update") {

+		initCommonAttributes(elm);

+		SXE.updateElement = elm;

+	}

+

+	document.forms[0].insert.value = tinyMCE.getLang('lang_' + SXE.currentAction, 'Insert', true); 

+}

+

+SXE.insertElement = function(element_name) {

+	var elm = tinyMCE.getParentElement(SXE.focusElement, element_name), h, tagName;

+

+	tinyMCEPopup.execCommand('mceBeginUndoLevel');

+	if (elm == null) {

+		var s = SXE.inst.selection.getSelectedHTML();

+		if(s.length > 0) {

+			tagName = element_name;

+

+			if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0)

+				element_name = element_name.substring(5).toLowerCase();

+

+			h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';

+

+			tinyMCEPopup.execCommand('mceInsertContent', false, h);

+

+			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#');

+			for (var i=0; i<elementArray.length; i++) {

+				var elm = elementArray[i];

+

+				elm.id = '';

+				elm.setAttribute('id', '');

+				elm.removeAttribute('id');

+

+				setAllCommonAttribs(elm);

+			}

+		}

+	} else {

+		setAllCommonAttribs(elm);

+	}

+	tinyMCE.triggerNodeChange();

+	tinyMCEPopup.execCommand('mceEndUndoLevel');

+}

+

+SXE.removeElement = function(element_name){

+	element_name = element_name.toLowerCase();

+	elm = tinyMCE.getParentElement(SXE.focusElement, element_name);

+	if(elm && elm.nodeName == element_name.toUpperCase()){

+		tinyMCEPopup.execCommand('mceBeginUndoLevel');

+		tinyMCE.execCommand('mceRemoveNode', false, elm);

+		tinyMCE.triggerNodeChange();

+		tinyMCEPopup.execCommand('mceEndUndoLevel');

+	}

+}

+

+SXE.showRemoveButton = function() {

+		document.getElementById("remove").style.display = 'block';

+}

+

+SXE.containsClass = function(elm,cl) {

+	return (elm.className.indexOf(cl) > -1) ? true : false;

+}

+

+SXE.removeClass = function(elm,cl) {

+	if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {

+		return true;

+	}

+	var classNames = elm.className.split(" ");

+	var newClassNames = "";

+	for (var x = 0, cnl = classNames.length; x < cnl; x++) {

+		if (classNames[x] != cl) {

+			newClassNames += (classNames[x] + " ");

+		}

+	}

+	elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end

+}

+

+SXE.addClass = function(elm,cl) {

+	if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;

+	return true;

 }
-
-function setFormValue(name, value) {
-	if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
-}
-
-function insertDateTime(id) {
-	document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
-}
-
-function getDateTime(d, fmt) {
-	fmt = fmt.replace("%D", "%m/%d/%y");
-	fmt = fmt.replace("%r", "%I:%M:%S %p");
-	fmt = fmt.replace("%Y", "" + d.getFullYear());
-	fmt = fmt.replace("%y", "" + d.getYear());
-	fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
-	fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
-	fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
-	fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
-	fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
-	fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
-	fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
-	fmt = fmt.replace("%%", "%");
-
-	return fmt;
-}
-
-function addZeros(value, len) {
-	var i;
-
-	value = "" + value;
-
-	if (value.length < len) {
-		for (i=0; i<(len-value.length); i++)
-			value = "0" + value;
-	}
-
-	return value;
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
-	if (!form_obj || !form_obj.elements[field_name])
-		return;
-
-	var sel = form_obj.elements[field_name];
-
-	var found = false;
-	for (var i=0; i<sel.options.length; i++) {
-		var option = sel.options[i];
-
-		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
-			option.selected = true;
-			found = true;
-		} else
-			option.selected = false;
-	}
-
-	if (!found && add_custom && value != '') {
-		var option = new Option('Value: ' + value, value);
-		option.selected = true;
-		sel.options[sel.options.length] = option;
-	}
-
-	return found;
-}
-
-function setAttrib(elm, attrib, value) {
-	var formObj = document.forms[0];
-	var valueElm = formObj.elements[attrib.toLowerCase()];
-
-	if (typeof(value) == "undefined" || value == null) {
-		value = "";
-
-		if (valueElm)
-			value = valueElm.value;
-	}
-
-	if (value != "") {
-		if (attrib == "style")
-			attrib = "style.cssText";
-
-		if (attrib.substring(0, 2) == 'on')
-			value = 'return true;' + value;
-
-		if (attrib == "class") {
-			tinyMCE.addCSSClass(elm, value);
-			return;
-		}
-
-		elm.setAttribute(attrib.toLowerCase(), value);
-	} else
-		elm.removeAttribute(attrib);
-}
-
-function setAllCommonAttribs(elm) {
-	setAttrib(elm, 'title');
-	setAttrib(elm, 'id');
-	setAttrib(elm, 'class');
-	setAttrib(elm, 'style');
-	setAttrib(elm, 'dir');
-	setAttrib(elm, 'lang');
-	/*setAttrib(elm, 'onfocus');
-	setAttrib(elm, 'onblur');
-	setAttrib(elm, 'onclick');
-	setAttrib(elm, 'ondblclick');
-	setAttrib(elm, 'onmousedown');
-	setAttrib(elm, 'onmouseup');
-	setAttrib(elm, 'onmouseover');
-	setAttrib(elm, 'onmousemove');
-	setAttrib(elm, 'onmouseout');
-	setAttrib(elm, 'onkeypress');
-	setAttrib(elm, 'onkeydown');
-	setAttrib(elm, 'onkeyup');*/
-}
-
-SXE = {
-	currentAction : "insert",
-	inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),
-	updateElement : null
-}
-
-SXE.focusElement = SXE.inst.getFocusElement();
-
-SXE.initElementDialog = function(element_name) {
-	addClassesToList('class', 'xhtmlxtras_styles');
-	TinyMCE_EditableSelects.init();
-
-	element_name = element_name.toLowerCase();
-	var elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
-	if (elm != null && elm.nodeName == element_name.toUpperCase()) {
-		SXE.currentAction = "update";
-	}
-
-	if (SXE.currentAction == "update") {
-		initCommonAttributes(elm);
-		SXE.updateElement = elm;
-	}
-
-	document.forms[0].insert.value = tinyMCE.getLang('lang_' + SXE.currentAction, 'Insert', true); 
-}
-
-SXE.insertElement = function(element_name) {
-	var elm = tinyMCE.getParentElement(SXE.focusElement, element_name), h, tagName;
-
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
-	if (elm == null) {
-		var s = SXE.inst.selection.getSelectedHTML();
-		if(s.length > 0) {
-			tagName = element_name;
-
-			if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0)
-				element_name = element_name.substring(5).toLowerCase();
-
-			h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + '</' + tagName + '>';
-
-			tinyMCEPopup.execCommand('mceInsertContent', false, h);
-
-			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#');
-			for (var i=0; i<elementArray.length; i++) {
-				var elm = elementArray[i];
-
-				elm.id = '';
-				elm.setAttribute('id', '');
-				elm.removeAttribute('id');
-
-				setAllCommonAttribs(elm);
-			}
-		}
-	} else {
-		setAllCommonAttribs(elm);
-	}
-	tinyMCE.triggerNodeChange();
-	tinyMCEPopup.execCommand('mceEndUndoLevel');
-}
-
-SXE.removeElement = function(element_name){
-	element_name = element_name.toLowerCase();
-	elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
-	if(elm && elm.nodeName == element_name.toUpperCase()){
-		tinyMCEPopup.execCommand('mceBeginUndoLevel');
-		tinyMCE.execCommand('mceRemoveNode', false, elm);
-		tinyMCE.triggerNodeChange();
-		tinyMCEPopup.execCommand('mceEndUndoLevel');
-	}
-}
-
-SXE.showRemoveButton = function() {
-		document.getElementById("remove").style.display = 'block';
-}
-
-SXE.containsClass = function(elm,cl) {
-	return (elm.className.indexOf(cl) > -1) ? true : false;
-}
-
-SXE.removeClass = function(elm,cl) {
-	if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
-		return true;
-	}
-	var classNames = elm.className.split(" ");
-	var newClassNames = "";
-	for (var x = 0, cnl = classNames.length; x < cnl; x++) {
-		if (classNames[x] != cl) {
-			newClassNames += (classNames[x] + " ");
-		}
-	}
-	elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
-}
-
-SXE.addClass = function(elm,cl) {
-	if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
-	return true;
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
@@ -1,53 +1,53 @@
- /**
- * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
- *
- * @author Moxiecode - based on work by Andrew Tetlaw

- */
-
-function preinit() {
-	// Initialize
-	tinyMCE.setWindowArg('mce_windowresize', false);
+ /**

+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $

+ *

+ * @author Moxiecode - based on work by Andrew Tetlaw


+ */

+

+function preinit() {

+	// Initialize

+	tinyMCE.setWindowArg('mce_windowresize', false);

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+	SXE.initElementDialog('ins');

+	if (SXE.currentAction == "update") {

+		setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));

+		setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));

+		SXE.showRemoveButton();

+	}

+}

+

+function setElementAttribs(elm) {

+	setAllCommonAttribs(elm);

+	setAttrib(elm, 'datetime');

+	setAttrib(elm, 'cite');

+}

+

+function insertIns() {

+	var elm = tinyMCE.getParentElement(SXE.focusElement, 'ins');

+	tinyMCEPopup.execCommand('mceBeginUndoLevel');

+	if (elm == null) {

+		var s = SXE.inst.selection.getSelectedHTML();

+		if(s.length > 0) {

+			tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');

+			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#');

+			for (var i=0; i<elementArray.length; i++) {

+				var elm = elementArray[i];

+				setElementAttribs(elm);

+			}

+		}

+	} else {

+		setElementAttribs(elm);

+	}

+	tinyMCE.triggerNodeChange();

+	tinyMCEPopup.execCommand('mceEndUndoLevel');

+	tinyMCEPopup.close();

+}

+

+function removeIns() {

+	SXE.removeElement('ins');

+	tinyMCEPopup.close();

 }
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-	SXE.initElementDialog('ins');
-	if (SXE.currentAction == "update") {
-		setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime'));
-		setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite'));
-		SXE.showRemoveButton();
-	}
-}
-
-function setElementAttribs(elm) {
-	setAllCommonAttribs(elm);
-	setAttrib(elm, 'datetime');
-	setAttrib(elm, 'cite');
-}
-
-function insertIns() {
-	var elm = tinyMCE.getParentElement(SXE.focusElement, 'ins');
-	tinyMCEPopup.execCommand('mceBeginUndoLevel');
-	if (elm == null) {
-		var s = SXE.inst.selection.getSelectedHTML();
-		if(s.length > 0) {
-			tinyMCEPopup.execCommand('mceInsertContent', false, '<ins id="#sxe_temp_ins#">' + s + '</ins>');
-			var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#');
-			for (var i=0; i<elementArray.length; i++) {
-				var elm = elementArray[i];
-				setElementAttribs(elm);
-			}
-		}
-	} else {
-		setElementAttribs(elm);
-	}
-	tinyMCE.triggerNodeChange();
-	tinyMCEPopup.execCommand('mceEndUndoLevel');
-	tinyMCEPopup.close();
-}
-
-function removeIns() {
-	SXE.removeElement('ins');
-	tinyMCEPopup.close();
-}

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en.js
@@ -1,43 +1,43 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('xhtmlxtras',{

+cite_desc : 'Citation',

+abbr_desc : 'Abbreviation',

+acronym_desc : 'Acronym',

+del_desc : 'Deletion',

+ins_desc : 'Insertion',

+attribute_label_title : 'Title',

+attribute_label_id : 'ID',

+attribute_label_class : 'Class',

+attribute_label_style : 'Style',

+attribute_label_cite : 'Cite',

+attribute_label_datetime : 'Date/Time',

+attribute_label_langdir : 'Text Direction',

+attribute_option_ltr : 'Left to right',

+attribute_option_rtl : 'Right to left',

+attribute_label_langcode : 'Language',

+attribute_label_tabindex : 'TabIndex',

+attribute_label_accesskey : 'AccessKey',

+attribute_label_cite : 'Cite',

+attribute_events_tab : 'Events',

+attribute_attrib_tab : 'Attributes',

+general_tab : 'General',

+attrib_tab : 'Attributes',

+events_tab : 'Events',

+fieldset_general_tab : 'General Settings',

+fieldset_attrib_tab : 'Element Attributes',

+fieldset_events_tab : 'Element Events',

+title_ins_element : 'Insertion Element',

+title_del_element : 'Deletion Element',

+title_acronym_element : 'Acronym Element',

+title_abbr_element : 'Abbreviation Element',

+title_cite_element : 'Citation Element',

+remove : 'Remove',

+not_set : '--not set--',

+insert_date : 'Insert current date/time',

+option_ltr : 'Left to right',

+option_rtl : 'Right to left',

+attribs_desc : 'Insert/Edit Attributes',

+attribs_title : 'Insert/Edit Attributes'

+});

 
-tinyMCE.addToLang('xhtmlxtras',{
-cite_desc : 'Citation',
-abbr_desc : 'Abbreviation',
-acronym_desc : 'Acronym',
-del_desc : 'Deletion',
-ins_desc : 'Insertion',
-attribute_label_title : 'Title',
-attribute_label_id : 'ID',
-attribute_label_class : 'Class',
-attribute_label_style : 'Style',
-attribute_label_cite : 'Cite',
-attribute_label_datetime : 'Date/Time',
-attribute_label_langdir : 'Text Direction',
-attribute_option_ltr : 'Left to right',
-attribute_option_rtl : 'Right to left',
-attribute_label_langcode : 'Language',
-attribute_label_tabindex : 'TabIndex',
-attribute_label_accesskey : 'AccessKey',
-attribute_label_cite : 'Cite',
-attribute_events_tab : 'Events',
-attribute_attrib_tab : 'Attributes',
-general_tab : 'General',
-attrib_tab : 'Attributes',
-events_tab : 'Events',
-fieldset_general_tab : 'General Settings',
-fieldset_attrib_tab : 'Element Attributes',
-fieldset_events_tab : 'Element Events',
-title_ins_element : 'Insertion Element',
-title_del_element : 'Deletion Element',
-title_acronym_element : 'Acronym Element',
-title_abbr_element : 'Abbreviation Element',
-title_cite_element : 'Citation Element',
-remove : 'Remove',
-not_set : '--not set--',
-insert_date : 'Insert current date/time',
-option_ltr : 'Left to right',
-option_rtl : 'Right to left',
-attribs_desc : 'Insert/Edit Attributes',
-attribs_title : 'Insert/Edit Attributes'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
+++ /dev/null
@@ -1,32 +1,1 @@
-tinyMCE.addI18n('en.xhtmlxtras_dlg',{
-attribute_label_title:"Title",
-attribute_label_id:"ID",
-attribute_label_class:"Class",
-attribute_label_style:"Style",
-attribute_label_cite:"Cite",
-attribute_label_datetime:"Date/Time",
-attribute_label_langdir:"Text Direction",
-attribute_option_ltr:"Left to right",
-attribute_option_rtl:"Right to left",
-attribute_label_langcode:"Language",
-attribute_label_tabindex:"TabIndex",
-attribute_label_accesskey:"AccessKey",
-attribute_events_tab:"Events",
-attribute_attrib_tab:"Attributes",
-general_tab:"General",
-attrib_tab:"Attributes",
-events_tab:"Events",
-fieldset_general_tab:"General Settings",
-fieldset_attrib_tab:"Element Attributes",
-fieldset_events_tab:"Element Events",
-title_ins_element:"Insertion Element",
-title_del_element:"Deletion Element",
-title_acronym_element:"Acronym Element",
-title_abbr_element:"Abbreviation Element",
-title_cite_element:"Citation Element",
-remove:"Remove",
-insert_date:"Insert current date/time",
-option_ltr:"Left to right",
-option_rtl:"Right to left",
-attribs_title:"Insert/Edit Attributes"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/plugins/zoom/editor_plugin_src.js
+++ b/tinymce/2/jscripts/tiny_mce/plugins/zoom/editor_plugin_src.js
@@ -1,57 +1,57 @@
-/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+var TinyMCE_ZoomPlugin = {

+	getInfo : function() {

+		return {

+			longname : 'Zoom',

+			author : 'Moxiecode Systems AB',

+			authorurl : 'http://tinymce.moxiecode.com',

+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/zoom',

+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion

+		};

+	},

+

+	/**

+	 * Returns the HTML contents of the zoom control.

+	 */

+	getControlHTML : function(control_name) {

+		if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera)

+			return "";

+

+		switch (control_name) {

+			case "zoom":

+				return '<select id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">' + 

+						'<option value="100%">+ 100%</option>' + 

+						'<option value="150%">+ 150%</option>' + 

+						'<option value="200%">+ 200%</option>' + 

+						'<option value="250%">+ 250%</option>' + 

+						'</select>';

+		}

+

+		return "";

+	},

+

+	/**

+	 * Executes the mceZoom command.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		// Handle commands

+		switch (command) {

+			case "mceZoom":

+				tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value;

+				tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value;

+				return true;

+		}

+

+		// Pass to next handler in chain

+		return false;

+	}

+};

+

+tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin);

 
-var TinyMCE_ZoomPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Zoom',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/zoom',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
-
-	/**
-	 * Returns the HTML contents of the zoom control.
-	 */
-	getControlHTML : function(control_name) {
-		if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera)
-			return "";
-
-		switch (control_name) {
-			case "zoom":
-				return '<select id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">' + 
-						'<option value="100%">+ 100%</option>' + 
-						'<option value="150%">+ 150%</option>' + 
-						'<option value="200%">+ 200%</option>' + 
-						'<option value="250%">+ 250%</option>' + 
-						'</select>';
-		}
-
-		return "";
-	},
-
-	/**
-	 * Executes the mceZoom command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mceZoom":
-				tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value;
-				tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value;
-				return true;
-		}
-
-		// Pass to next handler in chain
-		return false;
-	}
-};
-
-tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin);
-

--- a/tinymce/2/jscripts/tiny_mce/plugins/zoom/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/plugins/zoom/readme.txt
@@ -1,2 +1,2 @@
-Check the TinyMCE documentation for details on this plugin.
+Check the TinyMCE documentation for details on this plugin.

 

--- a/tinymce/2/jscripts/tiny_mce/readme.txt
+++ /dev/null
@@ -1,3 +1,1 @@
-Check this wiki page for installation instructions:
-http://wiki.moxiecode.com/index.php/TinyMCE:Compressor/PHP
 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/about.htm
@@ -1,57 +1,53 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advanced_dlg.about_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="js/about.js"></script>
-</head>
-<body id="about" style="display: none">
-		<div class="tabs">
-			<ul>
-				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
-				<li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
-				<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
-			</ul>
-		</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_about_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/about.js"></script>

+	<base target="_self" />

+</head>

+<body id="about" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+		<div class="tabs">

+			<ul>

+				<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_about}</a></span></li>

+				<li id="help_tab"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{$lang_help}</a></span></li>

+				<li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{$lang_plugins}</a></span></li>

+			</ul>

+		</div>

+

+		<div class="panel_wrapper">

+			<div id="general_panel" class="panel current">

+				<h3>{$lang_about_title}</h3>

+				<p>Version: {$tinymce_version} ({$tinymce_releasedate})</p>

+				<p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>

+				by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>

+				<p>Copyright &copy; 2003-2007, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>

+				<p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>

+

+				<div id="buttoncontainer"></div>

+			</div>

+

+			<div id="plugins_panel" class="panel">

+				<div id="pluginscontainer">

+					<h3>{$lang_loaded_plugins}</h3>

+

+					<div id="plugintablecontainer">

+					</div>

+

+					<p>&nbsp;</p>

+				</div>

+			</div>

+

+			<div id="help_panel" class="panel noscroll" style="overflow: visible;">

+				<div id="iframecontainer"></div>

+			</div>

+		</div>

+

+		<div class="mceActionPanel">

+			<div style="float: right">

+				<input type="button" id="cancel" name="cancel" value="{$lang_close}" onclick="tinyMCEPopup.close();" />

+			</div>

+		</div>

+</body>

+</html>

 
-		<div class="panel_wrapper">
-			<div id="general_panel" class="panel current">
-				<h3>{#advanced_dlg.about_title}</h3>
-				<p>Version: <span id="version"></span> (<span id="date"></span>)</p>
-				<p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
-				by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
-				<p>Copyright &copy; 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
-				<p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
-
-				<div id="buttoncontainer">
-					<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
-					<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>
-					<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>
-				</div>
-			</div>
-
-			<div id="plugins_panel" class="panel">
-				<div id="pluginscontainer">
-					<h3>{#advanced_dlg.about_loaded}</h3>
-
-					<div id="plugintablecontainer">
-					</div>
-
-					<p>&nbsp;</p>
-				</div>
-			</div>
-
-			<div id="help_panel" class="panel noscroll" style="overflow: visible;">
-				<div id="iframecontainer"></div>
-			</div>
-		</div>
-
-		<div class="mceActionPanel">
-			<div style="float: right">
-				<input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
-			</div>
-		</div>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/anchor.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/anchor.htm
@@ -1,33 +1,34 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advanced_dlg.anchor_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/anchor.js"></script>
-	<base target="_self" />
-</head>
-<body style="display: none">
-<form onsubmit="AnchorDialog.update();return false;" action="#">
-	<table border="0" cellpadding="4" cellspacing="0">
-		<tr>
-			<td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>
-		</tr>
-		<tr>
-			<td nowrap="nowrap">{#advanced_dlg.anchor_name}:</td>
-			<td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>
-		</tr>
-	</table>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_insert_anchor_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/anchor.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertAnchor();return false;" action="#">

+

+	<table border="0" cellpadding="4" cellspacing="0">

+		<tr>

+			<td colspan="2" class="title">{$lang_insert_anchor_title}</td>

+		</tr>

+		<tr>

+			<td nowrap="nowrap">{$lang_insert_anchor_name}:</td>

+			<td><input name="anchorName" type="text" id="anchorName" value="" style="width: 200px" /></td>

+		</tr>

+	</table>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_update}" onclick="insertAnchor();" />

+		</div>

+

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+

+</form>

+</body>

+</html>

 
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#update}" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/charmap.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/charmap.htm
@@ -1,55 +1,54 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advanced_dlg.charmap_title}</title>
-	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/charmap.js"></script>
-	<base target="_self" />
-</head>
-<body id="charmap" style="display:none">
-<table align="center" border="0" cellspacing="0" cellpadding="2">
-    <tr>
-        <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>
-    </tr>
-    <tr>
-        <td id="charmapView" rowspan="2" align="left" valign="top">
-			<!-- Chars will be rendered here -->
-        </td>
-        <td width="100" align="center" valign="top">
-            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">
-                <tr>
-                    <td id="codeV">&nbsp;</td>
-                </tr>
-                <tr>
-                    <td id="codeN">&nbsp;</td>
-                </tr>
-            </table>
-        </td>
-    </tr>
-    <tr>
-        <td valign="bottom" style="padding-bottom: 3px;">
-            <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
-                <tr>
-                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
-                </tr>
-                <tr>
-                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
-                </tr>
-                <tr>
-                    <td style="font-size: 1px;">&nbsp;</td>
-                </tr>
-                <tr>
-                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
-                </tr>
-                <tr>
-                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
-                </tr>
-            </table>
-        </td>
-    </tr>
-</table>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_theme_charmap_title}</title>

+	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/charmap.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<table align="center" border="0" cellspacing="0" cellpadding="2">

+    <tr>

+        <td colspan="2" class="title">{$lang_theme_charmap_title}</td>

+    </tr>

+    <tr>

+        <td rowspan="2" align="left" valign="top">

+            <script language="javascript" type="text/javascript">renderCharMapHTML();</script>

+        </td>

+        <td width="100" align="center" valign="top">

+            <table border="0" cellpadding="0" cellspacing="0" width="100" style="height: 100px">

+                <tr>

+                    <td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>

+                </tr>

+                <tr>

+                    <td style="font-size: 10px; font-family: Arial, Helvetica, sans-serif; text-align:center;" id="codeN">&nbsp;</td>

+                </tr>

+            </table>

+        </td>

+    </tr>

+    <tr>

+        <td valign="bottom" style="padding-bottom: 3px;">

+            <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">

+                <tr>

+                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>

+                </tr>

+                <tr>

+                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>

+                </tr>

+                <tr>

+                    <td style="font-size: 1px;">&nbsp;</td>

+                </tr>

+                <tr>

+                    <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>

+                </tr>

+                <tr>

+                    <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>

+                </tr>

+            </table>

+        </td>

+    </tr>

+</table>

+

+</body>

+</html>

 
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/color_picker.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/color_picker.htm
@@ -1,77 +1,75 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advanced_dlg.colorpicker_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="js/color_picker.js"></script>
-	<base target="_self" />
-</head>
-<body id="colorpicker" style="display: none">
-<form onsubmit="insertAction();return false" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
-			<li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
-			<li id="named_tab"><span><a  href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_theme_colorpicker_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/color_picker.js"></script>

+	<link href="css/colorpicker.css" rel="stylesheet" type="text/css" />

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+	<div class="tabs">

+		<ul>

+			<li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{$lang_color_picker_tab}</a></span></li>

+			<li id="rgb_tab"><span><a href="#" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{$lang_web_colors_tab}</a></span></li>

+			<li id="named_tab"><span><a  href="#" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{$lang_named_colors_tab}</a></span></li>

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="picker_panel" class="panel current">

+			<fieldset>

+				<legend>{$lang_color_picker}</legend>

+				<div id="picker">

+					<img id="colorpicker" src="images/colors.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />

+

+					<div id="light">

+						<!-- Will be filled with divs -->

+					</div>

+

+					<br style="clear: both" />

+				</div>

+			</fieldset>

+		</div>

+

+		<div id="rgb_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_web_colors}</legend>

+				<div id="webcolors">

+					<!-- Gets filled with web safe colors-->

+				</div>

+

+				<br style="clear: both" />

+			</fieldset>

+		</div>

+

+		<div id="named_panel" class="panel">

+			<fieldset>

+				<legend>{$lang_named_colors}</legend>

+				<div id="namedcolors">

+					<!-- Gets filled with named colors-->

+				</div>

+

+				<br style="clear: both" />

+

+				<div id="colornamecontainer">

+					{$lang_color_name} <span id="colorname"></span>

+				</div>

+			</fieldset>

+		</div>

+	</div>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" onclick="insertAction();" />

+		</div>

+

+		<div id="preview"></div>

+

+		<div id="previewblock">

+			<label for="color">{$lang_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text" />

+		</div>

+	</div>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="picker_panel" class="panel current">
-			<fieldset>
-				<legend>{#advanced_dlg.colorpicker_picker_title}</legend>
-				<div id="picker">
-					<img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />
-
-					<div id="light">
-						<!-- Will be filled with divs -->
-					</div>
-
-					<br style="clear: both" />
-				</div>
-			</fieldset>
-		</div>
-
-		<div id="rgb_panel" class="panel">
-			<fieldset>
-				<legend>{#advanced_dlg.colorpicker_palette_title}</legend>
-				<div id="webcolors">
-					<!-- Gets filled with web safe colors-->
-				</div>
-
-				<br style="clear: both" />
-			</fieldset>
-		</div>
-
-		<div id="named_panel" class="panel">
-			<fieldset>
-				<legend>{#advanced_dlg.colorpicker_named_title}</legend>
-				<div id="namedcolors">
-					<!-- Gets filled with named colors-->
-				</div>
-
-				<br style="clear: both" />
-
-				<div id="colornamecontainer">
-					{#advanced_dlg.colorpicker_name} <span id="colorname"></span>
-				</div>
-			</fieldset>
-		</div>
-	</div>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#apply}" />
-		</div>
-
-		<div id="preview"></div>
-
-		<div id="previewblock">
-			<label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/css/colorpicker.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/css/colorpicker.css
@@ -1,53 +1,53 @@
-/* Colorpicker dialog specific CSS */
-
-#preview {
-	float: right;
-	width: 50px;
-	height: 14px;
-	line-height: 1px;
-	border: 1px solid black;
-	margin-left: 5px;
+/* Colorpicker dialog specific CSS */

+

+#preview {

+	float: right;

+	width: 50px;

+	height: 14px;

+	line-height: 1px;

+	border: 1px solid black;

+	margin-left: 5px;

+}

+

+#colorpicker {

+	float: left;

+	cursor: crosshair;

+}

+

+#light {

+	border: 1px solid gray;

+	margin-left: 5px;

+	float: left;

+	width: 15px;

+	cursor: crosshair;

+}

+

+#light div {

+	overflow: hidden;

+}

+

+#previewblock {

+	float: right;

+	padding-left: 10px;

+	height: 20px;

+}

+

+.panel_wrapper div.current {

+	height: 175px;

+}

+

+#namedcolors {

+	width: 150px;

+}

+

+#namedcolors a {

+	display: block;

+	float: left;

+	width: 10px; height: 10px;

+	margin: 1px 1px 0 0;

+	overflow: hidden;

+}

+

+#colornamecontainer {

+	margin-top: 5px;

 }
-
-#colorpicker {
-	float: left;
-	cursor: crosshair;
-}
-
-#light {
-	border: 1px solid gray;
-	margin-left: 5px;
-	float: left;
-	width: 15px;
-	cursor: crosshair;
-}
-
-#light div {
-	overflow: hidden;
-}
-
-#previewblock {
-	float: right;
-	padding-left: 10px;
-	height: 20px;
-}
-
-.panel_wrapper div.current {
-	height: 175px;
-}
-
-#namedcolors {
-	width: 150px;
-}
-
-#namedcolors a {
-	display: block;
-	float: left;
-	width: 10px; height: 10px;
-	margin: 1px 1px 0 0;
-	overflow: hidden;
-}
-
-#colornamecontainer {
-	margin-top: 5px;
-}

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/css/editor_content.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/css/editor_content.css
@@ -1,59 +1,59 @@
-/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
-/* You can extend this CSS by adding your own CSS file with the the content_css option */
+/* This file contains the CSS data for the editable area(iframe) of TinyMCE */

+/* You can extend this CSS by adding your own CSS file with the the content_css option */

+

+body, td, pre {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+body {

+	background-color: #FFFFFF;

+}

+

+.mceVisualAid {

+	border: 1px dashed #BBBBBB !important;

+}

+

+div.mceVisualAid {

+	background-image:url('../images/spacer.gif');

+	visibility: visible !important;

+}

+

+.mceItemAnchor {

+	width: 12px;

+	line-height: 6px;

+	overflow: hidden;

+	padding-left: 12px;

+	background-image: url('../images/anchor_symbol.gif');

+	background-position: bottom;

+	background-repeat: no-repeat;

+}

+

+/* Important is needed in Gecko browsers inorder to style links */

+/*

+a {

+	color: green !important;

+}

+*/

+

+/* Style selection range colors in Gecko browsers */

+/*

+::-moz-selection {

+	background-color: red;

+	color: green;

+}

+*/

+

+/* MSIE specific */

+

+* html body {

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

 
-body, td, pre {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-body {
-	background-color: #FFFFFF;
-}
-
-.mceVisualAid {
-	border: 1px dashed #BBBBBB !important;
-}
-
-div.mceVisualAid {
-	background-image:url('../images/spacer.gif');
-	visibility: visible !important;
-}
-
-.mceItemAnchor {
-	width: 12px;
-	line-height: 6px;
-	overflow: hidden;
-	padding-left: 12px;
-	background-image: url('../images/anchor_symbol.gif');
-	background-position: bottom;
-	background-repeat: no-repeat;
-}
-
-/* Important is needed in Gecko browsers inorder to style links */
-/*
-a {
-	color: green !important;
-}
-*/
-
-/* Style selection range colors in Gecko browsers */
-/*
-::-moz-selection {
-	background-color: red;
-	color: green;
-}
-*/
-
-/* MSIE specific */
-
-* html body {
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/css/editor_popup.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/css/editor_popup.css
@@ -1,332 +1,332 @@
-/* This file contains the CSS data for all popups in TinyMCE */
+/* This file contains the CSS data for all popups in TinyMCE */

+

+body {

+	background-color: #F0F0EE;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+	margin: 8px;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+}

+

+input {

+	background: #FFFFFF;

+	border: 1px solid #cccccc;

+}

+

+td, input, select, textarea {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+input, select, textarea {

+	border: 1px solid #808080;

+}

+

+.input_noborder {

+	border: 0;

+}

+

+#insert, .updateButton {

+   font-weight: bold;

+   width: 90px;

+   height: 21px;

+   border: 0;

+   background-image: url('../images/insert_button_bg.gif');

+   cursor: pointer;

+}

+

+#cancel {

+   font-weight: bold;

+   width: 90px;

+   height: 21px;

+   border: 0;

+   background-image: url('../images/cancel_button_bg.gif');

+   cursor: pointer;

+}

+

+/* Mozilla only style */

+html>body #insert, html>body #cancel {

+	padding-bottom: 2px;

+}

+

+.title {

+	font-size: 12px;

+	font-weight: bold;

+	color: #2B6FB6;

+}

+

+table.charmap {

+	border-style: solid;

+	border-width: 1px;

+	border-color: #AAAAAA;

+}

+

+td.charmap, td.charmapOver {

+	color: #000000;

+	border-color: #AAAAAA;

+	border-style: solid;

+	border-width: 1px;

+	text-align: center;

+	font-size: 12px;

+}

+

+td.charmapOver {

+	background-color: #CCCCCC;

+	cursor: default;

+}

+

+a.charmap {

+	color: #000000;

+	text-decoration: none

+}

+

+.wordWrapCode {

+	vertical-align: middle;

+	border: 1px none #000000;

+	background-color: transparent;

+}

+

+input.radio {

+	border: 1px none #000000;

+	background-color: transparent;

+	vertical-align: middle;

+}

+

+input.checkbox {

+	border: 1px none #000000;

+	background-color: transparent;

+	vertical-align: middle;

+}

+

+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {

+	margin-left: 1px;

+}

+

+.mceButtonNormal {

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: default;

+}

+

+.mceButtonOver {

+	border: 1px solid #0A246A;

+	cursor: default;

+	background-color: #B6BDD2;

+}

+

+.mceButtonDown {

+	cursor: default;

+	border: 1px solid #0A246A;

+	background-color: #8592B5;

+}

+

+.mceButtonDisabled {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	-moz-opacity:0.3;

+	opacity: 0.3;

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: default;

+}

+

+.mceActionPanel {

+	margin-top: 5px;

+}

+

+/* Tabs classes */

+

+.tabs {

+	float: left;

+	width: 100%;

+	line-height: normal;

+	background-image: url("../images/xp/tabs_bg.gif");

+}

+

+.tabs ul {

+	margin: 0;

+	padding: 0 0 0;

+	list-style: none;

+}

+

+.tabs li {

+	float: left;

+	background: url("../images/xp/tab_bg.gif") no-repeat left top;

+	margin: 0;

+	margin-left: 0;

+	margin-right: 2px;

+	padding: 0 0 0 10px;

+	line-height: 18px;

+}

+

+.tabs li.current {

+	background: url("../images/xp/tab_sel_bg.gif") no-repeat left top;

+	margin-right: 2px;

+}

+

+.tabs span {

+	float: left;

+	display: block;

+	background: url("../images/xp/tab_end.gif") no-repeat right top;

+	padding: 0px 10px 0 0;

+}

+

+.tabs .current span {

+	background: url("../images/xp/tab_sel_end.gif") no-repeat right top;

+}

+

+.tabs a {

+	text-decoration: none;

+	font-family: Verdana, Arial;

+	font-size: 10px;

+}

+

+.tabs a:link, .tabs a:visited, .tabs a:hover {

+	color: black;

+}

+

+.tabs a:hover {

+}

+

+.tabs .current {

+}

+

+.tabs .current a, .tabs .current a:link, .tabs .current a:visited {

+}

+

+.panel_wrapper div.panel {

+	display: none;

+}

+

+.panel_wrapper div.current {

+	display: block;

+	width: 100%;

+	height: 300px;

+	overflow: visible; /* Should be auto but that breaks Safari */

+}

+

+.panel_wrapper {

+	border: 1px solid #919B9C;

+	border-top: 0px;

+	padding: 10px;

+	padding-top: 5px;

+	clear: both;

+	background-color: white;

+}

+

+fieldset {

+	border: 1px solid #919B9C;

+	font-family: Verdana, Arial;

+	font-size: 10px;

+	padding: 0;

+	margin: 0;

+	padding: 4px;

+}

+

+legend {

+	color: #2B6FB6;

+	font-weight: bold;

+}

+

+.properties {

+	width: 100%;

+}

+

+.properties .column1 {

+}

+

+.properties .column2 {

+	text-align: left;

+}

+

+a:link, a:visited {

+	color: black;

+}

+

+a:hover {

+	color: #2B6FB6;

+}

+

+#plugintable thead {

+	font-weight: bold;

+	background-color: #DDDDDD;

+}

+

+#plugintable, #about #plugintable td {

+	border: 1px solid #919B9C;

+}

+

+#plugintable {

+	width: 99%;

+	margin-top: 10px;

+}

+

+#pluginscontainer {

+	height: 290px;

+	overflow: auto;

+}

+

+/* MSIE Specific styles */

+

+* html .panel_wrapper {

+	width: 100%;

+}

+

+.column {

+	float: left;

+}

+

+h1, h2, h3, h4 {

+	color: #2B6FB6;

+	margin: 0;

+	padding: 0;

+	padding-top: 5px;

+}

+

+h3 {

+	font-size: 14px;

+}

+

+#link .panel_wrapper, #link div.current {

+	height: 125px;

+}

+

+#image .panel_wrapper, #image div.current {

+	height: 190px;

+}

+

+label.msg { display: none; }

+label.invalid { color: #EE0000; display: inline; }

+input.invalid { border: 1px solid #EE0000; }

+

+/* Disables the advanced tab in the table plugin. */

+/*

+#table #advanced_tab {

+	display: none;

+}

+*/

+

+/* Disables the border input field and label in the table plugin. */

+/*

+#table #border, #table #borderlabel {

+	display: none;

+}

+*/

 
-body {
-	background-color: #F0F0EE;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
-	margin: 8px;
-}
-
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-}
-
-input {
-	background: #FFFFFF;
-	border: 1px solid #cccccc;
-}
-
-td, input, select, textarea {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-input, select, textarea {
-	border: 1px solid #808080;
-}
-
-.input_noborder {
-	border: 0;
-}
-
-#insert, .updateButton {
-   font-weight: bold;
-   width: 90px;
-   height: 21px;
-   border: 0;
-   background-image: url('../images/insert_button_bg.gif');
-   cursor: pointer;
-}
-
-#cancel {
-   font-weight: bold;
-   width: 90px;
-   height: 21px;
-   border: 0;
-   background-image: url('../images/cancel_button_bg.gif');
-   cursor: pointer;
-}
-
-/* Mozilla only style */
-html>body #insert, html>body #cancel {
-	padding-bottom: 2px;
-}
-
-.title {
-	font-size: 12px;
-	font-weight: bold;
-	color: #2B6FB6;
-}
-
-table.charmap {
-	border-style: solid;
-	border-width: 1px;
-	border-color: #AAAAAA;
-}
-
-td.charmap, td.charmapOver {
-	color: #000000;
-	border-color: #AAAAAA;
-	border-style: solid;
-	border-width: 1px;
-	text-align: center;
-	font-size: 12px;
-}
-
-td.charmapOver {
-	background-color: #CCCCCC;
-	cursor: default;
-}
-
-a.charmap {
-	color: #000000;
-	text-decoration: none
-}
-
-.wordWrapCode {
-	vertical-align: middle;
-	border: 1px none #000000;
-	background-color: transparent;
-}
-
-input.radio {
-	border: 1px none #000000;
-	background-color: transparent;
-	vertical-align: middle;
-}
-
-input.checkbox {
-	border: 1px none #000000;
-	background-color: transparent;
-	vertical-align: middle;
-}
-
-.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
-	margin-left: 1px;
-}
-
-.mceButtonNormal {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: default;
-}
-
-.mceButtonOver {
-	border: 1px solid #0A246A;
-	cursor: default;
-	background-color: #B6BDD2;
-}
-
-.mceButtonDown {
-	cursor: default;
-	border: 1px solid #0A246A;
-	background-color: #8592B5;
-}
-
-.mceButtonDisabled {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	-moz-opacity:0.3;
-	opacity: 0.3;
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: default;
-}
-
-.mceActionPanel {
-	margin-top: 5px;
-}
-
-/* Tabs classes */
-
-.tabs {
-	float: left;
-	width: 100%;
-	line-height: normal;
-	background-image: url("../images/xp/tabs_bg.gif");
-}
-
-.tabs ul {
-	margin: 0;
-	padding: 0 0 0;
-	list-style: none;
-}
-
-.tabs li {
-	float: left;
-	background: url("../images/xp/tab_bg.gif") no-repeat left top;
-	margin: 0;
-	margin-left: 0;
-	margin-right: 2px;
-	padding: 0 0 0 10px;
-	line-height: 18px;
-}
-
-.tabs li.current {
-	background: url("../images/xp/tab_sel_bg.gif") no-repeat left top;
-	margin-right: 2px;
-}
-
-.tabs span {
-	float: left;
-	display: block;
-	background: url("../images/xp/tab_end.gif") no-repeat right top;
-	padding: 0px 10px 0 0;
-}
-
-.tabs .current span {
-	background: url("../images/xp/tab_sel_end.gif") no-repeat right top;
-}
-
-.tabs a {
-	text-decoration: none;
-	font-family: Verdana, Arial;
-	font-size: 10px;
-}
-
-.tabs a:link, .tabs a:visited, .tabs a:hover {
-	color: black;
-}
-
-.tabs a:hover {
-}
-
-.tabs .current {
-}
-
-.tabs .current a, .tabs .current a:link, .tabs .current a:visited {
-}
-
-.panel_wrapper div.panel {
-	display: none;
-}
-
-.panel_wrapper div.current {
-	display: block;
-	width: 100%;
-	height: 300px;
-	overflow: visible; /* Should be auto but that breaks Safari */
-}
-
-.panel_wrapper {
-	border: 1px solid #919B9C;
-	border-top: 0px;
-	padding: 10px;
-	padding-top: 5px;
-	clear: both;
-	background-color: white;
-}
-
-fieldset {
-	border: 1px solid #919B9C;
-	font-family: Verdana, Arial;
-	font-size: 10px;
-	padding: 0;
-	margin: 0;
-	padding: 4px;
-}
-
-legend {
-	color: #2B6FB6;
-	font-weight: bold;
-}
-
-.properties {
-	width: 100%;
-}
-
-.properties .column1 {
-}
-
-.properties .column2 {
-	text-align: left;
-}
-
-a:link, a:visited {
-	color: black;
-}
-
-a:hover {
-	color: #2B6FB6;
-}
-
-#plugintable thead {
-	font-weight: bold;
-	background-color: #DDDDDD;
-}
-
-#plugintable, #about #plugintable td {
-	border: 1px solid #919B9C;
-}
-
-#plugintable {
-	width: 99%;
-	margin-top: 10px;
-}
-
-#pluginscontainer {
-	height: 290px;
-	overflow: auto;
-}
-
-/* MSIE Specific styles */
-
-* html .panel_wrapper {
-	width: 100%;
-}
-
-.column {
-	float: left;
-}
-
-h1, h2, h3, h4 {
-	color: #2B6FB6;
-	margin: 0;
-	padding: 0;
-	padding-top: 5px;
-}
-
-h3 {
-	font-size: 14px;
-}
-
-#link .panel_wrapper, #link div.current {
-	height: 125px;
-}
-
-#image .panel_wrapper, #image div.current {
-	height: 190px;
-}
-
-label.msg { display: none; }
-label.invalid { color: #EE0000; display: inline; }
-input.invalid { border: 1px solid #EE0000; }
-
-/* Disables the advanced tab in the table plugin. */
-/*
-#table #advanced_tab {
-	display: none;
-}
-*/
-
-/* Disables the border input field and label in the table plugin. */
-/*
-#table #border, #table #borderlabel {
-	display: none;
-}
-*/
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/css/editor_ui.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/css/editor_ui.css
@@ -1,98 +1,98 @@
-/* This file contains the CSS data for the editor UI of TinyMCE instances */
+/* This file contains the CSS data for the editor UI of TinyMCE instances */

+

+.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;}

+.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;}

+.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;}

+.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;}

+.mceLabel {color: #000000;}

+.mceLabelDisabled {cursor: text; color: #999999;}

+.mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;}

+.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; }

+.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;}

+.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;}

+.mceToolbarBottom {border-top: 1px solid #cccccc;}

+.mceToolbarContainer {display: block; position: relative; left: 0; top: 0; width: 100%;}

+.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;}

+.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;}

+.mceStatusbarTop {border-bottom: 1px solid #cccccc;}

+.mceStatusbarBottom {border-top: 1px solid #cccccc;}

+.mceStatusbar {border-bottom: 1px solid #cccccc;}

+.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;}

+.mcePathItem:hover {text-decoration: underline;}

+.mceStatusbarPathText {float: left;}

+.mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;}

+.mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;}

+.mceEditorIframe {border: 0;}

+

+/* Button CSS rules */

+

+a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;}

+a.mceButtonDisabled img {border: 0 !important;}

+a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}

+a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;}

+a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;}

+a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;}

+a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;}

+

+/* Menu button CSS rules */

+

+span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;}

+span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;}

+span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;}

+span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;}

+span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;}

+span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;}

+span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;}

+span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;}

+span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;}

+span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;}

+

+/* Menu */

+

+.mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 1000; background-color: white; border: 1px solid gray; font-weight: normal;}

+.mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;}

+.mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;}

+.mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;}

+.mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;}

+.mceMenuTitle span {padding-left: 5px;}

+.mceMenuTitle {background-color: #DDDDDD; font-weight: bold;}

+.mceMenuDisabled {color: gray;}

+span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;}

+span.mceMenuCheckItem {padding-left: 20px;}

+span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;}

+.mceColors table, .mceColors td {margin: 0; padding: 2px;}

+a.mceMoreColors {width: auto; padding: 0; margin: 0 3px 3px 3px; text-align: center; border: 1px solid white; text-decoration: none !important;}

+.mceColorPreview {position: absolute; overflow:hidden; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;}

+a.mceMoreColors:hover {border: 1px solid #0A246A;}

+.mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;}

+

+/* MSIE 6 specific rules */

+

+* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}

+* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}

+* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}

+* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}

+* html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}

+* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}

+* html .mceSelectList {margin-top: 2px;}

+* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}

+* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;}

+* html a.mceMoreColors {width: auto;}

+* html .mceColors td a {width: 10px; height: 10px;}

+* html .mceColorPreview {margin-left: 2px; margin-top: 14px;}

+

+/* MSIE 7 specific rules */

+

+*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}

+*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}

+*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}

+*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}

+*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}

+*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}

+*:first-child+html .mceSelectList {margin-top: 2px;}

+*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}

+*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;}

+*:first-child+html a.mceMoreColors {width: 137px;}

+*:first-child+html .mceColors td a {width: 10px; height: 10px;}

+*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;}

 
-.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;}
-.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;}
-.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;}
-.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;}
-.mceLabel {color: #000000;}
-.mceLabelDisabled {cursor: text; color: #999999;}
-.mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;}
-.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; }
-.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;}
-.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;}
-.mceToolbarBottom {border-top: 1px solid #cccccc;}
-.mceToolbarContainer {display: block; position: relative; left: 0; top: 0; width: 100%;}
-.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;}
-.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;}
-.mceStatusbarTop {border-bottom: 1px solid #cccccc;}
-.mceStatusbarBottom {border-top: 1px solid #cccccc;}
-.mceStatusbar {border-bottom: 1px solid #cccccc;}
-.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;}
-.mcePathItem:hover {text-decoration: underline;}
-.mceStatusbarPathText {float: left;}
-.mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;}
-.mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;}
-.mceEditorIframe {border: 0;}
-
-/* Button CSS rules */
-
-a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;}
-a.mceButtonDisabled img {border: 0 !important;}
-a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}
-a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
-a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;}
-a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;}
-a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;}
-
-/* Menu button CSS rules */
-
-span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;}
-span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;}
-span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;}
-span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;}
-span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;}
-span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;}
-span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;}
-span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;}
-span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;}
-span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;}
-
-/* Menu */
-
-.mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 1000; background-color: white; border: 1px solid gray; font-weight: normal;}
-.mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;}
-.mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;}
-.mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;}
-.mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;}
-.mceMenuTitle span {padding-left: 5px;}
-.mceMenuTitle {background-color: #DDDDDD; font-weight: bold;}
-.mceMenuDisabled {color: gray;}
-span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;}
-span.mceMenuCheckItem {padding-left: 20px;}
-span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;}
-.mceColors table, .mceColors td {margin: 0; padding: 2px;}
-a.mceMoreColors {width: auto; padding: 0; margin: 0 3px 3px 3px; text-align: center; border: 1px solid white; text-decoration: none !important;}
-.mceColorPreview {position: absolute; overflow:hidden; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;}
-a.mceMoreColors:hover {border: 1px solid #0A246A;}
-.mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;}
-
-/* MSIE 6 specific rules */
-
-* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}
-* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}
-* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
-* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}
-* html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
-* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}
-* html .mceSelectList {margin-top: 2px;}
-* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}
-* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;}
-* html a.mceMoreColors {width: auto;}
-* html .mceColors td a {width: 10px; height: 10px;}
-* html .mceColorPreview {margin-left: 2px; margin-top: 14px;}
-
-/* MSIE 7 specific rules */
-
-*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}
-*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}
-*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
-*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}
-*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
-*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}
-*:first-child+html .mceSelectList {margin-top: 2px;}
-*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}
-*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;}
-*:first-child+html a.mceMoreColors {width: 137px;}
-*:first-child+html .mceColors td a {width: 10px; height: 10px;}
-*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/about.htm
@@ -1,32 +1,32 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>O TinyMCE</TITLE>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>O TinyMCE</TITLE>

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">O TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>




+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">O TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>



-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/common_buttons.htm
@@ -1,171 +1,171 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/cut.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/copy.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/paste.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Podtrhne text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/cut.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/copy.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/paste.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Podtrhne text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/index.htm
@@ -1,27 +1,27 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Obsah</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>




-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Obsah</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>





+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/insert_image_button.htm
@@ -1,67 +1,67 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_image_window.png" width="348" height="290"><br>

+<br>



+<br>


+<table border="1" cellspacing="0">

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_image_window.png" width="348" height="290"><br>
-<br>


-<br>

-<table border="1" cellspacing="0">
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/insert_link_button.htm
@@ -1,35 +1,35 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_link_window.png" width="328" height="160"><br>

+<br>



+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_link_window.png" width="328" height="160"><br>
-<br>


-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/insert_table_button.htm
@@ -1,69 +1,69 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_table_window.png" width="338" height="210"><br>

+<br>


+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Sloupce</strong></td>


+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_table_window.png" width="338" height="210"><br>
-<br>

-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Sloupce</strong></td>

-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/cs/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: 0; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: 0; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/about.htm
@@ -1,32 +1,32 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>&Uuml;ber TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>&Uuml;ber TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">&Uuml;ber TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE ist ein kompakter WYSIWYG-Editor f&uuml;r Webbrowser wie MSIE oder Mozilla

+der es Ihnen erm&ouml;glicht HTML-Inhalte auf eine benutzerfreundliche Weise zu


+Textverarbeitungen vorkommen und sollte einfach zu benutzen sein.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">&Uuml;ber TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE ist ein kompakter WYSIWYG-Editor f&uuml;r Webbrowser wie MSIE oder Mozilla
-der es Ihnen erm&ouml;glicht HTML-Inhalte auf eine benutzerfreundliche Weise zu

-Textverarbeitungen vorkommen und sollte einfach zu benutzen sein.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/common_buttons.htm
@@ -1,108 +1,108 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>

+    <td>Fetter Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>

+    <td>Kursiver Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Unterstrichener Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Durchgestrichener Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Linksb&uuml;ndig.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Zentriert.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Rechtsb&uuml;ndig.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Blocksatz.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Unsortierte Liste / Punktierte Liste.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Sortierte Liste / Nummerierte Liste.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Einzug verkleinern.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Einzug vergr&ouml;ssern.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Letzte Aktion r&uuml;ckg&auml;ngig machen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Letzte Aktion wiederholen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Einen neuen Hyperlink einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_link_button.htm">Hyperlink einf&uuml;gen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Den gegenw&auml;rtige markierten Hyperlink entfernen / Alle gegenw&auml;rtig markierten Hyperlinks entfernen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Ein neues Bild einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_image_button.htm">Bild einf&uuml;gen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>unsauberen Code aufr&auml;umen / Entfernt ungewollte Formatierungen. Diese Funktion ist n&uuml;tzlich,

+		wenn Sie beispielsweise Inhalte aus einem Office Produkt kopieren.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Zeigt diese Hilfe an.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
-    <td>Fetter Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
-    <td>Kursiver Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Unterstrichener Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Durchgestrichener Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Linksb&uuml;ndig.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Zentriert.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Rechtsb&uuml;ndig.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Blocksatz.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Unsortierte Liste / Punktierte Liste.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Sortierte Liste / Nummerierte Liste.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Einzug verkleinern.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Einzug vergr&ouml;ssern.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Letzte Aktion r&uuml;ckg&auml;ngig machen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Letzte Aktion wiederholen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Einen neuen Hyperlink einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_link_button.htm">Hyperlink einf&uuml;gen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Den gegenw&auml;rtige markierten Hyperlink entfernen / Alle gegenw&auml;rtig markierten Hyperlinks entfernen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Ein neues Bild einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_image_button.htm">Bild einf&uuml;gen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>unsauberen Code aufr&auml;umen / Entfernt ungewollte Formatierungen. Diese Funktion ist n&uuml;tzlich,
-		wenn Sie beispielsweise Inhalte aus einem Office Produkt kopieren.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Zeigt diese Hilfe an.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/index.htm
@@ -1,25 +1,25 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Inhaltsverzeichnis</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Klicken Sie auf die untenstehenden Links um die verschiedenen Bereiche der Hilfe zu betrachten. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">&Uuml;ber TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Allgemeine Schaltfl&auml;chen</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Schaltfl&auml;che Bild einf&uuml;gen</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Schaltfl&auml;che Hyperlink einf&uuml;gen</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Inhaltsverzeichnis</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Klicken Sie auf die untenstehenden Links um die verschiedenen Bereiche der Hilfe zu betrachten. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">&Uuml;ber TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Allgemeine Schaltfl&auml;chen</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Schaltfl&auml;che Bild einf&uuml;gen</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Schaltfl&auml;che Hyperlink einf&uuml;gen</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/insert_image_button.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Schaltfl&auml;che Bild einf&uuml;gen</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Die Schaltfl&auml;che &quot;Bild einf&uuml;gen&quot; &ouml;ffnet das unten gezeigte Fenster.<br>

+<br>

+<img src="images/insert_image_window.gif" width="350" height="166"><br>

+<br>


+Beschreibung des Bildes, welche dann als alternative Textbeschreibung verwendet wird.

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Schaltfl&auml;che Bild einf&uuml;gen</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Die Schaltfl&auml;che &quot;Bild einf&uuml;gen&quot; &ouml;ffnet das unten gezeigte Fenster.<br>
-<br>
-<img src="images/insert_image_window.gif" width="350" height="166"><br>
-<br>

-Beschreibung des Bildes, welche dann als alternative Textbeschreibung verwendet wird.
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/insert_link_button.htm
@@ -1,35 +1,35 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Schaltfl&auml;che Hyperlink einf&uuml;gen</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Diese Schaltfl&auml;che &ouml;ffnet das Fenster f&uuml;r die &quot;Hyperlink einf&uuml;gen / bearbeiten&quot;-Funktion.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="166"><br>

+<br>



+ge&ouml;ffnet werden soll.

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Schaltfl&auml;che Hyperlink einf&uuml;gen</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Diese Schaltfl&auml;che &ouml;ffnet das Fenster f&uuml;r die &quot;Hyperlink einf&uuml;gen / bearbeiten&quot;-Funktion.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="166"><br>
-<br>


-ge&ouml;ffnet werden soll.
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/de/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/about.htm
@@ -1,32 +1,32 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>About TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>About TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">About TinyMCE</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla 

+that enables you to edit HTML contents in a more user friendly way. It has common 

+features that are found in most word processors and should not be difficult to 

+use.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">About TinyMCE</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla 
-that enables you to edit HTML contents in a more user friendly way. It has common 
-features that are found in most word processors and should not be difficult to 
-use.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm
@@ -1,163 +1,163 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Common buttons</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Common buttons</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Common buttons</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Below is a short description about each button.

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20" alt="Bold text icon" /></td>

+    <td>Bold text style (Ctrl+B).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20" alt="Italic text icon" /></td>

+    <td>Italic text style (Ctrl+I).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20" alt="Underline text icon." /></td>

+    <td>Underline text style (Ctrl+U).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20" alt="Strikethrough text icon." /></td>

+    <td>Strikethrough text style.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/justifyleft.gif" width="20" height="20" alt="Align left icon." /></td>

+    <td>Align left.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/justifycenter.gif" width="20" height="20" alt="Align center icon." /></td>

+    <td>Align center.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/justifyright.gif" width="20" height="20" alt="Align right icon." /></td>

+    <td>Align right.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/justifyfull.gif" width="20" height="20" alt="Align full icon." /></td>

+    <td>Align full.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20" alt="Unordered list/bullet list icon." /></td>

+    <td>Unordered list/bullet list.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20" alt="Ordered list/numbered list icon." /></td>

+    <td>Ordered list/numbered list</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20" alt="Outdent/decrease indentation icon." /></td>

+    <td>Outdent/decrease indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20" alt="Indent/increase indentation icon." /></td>

+    <td>Indent/increase indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20" alt="Undo the last operation." /></td>

+    <td>Undo the last operation (Ctrl+Z).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20" alt="Redo the last operation icon." /></td>

+    <td>Redo the last operation (Ctrl+Y).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20" alt="Insert a new link icon." /></td>

+    <td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert 

+      link section</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20" alt="Unlinks the current selection icon." /></td>

+    <td>Unlinks the current selection/removes all selected links.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/anchor.gif" width="20" height="20" alt="Insert a new anchor icon." /></td>

+    <td>Insert a new anchor, read more about this function in the <a href="insert_anchor_button.htm">Insert anchor section.</a></td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20" alt="Insert a new image icon." /></td>

+    <td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert 

+      image section</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20" alt="Cleanup code icon." /></td>

+    <td>Cleanup code/Removes unwanted formating. This function is useful when 

+      you copy contents from for example a office product.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20" alt="Show help icon." /></td>

+    <td>Shows this help window.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20" alt="Source code editor icon." /></td>

+    <td>Opens HTML source code editor. </td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table.gif" width="20" height="20" alt="Insert table icon." /></td>

+    <td>Inserts a new table at the current location. </td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table_insert_row_before.gif" width="20" height="20" alt="Adds a row above icon." /></td>

+    <td>Adds a row above the current one. </td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table_insert_row_after.gif" width="20" height="20" alt="Adds a row under icon." /></td>

+    <td>Adds a row under the current one. </td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table_delete_row.gif" width="20" height="20" alt="Remove row icon." /></td>

+    <td>Removes the row. </td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table_insert_col_before.gif" width="20" height="20" alt="Add column before icon." /></td>

+    <td>Adds a column before the current one.</td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table_insert_col_after.gif" width="20" height="20" alt="Add column after icon." /></td>

+    <td>Adds a column after the current one.</td>

+  </tr>

+  <tr>

+    <td><img src="../../../../plugins/table/images/table_delete_col.gif" width="20" height="20" alt="Remove column icon." /></td>

+    <td>Removes the current column.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20" alt="Insert horizontal ruler icon." /></td>

+    <td>Inserts a new horizontal ruler </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20" alt="Remove formatting icon." /></td>

+    <td>Removes formatting from the selection. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20" alt="Subscript icon." /></td>

+    <td>Makes the selection to be subscript. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20" alt="Superscript icon." /></td>

+    <td>Makes the selection to be superscripted. </td>

+  </tr>

+</table>

+<br>

+<hr noshade="noshade" />

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Common buttons</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Below is a short description about each button.
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20" alt="Bold text icon" /></td>
-    <td>Bold text style (Ctrl+B).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20" alt="Italic text icon" /></td>
-    <td>Italic text style (Ctrl+I).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20" alt="Underline text icon." /></td>
-    <td>Underline text style (Ctrl+U).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20" alt="Strikethrough text icon." /></td>
-    <td>Strikethrough text style.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/justifyleft.gif" width="20" height="20" alt="Align left icon." /></td>
-    <td>Align left.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/justifycenter.gif" width="20" height="20" alt="Align center icon." /></td>
-    <td>Align center.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/justifyright.gif" width="20" height="20" alt="Align right icon." /></td>
-    <td>Align right.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/justifyfull.gif" width="20" height="20" alt="Align full icon." /></td>
-    <td>Align full.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20" alt="Unordered list/bullet list icon." /></td>
-    <td>Unordered list/bullet list.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20" alt="Ordered list/numbered list icon." /></td>
-    <td>Ordered list/numbered list</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20" alt="Outdent/decrease indentation icon." /></td>
-    <td>Outdent/decrease indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20" alt="Indent/increase indentation icon." /></td>
-    <td>Indent/increase indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20" alt="Undo the last operation." /></td>
-    <td>Undo the last operation (Ctrl+Z).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20" alt="Redo the last operation icon." /></td>
-    <td>Redo the last operation (Ctrl+Y).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20" alt="Insert a new link icon." /></td>
-    <td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert 
-      link section</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20" alt="Unlinks the current selection icon." /></td>
-    <td>Unlinks the current selection/removes all selected links.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/anchor.gif" width="20" height="20" alt="Insert a new anchor icon." /></td>
-    <td>Insert a new anchor, read more about this function in the <a href="insert_anchor_button.htm">Insert anchor section.</a></td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20" alt="Insert a new image icon." /></td>
-    <td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert 
-      image section</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20" alt="Cleanup code icon." /></td>
-    <td>Cleanup code/Removes unwanted formating. This function is useful when 
-      you copy contents from for example a office product.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20" alt="Show help icon." /></td>
-    <td>Shows this help window.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20" alt="Source code editor icon." /></td>
-    <td>Opens HTML source code editor. </td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table.gif" width="20" height="20" alt="Insert table icon." /></td>
-    <td>Inserts a new table at the current location. </td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table_insert_row_before.gif" width="20" height="20" alt="Adds a row above icon." /></td>
-    <td>Adds a row above the current one. </td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table_insert_row_after.gif" width="20" height="20" alt="Adds a row under icon." /></td>
-    <td>Adds a row under the current one. </td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table_delete_row.gif" width="20" height="20" alt="Remove row icon." /></td>
-    <td>Removes the row. </td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table_insert_col_before.gif" width="20" height="20" alt="Add column before icon." /></td>
-    <td>Adds a column before the current one.</td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table_insert_col_after.gif" width="20" height="20" alt="Add column after icon." /></td>
-    <td>Adds a column after the current one.</td>
-  </tr>
-  <tr>
-    <td><img src="../../../../plugins/table/images/table_delete_col.gif" width="20" height="20" alt="Remove column icon." /></td>
-    <td>Removes the current column.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20" alt="Insert horizontal ruler icon." /></td>
-    <td>Inserts a new horizontal ruler </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20" alt="Remove formatting icon." /></td>
-    <td>Removes formatting from the selection. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20" alt="Subscript icon." /></td>
-    <td>Makes the selection to be subscript. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20" alt="Superscript icon." /></td>
-    <td>Makes the selection to be superscripted. </td>
-  </tr>
-</table>
-<br>
-<hr noshade="noshade" />
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
@@ -1,46 +1,46 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert table button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert table button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Create accessible content</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<p>TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off. </p>

+

+<p><strong>Things you can do to make your content accessible:</strong></p>

+<ol>

+<li><strong>Include an Image Description:</strong> Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image. <br /><br /></li>

+

+<li> <strong>Add Scope to data table header cells:</strong> In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents. <br /><br /></li>

+

+<li><strong> Structure content with properly nested headings:</strong> In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content,  rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.<br /><br /></li>

+

+<li><strong> Include alternate content:</strong> Create an alternate page for non-HTML content such as Flash, Java applets, or  embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.<br /><br /></li>

+

+<li><strong> Check accessbility: </strong> When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.<br /><br /></li>

+

+</ol>

+

+<p>See the <a href="http://checker.atrc.utoronto.ca" target="_new">AChecker Web Site</a> for further details about creating content that will be accessible to all users.<br />

+</p>

+

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Create accessible content</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<p>TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off. </p>
-
-<p><strong>Things you can do to make your content accessible:</strong></p>
-<ol>
-<li><strong>Include an Image Description:</strong> Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image. <br /><br /></li>
-
-<li> <strong>Add Scope to data table header cells:</strong> In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents. <br /><br /></li>
-
-<li><strong> Structure content with properly nested headings:</strong> In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content,  rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.<br /><br /></li>
-
-<li><strong> Include alternate content:</strong> Create an alternate page for non-HTML content such as Flash, Java applets, or  embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.<br /><br /></li>
-
-<li><strong> Check accessbility: </strong> When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.<br /><br /></li>
-
-</ol>
-
-<p>See the <a href="http://checker.atrc.utoronto.ca" target="_new">AChecker Web Site</a> for further details about creating content that will be accessible to all users.<br />
-</p>
-
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/index.htm
@@ -1,28 +1,28 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Help Index</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Table of contents</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Click the links below to go to the different help sections. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">About TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>
-  <li class="toc_li"><a href="insert_anchor_button.htm">Insert anchor button</a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Insert table button</a></li>
- <li class="toc_li"><a href="create_accessible_content.htm">Create accessible content</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Help Index</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Table of contents</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Click the links below to go to the different help sections. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">About TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>

+  <li class="toc_li"><a href="insert_anchor_button.htm">Insert anchor button</a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Insert table button</a></li>

+ <li class="toc_li"><a href="create_accessible_content.htm">Create accessible content</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert anchor button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert anchor button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insert anchor button</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+This button opens a new window with the insert/edit anchor function.<br>

+<br>

+<img src="images/insert_anchor_window.gif" width="330" height="139" alt="Anchor dialog/window" /><br>

+<br>

+There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique. <br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insert anchor button</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-This button opens a new window with the insert/edit anchor function.<br>
-<br>
-<img src="images/insert_anchor_window.gif" width="330" height="139" alt="Anchor dialog/window" /><br>
-<br>
-There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique. <br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
@@ -1,66 +1,66 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert image button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert image button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insert image button</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+The insert image button opens the window shown below.<br>

+<br>

+<img src="images/insert_image_window.gif" alt="Insert image dialog/window" /><br>

+<br>

+You simply enter a URL to the image you want to link to and enter a image description, 

+this is then displayed as an alternative text descripton of the image on the page.<br>

+<br>

+<strong>Field descriptions:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Image URL </strong></td>

+    <td>URL/path to the image.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Image description </strong></td>

+    <td>Alternative description of image contents.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimentions</strong></td>

+    <td>Image width/height. </td>

+  </tr>

+  <tr>

+    <td><strong>Alignment</strong></td>

+    <td>Image alignment, useful when wrapping text around images.</td>

+  </tr>

+  <tr>

+    <td><strong>Border</strong></td>

+    <td>Border thickness. </td>

+  </tr>

+  <tr>

+    <td><strong>VSpace</strong></td>

+    <td>Vertical space, useful when wrapping text around images.</td>

+  </tr>

+  <tr>

+    <td><strong>HSpace</strong></td>

+    <td>Horizontal space, useful when wrapping text around images.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insert image button</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-The insert image button opens the window shown below.<br>
-<br>
-<img src="images/insert_image_window.gif" alt="Insert image dialog/window" /><br>
-<br>
-You simply enter a URL to the image you want to link to and enter a image description, 
-this is then displayed as an alternative text descripton of the image on the page.<br>
-<br>
-<strong>Field descriptions:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Image URL </strong></td>
-    <td>URL/path to the image.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Image description </strong></td>
-    <td>Alternative description of image contents.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimentions</strong></td>
-    <td>Image width/height. </td>
-  </tr>
-  <tr>
-    <td><strong>Alignment</strong></td>
-    <td>Image alignment, useful when wrapping text around images.</td>
-  </tr>
-  <tr>
-    <td><strong>Border</strong></td>
-    <td>Border thickness. </td>
-  </tr>
-  <tr>
-    <td><strong>VSpace</strong></td>
-    <td>Vertical space, useful when wrapping text around images.</td>
-  </tr>
-  <tr>
-    <td><strong>HSpace</strong></td>
-    <td>Horizontal space, useful when wrapping text around images.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert link button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert link button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insert link button</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+This button opens a new window with the insert/edit link function.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159" alt="Insert link dialog/window" /><br>

+<br>

+There are two fields in this window the first one &quot;Link URL&quot; is the 

+URL of the link. The target enables you to select how the link is to be opened.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insert link button</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-This button opens a new window with the insert/edit link function.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159" alt="Insert link dialog/window" /><br>
-<br>
-There are two fields in this window the first one &quot;Link URL&quot; is the 
-URL of the link. The target enables you to select how the link is to be opened.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert table button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert table button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insert table button</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+The insert table button opens the window shown below. This action enables you to create tables. <br>

+<br>

+<img src="images/insert_table_window.gif" width="340" height="229" alt="Image of table window" /><br>

+<br>

+<strong>Field descriptions:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Columns</strong></td>

+    <td>Number of columns in the  table. </td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Rows</strong></td>

+    <td>Number of rows in the new table.</td>

+  </tr>

+  <tr>

+    <td><strong>Cellpadding</strong></td>

+    <td>Cellpadding of the table . </td>

+  </tr>

+  <tr>

+    <td><strong>Cellspacing</strong></td>

+    <td>Cellspacing of the table .</td>

+  </tr>

+  <tr>

+    <td><strong>Alignment</strong></td>

+    <td>Table alignment . </td>

+  </tr>

+  <tr>

+    <td><strong>Border</strong></td>

+    <td>Border thinkness of table.</td>

+  </tr>

+  <tr>

+    <td><strong>Width</strong></td>

+    <td>Width in pixels of table .</td>

+  </tr>

+  <tr>

+    <td><strong>Height</strong></td>

+    <td>Height in pixels of table.</td>

+  </tr>

+  <tr>

+    <td><strong>Class</strong></td>

+    <td>Style or CSS class of table.</td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insert table button</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-The insert table button opens the window shown below. This action enables you to create tables. <br>
-<br>
-<img src="images/insert_table_window.gif" width="340" height="229" alt="Image of table window" /><br>
-<br>
-<strong>Field descriptions:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Columns</strong></td>
-    <td>Number of columns in the  table. </td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Rows</strong></td>
-    <td>Number of rows in the new table.</td>
-  </tr>
-  <tr>
-    <td><strong>Cellpadding</strong></td>
-    <td>Cellpadding of the table . </td>
-  </tr>
-  <tr>
-    <td><strong>Cellspacing</strong></td>
-    <td>Cellspacing of the table .</td>
-  </tr>
-  <tr>
-    <td><strong>Alignment</strong></td>
-    <td>Table alignment . </td>
-  </tr>
-  <tr>
-    <td><strong>Border</strong></td>
-    <td>Border thinkness of table.</td>
-  </tr>
-  <tr>
-    <td><strong>Width</strong></td>
-    <td>Width in pixels of table .</td>
-  </tr>
-  <tr>
-    <td><strong>Height</strong></td>
-    <td>Height in pixels of table.</td>
-  </tr>
-  <tr>
-    <td><strong>Class</strong></td>
-    <td>Style or CSS class of table.</td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/en/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/about.htm
@@ -1,29 +1,29 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Acerca de TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Acerca de TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Acerca de  TinyMCE</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE es un editor WYSIWYG para navegadores como  MSIE o Mozilla que te permite editar el contenido HTML de una manera m&aacute;s amigable. Tiene la mayor&iacute;a de las opciones de un procesador de texto y no deber&iacute;a ser dificil de usar.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Acerca de  TinyMCE</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE es un editor WYSIWYG para navegadores como  MSIE o Mozilla que te permite editar el contenido HTML de una manera m&aacute;s amigable. Tiene la mayor&iacute;a de las opciones de un procesador de texto y no deber&iacute;a ser dificil de usar.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/common_buttons.htm
@@ -1,156 +1,156 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Botones de uso com&uacute;n</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Botones de uso com&uacute;n</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Botones de uso com&uacute;n</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Peque&ntilde;a descripci&oacute;n de cada boto&oacute;n.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Texto en negrita.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Texto en cursiva.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Texto subrayado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Texto tachado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Alinear a la izquierda.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Alinear al centro.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Alinear a la derecha.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Alinear justificado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Lista desordenada/lista por puntos.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Lista ordenada/lista numerada</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Disminuir la sangr&iacute;a.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Aumentar la sangr&iacute;a.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Deshacer la &uacute;ltima operaci&oacute;n.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Rehacer la &uacute;ltima operaci&oacute;n.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Insertar un enlace, m&aacute;s informaci&oacute;n en <a href="insert_link_button.htm">insertar enlace</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Quita el enlace al texto seleccionado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Insertar un imagen, m&aacute;s informaci&oacute;n en <a href="insert_image_button.htm">insertar imagen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Limpiar c&oacute;digo, esta funci&oacute;n es &uacute;til cuando copias el c&oacute;digo de otra p&aacute;gina.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Muestra esta ventana de ayuda.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>Abre el editor de HTML. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Inserta una nueva tabla de 2x2. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>A&ntilde;ade una fila encima. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>A&ntilde;ade una fila debajo. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Elimina una fila. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>A&ntilde;ade una columna antes de la actual .</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>A&ntilde;ade una columna despu&eacute;s de la actual.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Elimina la columna actual.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Inserta un separador horizontal </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Elimina el formato de la selecci&oacute;n. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Sub&iacute;ndice. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Super&iacute;ndice. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Botones de uso com&uacute;n</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Peque&ntilde;a descripci&oacute;n de cada boto&oacute;n.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Texto en negrita.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Texto en cursiva.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Texto subrayado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Texto tachado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Alinear a la izquierda.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Alinear al centro.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Alinear a la derecha.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Alinear justificado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Lista desordenada/lista por puntos.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Lista ordenada/lista numerada</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Disminuir la sangr&iacute;a.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Aumentar la sangr&iacute;a.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Deshacer la &uacute;ltima operaci&oacute;n.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Rehacer la &uacute;ltima operaci&oacute;n.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Insertar un enlace, m&aacute;s informaci&oacute;n en <a href="insert_link_button.htm">insertar enlace</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Quita el enlace al texto seleccionado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Insertar un imagen, m&aacute;s informaci&oacute;n en <a href="insert_image_button.htm">insertar imagen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Limpiar c&oacute;digo, esta funci&oacute;n es &uacute;til cuando copias el c&oacute;digo de otra p&aacute;gina.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Muestra esta ventana de ayuda.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>Abre el editor de HTML. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Inserta una nueva tabla de 2x2. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>A&ntilde;ade una fila encima. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>A&ntilde;ade una fila debajo. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Elimina una fila. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>A&ntilde;ade una columna antes de la actual .</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>A&ntilde;ade una columna despu&eacute;s de la actual.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Elimina la columna actual.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Inserta un separador horizontal </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Elimina el formato de la selecci&oacute;n. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Sub&iacute;ndice. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Super&iacute;ndice. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/index.htm
@@ -1,26 +1,26 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>&Iacute;ndice de la ayuda</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Lista de contenidos</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Selecciona una secci&oacute;n para ver la ayuda. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Acerca de  TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Botones</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Insertar imagen</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Insertar enlaces</a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Insertar tabla</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>&Iacute;ndice de la ayuda</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Lista de contenidos</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Selecciona una secci&oacute;n para ver la ayuda. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Acerca de  TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Botones</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Insertar imagen</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Insertar enlaces</a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Insertar tabla</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/insert_image_button.htm
@@ -1,65 +1,65 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insertar imagen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insertar imagen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insertar imagen</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+El bot&oacute;n insertar imagen abre la siguiente ventana.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+Tu s&oacute;lo tienes que escribir la URL de la imagen que quieres que aparezca y escribir una descripci&oacute;n de esta, esta descripci&oacute;n aparecera como un texto alternativo que describa la imagen.<br>

+<br>

+<strong>Descripci&oacute;n de los campos:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Image URL </strong></td>

+    <td>URL de la imagen.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Image description </strong></td>

+    <td>Descripci&oacute;n alternativa del contenido de la imagen.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimentions</strong></td>

+    <td>Altura/anchura de la imagen. </td>

+  </tr>

+  <tr>

+    <td><strong>Alignment</strong></td>

+    <td>Alineamiento, &uacute;til cuando colocas texto alrededor de la imagen.</td>

+  </tr>

+  <tr>

+    <td><strong>Border</strong></td>

+    <td>Anchura del borde. </td>

+  </tr>

+  <tr>

+    <td><strong>VSpace</strong></td>

+    <td>Espacio vertical, &uacute;til cuando colocas texto alrededor de la imagen.</td>

+  </tr>

+  <tr>

+    <td><strong>HSpace</strong></td>

+    <td>Espacio horizontal, &uacute;til cuando colocas texto alrededor de la imagen.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insertar imagen</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-El bot&oacute;n insertar imagen abre la siguiente ventana.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-Tu s&oacute;lo tienes que escribir la URL de la imagen que quieres que aparezca y escribir una descripci&oacute;n de esta, esta descripci&oacute;n aparecera como un texto alternativo que describa la imagen.<br>
-<br>
-<strong>Descripci&oacute;n de los campos:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Image URL </strong></td>
-    <td>URL de la imagen.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Image description </strong></td>
-    <td>Descripci&oacute;n alternativa del contenido de la imagen.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimentions</strong></td>
-    <td>Altura/anchura de la imagen. </td>
-  </tr>
-  <tr>
-    <td><strong>Alignment</strong></td>
-    <td>Alineamiento, &uacute;til cuando colocas texto alrededor de la imagen.</td>
-  </tr>
-  <tr>
-    <td><strong>Border</strong></td>
-    <td>Anchura del borde. </td>
-  </tr>
-  <tr>
-    <td><strong>VSpace</strong></td>
-    <td>Espacio vertical, &uacute;til cuando colocas texto alrededor de la imagen.</td>
-  </tr>
-  <tr>
-    <td><strong>HSpace</strong></td>
-    <td>Espacio horizontal, &uacute;til cuando colocas texto alrededor de la imagen.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/insert_link_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insertar enlaces</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insertar enlaces</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insertar enlaces</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Este bot&oacute;n abre una nueva ventana con la funci&oacute;n insertar/editar enlace.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>

+Hay dos campos en esta ventana, el primero &quot;Link URL&quot; es donde hay que escribir la direcci&oacute;n del enlace. El segundo &quot;Target&quot; indica c&oacute;mo se abrir&aacute; el enlace.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insertar enlaces</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Este bot&oacute;n abre una nueva ventana con la funci&oacute;n insertar/editar enlace.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>
-Hay dos campos en esta ventana, el primero &quot;Link URL&quot; es donde hay que escribir la direcci&oacute;n del enlace. El segundo &quot;Target&quot; indica c&oacute;mo se abrir&aacute; el enlace.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/insert_table_button.htm
@@ -1,68 +1,68 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insertar tabla</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insertar tabla</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insertar tabla</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+El bot&oacute;n insertar tabla abre la siguiente ventana. Esta acci&ocaute;n te permite crear tablas.<br>

+<br>

+<img src="images/insert_table_window.gif" width="340" height="209"><br>

+<br>

+<strong>Descripci&oacute;n de los campos:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Columns</strong></td>

+    <td>N&uacute;mero de columnas.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Rows</strong></td>

+    <td>NA&uacute;mero de filas.</td>

+  </tr>

+  <tr>

+    <td><strong>Cellpadding</strong></td>

+    <td>Desplazamiento entre celdas . </td>

+  </tr>

+  <tr>

+    <td><strong>Cellspacing</strong></td>

+    <td>Espacio entre celdas .</td>

+  </tr>

+  <tr>

+    <td><strong>Alignment</strong></td>

+    <td>Alineamiento de la tabla. </td>

+  </tr>

+  <tr>

+    <td><strong>Border</strong></td>

+    <td>Anchura del borde de la tabla.</td>

+  </tr>

+  <tr>

+    <td><strong>Width</strong></td>

+    <td>Anchura de la tabla en pixels .</td>

+  </tr>

+  <tr>

+    <td><strong>Height</strong></td>

+    <td>Altura de la tabla en pixels.</td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Tabla de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insertar tabla</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-El bot&oacute;n insertar tabla abre la siguiente ventana. Esta acci&ocaute;n te permite crear tablas.<br>
-<br>
-<img src="images/insert_table_window.gif" width="340" height="209"><br>
-<br>
-<strong>Descripci&oacute;n de los campos:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Columns</strong></td>
-    <td>N&uacute;mero de columnas.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Rows</strong></td>
-    <td>NA&uacute;mero de filas.</td>
-  </tr>
-  <tr>
-    <td><strong>Cellpadding</strong></td>
-    <td>Desplazamiento entre celdas . </td>
-  </tr>
-  <tr>
-    <td><strong>Cellspacing</strong></td>
-    <td>Espacio entre celdas .</td>
-  </tr>
-  <tr>
-    <td><strong>Alignment</strong></td>
-    <td>Alineamiento de la tabla. </td>
-  </tr>
-  <tr>
-    <td><strong>Border</strong></td>
-    <td>Anchura del borde de la tabla.</td>
-  </tr>
-  <tr>
-    <td><strong>Width</strong></td>
-    <td>Anchura de la tabla en pixels .</td>
-  </tr>
-  <tr>
-    <td><strong>Height</strong></td>
-    <td>Altura de la tabla en pixels.</td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Tabla de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/es/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/about.htm
@@ -1,29 +1,29 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>About TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>About TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 


+    <td align="right"><a href="#">Alkuun</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 

-    <td align="right"><a href="#">Alkuun</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/common_buttons.htm
@@ -1,157 +1,157 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Common buttons</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Common buttons</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Yleiset napit</span></td>


+  </tr>

+</table>

+<hr noshade>

+<br>

+Alla on lyhyt selostus kaikista toimintonapeista.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Lihavointi.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Kursivointi.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Alleviivaus.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Yliviivaus.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>vasen tasaus.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Keskitys.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Oikea tasaus.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Pakotettu tasaus.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Peruuta viimeinen muutos.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Tee uudelleen viimeinen peruutettu muutos.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Poista valittu rivi. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Poistaa valitun sarakkeen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 


+    <td align="right"><a href="#">Alkuun</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Yleiset napit</span></td>

-  </tr>
-</table>
-<hr noshade>
-<br>
-Alla on lyhyt selostus kaikista toimintonapeista.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Lihavointi.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Kursivointi.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Alleviivaus.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Yliviivaus.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>vasen tasaus.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Keskitys.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Oikea tasaus.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Pakotettu tasaus.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Peruuta viimeinen muutos.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Tee uudelleen viimeinen peruutettu muutos.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Poista valittu rivi. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Poistaa valitun sarakkeen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 

-    <td align="right"><a href="#">Alkuun</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/index.htm
@@ -1,26 +1,26 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">

-  <li class="toc_li"><a href="common_buttons.htm">Toimintonapit</a></li>



-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">


+  <li class="toc_li"><a href="common_buttons.htm">Toimintonapit</a></li>




+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/insert_image_button.htm
@@ -1,66 +1,66 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert image button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert image button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>


+<br>

+<br>

+<strong>Kenttien selitykset:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Kuvan URL</strong></td>

+    <td>Kuvan URL tai polku.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Kuvan selite</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Ulottuvuudet</strong></td>

+    <td>Kuvan leveys ja korkeus. </td>

+  </tr>

+  <tr>

+    <td><strong>Asettelu</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Reuna</strong></td>


+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 


+    <td align="right"><a href="#">Alkuun</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>

-<br>
-<br>
-<strong>Kenttien selitykset:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Kuvan URL</strong></td>
-    <td>Kuvan URL tai polku.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Kuvan selite</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Ulottuvuudet</strong></td>
-    <td>Kuvan leveys ja korkeus. </td>
-  </tr>
-  <tr>
-    <td><strong>Asettelu</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Reuna</strong></td>

-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 

-    <td align="right"><a href="#">Alkuun</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/insert_link_button.htm
@@ -1,36 +1,36 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert link button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert link button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_link_window.gif" width="336" height="208"><br>

+<br>

+



+The target enables you to select how the link is to be opened.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 


+    <td align="right"><a href="#">Alkuun</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_link_window.gif" width="336" height="208"><br>
-<br>
-


-The target enables you to select how the link is to be opened.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 

-    <td align="right"><a href="#">Alkuun</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/insert_table_button.htm
@@ -1,68 +1,68 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Insert table button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Insert table button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_table_window.gif" width="340" height="209"><br>

+<br>

+<strong>Kenttien selitteet:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Sarakkeet</strong></td>


+  </tr>

+  <tr>

+    <td width="150"><strong>Rivit</strong></td>


+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>

+    <td><strong>Asettelu</strong></td>

+    <td>Taulun asettelu. </td>

+  </tr>

+  <tr>

+    <td><strong>Reuna</strong></td>

+    <td>Reunan leveys.</td>

+  </tr>

+  <tr>

+    <td><strong>Leveys</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Korkeus</strong></td>


+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 


+    <td align="right"><a href="#">Alkuun</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_table_window.gif" width="340" height="209"><br>
-<br>
-<strong>Kenttien selitteet:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Sarakkeet</strong></td>

-  </tr>
-  <tr>
-    <td width="150"><strong>Rivit</strong></td>

-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>
-    <td><strong>Asettelu</strong></td>
-    <td>Taulun asettelu. </td>
-  </tr>
-  <tr>
-    <td><strong>Reuna</strong></td>
-    <td>Reunan leveys.</td>
-  </tr>
-  <tr>
-    <td><strong>Leveys</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Korkeus</strong></td>

-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 

-    <td align="right"><a href="#">Alkuun</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fi/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/about.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>&Agrave; propos de TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>&Agrave; propos de TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">&Agrave; propos de TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui

+vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.

+Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans

+les traitements de texte.

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">&Agrave; propos de TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui
-vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.
-Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans
-les traitements de texte.
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/common_buttons.htm
@@ -1,161 +1,161 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outils communs</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outils communs</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outils communs</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Barre le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; gauche.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Alignement au centr&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; droite.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Texte justifi&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Liste &agrave; puces.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Liste num&eacute;rot&eacute;e</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>R&eacute;duit l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Augmente l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Annule la derni&egrave;re op&eacute;ration.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">

+        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">

+        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil

+    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels

+    de bureatique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Affiche cette page d'aide.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>Ouvre un &eacute;diteur permettant de modifier le code HTML. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re un nouveau tableau &agrave; la position actuelle.  Allez &agrave; la page <a href="insert_table_button.htm">

+        Outil d'ajout de tableau</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Ajoute une ligne au tableau avant la ligne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>Ajoute une ligne au tableau apr&egrave;s la ligne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Supprime la ligne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>Ajoute une colonne au tableau avant la colonne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>Ajoute une colonne au tableau apr&egrave;s la colonne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Supprime la colonne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re un s&eacute;parateur horizontal. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Supprime les formattages du texte s&eacute;lectionn&eacute;. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Transforme le texte s&eacute;lectionn&eacute; en texte souscrit. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Transforme le texte s&eacute;lectionn&eacute; en indice sup&eacute;rieur. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outils communs</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Barre le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; gauche.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Alignement au centr&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; droite.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Texte justifi&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Liste &agrave; puces.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Liste num&eacute;rot&eacute;e</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>R&eacute;duit l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Augmente l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Annule la derni&egrave;re op&eacute;ration.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">
-        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">
-        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil
-    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels
-    de bureatique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Affiche cette page d'aide.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>Ouvre un &eacute;diteur permettant de modifier le code HTML. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re un nouveau tableau &agrave; la position actuelle.  Allez &agrave; la page <a href="insert_table_button.htm">
-        Outil d'ajout de tableau</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Ajoute une ligne au tableau avant la ligne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>Ajoute une ligne au tableau apr&egrave;s la ligne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Supprime la ligne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>Ajoute une colonne au tableau avant la colonne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>Ajoute une colonne au tableau apr&egrave;s la colonne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Supprime la colonne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re un s&eacute;parateur horizontal. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Supprime les formattages du texte s&eacute;lectionn&eacute;. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Transforme le texte s&eacute;lectionn&eacute; en texte souscrit. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Transforme le texte s&eacute;lectionn&eacute; en indice sup&eacute;rieur. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/index.htm
@@ -1,26 +1,26 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Table des mati&egrave;res de l'aide</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Table des mati&egrave;res</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Faites votre s&eacute;lection parmis les th&egrave;mes suivants:
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Outil d'ajout de tableau</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Table des mati&egrave;res de l'aide</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Table des mati&egrave;res</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Faites votre s&eacute;lection parmis les th&egrave;mes suivants:

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Outil d'ajout de tableau</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/insert_image_button.htm
@@ -1,67 +1,67 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout d'images</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout d'images</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'images</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et

+entrez une description facultative.  La description sera affich&eacute;e en texte alternatif

+sur l'image lorsqu'elle sera publi&eacute;e.<br>

+<br>

+<strong>Description des champs:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Adresse de l'image </strong></td>

+    <td>Adresse URL de l'image &agrave; ins&eacute;rer.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Description de l'image </strong></td>

+    <td>Description alternative de l'image.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimensions</strong></td>

+    <td>Largeur et Hauteur de l'image en pixel. </td>

+  </tr>

+  <tr>

+    <td><strong>Alignement</strong></td>

+    <td>Alignement de l'image. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>

+  </tr>

+  <tr>

+    <td><strong>Bordure</strong></td>

+    <td>&Eacute;paisseur en pixel de la bordure. </td>

+  </tr>

+  <tr>

+    <td><strong>VSpace</strong></td>

+    <td>Espacement vertical. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>

+  </tr>

+  <tr>

+    <td><strong>HSpace</strong></td>

+    <td>Espacement horizontal. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'images</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et
-entrez une description facultative.  La description sera affich&eacute;e en texte alternatif
-sur l'image lorsqu'elle sera publi&eacute;e.<br>
-<br>
-<strong>Description des champs:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Adresse de l'image </strong></td>
-    <td>Adresse URL de l'image &agrave; ins&eacute;rer.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Description de l'image </strong></td>
-    <td>Description alternative de l'image.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimensions</strong></td>
-    <td>Largeur et Hauteur de l'image en pixel. </td>
-  </tr>
-  <tr>
-    <td><strong>Alignement</strong></td>
-    <td>Alignement de l'image. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
-  </tr>
-  <tr>
-    <td><strong>Bordure</strong></td>
-    <td>&Eacute;paisseur en pixel de la bordure. </td>
-  </tr>
-  <tr>
-    <td><strong>VSpace</strong></td>
-    <td>Espacement vertical. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
-  </tr>
-  <tr>
-    <td><strong>HSpace</strong></td>
-    <td>Espacement horizontal. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/insert_link_button.htm
@@ -1,35 +1,35 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout d'hyperliens</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout d'hyperliens</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'hyperliens</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_link_window.gif"><br>

+<br>

+Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse

+de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on

+l'hyperlien sera ouvert.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'hyperliens</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_link_window.gif"><br>
-<br>
-Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse
-de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on
-l'hyperlien sera ouvert.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/insert_table_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout de tableau</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout de tableau</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout de tableau</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_table_window.gif"><br>

+<br>

+<strong>Description des champs:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Colonnes</strong></td>

+    <td>Nombre de colonnes du tableau. </td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Lignes</strong></td>

+    <td>Nombre de lignes du tableau. </td>

+  </tr>

+  <tr>

+    <td><strong>Cellpadding</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Cellspacing</strong></td>

+    <td>Espacement entre les cellules du tableau. </td>

+  </tr>

+  <tr>

+    <td><strong>Alignement</strong></td>

+    <td>Alignement du tableau. </td>

+  </tr>

+  <tr>

+    <td><strong>Bordure</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Largeur</strong></td>

+    <td>Largeur en pixel du tableau.</td>

+  </tr>

+  <tr>

+    <td><strong>Hauteur</strong></td>

+    <td>Hauteur en pixel du tableau.</td>

+  </tr>

+  <tr>

+    <td><strong>Classe CSS</strong></td>

+    <td>Nom de la classe CSS pour appliquer un style.</td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout de tableau</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_table_window.gif"><br>
-<br>
-<strong>Description des champs:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Colonnes</strong></td>
-    <td>Nombre de colonnes du tableau. </td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Lignes</strong></td>
-    <td>Nombre de lignes du tableau. </td>
-  </tr>
-  <tr>
-    <td><strong>Cellpadding</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Cellspacing</strong></td>
-    <td>Espacement entre les cellules du tableau. </td>
-  </tr>
-  <tr>
-    <td><strong>Alignement</strong></td>
-    <td>Alignement du tableau. </td>
-  </tr>
-  <tr>
-    <td><strong>Bordure</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Largeur</strong></td>
-    <td>Largeur en pixel du tableau.</td>
-  </tr>
-  <tr>
-    <td><strong>Hauteur</strong></td>
-    <td>Hauteur en pixel du tableau.</td>
-  </tr>
-  <tr>
-    <td><strong>Classe CSS</strong></td>
-    <td>Nom de la classe CSS pour appliquer un style.</td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/about.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>&Agrave; propos de TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>&Agrave; propos de TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">&Agrave; propos de TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui

+vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.

+Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans

+les traitements de texte.

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">&Agrave; propos de TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui
-vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.
-Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans
-les traitements de texte.
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/common_buttons.htm
@@ -1,161 +1,161 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outils communs</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outils communs</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outils communs</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Barre le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; gauche.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Alignement au centr&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; droite.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Texte justifi&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Liste &agrave; puces.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Liste num&eacute;rot&eacute;e</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>R&eacute;duit l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Augmente l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Annule la derni&egrave;re op&eacute;ration.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">

+        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">

+        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil

+    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels

+    de bureatique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Affiche cette page d'aide.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>Ouvre un &eacute;diteur permettant de modifier le code HTML. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re un nouveau tableau &agrave; la position actuelle.  Allez &agrave; la page <a href="insert_table_button.htm">

+        Outil d'ajout de tableau</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Ajoute une ligne au tableau avant la ligne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>Ajoute une ligne au tableau apr&egrave;s la ligne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Supprime la ligne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>Ajoute une colonne au tableau avant la colonne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>Ajoute une colonne au tableau apr&egrave;s la colonne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Supprime la colonne courante. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re un s&eacute;parateur horizontal. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Supprime les formattages du texte s&eacute;lectionn&eacute;. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Transforme le texte s&eacute;lectionn&eacute; en texte souscrit. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Transforme le texte s&eacute;lectionn&eacute; en indice sup&eacute;rieur. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outils communs</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Barre le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; gauche.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Alignement au centr&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; droite.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Texte justifi&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Liste &agrave; puces.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Liste num&eacute;rot&eacute;e</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>R&eacute;duit l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Augmente l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Annule la derni&egrave;re op&eacute;ration.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">
-        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">
-        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil
-    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels
-    de bureatique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Affiche cette page d'aide.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>Ouvre un &eacute;diteur permettant de modifier le code HTML. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re un nouveau tableau &agrave; la position actuelle.  Allez &agrave; la page <a href="insert_table_button.htm">
-        Outil d'ajout de tableau</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Ajoute une ligne au tableau avant la ligne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>Ajoute une ligne au tableau apr&egrave;s la ligne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Supprime la ligne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>Ajoute une colonne au tableau avant la colonne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>Ajoute une colonne au tableau apr&egrave;s la colonne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Supprime la colonne courante. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re un s&eacute;parateur horizontal. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Supprime les formattages du texte s&eacute;lectionn&eacute;. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Transforme le texte s&eacute;lectionn&eacute; en texte souscrit. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Transforme le texte s&eacute;lectionn&eacute; en indice sup&eacute;rieur. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/index.htm
@@ -1,26 +1,26 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Table des mati&egrave;res de l'aide</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Table des mati&egrave;res</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Faites votre s&eacute;lection parmis les th&egrave;mes suivants:
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Outil d'ajout de tableau</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Table des mati&egrave;res de l'aide</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Table des mati&egrave;res</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Faites votre s&eacute;lection parmis les th&egrave;mes suivants:

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Outil d'ajout de tableau</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_anchor_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout d'ancres</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout d'ancres</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'ancres</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'ancres ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_anchor_window.gif"><br>

+<br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'ancres</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'ancres ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_anchor_window.gif"><br>
-<br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_image_button.htm
@@ -1,67 +1,67 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout d'images</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout d'images</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'images</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et

+entrez une description facultative.  La description sera affich&eacute;e en texte alternatif

+sur l'image lorsqu'elle sera publi&eacute;e.<br>

+<br>

+<strong>Description des champs:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Adresse de l'image </strong></td>

+    <td>Adresse URL de l'image &agrave; ins&eacute;rer.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Description de l'image </strong></td>

+    <td>Description alternative de l'image.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimensions</strong></td>

+    <td>Largeur et Hauteur de l'image en pixel. </td>

+  </tr>

+  <tr>

+    <td><strong>Alignement</strong></td>

+    <td>Alignement de l'image. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>

+  </tr>

+  <tr>

+    <td><strong>Bordure</strong></td>

+    <td>&Eacute;paisseur en pixel de la bordure. </td>

+  </tr>

+  <tr>

+    <td><strong>VSpace</strong></td>

+    <td>Espacement vertical. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>

+  </tr>

+  <tr>

+    <td><strong>HSpace</strong></td>

+    <td>Espacement horizontal. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'images</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et
-entrez une description facultative.  La description sera affich&eacute;e en texte alternatif
-sur l'image lorsqu'elle sera publi&eacute;e.<br>
-<br>
-<strong>Description des champs:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Adresse de l'image </strong></td>
-    <td>Adresse URL de l'image &agrave; ins&eacute;rer.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Description de l'image </strong></td>
-    <td>Description alternative de l'image.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimensions</strong></td>
-    <td>Largeur et Hauteur de l'image en pixel. </td>
-  </tr>
-  <tr>
-    <td><strong>Alignement</strong></td>
-    <td>Alignement de l'image. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
-  </tr>
-  <tr>
-    <td><strong>Bordure</strong></td>
-    <td>&Eacute;paisseur en pixel de la bordure. </td>
-  </tr>
-  <tr>
-    <td><strong>VSpace</strong></td>
-    <td>Espacement vertical. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
-  </tr>
-  <tr>
-    <td><strong>HSpace</strong></td>
-    <td>Espacement horizontal. Tr&egrave;s utile pour faire contourner le texte autour des images.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_link_button.htm
@@ -1,35 +1,35 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout d'hyperliens</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout d'hyperliens</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'hyperliens</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_link_window.gif"><br>

+<br>

+Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse

+de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on

+l'hyperlien sera ouvert.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'hyperliens</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_link_window.gif"><br>
-<br>
-Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse
-de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on
-l'hyperlien sera ouvert.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/insert_table_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Outil d'ajout de tableau</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Outil d'ajout de tableau</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout de tableau</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_table_window.gif"><br>

+<br>

+<strong>Description des champs:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Colonnes</strong></td>

+    <td>Nombre de colonnes du tableau. </td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Lignes</strong></td>

+    <td>Nombre de lignes du tableau. </td>

+  </tr>

+  <tr>

+    <td><strong>Cellpadding</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Cellspacing</strong></td>

+    <td>Espacement entre les cellules du tableau. </td>

+  </tr>

+  <tr>

+    <td><strong>Alignement</strong></td>

+    <td>Alignement du tableau. </td>

+  </tr>

+  <tr>

+    <td><strong>Bordure</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Largeur</strong></td>

+    <td>Largeur en pixel du tableau.</td>

+  </tr>

+  <tr>

+    <td><strong>Hauteur</strong></td>

+    <td>Hauteur en pixel du tableau.</td>

+  </tr>

+  <tr>

+    <td><strong>Classe CSS</strong></td>

+    <td>Nom de la classe CSS pour appliquer un style.</td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout de tableau</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_table_window.gif"><br>
-<br>
-<strong>Description des champs:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Colonnes</strong></td>
-    <td>Nombre de colonnes du tableau. </td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Lignes</strong></td>
-    <td>Nombre de lignes du tableau. </td>
-  </tr>
-  <tr>
-    <td><strong>Cellpadding</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Cellspacing</strong></td>
-    <td>Espacement entre les cellules du tableau. </td>
-  </tr>
-  <tr>
-    <td><strong>Alignement</strong></td>
-    <td>Alignement du tableau. </td>
-  </tr>
-  <tr>
-    <td><strong>Bordure</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Largeur</strong></td>
-    <td>Largeur en pixel du tableau.</td>
-  </tr>
-  <tr>
-    <td><strong>Hauteur</strong></td>
-    <td>Hauteur en pixel du tableau.</td>
-  </tr>
-  <tr>
-    <td><strong>Classe CSS</strong></td>
-    <td>Nom de la classe CSS pour appliquer un style.</td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/fr_ca/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/about.htm
@@ -1,29 +1,29 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>&Uuml;ber TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>&Uuml;ber TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">A TinyMCE-r&#337;l</span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+A TinyMCE egy kompakt WYSIWYG-szerkeszt&#337; az MSIE-hoz &eacute;s a Mozill&aacute;hoz hasonl&oacute; webb&ouml;ng&eacute;sz&#337;k sz&aacute;m&aacute;ra, mely lehet&#337;s&eacute;get ny&uacute;jt &ouml;nnek a HTML tartalmak egyszer&#369; szerkeszt&eacute;s&eacute;re. A legt&ouml;bb sz&ouml;vegszerkeszt&#337;ben el&eacute;rhet&#337; funkci&oacute;kat ny&uacute;jtja egyszer&#369;en kezelhet&#337; form&aacute;ban.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>

+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">A TinyMCE-r&#337;l</span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-A TinyMCE egy kompakt WYSIWYG-szerkeszt&#337; az MSIE-hoz &eacute;s a Mozill&aacute;hoz hasonl&oacute; webb&ouml;ng&eacute;sz&#337;k sz&aacute;m&aacute;ra, mely lehet&#337;s&eacute;get ny&uacute;jt &ouml;nnek a HTML tartalmak egyszer&#369; szerkeszt&eacute;s&eacute;re. A legt&ouml;bb sz&ouml;vegszerkeszt&#337;ben el&eacute;rhet&#337; funkci&oacute;kat ny&uacute;jtja egyszer&#369;en kezelhet&#337; form&aacute;ban.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
-    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/common_buttons.htm
@@ -1,107 +1,107 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/index.htm
@@ -1,25 +1,25 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">




-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">





+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/insert_image_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">K&eacute;p beilleszt&eacute;se gomb </span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br> 

+A K&eacute;p beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.

+<br>

+<br>

+<img src="images/insert_image_window.gif" width="350" height="166"><br>

+<br>

+Egyszer&#369;en meg kell adni a beilleszteni k&iacute;v&aacute;nt k&eacute;p el&eacute;r&eacute;s&eacute;nek URL-j&eacute;t, valamint egy r&ouml;vd le&iacute;r&aacute;st, mely alternat&iacute;v sz&ouml;vegk&eacute;nt ker&uuml;l megjelen&iacute;t&eacute;sre (pl. nem grafikus b&ouml;ng&eacute;sz&#337;kben).<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>

+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">K&eacute;p beilleszt&eacute;se gomb </span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br> 
-A K&eacute;p beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.
-<br>
-<br>
-<img src="images/insert_image_window.gif" width="350" height="166"><br>
-<br>
-Egyszer&#369;en meg kell adni a beilleszteni k&iacute;v&aacute;nt k&eacute;p el&eacute;r&eacute;s&eacute;nek URL-j&eacute;t, valamint egy r&ouml;vd le&iacute;r&aacute;st, mely alternat&iacute;v sz&ouml;vegk&eacute;nt ker&uuml;l megjelen&iacute;t&eacute;sre (pl. nem grafikus b&ouml;ng&eacute;sz&#337;kben).<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
-    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/insert_link_button.htm
@@ -1,32 +1,32 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Link beilleszt&eacute;se gomb </span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+A Link beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="166"><br>

+<br>

+K&eacute;t mez&#337;t kell kit&ouml;ltenie ebben az ablakban. Az els&#337; - &quot;Link URL&quot; - a hivatkoz&aacute;s URL-je. A m&aacute;sodik lehet&#337;s&eacute;get ad &Ouml;nnek a hivatkozt&aacute;s megjelen&iacute;t&eacute;s&eacute;nek kiv&aacute;laszt&aacute;s&aacute;hoz.<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>

+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Link beilleszt&eacute;se gomb </span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-A Link beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="166"><br>
-<br>
-K&eacute;t mez&#337;t kell kit&ouml;ltenie ebben az ablakban. Az els&#337; - &quot;Link URL&quot; - a hivatkoz&aacute;s URL-je. A m&aacute;sodik lehet&#337;s&eacute;get ad &Ouml;nnek a hivatkozt&aacute;s megjelen&iacute;t&eacute;s&eacute;nek kiv&aacute;laszt&aacute;s&aacute;hoz.<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
-    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/hu/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/about.htm
@@ -1,38 +1,38 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Informazioni su TinyMCE</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Informazioni su TinyMCE</span></td>
-      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-TinyMCE &egrave; un piccolo WYSIWYG (What You See Is What You Get,
-quello che vedi &egrave; quello che ottieni) editor per i web browser
-come MSIE o Mozilla che permette di editare HTML in modo comodo. Ha le
-funzionalit&agrave; comuni di molti word processor e non dovrebbe
-essere difficile da usare.<br>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-</body>
-</html>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <title>Informazioni su TinyMCE</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Informazioni su TinyMCE</span></td>

+      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+TinyMCE &egrave; un piccolo WYSIWYG (What You See Is What You Get,

+quello che vedi &egrave; quello che ottieni) editor per i web browser

+come MSIE o Mozilla che permette di editare HTML in modo comodo. Ha le

+funzionalit&agrave; comuni di molti word processor e non dovrebbe

+essere difficile da usare.<br>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+<br>

+<br>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/common_buttons.htm
@@ -1,181 +1,181 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Pulsanti comuni</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Pulsanti comuni<br>
-      </span></td>
-      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Di seguito una breve descrizione di ogni pulsante.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tbody>
-    <tr>
-      <td><img src="../../images/bold.gif" height="20" width="20"></td>
-      <td>Testo <span style="font-weight: bold;">grassetto</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/italic.gif" height="20" width="20"></td>
-      <td>Testo <span style="font-style: italic;">corsivo</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/underline.gif" height="20" width="20"></td>
-      <td>Testo <span style="text-decoration: underline;">sottolineato</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/strikethrough.gif" height="20"
- width="20"></td>
-      <td>Testo <span style="text-decoration: line-through;">barrato</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/left.gif" height="20" width="20"></td>
-      <td>Allinea a sinistra.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/center.gif" height="20" width="20"></td>
-      <td>Allinea al centro.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/right.gif" height="20" width="20"></td>
-      <td>Allinea a destra.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/full.gif" height="20" width="20"></td>
-      <td>Giustifica.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/bullist.gif" height="20" width="20"></td>
-      <td>Lista non ordinata.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/numlist.gif" height="20" width="20"></td>
-      <td>Lista ordianta.<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/outdent.gif" height="20" width="20"></td>
-      <td>Diminuisci l'indentazione.<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/indent.gif" height="20" width="20"></td>
-      <td>Aumenta l'indentazione.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/undo.gif" height="20" width="20"></td>
-      <td>Annulla l'ultima operazione.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/redo.gif" height="20" width="20"></td>
-      <td>Ripeti l'ultima operazione.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/link.gif" height="20" width="20"></td>
-      <td>Inserieci un nuovo collegamento, maggiori informazioni su
-questa funzione nella <a href="insert_link_button.htm">Sezione
-'Inserisci un collegamento'</a></td>
-    </tr>
-    <tr>
-      <td><img src="../../images/unlink.gif" height="20" width="20"></td>
-      <td>Rimuovi tutti i collegamenti selezionati<br>
-      </td>
-    </tr>
-    <tr>
-    <td><img src="../../images/anchor.gif" height="20" width="20"></td>
-    <td>Inserisci una nuova &agrave;ncora, maggiori informazioni su
-questa funzione nella <a href="insert_anchor_button.htm">Sezione 'Inserisci un'&agrave;ncora'.</a></td>
-  </tr>
-    <tr>
-      <td><img src="../../images/image.gif" height="20" width="20"></td>
-      <td>Inserieci una nuova immagine, maggiori informazioni su questa
-funzione nella <a href="insert_image_button.htm">Sezione 'Inserisci
-una immagine'</a>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/cleanup.gif" height="20" width="20"></td>
-      <td>Ripulisci il codice/rimuovi la formattazione non voluta.
-Questa funzione &egrave; utile quando si copia per esempio da un
-programma office<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/help.gif" height="20" width="20"></td>
-      <td>Mostra questa guida<br>
-      </td>
-    </tr>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <title>Pulsanti comuni</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Pulsanti comuni<br>

+      </span></td>

+      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Di seguito una breve descrizione di ogni pulsante.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tbody>

+    <tr>

+      <td><img src="../../images/bold.gif" height="20" width="20"></td>

+      <td>Testo <span style="font-weight: bold;">grassetto</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/italic.gif" height="20" width="20"></td>

+      <td>Testo <span style="font-style: italic;">corsivo</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/underline.gif" height="20" width="20"></td>

+      <td>Testo <span style="text-decoration: underline;">sottolineato</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/strikethrough.gif" height="20"

+ width="20"></td>

+      <td>Testo <span style="text-decoration: line-through;">barrato</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/left.gif" height="20" width="20"></td>

+      <td>Allinea a sinistra.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/center.gif" height="20" width="20"></td>

+      <td>Allinea al centro.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/right.gif" height="20" width="20"></td>

+      <td>Allinea a destra.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/full.gif" height="20" width="20"></td>

+      <td>Giustifica.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/bullist.gif" height="20" width="20"></td>

+      <td>Lista non ordinata.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/numlist.gif" height="20" width="20"></td>

+      <td>Lista ordianta.<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/outdent.gif" height="20" width="20"></td>

+      <td>Diminuisci l'indentazione.<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/indent.gif" height="20" width="20"></td>

+      <td>Aumenta l'indentazione.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/undo.gif" height="20" width="20"></td>

+      <td>Annulla l'ultima operazione.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/redo.gif" height="20" width="20"></td>

+      <td>Ripeti l'ultima operazione.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/link.gif" height="20" width="20"></td>

+      <td>Inserieci un nuovo collegamento, maggiori informazioni su

+questa funzione nella <a href="insert_link_button.htm">Sezione

+'Inserisci un collegamento'</a></td>

+    </tr>

+    <tr>

+      <td><img src="../../images/unlink.gif" height="20" width="20"></td>

+      <td>Rimuovi tutti i collegamenti selezionati<br>

+      </td>

+    </tr>

+    <tr>

+    <td><img src="../../images/anchor.gif" height="20" width="20"></td>

+    <td>Inserisci una nuova &agrave;ncora, maggiori informazioni su

+questa funzione nella <a href="insert_anchor_button.htm">Sezione 'Inserisci un'&agrave;ncora'.</a></td>

+  </tr>

+    <tr>

+      <td><img src="../../images/image.gif" height="20" width="20"></td>

+      <td>Inserieci una nuova immagine, maggiori informazioni su questa

+funzione nella <a href="insert_image_button.htm">Sezione 'Inserisci

+una immagine'</a>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/cleanup.gif" height="20" width="20"></td>

+      <td>Ripulisci il codice/rimuovi la formattazione non voluta.

+Questa funzione &egrave; utile quando si copia per esempio da un

+programma office<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/help.gif" height="20" width="20"></td>

+      <td>Mostra questa guida<br>

+      </td>

+    </tr>

+

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>Apre l'editor del sorgente HTML. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Inserisce una nuova tabella 2x2 alla posizione corrente.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Aggiunge una riga sopra quella corrente.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>Aggiunge una roga sotto quella corrente.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Rimuove la riga corrente. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>Aggiunge una colonna prima di quella corrente.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>Aggiunge una colonna dopo quella corrente.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Rimuove la colonna corrente.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Inserisce una nuova riga orizzontale.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Rimuove la formattazione dalla selezione. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Formatta la selezione come pedice. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Formatta la selezione come apice. </td>

+  </tr>

+

+  </tbody>

+</table>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+</body>

+</html>

 
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>Apre l'editor del sorgente HTML. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Inserisce una nuova tabella 2x2 alla posizione corrente.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Aggiunge una riga sopra quella corrente.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>Aggiunge una roga sotto quella corrente.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Rimuove la riga corrente. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>Aggiunge una colonna prima di quella corrente.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>Aggiunge una colonna dopo quella corrente.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Rimuove la colonna corrente.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Inserisce una nuova riga orizzontale.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Rimuove la formattazione dalla selezione. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Formatta la selezione come pedice. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Formatta la selezione come apice. </td>
-  </tr>
-
-  </tbody>
-</table>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/index.htm
@@ -1,31 +1,31 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Indice della guida</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body onload="window.focus();">
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Tavola dei contenuti<br>
-      </span></td>
-      <td align="right">&nbsp;</td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Seleziona un argomento:<br>
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Informazioni su TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Pulsanti comuni</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Pulsante 'Inserisci immagine'<br></a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Pulsante 'Inserisci collegamento'</a></li>
-  <li class="toc_li"><a href="insert_anchor_button.htm">Pulsante 'Inserisci &agrave;ncora'</a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Pulsante 'Inserisci tabella'</a></li>
-</ul>
-<hr noshade="noshade">
-</body>
-</html>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <title>Indice della guida</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body onload="window.focus();">

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Tavola dei contenuti<br>

+      </span></td>

+      <td align="right">&nbsp;</td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Seleziona un argomento:<br>

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Informazioni su TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Pulsanti comuni</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Pulsante 'Inserisci immagine'<br></a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Pulsante 'Inserisci collegamento'</a></li>

+  <li class="toc_li"><a href="insert_anchor_button.htm">Pulsante 'Inserisci &agrave;ncora'</a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Pulsante 'Inserisci tabella'</a></li>

+</ul>

+<hr noshade="noshade">

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_anchor_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Bottone 'Inserisci &agrave;ncora'</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Bottone 'Inserisci &agrave;ncora'</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Bottone 'Inserisci &agrave;ncora'</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Questo bottone apre una nuova finestra che permette di aggiungere o modificare un'&agrave;ncora<br>

+<br>

+<img src="images/insert_anchor_window.gif" width="326" height="117"><br>

+<br>

+C'&egrave; un solo campo in questa finestra, dove devi inserire il nome del tuo punto di &agrave;ncoraggio. Ricorda che il nome dell' &agrave;ncora deve essere univoco. <br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Bottone 'Inserisci &agrave;ncora'</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Questo bottone apre una nuova finestra che permette di aggiungere o modificare un'&agrave;ncora<br>
-<br>
-<img src="images/insert_anchor_window.gif" width="326" height="117"><br>
-<br>
-C'&egrave; un solo campo in questa finestra, dove devi inserire il nome del tuo punto di &agrave;ncoraggio. Ricorda che il nome dell' &agrave;ncora deve essere univoco. <br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_image_button.htm
@@ -1,67 +1,67 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Pulsante 'Inserisci immagine'</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Pulsante 'Inserisci immagine'</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Pulsante 'Inserisci immagine'</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Il pulsante 'inserisci immagine' apre la finestra mostrata qui sotto.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+Si inserisce semplicemente l'url dell'immagine che si vuole collegare e una descrizione di quell'immagine,

+che sar&agrave; mostrato come testo alternativo dell'immagine sulla pagina.

+<br>

+<br>

+<strong>Descrizione dei parametri:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>URL immagine </strong></td>

+    <td>URL/indirizzo dell'immagine.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Descrizione dell'immagine </strong></td>

+    <td>Descrizione alternativa del contenuto dell'immagine.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimensioni</strong></td>

+    <td>Larghezza/Altezza dell'immagine. </td>

+  </tr>

+  <tr>

+    <td><strong>Allineamento</strong></td>

+    <td>Allineamento dell'immagine, utile quando si inserisce del testo attorno all'immagine.</td>

+  </tr>

+  <tr>

+    <td><strong>Bordo</strong></td>

+    <td>Spessore del bordo. </td>

+  </tr>

+  <tr>

+    <td><strong>Spazio verticale</strong></td>

+    <td>Spazio verticale,  utile quando si inserisce del testo attorno all'immagine.</td>

+  </tr>

+  <tr>

+    <td><strong>Spazio orizzontale</strong></td>

+    <td>Spazio orizzontale, utile quando si inserisce del testo attorno all'immagine.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+    <td align="right"><a href="#">Su</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Pulsante 'Inserisci immagine'</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Il pulsante 'inserisci immagine' apre la finestra mostrata qui sotto.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-Si inserisce semplicemente l'url dell'immagine che si vuole collegare e una descrizione di quell'immagine,
-che sar&agrave; mostrato come testo alternativo dell'immagine sulla pagina.
-<br>
-<br>
-<strong>Descrizione dei parametri:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>URL immagine </strong></td>
-    <td>URL/indirizzo dell'immagine.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Descrizione dell'immagine </strong></td>
-    <td>Descrizione alternativa del contenuto dell'immagine.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimensioni</strong></td>
-    <td>Larghezza/Altezza dell'immagine. </td>
-  </tr>
-  <tr>
-    <td><strong>Allineamento</strong></td>
-    <td>Allineamento dell'immagine, utile quando si inserisce del testo attorno all'immagine.</td>
-  </tr>
-  <tr>
-    <td><strong>Bordo</strong></td>
-    <td>Spessore del bordo. </td>
-  </tr>
-  <tr>
-    <td><strong>Spazio verticale</strong></td>
-    <td>Spazio verticale,  utile quando si inserisce del testo attorno all'immagine.</td>
-  </tr>
-  <tr>
-    <td><strong>Spazio orizzontale</strong></td>
-    <td>Spazio orizzontale, utile quando si inserisce del testo attorno all'immagine.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-    <td align="right"><a href="#">Su</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_link_button.htm
@@ -1,42 +1,42 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Pulsante 'Inserisci collegamento'</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Pulsante 'Inserisci collegamento'<br>
-      </span></td>
-      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Questo pulsante apre una nuova finstra con le funzioni di
-inserimento/modifica del collegamento.<br>
-<br>
-<img src="images/insert_link_window.gif" height="156" width="326"><br>
-<br>
-Ci sono due campi in questa finestra: il primo, "Link URL" &egrave;
-l'indirizzo del collegamento. Il 'target' permette di selezionare come
-il collegamento deve essere aperto.<br>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-</body>
-</html>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+  <title>Pulsante 'Inserisci collegamento'</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Pulsante 'Inserisci collegamento'<br>

+      </span></td>

+      <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Questo pulsante apre una nuova finstra con le funzioni di

+inserimento/modifica del collegamento.<br>

+<br>

+<img src="images/insert_link_window.gif" height="156" width="326"><br>

+<br>

+Ci sono due campi in questa finestra: il primo, "Link URL" &egrave;

+l'indirizzo del collegamento. Il 'target' permette di selezionare come

+il collegamento deve essere aperto.<br>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+<br>

+<br>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/insert_table_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Pulsante 'Inserisci tabella'</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Pulsante 'Inserisci tabella'</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Pulsante 'Inserisci tabella'</span></td>

+    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Il pulsante 'Inserisci tabella' apre la finestra mostrata qui sotto. Questa azione permette di creare tabelle.<br>

+<br>

+<img src="images/insert_table_window.gif" width="346" height="225"><br>

+<br>

+<strong>Descrizione dei parametri:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Colonne</strong></td>

+    <td>Numero di colonne nella nuova tabella. </td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Righe</strong></td>

+    <td>Numero di righe nella nuova tabella.</td>

+  </tr>

+  <tr>

+    <td><strong>Cellpadding</strong></td>

+    <td>Spazio tra il bordo di una cella e il suo contenuto. </td>

+  </tr>

+  <tr>

+    <td><strong>Cellspacing</strong></td>

+    <td>Spazio tra le celle della tabella.</td>

+  </tr>

+  <tr>

+    <td><strong>Allineamento</strong></td>

+    <td>Allineamento della tabella. </td>

+  </tr>

+  <tr>

+    <td><strong>Bordo</strong></td>

+    <td>Spessore del bordo della tabella.</td>

+  </tr>

+  <tr>

+    <td><strong>Larghezza</strong></td>

+    <td>Larghezza, in pixel, della tabella.</td>

+  </tr>

+  <tr>

+    <td><strong>Altezza</strong></td>

+    <td>Altezza, in pixel, della tabella.</td>

+  </tr>

+    <tr>

+    <td><strong>Classe</strong></td>

+    <td>Stile o classe CSS della tabella.</td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+    <td align="right"><a href="#">Su</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Pulsante 'Inserisci tabella'</span></td>
-    <td align="right"><a href="index.htm"><acronym title="Table of contents">TOC</acronym></a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Il pulsante 'Inserisci tabella' apre la finestra mostrata qui sotto. Questa azione permette di creare tabelle.<br>
-<br>
-<img src="images/insert_table_window.gif" width="346" height="225"><br>
-<br>
-<strong>Descrizione dei parametri:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Colonne</strong></td>
-    <td>Numero di colonne nella nuova tabella. </td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Righe</strong></td>
-    <td>Numero di righe nella nuova tabella.</td>
-  </tr>
-  <tr>
-    <td><strong>Cellpadding</strong></td>
-    <td>Spazio tra il bordo di una cella e il suo contenuto. </td>
-  </tr>
-  <tr>
-    <td><strong>Cellspacing</strong></td>
-    <td>Spazio tra le celle della tabella.</td>
-  </tr>
-  <tr>
-    <td><strong>Allineamento</strong></td>
-    <td>Allineamento della tabella. </td>
-  </tr>
-  <tr>
-    <td><strong>Bordo</strong></td>
-    <td>Spessore del bordo della tabella.</td>
-  </tr>
-  <tr>
-    <td><strong>Larghezza</strong></td>
-    <td>Larghezza, in pixel, della tabella.</td>
-  </tr>
-  <tr>
-    <td><strong>Altezza</strong></td>
-    <td>Altezza, in pixel, della tabella.</td>
-  </tr>
-    <tr>
-    <td><strong>Classe</strong></td>
-    <td>Stile o classe CSS della tabella.</td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-    <td align="right"><a href="#">Su</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/it/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/about.htm
@@ -1,32 +1,32 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Over TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Over TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Over TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE is een kleine <i>What-You-See-Is-What-You-Get</i> (WYSIWYG)

+editor voor teksten. De bediening vindt plaats in de web browser, zoals MSIE of Mozilla.

+Het werken met deze editor is eenvoudig, omdat de bediening veel lijkt op het werken

+met teksten in (office-)tekstverwerkers.

+<br><br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Over TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE is een kleine <i>What-You-See-Is-What-You-Get</i> (WYSIWYG)
-editor voor teksten. De bediening vindt plaats in de web browser, zoals MSIE of Mozilla.
-Het werken met deze editor is eenvoudig, omdat de bediening veel lijkt op het werken
-met teksten in (office-)tekstverwerkers.
-<br><br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/common_buttons.htm
@@ -1,189 +1,189 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Functies van TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Functies van TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr>

+    <td><span class="title">Functies van TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Het werken met de editor komt sterk overeen met wat u gewend bent van uw tekstverwerker:

+Dubbel-klik op een woord in de tekst, of trek een kader met de muis terwijl u

+de linkerknop inhoudt om een gedeelte van de tekst te kiezen. Het aldus gemarkeerde woord of

+tekstfragment noemen we 'selecteerd'. Met de knoppen en stijl-keuzelijsten

+in de editor kunt u hiervan vervolgens de opmaak aanpassen of (indien deze reeds was toegekend) verwijderen.

+<br><br>

+De meeste functies voert u eenvoudig uit door het klikken

+van de knoppen (buttons) boven het tekstvenster in de editor. Hieronder vindt u van elk van deze

+knoppen een beknopte beschrijving.

+<br>

+<br>

+<table width=100% border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td width=20><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment 'Vet' (Bold) maken.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment 'Cursief' (Italic) maken.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment 'Onderstrepen' (Underline).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment 'Doorstrepen' (Strikethrough).</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment naar links uitlijnen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment centreren.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment naar rechts uitlijnen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment 'uitvullen' tot complete regels.</td>

+  </tr>

+</table>

+<br>

+<table width=100% border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment omzetten naar ongeordende (bullet-)lijst of opsomming.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Gekozen tekstfragment omzetten naar doorgenummerde lijst.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Inspringniveau van het gekozen tekstfragment verkleinen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Inspringniveau van het gekozen tekstfragment vergroten.</td>

+  </tr>

+  <tr>

+    <td width=20><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>De laaste bewerking ongedaan maken. De toetscombinatie CRTL-Z doet hetzelfde.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>De laatste bewerking opnieuw uitvoeren.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Invoegen van een <i>Link</i> (Cross-Link) via dialoogmenu.<br>

+		  Zie de beschrijving bij <a href="insert_link_button.htm">Links en verwijzingen in tekst invoegen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Verwijdert alle gevonden <i>Links</i> (Cross-Links) uit de tekstselectie.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>

+    <td>Anker aan de tekstselectie toekennen of wijzigen.<br>

+		  Zie de beschrijving bij <a href="insert_anchor_button.htm">Anker Toevoegen.</a></td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Voegt een afbeelding in.<br>

+		  Zie de beschrijving bij <a href="insert_image_button.htm">Afbeeldingen invoegen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Schoont ongewenste opmaak en codering van de tekstselectie op. Deze functie is erg nuttig na het

+		  overkopi&euml;ren van teksten vanuit uw (Office-)tekstverwerker.</td>

+  </tr>

+	<tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Toont dit helpvenster met uitleg van alle functionaliteit van de editor.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>Opent het venster met de HTML-broncode voor het direct maken van wijzigingen

+		  in de achterliggende pagina-codering. Kennis van de HTML-taal is vereist.</td>

+  </tr>

+</table>

+

+<br>

+<table width=100% border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Voegt een nieuwe tabel met 2 rijen en kolommen in op de huidige positie in te tekst. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Voegt een nieuwe rij toe aan de tabel boven de huidige.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>Voegt een nieuwe rij toe aan de tabel onder de huidige.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Verwijdert de huidige rij uit de tabel.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>Voegt een nieuwe kolom toe aan de tabel voor de huidige.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>Voegt een nieuwe kolom toe aan de tabel achter de huidige.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Verwijdert de huidige kolom uit de tabel.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Voegt een horizontale lijn in de tekst toe.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Verwijdert alle tekst-opmaak van de tekstselectie.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/visualaid.gif" width="20" height="20"></td>

+    <td>Toon of verberg hulplijnen voor tabellen in het tekstvenster.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Verandert het gekozen tekstfragment in <i>Subscript</i>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Verandert het gekozen tekstfragment in <i>Superscript</i>.</td>

+  </tr>

+	<tr>

+    <td><img src="../../images/charmap.gif" width="20" height="20"></td>

+    <td>De <i>Karaktertabel</i> maakt het eenvoudig invoegen van bijzondere karakters mogelijk.<br>

+		  Zie de beschrijving bij <a href="insert_specchar_button.htm">Bijzondere karakers in de tekst invoegen.</a></td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr>
-    <td><span class="title">Functies van TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Het werken met de editor komt sterk overeen met wat u gewend bent van uw tekstverwerker:
-Dubbel-klik op een woord in de tekst, of trek een kader met de muis terwijl u
-de linkerknop inhoudt om een gedeelte van de tekst te kiezen. Het aldus gemarkeerde woord of
-tekstfragment noemen we 'selecteerd'. Met de knoppen en stijl-keuzelijsten
-in de editor kunt u hiervan vervolgens de opmaak aanpassen of (indien deze reeds was toegekend) verwijderen.
-<br><br>
-De meeste functies voert u eenvoudig uit door het klikken
-van de knoppen (buttons) boven het tekstvenster in de editor. Hieronder vindt u van elk van deze
-knoppen een beknopte beschrijving.
-<br>
-<br>
-<table width=100% border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td width=20><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment 'Vet' (Bold) maken.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment 'Cursief' (Italic) maken.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment 'Onderstrepen' (Underline).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment 'Doorstrepen' (Strikethrough).</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment naar links uitlijnen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment centreren.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment naar rechts uitlijnen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment 'uitvullen' tot complete regels.</td>
-  </tr>
-</table>
-<br>
-<table width=100% border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment omzetten naar ongeordende (bullet-)lijst of opsomming.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Gekozen tekstfragment omzetten naar doorgenummerde lijst.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Inspringniveau van het gekozen tekstfragment verkleinen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Inspringniveau van het gekozen tekstfragment vergroten.</td>
-  </tr>
-  <tr>
-    <td width=20><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>De laaste bewerking ongedaan maken. De toetscombinatie CRTL-Z doet hetzelfde.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>De laatste bewerking opnieuw uitvoeren.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Invoegen van een <i>Link</i> (Cross-Link) via dialoogmenu.<br>
-		  Zie de beschrijving bij <a href="insert_link_button.htm">Links en verwijzingen in tekst invoegen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Verwijdert alle gevonden <i>Links</i> (Cross-Links) uit de tekstselectie.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
-    <td>Anker aan de tekstselectie toekennen of wijzigen.<br>
-		  Zie de beschrijving bij <a href="insert_anchor_button.htm">Anker Toevoegen.</a></td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Voegt een afbeelding in.<br>
-		  Zie de beschrijving bij <a href="insert_image_button.htm">Afbeeldingen invoegen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Schoont ongewenste opmaak en codering van de tekstselectie op. Deze functie is erg nuttig na het
-		  overkopi&euml;ren van teksten vanuit uw (Office-)tekstverwerker.</td>
-  </tr>
-	<tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Toont dit helpvenster met uitleg van alle functionaliteit van de editor.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>Opent het venster met de HTML-broncode voor het direct maken van wijzigingen
-		  in de achterliggende pagina-codering. Kennis van de HTML-taal is vereist.</td>
-  </tr>
-</table>
-
-<br>
-<table width=100% border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Voegt een nieuwe tabel met 2 rijen en kolommen in op de huidige positie in te tekst. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Voegt een nieuwe rij toe aan de tabel boven de huidige.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>Voegt een nieuwe rij toe aan de tabel onder de huidige.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Verwijdert de huidige rij uit de tabel.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>Voegt een nieuwe kolom toe aan de tabel voor de huidige.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>Voegt een nieuwe kolom toe aan de tabel achter de huidige.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Verwijdert de huidige kolom uit de tabel.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Voegt een horizontale lijn in de tekst toe.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Verwijdert alle tekst-opmaak van de tekstselectie.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/visualaid.gif" width="20" height="20"></td>
-    <td>Toon of verberg hulplijnen voor tabellen in het tekstvenster.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Verandert het gekozen tekstfragment in <i>Subscript</i>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Verandert het gekozen tekstfragment in <i>Superscript</i>.</td>
-  </tr>
-	<tr>
-    <td><img src="../../images/charmap.gif" width="20" height="20"></td>
-    <td>De <i>Karaktertabel</i> maakt het eenvoudig invoegen van bijzondere karakters mogelijk.<br>
-		  Zie de beschrijving bij <a href="insert_specchar_button.htm">Bijzondere karakers in de tekst invoegen.</a></td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/index.htm
@@ -1,28 +1,28 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Help Index</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Inhoudsopgave</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Klik op de onderwerpen in onderstaande inhoudsopgave voor meer informatie.
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Over TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Functies van TinyMCE</a></li>
-	<li class="toc_li"><a href="insert_image_button.htm">Afbeeldingen invoegen</a></li>
-	<li class="toc_li"><a href="insert_link_button.htm">Links en verwijzingen in tekst invoegen</a></li>
-  <li class="toc_li"><a href="insert_specchar_button.htm">Bijzondere karakers in de tekst invoegen</a></li>
-  <li class="toc_li"><a href="insert_anchor_button.htm">Ankers in de tekst gebruiken</a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Tabellen invoegen en aanpassen</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Help Index</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Inhoudsopgave</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Klik op de onderwerpen in onderstaande inhoudsopgave voor meer informatie.

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Over TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Functies van TinyMCE</a></li>

+	<li class="toc_li"><a href="insert_image_button.htm">Afbeeldingen invoegen</a></li>

+	<li class="toc_li"><a href="insert_link_button.htm">Links en verwijzingen in tekst invoegen</a></li>

+  <li class="toc_li"><a href="insert_specchar_button.htm">Bijzondere karakers in de tekst invoegen</a></li>

+  <li class="toc_li"><a href="insert_anchor_button.htm">Ankers in de tekst gebruiken</a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Tabellen invoegen en aanpassen</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_anchor_button.htm
@@ -1,38 +1,38 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Ankers in de tekst gebruiken</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr>
-    <td><span class="title">Ankers in de tekst gebruiken</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Met de knop 'Invoegen Anker' kunt u in de tekst z.g. HTML-ankers invoegen en
-aanpassen. Deze ankers maken het mogelijk snel naar bepaalde tekstfragmenten te springen.
-Door het toevoegen van de ankernaam (voorafgegaan door een '#')
-aan de link naar een pagina (Zie <a href="insert_link_button.htm">'Links en verwijzingen in tekst invoegen'</a>)
-kan op deze wijze desgewenst direct naar een bepaalde passage in een pagina worden doorgelinkt.
-<br><br>
-Voor het toevoegen of aanpassen van een anker wordt onderstaand dialoogvenster getoond.<br>
-<br>
-<center><img src="images/insert_anchor_window.gif"></center>
-<br>
-Bij het veld 'Anker naam' kan de gewenste naam van het anker worden ingevuld.
-Let op: Binnen een complete pagina binnen uw website dient de naam van dit anker uniek zijn.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Ankers in de tekst gebruiken</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr>

+    <td><span class="title">Ankers in de tekst gebruiken</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Met de knop 'Invoegen Anker' kunt u in de tekst z.g. HTML-ankers invoegen en

+aanpassen. Deze ankers maken het mogelijk snel naar bepaalde tekstfragmenten te springen.

+Door het toevoegen van de ankernaam (voorafgegaan door een '#')

+aan de link naar een pagina (Zie <a href="insert_link_button.htm">'Links en verwijzingen in tekst invoegen'</a>)

+kan op deze wijze desgewenst direct naar een bepaalde passage in een pagina worden doorgelinkt.

+<br><br>

+Voor het toevoegen of aanpassen van een anker wordt onderstaand dialoogvenster getoond.<br>

+<br>

+<center><img src="images/insert_anchor_window.gif"></center>

+<br>

+Bij het veld 'Anker naam' kan de gewenste naam van het anker worden ingevuld.

+Let op: Binnen een complete pagina binnen uw website dient de naam van dit anker uniek zijn.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_image_button.htm
@@ -1,66 +1,66 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Afbeeldingen invoegen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Afbeeldingen invoegen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Afbeeldingen invoegen</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Voer simpelweg de URL van de afbeelding en de beschrijving in.

+De omschrijvende tekst wordt in sommige browsers bij de muiswijzer getoond

+wanneer deze boven de afbeelding wordt stilgehouden.

+De knop 'Afbeelding Invoegen' opent onderstaand dialoogvenster.<br>

+<br>

+<center><img src="images/insert_image_window.gif"></center>

+<br>

+<strong>Omschrijving van de velden:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Afbeelding</strong></td>

+    <td>In dit veld dient u een complete URL op te geven van de afbeelding.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Beschrijving</strong></td>

+    <td>Omschrijvende tekst die in sommige browsers bij de muiswijzer wordt getoond wanneer deze boven de afbeelding wordt stilgehouden.</td>

+  </tr>

+  <tr>

+    <td><strong>Uitlijning</strong></td>

+    <td>Uit de lijst kan worden gekozen op welke wijze de afbeelding in de tekst wordt ingebed.</td>

+  </tr>

+	<tr>

+    <td><strong>Afmetingen</strong></td>

+    <td>De breedte en hoogte van de afbeelding in pixels. Laat deze velden leeg als de originele afmetingen gewenst zijn.</td>

+  </tr>

+  <tr>

+    <td><strong>Omranding</strong></td>

+    <td>De dikte (in pixels) van de omranding om de afbeelding.</td>

+  </tr>

+  <tr>

+    <td><strong>Verticale marge</strong></td>

+    <td>De verticale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.</td>

+  </tr>

+  <tr>

+    <td><strong>Horizontale marge</strong></td>

+    <td>De horizontale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Afbeeldingen invoegen</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Voer simpelweg de URL van de afbeelding en de beschrijving in.
-De omschrijvende tekst wordt in sommige browsers bij de muiswijzer getoond
-wanneer deze boven de afbeelding wordt stilgehouden.
-De knop 'Afbeelding Invoegen' opent onderstaand dialoogvenster.<br>
-<br>
-<center><img src="images/insert_image_window.gif"></center>
-<br>
-<strong>Omschrijving van de velden:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Afbeelding</strong></td>
-    <td>In dit veld dient u een complete URL op te geven van de afbeelding.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Beschrijving</strong></td>
-    <td>Omschrijvende tekst die in sommige browsers bij de muiswijzer wordt getoond wanneer deze boven de afbeelding wordt stilgehouden.</td>
-  </tr>
-  <tr>
-    <td><strong>Uitlijning</strong></td>
-    <td>Uit de lijst kan worden gekozen op welke wijze de afbeelding in de tekst wordt ingebed.</td>
-  </tr>
-	<tr>
-    <td><strong>Afmetingen</strong></td>
-    <td>De breedte en hoogte van de afbeelding in pixels. Laat deze velden leeg als de originele afmetingen gewenst zijn.</td>
-  </tr>
-  <tr>
-    <td><strong>Omranding</strong></td>
-    <td>De dikte (in pixels) van de omranding om de afbeelding.</td>
-  </tr>
-  <tr>
-    <td><strong>Verticale marge</strong></td>
-    <td>De verticale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.</td>
-  </tr>
-  <tr>
-    <td><strong>Horizontale marge</strong></td>
-    <td>De horizontale marge (in pixels) gebruikt voor de omloop van teksten om de afbeelding.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_link_button.htm
@@ -1,36 +1,36 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Links en verwijzingen in tekst invoegen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Links en verwijzingen in tekst invoegen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Links en verwijzingen in tekst invoegen</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+De knop 'Link Invoegen' leidt u naar onderstaand dialoogvenster waarmee u eenvoudig

+een <i>Link</i> (Cross-Link) kunt aanbrengen in uw teksten.

+<br><br>

+<center><img src="images/insert_link_window.gif"></center>

+<br>

+Bij 'Link URL' dient de de url van

+de link te worden ingevuld (desgewenst voorafgegaan door 'http://' voor een externe

+website), bij 'target' kan worden bepaald hoe de link moet openen.

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Links en verwijzingen in tekst invoegen</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-De knop 'Link Invoegen' leidt u naar onderstaand dialoogvenster waarmee u eenvoudig
-een <i>Link</i> (Cross-Link) kunt aanbrengen in uw teksten.
-<br><br>
-<center><img src="images/insert_link_window.gif"></center>
-<br>
-Bij 'Link URL' dient de de url van
-de link te worden ingevuld (desgewenst voorafgegaan door 'http://' voor een externe
-website), bij 'target' kan worden bepaald hoe de link moet openen.
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_specchar_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_specchar_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Bijzondere karakers in de tekst invoegen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr>
-    <td><span class="title">Bijzondere karakers in de tekst invoegen</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Met de knop 'Bijzondere Karakters' kunt u in de tekst bijzondere karakters, die soms
-op het toetsenbord lastig te vinden zijn, invoegen.
-<br><br>
-Voor het invoegen van een deze karakters wordt onderstaand keuzevenster getoond.
-Door het eenvoudigweg klikken op het gewenste karakter in het overzicht, wordt het op de huidige positie in de tekst ingevoegd.<br>
-<br>
-<center><img src="images/insert_specchar_window.gif"></center>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Bijzondere karakers in de tekst invoegen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr>

+    <td><span class="title">Bijzondere karakers in de tekst invoegen</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Met de knop 'Bijzondere Karakters' kunt u in de tekst bijzondere karakters, die soms

+op het toetsenbord lastig te vinden zijn, invoegen.

+<br><br>

+Voor het invoegen van een deze karakters wordt onderstaand keuzevenster getoond.

+Door het eenvoudigweg klikken op het gewenste karakter in het overzicht, wordt het op de huidige positie in de tekst ingevoegd.<br>

+<br>

+<center><img src="images/insert_specchar_window.gif"></center>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/insert_table_button.htm
@@ -1,74 +1,74 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Tabellen invoegen en aanpassen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Tabellen invoegen en aanpassen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Tabellen invoegen en aanpassen</span></td>

+    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+De knop 'Invoegen Tabel' stelt u in staat op de huidige plek een nieuwe tabel

+in uw tekst in te voegen en opent onderstaand dialoogvenster.<br>

+<br>

+<center><img src="images/insert_table_window.gif"></center>

+<br>

+<strong>Omschrijving van de velden:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Kolommen</strong></td>

+    <td>Het gewenste aantal kolommen in de tabel.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Rijen</strong></td>

+    <td>Het gewenste aantal rijen in de tabel.</td>

+  </tr>

+  <tr>

+    <td><strong>Celvulling</strong></td>

+    <td>De 'Celvulling' (Cellpadding)<br>

+		De opvulmarge rondom binnen elke cel in de tabel in pixels.</td>

+  </tr>

+  <tr>

+    <td><strong>Celafstand</strong></td>

+    <td>De 'Celafstand' (Cellspacing)<br>

+		De ruimte tussen de cellen onderling binnen de tabel in pixels.</td>

+  </tr>

+  <tr>

+    <td><strong>Positionering</strong></td>

+    <td>De positionering van de tabel in de paragraaf.</td>

+  </tr>

+  <tr>

+    <td><strong>Omranding</strong></td>

+    <td>De dikte in pixels van de omranding van de tabel.</td>

+  </tr>

+  <tr>

+    <td><strong>Breedte</strong></td>

+    <td>De breedte van de tabel (in pixels of percentuele notatie).</td>

+  </tr>

+  <tr>

+    <td><strong>Hoogte</strong></td>

+    <td>De breedte van de tabel (in pixels of percentuele notatie).</td>

+  </tr>

+  <tr>

+    <td><strong>CSS-Stijl</strong></td>

+    <td>Optionele stijlkeuze uit de voor de website aangemaakte <i>Cascading Style Sheet</i> (CSS).</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr>

+    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>

+    <td align="right"><a href="#">Naar boven</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Tabellen invoegen en aanpassen</span></td>
-    <td align="right"><a href="index.htm">Inhoudsopgave</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-De knop 'Invoegen Tabel' stelt u in staat op de huidige plek een nieuwe tabel
-in uw tekst in te voegen en opent onderstaand dialoogvenster.<br>
-<br>
-<center><img src="images/insert_table_window.gif"></center>
-<br>
-<strong>Omschrijving van de velden:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Kolommen</strong></td>
-    <td>Het gewenste aantal kolommen in de tabel.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Rijen</strong></td>
-    <td>Het gewenste aantal rijen in de tabel.</td>
-  </tr>
-  <tr>
-    <td><strong>Celvulling</strong></td>
-    <td>De 'Celvulling' (Cellpadding)<br>
-		De opvulmarge rondom binnen elke cel in de tabel in pixels.</td>
-  </tr>
-  <tr>
-    <td><strong>Celafstand</strong></td>
-    <td>De 'Celafstand' (Cellspacing)<br>
-		De ruimte tussen de cellen onderling binnen de tabel in pixels.</td>
-  </tr>
-  <tr>
-    <td><strong>Positionering</strong></td>
-    <td>De positionering van de tabel in de paragraaf.</td>
-  </tr>
-  <tr>
-    <td><strong>Omranding</strong></td>
-    <td>De dikte in pixels van de omranding van de tabel.</td>
-  </tr>
-  <tr>
-    <td><strong>Breedte</strong></td>
-    <td>De breedte van de tabel (in pixels of percentuele notatie).</td>
-  </tr>
-  <tr>
-    <td><strong>Hoogte</strong></td>
-    <td>De breedte van de tabel (in pixels of percentuele notatie).</td>
-  </tr>
-  <tr>
-    <td><strong>CSS-Stijl</strong></td>
-    <td>Optionele stijlkeuze uit de voor de website aangemaakte <i>Cascading Style Sheet</i> (CSS).</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr>
-    <td>Ga naar: <a href="index.htm">Inhoudsopgave</a></td>
-    <td align="right"><a href="#">Naar boven</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/nl/style.css
@@ -1,29 +1,29 @@
-/* body { background-color: #FFFFFF; } */
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+/* body { background-color: #FFFFFF; } */

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/about.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>About TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>About TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Om TinyMCE</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE er en liten WYSIWYG-editor for weblesere som

+f.eks. MSIE og Mozilla og gj&oslash;r det mulig &aring; redigere

+HTML-innhold p&aring; et mer anvendervennlig vis.

+Applikasjonen har funksjoner som ligner dem man finner i vanlige tekstbehandlere

+og burde ikke v&aelig;re spesielt vanskelig &aring; benytte.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Om TinyMCE</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE er en liten WYSIWYG-editor for weblesere som
-f.eks. MSIE og Mozilla og gj&oslash;r det mulig &aring; redigere
-HTML-innhold p&aring; et mer anvendervennlig vis.
-Applikasjonen har funksjoner som ligner dem man finner i vanlige tekstbehandlere
-og burde ikke v&aelig;re spesielt vanskelig &aring; benytte.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/common_buttons.htm
@@ -1,164 +1,164 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Vanlige knapper</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Vanlige knapper</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Grunnleggende knapper</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Nedenfor finner du en kort beskrivelse av hver knapp/funksjon.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>

+    <td>Fet tekst.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>

+    <td>Kursiv tekst.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Understreket tekst.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Gjennomstreket tekst.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Rett venstremarg.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Sentrer.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Rett h&oslash;yremarg.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Rette marger.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Punktliste.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Nummerliste</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Reduser innrykk.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>&Oslash;k innrykk.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Angre seneste endring.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Gj&oslash;r om seneste endring.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Lage/Redigere lenke, l&aelig;r mer om denne funksjonen i

+      kapittelet <a href="insert_link_button.htm">Lage/Redigere lenke</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Ta bort lenker fra markerte lenker.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>

+    <td>Lage/Redigere anker, l&aelig;r mer om denna funksjonen i

+      kapittelet <a href="insert_anchor_button.htm">Lage/Redigere anker</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Lage/Redigere bilde, l&aelig;r mer om denne funksjonen i 

+      kapittelet <a href="insert_image_button.htm">Lage/Redigere bilde</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Rense/Ordne koden. Denne funksjonen tar bort un&oslash;dvendig

+      formatering. B&oslash;r anvendes n&aring;r man f.eks. kopierer tekst

+      fra Office-program. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Viser denne hjelp.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>&Aring;pner en HTML-kodeeditor. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Lager en ny tabell (2x2). </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Lager en rad ovenfor den n&aring;v&aelig;rende raden. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>Lager en rad under den n&aring;v&aelig;rende raden. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Tar bort en rad. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>Lager en kolonne f&oslash;r den n&aring;v&aelig;rende kolonnen. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>Lager en kolonne etter den n&aring;v&aelig;rende kolonnen. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Tar bort en kolonne. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Lager en horisontal linje. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Tar bort formatering fra markert omr&aring;de. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Lager nedsenket tekst. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Lager opph&oslash;yd tekst. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Grunnleggende knapper</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Nedenfor finner du en kort beskrivelse av hver knapp/funksjon.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
-    <td>Fet tekst.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
-    <td>Kursiv tekst.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Understreket tekst.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Gjennomstreket tekst.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Rett venstremarg.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Sentrer.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Rett h&oslash;yremarg.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Rette marger.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Punktliste.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Nummerliste</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Reduser innrykk.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>&Oslash;k innrykk.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Angre seneste endring.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Gj&oslash;r om seneste endring.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Lage/Redigere lenke, l&aelig;r mer om denne funksjonen i
-      kapittelet <a href="insert_link_button.htm">Lage/Redigere lenke</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Ta bort lenker fra markerte lenker.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
-    <td>Lage/Redigere anker, l&aelig;r mer om denna funksjonen i
-      kapittelet <a href="insert_anchor_button.htm">Lage/Redigere anker</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Lage/Redigere bilde, l&aelig;r mer om denne funksjonen i 
-      kapittelet <a href="insert_image_button.htm">Lage/Redigere bilde</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Rense/Ordne koden. Denne funksjonen tar bort un&oslash;dvendig
-      formatering. B&oslash;r anvendes n&aring;r man f.eks. kopierer tekst
-      fra Office-program. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Viser denne hjelp.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>&Aring;pner en HTML-kodeeditor. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Lager en ny tabell (2x2). </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Lager en rad ovenfor den n&aring;v&aelig;rende raden. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>Lager en rad under den n&aring;v&aelig;rende raden. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Tar bort en rad. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>Lager en kolonne f&oslash;r den n&aring;v&aelig;rende kolonnen. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>Lager en kolonne etter den n&aring;v&aelig;rende kolonnen. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Tar bort en kolonne. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Lager en horisontal linje. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Tar bort formatering fra markert omr&aring;de. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Lager nedsenket tekst. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Lager opph&oslash;yd tekst. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/index.htm
@@ -1,28 +1,28 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Hjelp Index</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Innholdsoversikt</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Klikk p&aring; lenkene nedenfor for &aring; g&aring; til de ulike
-hjelp-kapitlene.
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Grunnleggende funksjoner</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Lage/Redigere bilde</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Lage/Redigere lenke</a></li>
-  <li class="toc_li"><a href="insert_anchor_button.htm">Lage/Redigere anker </a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Lage/Redigere tabell</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Hjelp Index</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Innholdsoversikt</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Klikk p&aring; lenkene nedenfor for &aring; g&aring; til de ulike

+hjelp-kapitlene.

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Grunnleggende funksjoner</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Lage/Redigere bilde</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Lage/Redigere lenke</a></li>

+  <li class="toc_li"><a href="insert_anchor_button.htm">Lage/Redigere anker </a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Lage/Redigere tabell</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_anchor_button.htm
@@ -1,35 +1,35 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Lage/Redigere anker</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Lage/Redigere anker</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Lage/Redigere anker</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Denne funksjon &aring;pner et nytt vindu lik det nedenfor.<br>

+<br>

+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>

+<br>

+Dette vinduet har et felt som man skal fylle i med et unikt

+navn, denne funksjon  gj&oslash;r det mulig &aring; skape

+ankerpunkter/bokmerker.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Lage/Redigere anker</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Denne funksjon &aring;pner et nytt vindu lik det nedenfor.<br>
-<br>
-<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
-<br>
-Dette vinduet har et felt som man skal fylle i med et unikt
-navn, denne funksjon  gj&oslash;r det mulig &aring; skape
-ankerpunkter/bokmerker.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_image_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Lage/Redigere bilde</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Lage/Redigere bilde</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Lage/Redigere bilde</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Funktionen "Lage/Redigere bilde" &aring;pner et nytt vindu som ser ut som 

+bilden nedenfor.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+I dette vinduet skriver du inn URL:en til bildet du vil lenke til

+samt en bildebeskrivelse, denne beskrivelsen kommer til &aring; vises som en alternativ 

+tekst til bildet.<br>

+<br>

+<strong>Feltforklaring:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Bildets URL </strong></td>

+    <td>URL/s&oslash;kevei til bildet.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Bildets beskrivelse</strong></td>

+    <td>Bildets beskrivelse, denne beskrivelsen kommer til &aring; vises som en

+      alternativ tekst til bildet.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimensjoner</strong></td>

+    <td>Bildets bredde og h&oslash;yde. </td>

+  </tr>

+  <tr>

+    <td><strong>Justering</strong></td>

+    <td>Bildets justering, kan v&aelig;re anvendelig n&aring;r man vil at

+      tekst skal flyte rundt bildet. </td>

+  </tr>

+  <tr>

+    <td><strong>Ramme</strong></td>

+    <td>Bilderammens bredde. </td>

+  </tr>

+  <tr>

+    <td><strong>Vertikalt tomrom </strong></td>

+    <td>Vertikalt tomrom , kan v&aelig;ra anvendelig n&aring;r man vil

+      at tekst skal flyte rundt bildet. </td>

+  </tr>

+  <tr>

+    <td><strong>Horisontalt tomrom</strong></td>

+    <td>Horisontalt tomrom, kan v&aelig;re anvendelig n&aring;r man vil

+      at tekst skal flyte rundt bildet. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Lage/Redigere bilde</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Funktionen "Lage/Redigere bilde" &aring;pner et nytt vindu som ser ut som 
-bilden nedenfor.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-I dette vinduet skriver du inn URL:en til bildet du vil lenke til
-samt en bildebeskrivelse, denne beskrivelsen kommer til &aring; vises som en alternativ 
-tekst til bildet.<br>
-<br>
-<strong>Feltforklaring:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Bildets URL </strong></td>
-    <td>URL/s&oslash;kevei til bildet.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Bildets beskrivelse</strong></td>
-    <td>Bildets beskrivelse, denne beskrivelsen kommer til &aring; vises som en
-      alternativ tekst til bildet.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimensjoner</strong></td>
-    <td>Bildets bredde og h&oslash;yde. </td>
-  </tr>
-  <tr>
-    <td><strong>Justering</strong></td>
-    <td>Bildets justering, kan v&aelig;re anvendelig n&aring;r man vil at
-      tekst skal flyte rundt bildet. </td>
-  </tr>
-  <tr>
-    <td><strong>Ramme</strong></td>
-    <td>Bilderammens bredde. </td>
-  </tr>
-  <tr>
-    <td><strong>Vertikalt tomrom </strong></td>
-    <td>Vertikalt tomrom , kan v&aelig;ra anvendelig n&aring;r man vil
-      at tekst skal flyte rundt bildet. </td>
-  </tr>
-  <tr>
-    <td><strong>Horisontalt tomrom</strong></td>
-    <td>Horisontalt tomrom, kan v&aelig;re anvendelig n&aring;r man vil
-      at tekst skal flyte rundt bildet. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_link_button.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Lage/Redigere lenke</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Lage/Redigere lenke</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Lage/Redigere lenke</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Denne funksjon &aring;pner et nytt vindu lik det nedenfor.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>

+Dette vinduet har to felt, lenkens URL/addresse samt hvordan lenken 

+skal &aring;pnes.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Lage/Redigere lenke</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Denne funksjon &aring;pner et nytt vindu lik det nedenfor.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>
-Dette vinduet har to felt, lenkens URL/addresse samt hvordan lenken 
-skal &aring;pnes.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/insert_table_button.htm
@@ -1,73 +1,73 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Lage/Redigere tabell</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Lage/Redigere tabell</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Lage/Redigere tabell </span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Lage tabell-knappen &aring;pner et nytt vindu, ved hjelp av

+dette vinduet kan du lage tabeller.<br>

+<br>

+<img src="images/insert_table_window.gif" width="340" height="229"><br>

+<br>

+<strong>Feltforklaring:</strong><br>

+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Kolonner</strong></td>

+    <td>Antall kolonner i tabellen.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Rader</strong></td>

+    <td>Antall rader i tabellen.</td>

+  </tr>

+  <tr>

+    <td><strong>Celleutfylling</strong></td>

+    <td>Antall pixler utfylling i hver celle. </td>

+  </tr>

+  <tr>

+    <td><strong>Cellemellomrom</strong></td>

+    <td>Antall pixler mellomrom mellom cellene.</td>

+  </tr>

+  <tr>

+    <td><strong>Justering</strong></td>

+    <td>Tabellens justering. </td>

+  </tr>

+  <tr>

+    <td><strong>Rammebredde</strong></td>

+    <td>Rammens bredde.</td>

+  </tr>

+  <tr>

+    <td><strong>Bredde</strong></td>

+    <td>Bredde i pixler.</td>

+  </tr>

+  <tr>

+    <td><strong>H&oslash;yde</strong></td>

+    <td>H&oslash;yde i pixler. </td>

+  </tr>

+  <tr>

+    <td><strong>Stil</strong></td>

+    <td>Stilmal p&aring; tabellen. </td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Lage/Redigere tabell </span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Lage tabell-knappen &aring;pner et nytt vindu, ved hjelp av
-dette vinduet kan du lage tabeller.<br>
-<br>
-<img src="images/insert_table_window.gif" width="340" height="229"><br>
-<br>
-<strong>Feltforklaring:</strong><br>
-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Kolonner</strong></td>
-    <td>Antall kolonner i tabellen.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Rader</strong></td>
-    <td>Antall rader i tabellen.</td>
-  </tr>
-  <tr>
-    <td><strong>Celleutfylling</strong></td>
-    <td>Antall pixler utfylling i hver celle. </td>
-  </tr>
-  <tr>
-    <td><strong>Cellemellomrom</strong></td>
-    <td>Antall pixler mellomrom mellom cellene.</td>
-  </tr>
-  <tr>
-    <td><strong>Justering</strong></td>
-    <td>Tabellens justering. </td>
-  </tr>
-  <tr>
-    <td><strong>Rammebredde</strong></td>
-    <td>Rammens bredde.</td>
-  </tr>
-  <tr>
-    <td><strong>Bredde</strong></td>
-    <td>Bredde i pixler.</td>
-  </tr>
-  <tr>
-    <td><strong>H&oslash;yde</strong></td>
-    <td>H&oslash;yde i pixler. </td>
-  </tr>
-  <tr>
-    <td><strong>Stil</strong></td>
-    <td>Stilmal p&aring; tabellen. </td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; til: <a href="index.htm">Innholdsoversikt</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/no/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/about.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<TITLE>O TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<TITLE>O TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">O TinyMCE</span></td>


+  </tr>

+</table>

+<hr noshade>

+<br>





+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">O TinyMCE</span></td>

-  </tr>
-</table>
-<hr noshade>
-<br>




-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/common_buttons.htm
@@ -1,165 +1,165 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Pogrubienie tekstu.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Pochylenie tekstu.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Wyjustowanie.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Pokazanie tego okna pomocy.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>Otwarcie edytora kodu HTML.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Wstawienie wiersza ponad aktualnie zaznaczonym.</td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Wstawienie poziomej linii.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Pogrubienie tekstu.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Pochylenie tekstu.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Wyjustowanie.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/anchor.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Pokazanie tego okna pomocy.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>Otwarcie edytora kodu HTML.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Wstawienie wiersza ponad aktualnie zaznaczonym.</td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Wstawienie poziomej linii.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/index.htm
@@ -1,29 +1,29 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<TITLE>Spis pomocy</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>



-  <li class="toc_li"><a href="insert_anchor_button.htm">Przycisk "Wstaw zakotwiczenie"</a></li>

-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<TITLE>Spis pomocy</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>




+  <li class="toc_li"><a href="insert_anchor_button.htm">Przycisk "Wstaw zakotwiczenie"</a></li>


+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_anchor_button.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<TITLE>Przycisk "Wstaw zakotwiczenie"</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Przycisk "Wstaw zakotwiczenie"</span></td>

-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
-<br>


-<br><br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<TITLE>Przycisk "Wstaw zakotwiczenie"</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Przycisk "Wstaw zakotwiczenie"</span></td>


+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>

+<br>



+<br><br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_image_button.htm
@@ -1,66 +1,66 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>


-<br><br>

-<table border="1" cellspacing="0">
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>
-    <td><strong>Wymiary</strong></td>

-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>



+<br><br>


+<table border="1" cellspacing="0">

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>

+    <td><strong>Wymiary</strong></td>


+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_link_button.htm
@@ -1,36 +1,36 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>



+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>


-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/insert_table_button.htm
@@ -1,74 +1,74 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_table_window.gif" width="340" height="229"><br>

+<br>


+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Kolumny</strong></td>

+    <td>Liczba kolumn w tabeli. </td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Wiersze</strong></td>

+    <td>Liczba wierszy w tabeli.</td>

+  </tr>

+  <tr>

+    <td><strong>Cellpadding</strong></td>


+  </tr>

+  <tr>

+    <td><strong>Cellspacing</strong></td>


+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>

+    <td><strong>Klasa</strong></td>

+    <td>Styl lub klasa CSS tabeli.</td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_table_window.gif" width="340" height="229"><br>
-<br>

-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Kolumny</strong></td>
-    <td>Liczba kolumn w tabeli. </td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Wiersze</strong></td>
-    <td>Liczba wierszy w tabeli.</td>
-  </tr>
-  <tr>
-    <td><strong>Cellpadding</strong></td>

-  </tr>
-  <tr>
-    <td><strong>Cellspacing</strong></td>

-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>
-    <td><strong>Klasa</strong></td>
-    <td>Styl lub klasa CSS tabeli.</td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/pl/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/about.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>About TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>About TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Om TinyMCE</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE &auml;r en liten WYSIWYG-editor f&ouml;r webl&auml;sare som

+MSIE och Mozilla vilken m&ouml;jligg&ouml;r f&ouml;r anv&auml;ndare att redigera 

+HTML-inneh&aring;ll p&aring; ett mer anv&auml;ndarv&auml;nligt s&auml;tt.

+Applikationen har funktioner som liknar dem man finner i vanliga ordbehandlare

+och borde inte vara speciellt sv&aring;rt att anv&auml;nda.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Om TinyMCE</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE &auml;r en liten WYSIWYG-editor f&ouml;r webl&auml;sare som
-MSIE och Mozilla vilken m&ouml;jligg&ouml;r f&ouml;r anv&auml;ndare att redigera 
-HTML-inneh&aring;ll p&aring; ett mer anv&auml;ndarv&auml;nligt s&auml;tt.
-Applikationen har funktioner som liknar dem man finner i vanliga ordbehandlare
-och borde inte vara speciellt sv&aring;rt att anv&auml;nda.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/common_buttons.htm
@@ -1,164 +1,164 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Common buttons</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Common buttons</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Grundl&auml;ggande knappar</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Nedan finner du en kort beskrivning av varje knapp/funktion.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>

+    <td>Fet text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>

+    <td>Kursiv text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Understruken text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Genomstruken text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Rak v&auml;nstermarginal.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Centrera.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Rak h&ouml;germarginal.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Raka marginaler.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Punktlista.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Numrerad lista</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Minska indrag.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>&Ouml;ka utdrag.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>&Aring;ngra senaste &auml;ndringen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>G&ouml;r om senaste &auml;ndringen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Skapa/Redigera l&auml;nk, l&auml;s mer om denna funktion i

+      kapitlet <a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Ta bort l&auml;nkar fr&aring;n markerade l&auml;nkar.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>

+    <td>Skapa/Redigera ankare, l&auml;r mer om denna funktion i

+      kapitlet <a href="insert_anchor_button.htm">Skapa/Redigera ankare</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Skapa/Redigera bild, l&auml;r mer om denna funktion i 

+      kapitlet <a href="insert_image_button.htm">Skapa/Redigera bild</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Rensa/St&auml;da k&aring;den. Denna funktion tar bort on&ouml;dig

+      formatering. B&ouml;r anv&auml;ndas n&auml;r man t.ex. kopierar text

+      fr&aring;n Office-program. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Visad denna hj&auml;lp.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/code.gif" width="20" height="20"></td>

+    <td>&Ouml;ppnar en HTML-k&auml;kodseditor . </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table.gif" width="20" height="20"></td>

+    <td>Skapar en ny tabell (2x2) . </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

+    <td>Skapar en rad ovanf&ouml;r den nuvarande raden . </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

+    <td>Skapar en rad under den nuvarande raden . </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

+    <td>Tar bort en rad. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

+    <td>Skapar en kolumn f&ouml;re den nuvarande kolumnen. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

+    <td>Skapar en kolumn efter den nuvarande kolumnen. </td>

+  </tr>

+  <tr>

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

+    <td>Tar bort en kolumn. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>

+    <td>Skapar en horisontell linje. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

+    <td>Tar bort formatering fr&aring;n markerat omr&aring;de. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>

+    <td>Skapar neds&auml;nkt text. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>

+    <td>Skapar upph&ouml;jd text. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Grundl&auml;ggande knappar</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Nedan finner du en kort beskrivning av varje knapp/funktion.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
-    <td>Fet text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
-    <td>Kursiv text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Understruken text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Genomstruken text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Rak v&auml;nstermarginal.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Centrera.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Rak h&ouml;germarginal.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Raka marginaler.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Punktlista.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Numrerad lista</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Minska indrag.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>&Ouml;ka utdrag.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>&Aring;ngra senaste &auml;ndringen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>G&ouml;r om senaste &auml;ndringen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Skapa/Redigera l&auml;nk, l&auml;s mer om denna funktion i
-      kapitlet <a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Ta bort l&auml;nkar fr&aring;n markerade l&auml;nkar.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/anchor.gif" width="20" height="20"></td>
-    <td>Skapa/Redigera ankare, l&auml;r mer om denna funktion i
-      kapitlet <a href="insert_anchor_button.htm">Skapa/Redigera ankare</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Skapa/Redigera bild, l&auml;r mer om denna funktion i 
-      kapitlet <a href="insert_image_button.htm">Skapa/Redigera bild</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Rensa/St&auml;da k&aring;den. Denna funktion tar bort on&ouml;dig
-      formatering. B&ouml;r anv&auml;ndas n&auml;r man t.ex. kopierar text
-      fr&aring;n Office-program. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Visad denna hj&auml;lp.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/code.gif" width="20" height="20"></td>
-    <td>&Ouml;ppnar en HTML-k&auml;kodseditor . </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table.gif" width="20" height="20"></td>
-    <td>Skapar en ny tabell (2x2) . </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
-    <td>Skapar en rad ovanf&ouml;r den nuvarande raden . </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
-    <td>Skapar en rad under den nuvarande raden . </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
-    <td>Tar bort en rad. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
-    <td>Skapar en kolumn f&ouml;re den nuvarande kolumnen. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
-    <td>Skapar en kolumn efter den nuvarande kolumnen. </td>
-  </tr>
-  <tr>
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
-    <td>Tar bort en kolumn. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>
-    <td>Skapar en horisontell linje. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>
-    <td>Tar bort formatering fr&aring;n markerat omr&aring;de. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>
-    <td>Skapar neds&auml;nkt text. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>
-    <td>Skapar upph&ouml;jd text. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/index.htm
@@ -1,28 +1,28 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Help Index</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Inneh&aring;llsf&ouml;rteckning</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Klicka p&aring; l&auml;nkarna nedan f&ouml;r att g&aring; till olika
-hj&auml;lp-kapitel. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Grundl&auml;ggande funktioner</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Skapa/Redigera bild</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a></li>
-  <li class="toc_li"><a href="insert_anchor_button.htm">Skapa/Redigera ankare </a></li>
-  <li class="toc_li"><a href="insert_table_button.htm">Skapa/Redigera tabell</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Help Index</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Inneh&aring;llsf&ouml;rteckning</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Klicka p&aring; l&auml;nkarna nedan f&ouml;r att g&aring; till olika

+hj&auml;lp-kapitel. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Grundl&auml;ggande funktioner</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Skapa/Redigera bild</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a></li>

+  <li class="toc_li"><a href="insert_anchor_button.htm">Skapa/Redigera ankare </a></li>

+  <li class="toc_li"><a href="insert_table_button.htm">Skapa/Redigera tabell</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_anchor_button.htm
@@ -1,35 +1,35 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Skapa/Redigera l&auml;nk</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Skapa/Redigera l&auml;nk</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Skapa/Redigera ankare </span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>

+<br>

+<img src="images/insert_anchor_window.gif" width="330" height="139"><br>

+<br>

+Detta f&ouml;nster har ett f&auml;lt som man skall fylla i med ett unik

+namn, denna funktion  g&ouml;r det m&ouml;jligt att skapa

+ankarpunkter/bokm&auml;rken.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Skapa/Redigera ankare </span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>
-<br>
-<img src="images/insert_anchor_window.gif" width="330" height="139"><br>
-<br>
-Detta f&ouml;nster har ett f&auml;lt som man skall fylla i med ett unik
-namn, denna funktion  g&ouml;r det m&ouml;jligt att skapa
-ankarpunkter/bokm&auml;rken.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_image_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Skapa/Redigera bild</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Skapa/Redigera bild</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Skapa/Redigera bild</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Funktionen "Skapa/Redigera bild" &ouml;ppnar ett nytt f&ouml;nster som ser ut som 

+bilden nedan.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+I detta f&ouml;nster skriver du in URL:en till bilden du vill l&auml;nka till 

+samt en bildbeskrivning, denna beskrivning kommer att visas som en alternativ 

+text till bilden.<br>

+<br>


+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Bilderns URL </strong></td>

+    <td>URL/s&ouml;kv&auml;g till bilden.</td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Bildens beskrivning</strong></td>

+    <td>Bildens beskrivning, denna beskrivning kommer att visas som en

+      alternativ text till bilden.</td>

+  </tr>

+  <tr>

+    <td><strong>Dimensioner</strong></td>

+    <td>Bildens bredd och h&ouml;jd. </td>

+  </tr>

+  <tr>

+    <td><strong>Justering</strong></td>

+    <td>Bildens justering, kan vara anv&auml;ndbart n&auml;r man vill att

+      text skall flyta runt bilden. </td>

+  </tr>

+  <tr>

+    <td><strong>Ram</strong></td>

+    <td>Bildramens bredd. </td>

+  </tr>

+  <tr>

+    <td><strong>Vertikalt tomrum </strong></td>

+    <td>Vertikalt tomrum , kan vara anv&auml;ndbart n&auml;r man vill

+      att text skall flyta runt bilden. </td>

+  </tr>

+  <tr>

+    <td><strong>Horizontellt tomrom</strong></td>

+    <td>Horisontellt tomrum, kan vara anv&auml;ndbart n&auml;r man vill

+      att text skall flyta runt bilden. </td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Skapa/Redigera bild</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Funktionen "Skapa/Redigera bild" &ouml;ppnar ett nytt f&ouml;nster som ser ut som 
-bilden nedan.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-I detta f&ouml;nster skriver du in URL:en till bilden du vill l&auml;nka till 
-samt en bildbeskrivning, denna beskrivning kommer att visas som en alternativ 
-text till bilden.<br>
-<br>

-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Bilderns URL </strong></td>
-    <td>URL/s&ouml;kv&auml;g till bilden.</td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Bildens beskrivning</strong></td>
-    <td>Bildens beskrivning, denna beskrivning kommer att visas som en
-      alternativ text till bilden.</td>
-  </tr>
-  <tr>
-    <td><strong>Dimensioner</strong></td>
-    <td>Bildens bredd och h&ouml;jd. </td>
-  </tr>
-  <tr>
-    <td><strong>Justering</strong></td>
-    <td>Bildens justering, kan vara anv&auml;ndbart n&auml;r man vill att
-      text skall flyta runt bilden. </td>
-  </tr>
-  <tr>
-    <td><strong>Ram</strong></td>
-    <td>Bildramens bredd. </td>
-  </tr>
-  <tr>
-    <td><strong>Vertikalt tomrum </strong></td>
-    <td>Vertikalt tomrum , kan vara anv&auml;ndbart n&auml;r man vill
-      att text skall flyta runt bilden. </td>
-  </tr>
-  <tr>
-    <td><strong>Horizontellt tomrom</strong></td>
-    <td>Horisontellt tomrum, kan vara anv&auml;ndbart n&auml;r man vill
-      att text skall flyta runt bilden. </td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_link_button.htm
@@ -1,34 +1,34 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Skapa/Redigera l&auml;nk</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Skapa/Redigera l&auml;nk</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Skapa/Redigera l&auml;nk</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>

+Detta f&ouml;nster har tv&aring; f&auml;lt l&auml;nkens URL/adress samt hur l&auml;nken 

+skall &ouml;ppnas.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Skapa/Redigera l&auml;nk</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>
-Detta f&ouml;nster har tv&aring; f&auml;lt l&auml;nkens URL/adress samt hur l&auml;nken 
-skall &ouml;ppnas.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/insert_table_button.htm
@@ -1,73 +1,73 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>
-<TITLE>Skapa/Redigera tabell</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>

+<TITLE>Skapa/Redigera tabell</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Skapa/Redigera tabell </span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Skapa tabell-knappen &ouml;ppnar ett nytt f&ouml;nster, med hj&auml;lp av

+detta f&ouml;nster kan du skapa tabeller. <br>

+<br>

+<img src="images/insert_table_window.gif" width="340" height="229"><br>

+<br>


+<table border="1" cellspacing="0">

+  <tr>

+    <td width="150"><strong>Kolumner</strong></td>

+    <td>Antal kolumner i tabellen. </td>

+  </tr>

+  <tr>

+    <td width="150"><strong>Rader</strong></td>

+    <td>Antal rader i tabellen .</td>

+  </tr>

+  <tr>

+    <td><strong>Cellutfyllnad</strong></td>

+    <td>Antal pixlars utfyllnad i varje cell. </td>

+  </tr>

+  <tr>

+    <td><strong>Cellmellanrum</strong></td>

+    <td>Antal pixlars mellanrum mellan cellerna.</td>

+  </tr>

+  <tr>

+    <td><strong>Justering</strong></td>

+    <td>Tabellens justering. </td>

+  </tr>

+  <tr>

+    <td><strong>Rambredd</strong></td>

+    <td>Ramens bredd .</td>

+  </tr>

+  <tr>

+    <td><strong>Bredd</strong></td>

+    <td>Bredd i pixlar.</td>

+  </tr>

+  <tr>

+    <td><strong>H&ouml;jd</strong></td>

+    <td>H&ouml;jd i pixlar. </td>

+  </tr>

+  <tr>

+    <td><strong>Stil</strong></td>

+    <td>Stilmall p&aring; tabellen. </td>

+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 


+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Skapa/Redigera tabell </span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Skapa tabell-knappen &ouml;ppnar ett nytt f&ouml;nster, med hj&auml;lp av
-detta f&ouml;nster kan du skapa tabeller. <br>
-<br>
-<img src="images/insert_table_window.gif" width="340" height="229"><br>
-<br>

-<table border="1" cellspacing="0">
-  <tr>
-    <td width="150"><strong>Kolumner</strong></td>
-    <td>Antal kolumner i tabellen. </td>
-  </tr>
-  <tr>
-    <td width="150"><strong>Rader</strong></td>
-    <td>Antal rader i tabellen .</td>
-  </tr>
-  <tr>
-    <td><strong>Cellutfyllnad</strong></td>
-    <td>Antal pixlars utfyllnad i varje cell. </td>
-  </tr>
-  <tr>
-    <td><strong>Cellmellanrum</strong></td>
-    <td>Antal pixlars mellanrum mellan cellerna.</td>
-  </tr>
-  <tr>
-    <td><strong>Justering</strong></td>
-    <td>Tabellens justering. </td>
-  </tr>
-  <tr>
-    <td><strong>Rambredd</strong></td>
-    <td>Ramens bredd .</td>
-  </tr>
-  <tr>
-    <td><strong>Bredd</strong></td>
-    <td>Bredd i pixlar.</td>
-  </tr>
-  <tr>
-    <td><strong>H&ouml;jd</strong></td>
-    <td>H&ouml;jd i pixlar. </td>
-  </tr>
-  <tr>
-    <td><strong>Stil</strong></td>
-    <td>Stilmall p&aring; tabellen. </td>
-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 

-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/sv/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/about.htm
@@ -1,30 +1,30 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/common_buttons.htm
@@ -1,161 +1,161 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<br>

+<table cellpadding="3" cellspacing="1" bgcolor="#000000">

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/full.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/anchor.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/code.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/hr.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/sub.gif" width="20" height="20"></td>


+  </tr>

+  <tr bgcolor="#FFFFFF">

+    <td><img src="../../images/sup.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<br>
-<table cellpadding="3" cellspacing="1" bgcolor="#000000">
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/full.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/anchor.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/code.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table_delete_row.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../images/table_delete_col.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/hr.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/removeformat.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/sub.gif" width="20" height="20"></td>

-  </tr>
-  <tr bgcolor="#FFFFFF">
-    <td><img src="../../images/sup.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/index.htm
@@ -1,28 +1,28 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">






-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">







+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_anchor_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_anchor_button.htm
@@ -1,32 +1,32 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>


+<br>

+<img src="images/insert_anchor_window.gif" width="320" height="127"><br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>

-<br>
-<img src="images/insert_anchor_window.gif" width="320" height="127"><br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_image_button.htm
@@ -1,64 +1,64 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>


+<br>

+<img src="images/insert_image_window.gif" width="340" height="295"><br>


+<br>


+<table cellpadding="3" cellspacing="1" bgcolor="#000000">

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>

-<br>
-<img src="images/insert_image_window.gif" width="340" height="295"><br>

-<br>

-<table cellpadding="3" cellspacing="1" bgcolor="#000000">
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_link_button.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>


+<br>

+<img src="images/insert_link_window.gif" width="320" height="155" border="0"><br>


+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>

-<br>
-<img src="images/insert_link_window.gif" width="320" height="155" border="0"><br>

-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_table_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/insert_table_button.htm
@@ -1,72 +1,72 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>


+<br>

+<img src="images/insert_table_window.gif" width="340" height="239" border="0"><br>

+<br>


+<table cellpadding="3" cellspacing="1" bgcolor="#000000">

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+  <tr>



+  </tr>

+</table>

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>

-<br>
-<img src="images/insert_table_window.gif" width="340" height="239" border="0"><br>
-<br>

-<table cellpadding="3" cellspacing="1" bgcolor="#000000">
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-  <tr>


-  </tr>
-</table>
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/docs/zh_cn/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_content.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_content.css
@@ -1,28 +1,28 @@
-body {
-	background-color: #FFFFFF;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
-}
+body {

+	background-color: #FFFFFF;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+pre {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+.mceVisualAid {

+	border: 1px dashed #BBBBBB;

+}

 
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-pre {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-.mceVisualAid {
-	border: 1px dashed #BBBBBB;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_popup.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_popup.css
@@ -1,122 +1,122 @@
-body {
-	background-color: #F0F0EE;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
-}
+body {

+	background-color: #F0F0EE;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+}

+

+input {

+	background: #FFFFFF;

+	border: 1px solid #cccccc;

+}

+

+td, input, select, textarea {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+input, select, textarea {

+	border: 1px solid #808080;

+}

+

+.input_noborder {

+	border: 0px solid #808080;

+}

+

+#insert {

+   font-weight: bold;

+}

+

+#cancel {

+   font-weight: bold;

+}

+

+.title {

+	font-size: 12px;

+	font-weight: bold;

+}

+

+table.charmap {

+	border-style: solid;

+	border-width: 1px;

+	border-color: #AAAAAA;

+}

+

+td.charmap, td.charmapOver {

+	color: #000000;

+	border-color: #AAAAAA;

+	border-style: solid;

+	border-width: 1px;

+	text-align: center;

+	font-size: 12px;

+}

+

+td.charmapOver {

+	background-color: #CCCCCC;

+	cursor: arrow;

+}

+

+a.charmap {

+	color: #000000;

+	text-decoration: none

+}

+

+.wordWrapCode {

+	vertical-align: middle;

+	border: 1px none #000000;

+	background-color: transparent;

+}

+

+input.radio {

+	border: 1px none #000000;

+	background-color: transparent;

+	vertical-align: middle;

+}

+

+input.checkbox {

+	border: 1px none #000000;

+	background-color: transparent;

+	vertical-align: middle;

+}

+

+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {

+	margin-left: 1px;

+}

+

+.mceButtonNormal {

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceButtonOver {

+	border: 1px solid #0A246A;

+	cursor: arrow;

+	background-color: #B6BDD2;

+}

+

+.mceButtonDown {

+	cursor: arrow;

+	border: 1px solid #0A246A;

+	background-color: #8592B5;

+}

+

+legend {

+	font-weight: bold;

+}

 
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-}
-
-input {
-	background: #FFFFFF;
-	border: 1px solid #cccccc;
-}
-
-td, input, select, textarea {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-input, select, textarea {
-	border: 1px solid #808080;
-}
-
-.input_noborder {
-	border: 0px solid #808080;
-}
-
-#insert {
-   font-weight: bold;
-}
-
-#cancel {
-   font-weight: bold;
-}
-
-.title {
-	font-size: 12px;
-	font-weight: bold;
-}
-
-table.charmap {
-	border-style: solid;
-	border-width: 1px;
-	border-color: #AAAAAA;
-}
-
-td.charmap, td.charmapOver {
-	color: #000000;
-	border-color: #AAAAAA;
-	border-style: solid;
-	border-width: 1px;
-	text-align: center;
-	font-size: 12px;
-}
-
-td.charmapOver {
-	background-color: #CCCCCC;
-	cursor: arrow;
-}
-
-a.charmap {
-	color: #000000;
-	text-decoration: none
-}
-
-.wordWrapCode {
-	vertical-align: middle;
-	border: 1px none #000000;
-	background-color: transparent;
-}
-
-input.radio {
-	border: 1px none #000000;
-	background-color: transparent;
-	vertical-align: middle;
-}
-
-input.checkbox {
-	border: 1px none #000000;
-	background-color: transparent;
-	vertical-align: middle;
-}
-
-.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
-	margin-left: 1px;
-}
-
-.mceButtonNormal {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceButtonOver {
-	border: 1px solid #0A246A;
-	cursor: arrow;
-	background-color: #B6BDD2;
-}
-
-.mceButtonDown {
-	cursor: arrow;
-	border: 1px solid #0A246A;
-	background-color: #8592B5;
-}
-
-legend {
-	font-weight: bold;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_template.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_template.js
@@ -1,1 +1,1 @@
-(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,each=tinymce.each,Cookie=tinymce.util.Cookie,lastExtID,explode=tinymce.explode;tinymce.ThemeManager.requireLangPack('advanced');tinymce.create('tinymce.themes.AdvancedTheme',{controls:{bold:['bold_desc','Bold'],italic:['italic_desc','Italic'],underline:['underline_desc','Underline'],strikethrough:['striketrough_desc','Strikethrough'],justifyleft:['justifyleft_desc','JustifyLeft'],justifycenter:['justifycenter_desc','JustifyCenter'],justifyright:['justifyright_desc','JustifyRight'],justifyfull:['justifyfull_desc','JustifyFull'],bullist:['bullist_desc','InsertUnorderedList'],numlist:['numlist_desc','InsertOrderedList'],outdent:['outdent_desc','Outdent'],indent:['indent_desc','Indent'],cut:['cut_desc','Cut'],copy:['copy_desc','Copy'],paste:['paste_desc','Paste'],undo:['undo_desc','Undo'],redo:['redo_desc','Redo'],link:['link_desc','mceLink'],unlink:['unlink_desc','unlink'],image:['image_desc','mceImage'],cleanup:['cleanup_desc','mceCleanup'],help:['help_desc','mceHelp'],code:['code_desc','mceCodeEditor'],hr:['hr_desc','InsertHorizontalRule'],removeformat:['removeformat_desc','RemoveFormat'],sub:['sub_desc','subscript'],sup:['sup_desc','superscript'],forecolor:['forecolor_desc','ForeColor'],forecolorpicker:['forecolor_desc','mceForeColor'],backcolor:['backcolor_desc','HiliteColor'],backcolorpicker:['backcolor_desc','mceBackColor'],charmap:['charmap_desc','mceCharMap'],visualaid:['visualaid_desc','mceToggleVisualAid'],anchor:['anchor_desc','mceInsertAnchor'],newdocument:['newdocument_desc','mceNewDocument'],blockquote:['blockquote_desc','mceBlockQuote']},stateControls:['bold','italic','underline','strikethrough','bullist','numlist','justifyleft','justifycenter','justifyright','justifyfull','sub','sup','blockquote'],init:function(ed,url){var t=this,s,v;t.editor=ed;t.url=url;t.onResolveName=new tinymce.util.Dispatcher(this);t.settings=s=extend({theme_advanced_path:true,theme_advanced_toolbar_location:'bottom',theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1},ed.settings);if((v=s.theme_advanced_path_location)&&v!='none')s.theme_advanced_statusbar_location=s.theme_advanced_path_location;if(s.theme_advanced_statusbar_location=='none')s.theme_advanced_statusbar_location=0;ed.onInit.add(function(){ed.onNodeChange.add(t._nodeChanged,t);if(ed.settings.content_css!==false)ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/"+ed.settings.skin+"/content.css"));});ed.onSetProgressState.add(function(ed,b,ti){var co,id=ed.id,tb;if(b){t.progressTimer=setTimeout(function(){co=ed.getContainer();co=co.insertBefore(DOM.create('DIV',{style:'position:relative'}),co.firstChild);tb=DOM.get(ed.id+'_tbl');DOM.add(co,'div',{id:id+'_blocker','class':'mceBlocker',style:{width:tb.clientWidth+2,height:tb.clientHeight+2}});DOM.add(co,'div',{id:id+'_progress','class':'mceProgress',style:{left:tb.clientWidth/ 2, top : tb.clientHeight /2}});},ti||0);}else{DOM.remove(id+'_blocker');DOM.remove(id+'_progress');clearTimeout(t.progressTimer);}});DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css||"themes/advanced/skins/"+ed.settings.skin+"/ui.css"));if(s.skin_variant)DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css||"themes/advanced/skins/"+ed.settings.skin+"/ui_"+s.skin_variant+".css"));},createControl:function(n,cf){var cd,c;if(c=cf.createControl(n))return c;switch(n){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu();}if((cd=this.controls[n]))return cf.createButton(n,{title:"advanced."+cd[0],cmd:cd[1],ui:cd[2],value:cd[3]});},execCommand:function(cmd,ui,val){var f=this['_'+cmd];if(f){f.call(this,ui,val);return true;}return false;},_importClasses:function(e){var ed=this.editor,c=ed.controlManager.get('styleselect');if(c.getLength()==0){each(ed.dom.getClasses(),function(o){c.add(o['class'],o['class']);});}},_createStyleSelect:function(n){var t=this,ed=t.editor,cf=ed.controlManager,c=cf.createListBox('styleselect',{title:'advanced.style_select',onselect:function(v){if(c.selectedValue===v){ed.execCommand('mceSetStyleInfo',0,{command:'removeformat'});c.select();return false;}else ed.execCommand('mceSetCSSClass',0,v);}});if(c){each(ed.getParam('theme_advanced_styles','','hash'),function(v,k){if(v)c.add(t.editor.translate(k),v);});c.onPostRender.add(function(ed,n){Event.add(n.id+'_text','focus',t._importClasses,t);Event.add(n.id+'_text','mousedown',t._importClasses,t);});}return c;},_createFontSelect:function(){var c,t=this,ed=t.editor;c=ed.controlManager.createListBox('fontselect',{title:'advanced.fontdefault',cmd:'FontName'});if(c){each(ed.getParam('theme_advanced_fonts',t.settings.theme_advanced_fonts,'hash'),function(v,k){c.add(ed.translate(k),v,{style:v.indexOf('dings')==-1?'font-family:'+v:''});});}return c;},_createFontSizeSelect:function(){var t=this,ed=t.editor,c,lo=["1 (8 pt)","2 (10 pt)","3 (12 pt)","4 (14 pt)","5 (18 pt)","6 (24 pt)","7 (36 pt)"],fz=[8,10,12,14,18,24,36];c=ed.controlManager.createListBox('fontsizeselect',{title:'advanced.font_size',cmd:'FontSize'});if(c){each(ed.getParam('theme_advanced_font_sizes',t.settings.theme_advanced_font_sizes,'hash'),function(v,k){c.add(k!=v?k:lo[parseInt(v)-1],v,{'style':'font-size:'+fz[v-1]+'pt','class':'mceFontSize'+v});});}return c;},_createBlockFormats:function(){var c,fmts={p:'advanced.paragraph',address:'advanced.address',pre:'advanced.pre',h1:'advanced.h1',h2:'advanced.h2',h3:'advanced.h3',h4:'advanced.h4',h5:'advanced.h5',h6:'advanced.h6',div:'advanced.div',blockquote:'advanced.blockquote',code:'advanced.code',dt:'advanced.dt',dd:'advanced.dd',samp:'advanced.samp'},t=this;c=t.editor.controlManager.createListBox('formatselect',{title:'advanced.block',cmd:'FormatBlock'});if(c){each(t.editor.getParam('theme_advanced_blockformats',t.settings.theme_advanced_blockformats,'hash'),function(v,k){c.add(t.editor.translate(k!=v?k:fmts[v]),v,{'class':'mce_formatPreview mce_'+v});});}return c;},_createForeColorMenu:function(){var c,t=this,s=t.settings,o={},v;if(s.theme_advanced_more_colors){o.more_colors_func=function(){t._mceColorPicker(0,{color:c.value,func:function(co){c.setColor(co);}});};}if(v=s.theme_advanced_text_colors)o.colors=v;o.title='advanced.forecolor_desc';o.cmd='ForeColor';o.scope=this;c=t.editor.controlManager.createColorSplitButton('forecolor',o);return c;},_createBackColorMenu:function(){var c,t=this,s=t.settings,o={},v;if(s.theme_advanced_more_colors){o.more_colors_func=function(){t._mceColorPicker(0,{color:c.value,func:function(co){c.setColor(co);}});};}if(v=s.theme_advanced_background_colors)o.colors=v;o.title='advanced.backcolor_desc';o.cmd='HiliteColor';o.scope=this;c=t.editor.controlManager.createColorSplitButton('backcolor',o);return c;},renderUI:function(o){var n,ic,tb,t=this,ed=t.editor,s=t.settings,sc,p,nl;n=p=DOM.create('span',{id:ed.id+'_parent','class':'mceEditor '+ed.settings.skin+'Skin'+(s.skin_variant?' '+ed.settings.skin+'Skin'+t._ufirst(s.skin_variant):'')});if(!DOM.boxModel)n=DOM.add(n,'div',{'class':'mceOldBoxModel'});n=sc=DOM.add(n,'table',{id:ed.id+'_tbl','class':'mceLayout',cellSpacing:0,cellPadding:0});n=tb=DOM.add(n,'tbody');switch((s.theme_advanced_layout_manager||'').toLowerCase()){case"rowlayout":ic=t._rowLayout(s,tb,o);break;case"customlayout":ic=ed.execCallback("theme_advanced_custom_layout",s,tb,o,p);break;default:ic=t._simpleLayout(s,tb,o,p);}n=o.targetNode;nl=DOM.stdMode?sc.getElementsByTagName('tr'):sc.rows;DOM.addClass(nl[0],'mceFirst');DOM.addClass(nl[nl.length-1],'mceLast');each(DOM.select('tr',tb),function(n){DOM.addClass(n.firstChild,'mceFirst');DOM.addClass(n.childNodes[n.childNodes.length-1],'mceLast');});if(DOM.get(s.theme_advanced_toolbar_container))DOM.get(s.theme_advanced_toolbar_container).appendChild(p);else DOM.insertAfter(p,n);Event.add(ed.id+'_path_row','click',function(e){e=e.target;if(e.nodeName=='A'){t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/,'$1'));return Event.cancel(e);}});if(!ed.getParam('accessibility_focus')||ed.getParam('tab_focus'))Event.add(DOM.add(p,'a',{href:'#'},'<!-- IE -->'),'focus',function(){tinyMCE.get(ed.id).focus();});if(s.theme_advanced_toolbar_location=='external')o.deltaHeight=0;t.deltaHeight=o.deltaHeight;o.targetNode=null;return{iframeContainer:ic,editorContainer:ed.id+'_parent',sizeContainer:sc,deltaHeight:o.deltaHeight};},getInfo:function(){return{longname:'Advanced theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}},resizeBy:function(dw,dh){var e=DOM.get(this.editor.id+'_tbl');this.resizeTo(e.clientWidth+dw,e.clientHeight+dh);},resizeTo:function(w,h){var ed=this.editor,s=ed.settings,e=DOM.get(ed.id+'_tbl'),ifr=DOM.get(ed.id+'_ifr'),dh;w=Math.max(s.theme_advanced_resizing_min_width||100,w);h=Math.max(s.theme_advanced_resizing_min_height||100,h);w=Math.min(s.theme_advanced_resizing_max_width||0xFFFF,w);h=Math.min(s.theme_advanced_resizing_max_height||0xFFFF,h);dh=e.clientHeight-ifr.clientHeight;DOM.setStyle(ifr,'height',h-dh);DOM.setStyles(e,{width:w,height:h});},destroy:function(){var id=this.editor.id;Event.clear(id+'_resize');Event.clear(id+'_path_row');Event.clear(id+'_external_close');},_simpleLayout:function(s,tb,o,p){var t=this,ed=t.editor,lo=s.theme_advanced_toolbar_location,sl=s.theme_advanced_statusbar_location,n,ic,etb,c;if(lo=='top')t._addToolbars(tb,o);if(lo=='external'){n=c=DOM.create('div',{style:'position:relative'});n=DOM.add(n,'div',{id:ed.id+'_external','class':'mceExternalToolbar'});DOM.add(n,'a',{id:ed.id+'_external_close',href:'javascript:;','class':'mceExternalClose'});n=DOM.add(n,'table',{id:ed.id+'_tblext',cellSpacing:0,cellPadding:0});etb=DOM.add(n,'tbody');if(p.firstChild.className=='mceOldBoxModel')p.firstChild.appendChild(c);else p.insertBefore(c,p.firstChild);t._addToolbars(etb,o);ed.onMouseUp.add(function(){var e=DOM.get(ed.id+'_external');DOM.show(e);DOM.hide(lastExtID);var f=Event.add(ed.id+'_external_close','click',function(){DOM.hide(ed.id+'_external');Event.remove(ed.id+'_external_close','click',f);});DOM.show(e);DOM.setStyle(e,'top',0-DOM.getRect(ed.id+'_tblext').h-1);DOM.hide(e);DOM.show(e);e.style.filter='';lastExtID=ed.id+'_external';e=null;});}if(sl=='top')t._addStatusBar(tb,o);if(!s.theme_advanced_toolbar_container){n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});}if(lo=='bottom')t._addToolbars(tb,o);if(sl=='bottom')t._addStatusBar(tb,o);return ic;},_rowLayout:function(s,tb,o){var t=this,ed=t.editor,dc,da,cf=ed.controlManager,n,ic,to,a;dc=s.theme_advanced_containers_default_class||'';da=s.theme_advanced_containers_default_align||'center';each(explode(s.theme_advanced_containers||''),function(c,i){var v=s['theme_advanced_container_'+c]||'';switch(v.toLowerCase()){case'mceeditor':n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});break;case'mceelementpath':t._addStatusBar(tb,o);break;default:a=(s['theme_advanced_container_'+c+'_align']||da).toLowerCase();a='mce'+t._ufirst(a);n=DOM.add(DOM.add(tb,'tr'),'td',{'class':'mceToolbar '+(s['theme_advanced_container_'+c+'_class']||dc)+' '+a||da});to=cf.createToolbar("toolbar"+i);t._addControls(v,to);DOM.setHTML(n,to.renderHTML());o.deltaHeight-=s.theme_advanced_row_height;}});return ic;},_addControls:function(v,tb){var t=this,s=t.settings,di,cf=t.editor.controlManager;if(s.theme_advanced_disable&&!t._disabled){di={};each(explode(s.theme_advanced_disable),function(v){di[v]=1;});t._disabled=di;}else di=t._disabled;each(explode(v),function(n){var c;if(di&&di[n])return;if(n=='tablecontrols'){each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(n){n=t.createControl(n,cf);if(n)tb.add(n);});return;}c=t.createControl(n,cf);if(c)tb.add(c);});},_addToolbars:function(c,o){var t=this,i,tb,ed=t.editor,s=t.settings,v,cf=ed.controlManager,di,n,h=[],a;a=s.theme_advanced_toolbar_align.toLowerCase();a='mce'+t._ufirst(a);n=DOM.add(DOM.add(c,'tr'),'td',{'class':'mceToolbar '+a});if(!ed.getParam('accessibility_focus')||ed.getParam('tab_focus'))h.push(DOM.createHTML('a',{href:'#',onfocus:'tinyMCE.get(\''+ed.id+'\').focus();'},'<!-- IE -->'));h.push(DOM.createHTML('a',{href:'#',accesskey:'q',title:ed.getLang("advanced.toolbar_focus")},'<!-- IE -->'));for(i=1;(v=s['theme_advanced_buttons'+i]);i++){tb=cf.createToolbar("toolbar"+i,{'class':'mceToolbarRow'+i});if(s['theme_advanced_buttons'+i+'_add'])v+=','+s['theme_advanced_buttons'+i+'_add'];if(s['theme_advanced_buttons'+i+'_add_before'])v=s['theme_advanced_buttons'+i+'_add_before']+','+v;t._addControls(v,tb);h.push(tb.renderHTML());o.deltaHeight-=s.theme_advanced_row_height;}h.push(DOM.createHTML('a',{href:'#',accesskey:'z',title:ed.getLang("advanced.toolbar_focus"),onfocus:'tinyMCE.getInstanceById(\''+ed.id+'\').focus();'},'<!-- IE -->'));DOM.setHTML(n,h.join(''));},_addStatusBar:function(tb,o){var n,t=this,ed=t.editor,s=t.settings,r,mf,me,td;n=DOM.add(tb,'tr');n=td=DOM.add(n,'td',{'class':'mceStatusbar'});n=DOM.add(n,'div',{id:ed.id+'_path_row'},s.theme_advanced_path?ed.translate('advanced.path')+': ':'&nbsp;');DOM.add(n,'a',{href:'#',accesskey:'x'});if(s.theme_advanced_resizing&&!tinymce.isOldWebKit){DOM.add(td,'a',{id:ed.id+'_resize',href:'javascript:;',onclick:"return false;",'class':'mceResize'});if(s.theme_advanced_resizing_use_cookie){ed.onPostRender.add(function(){var o=Cookie.getHash("TinyMCE_"+ed.id+"_size"),c=DOM.get(ed.id+'_tbl');if(!o)return;if(s.theme_advanced_resize_horizontal)c.style.width=Math.max(10,o.cw)+'px';c.style.height=Math.max(10,o.ch)+'px';DOM.get(ed.id+'_ifr').style.height=Math.max(10,parseInt(o.ch)+t.deltaHeight)+'px';});}ed.onPostRender.add(function(){Event.add(ed.id+'_resize','mousedown',function(e){var c,p,w,h,n,pa;c=DOM.get(ed.id+'_tbl');w=c.clientWidth;h=c.clientHeight;miw=s.theme_advanced_resizing_min_width||100;mih=s.theme_advanced_resizing_min_height||100;maw=s.theme_advanced_resizing_max_width||0xFFFF;mah=s.theme_advanced_resizing_max_height||0xFFFF;p=DOM.add(DOM.get(ed.id+'_parent'),'div',{'class':'mcePlaceHolder'});DOM.setStyles(p,{width:w,height:h});DOM.hide(c);DOM.show(p);r={x:e.screenX,y:e.screenY,w:w,h:h,dx:null,dy:null};mf=Event.add(DOM.doc,'mousemove',function(e){var w,h;r.dx=e.screenX-r.x;r.dy=e.screenY-r.y;w=Math.max(miw,r.w+r.dx);h=Math.max(mih,r.h+r.dy);w=Math.min(maw,w);h=Math.min(mah,h);if(s.theme_advanced_resize_horizontal)p.style.width=w+'px';p.style.height=h+'px';return Event.cancel(e);});me=Event.add(DOM.doc,'mouseup',function(e){var ifr;Event.remove(DOM.doc,'mousemove',mf);Event.remove(DOM.doc,'mouseup',me);c.style.display='';DOM.remove(p);if(r.dx===null)return;ifr=DOM.get(ed.id+'_ifr');if(s.theme_advanced_resize_horizontal)c.style.width=Math.max(10,r.w+r.dx)+'px';c.style.height=Math.max(10,r.h+r.dy)+'px';ifr.style.height=Math.max(10,ifr.clientHeight+r.dy)+'px';if(s.theme_advanced_resizing_use_cookie){Cookie.setHash("TinyMCE_"+ed.id+"_size",{cw:r.w+r.dx,ch:r.h+r.dy});}});return Event.cancel(e);});});}o.deltaHeight-=21;n=tb=null;},_nodeChanged:function(ed,cm,n,co){var t=this,p,de=0,v,c,s=t.settings;tinymce.each(t.stateControls,function(c){cm.setActive(c,ed.queryCommandState(t.controls[c][1]));});cm.setActive('visualaid',ed.hasVisual);cm.setDisabled('undo',!ed.undoManager.hasUndo()&&!ed.typing);cm.setDisabled('redo',!ed.undoManager.hasRedo());cm.setDisabled('outdent',!ed.queryCommandState('Outdent'));p=DOM.getParent(n,'A');if(c=cm.get('link')){if(!p||!p.name){c.setDisabled(!p&&co);c.setActive(!!p);}}if(c=cm.get('unlink')){c.setDisabled(!p&&co);c.setActive(!!p&&!p.name);}if(c=cm.get('anchor')){c.setActive(!!p&&p.name);if(tinymce.isWebKit){p=DOM.getParent(n,'IMG');c.setActive(!!p&&DOM.getAttrib(p,'mce_name')=='a');}}p=DOM.getParent(n,'IMG');if(c=cm.get('image'))c.setActive(!!p&&n.className.indexOf('mceItem')==-1);if(c=cm.get('styleselect')){if(n.className){t._importClasses();c.select(n.className);}else c.select();}if(c=cm.get('formatselect')){p=DOM.getParent(n,DOM.isBlock);if(p)c.select(p.nodeName.toLowerCase());}if(c=cm.get('fontselect'))c.select(ed.queryCommandValue('FontName'));if(c=cm.get('fontsizeselect'))c.select(''+ed.queryCommandValue('FontSize'));if(s.theme_advanced_path&&s.theme_advanced_statusbar_location){p=DOM.get(ed.id+'_path')||DOM.add(ed.id+'_path_row','span',{id:ed.id+'_path'});DOM.setHTML(p,'');ed.dom.getParent(n,function(n){var na=n.nodeName.toLowerCase(),u,pi,ti='';if(n.nodeType!=1||(DOM.hasClass(n,'mceItemHidden')||DOM.hasClass(n,'mceItemRemoved')))return;if(v=DOM.getAttrib(n,'mce_name'))na=v;if(tinymce.isIE&&n.scopeName!=='HTML')na=n.scopeName+':'+na;na=na.replace(/mce\:/g,'');switch(na){case'b':na='strong';break;case'i':na='em';break;case'img':if(v=DOM.getAttrib(n,'src'))ti+='src: '+v+' ';break;case'a':if(v=DOM.getAttrib(n,'name')){ti+='name: '+v+' ';na+='#'+v;}if(v=DOM.getAttrib(n,'href'))ti+='href: '+v+' ';break;case'font':if(s.convert_fonts_to_spans)na='span';if(v=DOM.getAttrib(n,'face'))ti+='font: '+v+' ';if(v=DOM.getAttrib(n,'size'))ti+='size: '+v+' ';if(v=DOM.getAttrib(n,'color'))ti+='color: '+v+' ';break;case'span':if(v=DOM.getAttrib(n,'style'))ti+='style: '+v+' ';break;}if(v=DOM.getAttrib(n,'id'))ti+='id: '+v+' ';if(v=n.className){v=v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,'');if(v&&v.indexOf('mceItem')==-1){ti+='class: '+v+' ';if(DOM.isBlock(n)||na=='img'||na=='span')na+='.'+v;}}na=na.replace(/(html:)/g,'');na={name:na,node:n,title:ti};t.onResolveName.dispatch(t,na);ti=na.title;na=na.name;pi=DOM.create('a',{'href':"javascript:;",onmousedown:"return false;",title:ti,'class':'mcePath_'+(de++)},na);if(p.hasChildNodes()){p.insertBefore(DOM.doc.createTextNode(' \u00bb '),p.firstChild);p.insertBefore(pi,p.firstChild);}else p.appendChild(pi);},ed.getBody());}},_sel:function(v){this.editor.execCommand('mceSelectNodeDepth',false,v);},_mceInsertAnchor:function(ui,v){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/anchor.htm',width:320+parseInt(ed.getLang('advanced.anchor_delta_width',0)),height:90+parseInt(ed.getLang('advanced.anchor_delta_height',0)),inline:true},{theme_url:this.url});},_mceCharMap:function(){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/charmap.htm',width:550+parseInt(ed.getLang('advanced.charmap_delta_width',0)),height:250+parseInt(ed.getLang('advanced.charmap_delta_height',0)),inline:true},{theme_url:this.url});},_mceHelp:function(){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/about.htm',width:480,height:380,inline:true},{theme_url:this.url});},_mceColorPicker:function(u,v){var ed=this.editor;v=v||{};ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/color_picker.htm',width:375+parseInt(ed.getLang('advanced.colorpicker_delta_width',0)),height:250+parseInt(ed.getLang('advanced.colorpicker_delta_height',0)),close_previous:false,inline:true},{input_color:v.color,func:v.func,theme_url:this.url});},_mceCodeEditor:function(ui,val){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/source_editor.htm',width:parseInt(ed.getParam("theme_advanced_source_editor_width",720)),height:parseInt(ed.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url});},_mceImage:function(ui,val){var ed=this.editor;if(ed.dom.getAttrib(ed.selection.getNode(),'class').indexOf('mceItem')!=-1)return;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/image.htm',width:355+parseInt(ed.getLang('advanced.image_delta_width',0)),height:275+parseInt(ed.getLang('advanced.image_delta_height',0)),inline:true},{theme_url:this.url});},_mceLink:function(ui,val){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/link.htm',width:310+parseInt(ed.getLang('advanced.link_delta_width',0)),height:200+parseInt(ed.getLang('advanced.link_delta_height',0)),inline:true},{theme_url:this.url});},_mceNewDocument:function(){var ed=this.editor;ed.windowManager.confirm('advanced.newdocument',function(s){if(s)ed.execCommand('mceSetContent',false,'');});},_mceForeColor:function(){var t=this;this._mceColorPicker(0,{color:t.fgColor,func:function(co){t.fgColor=co;t.editor.execCommand('ForeColor',false,co);}});},_mceBackColor:function(){var t=this;this._mceColorPicker(0,{color:t.bgColor,func:function(co){t.bgColor=co;t.editor.execCommand('HiliteColor',false,co);}});},_ufirst:function(s){return s.substring(0,1).toUpperCase()+s.substring(1);}});tinymce.ThemeManager.add('advanced',tinymce.themes.AdvancedTheme);}());
+tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_AdvancedTheme={_defColors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",_autoImportCSSClasses:true,_resizer:{},_buttons:[['bold','{$lang_bold_img}','lang_bold_desc','Bold'],['italic','{$lang_italic_img}','lang_italic_desc','Italic'],['underline','{$lang_underline_img}','lang_underline_desc','Underline'],['strikethrough','strikethrough.gif','lang_striketrough_desc','Strikethrough'],['justifyleft','justifyleft.gif','lang_justifyleft_desc','JustifyLeft'],['justifycenter','justifycenter.gif','lang_justifycenter_desc','JustifyCenter'],['justifyright','justifyright.gif','lang_justifyright_desc','JustifyRight'],['justifyfull','justifyfull.gif','lang_justifyfull_desc','JustifyFull'],['bullist','bullist.gif','lang_bullist_desc','InsertUnorderedList'],['numlist','numlist.gif','lang_numlist_desc','InsertOrderedList'],['outdent','outdent.gif','lang_outdent_desc','Outdent'],['indent','indent.gif','lang_indent_desc','Indent'],['cut','cut.gif','lang_cut_desc','Cut'],['copy','copy.gif','lang_copy_desc','Copy'],['paste','paste.gif','lang_paste_desc','Paste'],['undo','undo.gif','lang_undo_desc','Undo'],['redo','redo.gif','lang_redo_desc','Redo'],['link','link.gif','lang_link_desc','mceLink',true],['unlink','unlink.gif','lang_unlink_desc','unlink'],['image','image.gif','lang_image_desc','mceImage',true],['cleanup','cleanup.gif','lang_cleanup_desc','mceCleanup'],['help','help.gif','lang_help_desc','mceHelp'],['code','code.gif','lang_theme_code_desc','mceCodeEditor'],['hr','hr.gif','lang_theme_hr_desc','inserthorizontalrule'],['removeformat','removeformat.gif','lang_theme_removeformat_desc','removeformat'],['sub','sub.gif','lang_theme_sub_desc','subscript'],['sup','sup.gif','lang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_theme_forecolor_desc','forecolor',true],['forecolorpicker','forecolor.gif','lang_theme_forecolor_desc','forecolorpicker',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','HiliteColor',true],['backcolorpicker','backcolor.gif','lang_theme_backcolor_desc','backcolorpicker',true],['charmap','charmap.gif','lang_theme_charmap_desc','mceCharMap'],['visualaid','visualaid.gif','lang_theme_visualaid_desc','mceToggleVisualAid'],['anchor','anchor.gif','lang_theme_anchor_desc','mceInsertAnchor'],['newdocument','newdocument.gif','lang_newdocument_desc','mceNewDocument']],_buttonMap:'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',getControlHTML:function(button_name){var i,x,but;for(i=0;i<TinyMCE_AdvancedTheme._buttons.length;i++){but=TinyMCE_AdvancedTheme._buttons[i];if(but[0]==button_name&&(button_name=="forecolor"||button_name=="backcolor"))return tinyMCE.getMenuButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3]+"Menu",but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null));if(but[0]==button_name)return tinyMCE.getButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null))}switch(button_name){case"formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';var formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option value="&lt;'+lookup[x][0]+'&gt;">'+lookup[x][1]+'</option>'}}html+='</select>';return html;case"styleselect":return'<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case"fontselect":var fontHTML='<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';var iFonts='Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';var nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';var fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(i=0;i<fonts.length;i++){if(fonts[i]!=''){var parts=fonts[i].split('=');fontHTML+='<option value="'+parts[1]+'">'+parts[0]+'</option>'}}fontHTML+='</select>';return fontHTML;case"fontsizeselect":return'<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="0">{$lang_theme_font_size}</option>'+'<option value="1">1 (8 pt)</option>'+'<option value="2">2 (10 pt)</option>'+'<option value="3">3 (12 pt)</option>'+'<option value="4">4 (14 pt)</option>'+'<option value="5">5 (18 pt)</option>'+'<option value="6">6 (24 pt)</option>'+'<option value="7">7 (36 pt)</option>'+'</select>';case"|":case"separator":return'<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" alt="" />';case"spacer":return'<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" alt="" />';case"rowseparator":return'<br />'}return""},execCommand:function(editor_id,element,command,user_interface,value){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 true;case"mceLink":var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=inst.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return true}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);")}action="update"}var template=new Array();template['file']='link.htm';template['width']=310;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);if(inst.settings['insertlink_callback']){var returnVal=eval(inst.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])TinyMCE_AdvancedTheme._insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class'])}else{tinyMCE.openWindow(template,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"})}return true;case"mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;var inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return true;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h)}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:""}src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);")}action="update"}var template=new Array();template['file']='image.htm?src={$src}';template['width']=355;template['height']=265+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);if(inst.settings['insertimage_callback']){var returnVal=eval(inst.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])TinyMCE_AdvancedTheme._insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout'])}else tinyMCE.openWindow(template,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});return true;case"forecolor":var fcp=new TinyMCE_Layer(editor_id+'_fcPreview',false),p,img,elm;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!fcp.exists()){fcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=fcp.getElement();elm._editor_id=editor_id;elm._command="forecolor";elm._switchId=editor_id+"_forecolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_forecolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));fcp.moveTo(p.absLeft,p.absTop);fcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).foreColor;fcp.show();return false;case"forecolorpicker":this._pickColor(editor_id,'forecolor');return true;case"forecolorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_fcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_text_colors','forecolor'));tinyMCE.switchClass(editor_id+'_forecolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_forecolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"HiliteColor":var bcp=new TinyMCE_Layer(editor_id+'_bcPreview',false),p,img;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!bcp.exists()){bcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=bcp.getElement();elm._editor_id=editor_id;elm._command="HiliteColor";elm._switchId=editor_id+"_backcolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_backcolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));bcp.moveTo(p.absLeft,p.absTop);bcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).backColor;bcp.show();return false;case"HiliteColorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_bcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_background_colors','HiliteColor'));tinyMCE.switchClass(editor_id+'_backcolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_backcolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"backcolorpicker":this._pickColor(editor_id,'HiliteColor');return true;case"mceColorPicker":if(user_interface){var template=[];if(!value['callback']&&!value['color'])value['color']=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=380;template['height']=250;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:value['color']})}else{var savedVal=tinyMCE.lastColorPickerValue,elm;if(savedVal['callback']){savedVal['callback'](value);return true}elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;if(elm.onchange!=null&&elm.onchange!='')eval('elm.onchange();')}return true;case"mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",720));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",580));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case"mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceNewDocument":if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument'))))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,' ');return true}return false},getEditorTemplate:function(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array(),skip;for(var i=0;i<in_array.length;i++){skip=false;for(var j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true}}if(!skip){outArray[outArray.length]=in_array[i]}}return outArray}function addToArray(in_array,add_array){for(var i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i]}return in_array}var template=new Array();var deltaHeight=0;var resizing=tinyMCE.getParam("theme_advanced_resizing",false);var path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: '+(path?"block":"none")+'">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</option>';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option value="'+value+'">'+key+'</option>'}TinyMCE_AdvancedTheme._autoImportCSSClasses=false}switch(layoutManager){case"SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a href="#" accesskey="q" title="'+tinyMCE.getLang("lang_toolbar_focus")+'"';if(!tinyMCE.getParam("accessibility_focus"))toolbarHTML+=' onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"';toolbarHTML+='></a>';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br />";deltaHeight-=23}}toolbarHTML+='<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"></a>';template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';if(toolbarLocation=="top")template['html']+='<tr><td dir="ltr" class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>';if(statusbarLocation=="top"){template['html']+='<tr><td class="mceStatusbarTop" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom")template['html']+='<tr><td dir="ltr" class="mceToolbarBottom" align="'+toolbarAlign+'" height="1"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>';if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null}if(statusbarLocation=="bottom"){template['html']+='<tr><td class="mceStatusbarBottom" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='</tbody></table>';break;case"RowLayout":template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i<containers.length;i++){if(containers[i]=="mceEditor")template['html']+='<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom"}else if(i==0){pathClass="mceStatusbar"}else{deltaHeight-=2}template['html']+='<tr><td class="'+pathClass+'" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=22}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);curContainer=removeFromArray(curContainer,tinyMCE.getParam("theme_advanced_disable","",true,','));for(var j=0;j<curContainer.length;j++)curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);if(curContainer.length>0){curContainerHTML+="<br />";deltaHeight-=23}template['html']+='<tr><td class="'+curCSS+'" align="'+curAlign+'" height="1">'+curContainerHTML+'</td></tr>'}}template['html']+='</tbody></table>';break;case"CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);")}break}if(resizing)template['html']+='<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);if(!template['delta_width'])template['delta_width']=0;if(!template['delta_height'])template['delta_height']=deltaHeight;return template},initInstance:function(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_AdvancedTheme._resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true))}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink')},removeInstance:function(inst){new TinyMCE_Layer(inst.editorId+'_fcMenu').remove();new TinyMCE_Layer(inst.editorId+'_bcMenu').remove()},hideInstance:function(inst){TinyMCE_AdvancedTheme._hideMenus(inst.editorId)},_handleMenuEvent:function(e){var te=tinyMCE.isMSIE?window.event.srcElement:e.target;tinyMCE._menuButtonEvent(e.type=="mouseover"?"over":"out",document.getElementById(te._switchId));if(e.type=="click")tinyMCE.execInstanceCommand(te._editor_id,te._command)},_hideMenus:function(id){var fcml=new TinyMCE_Layer(id+'_fcMenu'),bcml=new TinyMCE_Layer(id+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(id+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(id+'_backcolor','mceMenuButton');bcml.hide()}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){var alignNode,breakOut,classNode;function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i<select_elm.options.length;i++){var ov=""+select_elm.options[i].value;if(first_index&&ov.toLowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return true}if(ov==value){select_elm.selectedIndex=i;return true}}}return false};if(node==null)return;var pathElm=document.getElementById(editor_id+"_path");var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();TinyMCE_AdvancedTheme._hideMenus(editor_id);if(pathElm){var parentNode=node;var path=new Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break}if(parentNode.nodeType==1&&tinyMCE.getAttrib(parentNode,"class").indexOf('mceItemHidden')==-1){path[path.length]=parentNode}parentNode=parentNode.parentNode}var html="";for(var i=path.length-1;i>=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName.indexOf("html:")==0)nodeName=nodeName.substring(5);if(nodeName=="b"){nodeName="strong"}if(nodeName=="i"){nodeName="em"}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+tinyMCE.xmlEncode(st)+" "}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+tinyMCE.xmlEncode(face)+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+tinyMCE.xmlEncode(size)+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+tinyMCE.xmlEncode(color)+" "}if(tinyMCE.getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" "}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(tinyMCE.getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+tinyMCE.xmlEncode(src)+" "}if(path[i].nodeName=='A'&&tinyMCE.getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+tinyMCE.xmlEncode(href)+" "}className=tinyMCE.getAttrib(path[i],"class");if((nodeName=="img"||nodeName=="span")&&className.indexOf('mceItem')!=-1){nodeName=className.replace(/mceItem([a-z]+)/gi,'$1').toLowerCase();nodeData=path[i].getAttribute('title')}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+tinyMCE.xmlEncode(anchor);nodeData=""}if(tinyMCE.getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+='<a title="'+nodeData+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" target="_self" class="mcePathItem">'+nodeName+'</a>';if(i>0){html+=" &raquo; "}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang_theme_path')+": "+html+'&#160;'}tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClass(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClass(editor_id+'_link','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_unlink','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_outdent','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_image','mceButtonNormal');tinyMCE.switchClass(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClass(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClass(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal');tinyMCE.switchClass(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal')}tinyMCE.switchClass(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal');if(undo_levels!=-1){tinyMCE.switchClass(editor_id+'_undo','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_redo','mceButtonDisabled')}if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClass(editor_id+'_outdent','mceButtonNormal');if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index}var selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");else selectByValue(selectElm,"")}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="")}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"")}else selectByValue(selectElm,"")}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size)}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"")}else selectByValue(selectElm,"0")}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case"left":tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case"right":tinyMCE.switchClass(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case"middle":case"center":tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case"justify":tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var ar=new Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClass(editor_id+ar[i+1],'mceButtonSelected')}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A"))tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected')}do{switch(node.nodeName){case"UL":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"OL":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break;case"HR":tinyMCE.switchClass(editor_id+'_hr','mceButtonSelected');break;case"IMG":if(tinyMCE.getAttrib(node,'name').indexOf('mce_')!=0&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_image','mceButtonSelected')}break}}while((node=node.parentNode)!=null)},_setupCSSClasses:function(editor_id){var i,selectElm;if(!TinyMCE_AdvancedTheme._autoImportCSSClasses)return;selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(i=0;i<csses.length;i++)selectElm.options[selectElm.options.length]=new Option(csses[i],csses[i])}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true')}},_setCookie:function(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie},_getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end))},_resizeTo:function(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px"}}inst.useCSS=false},_resizeEventHandler:function(e){var resizer=TinyMCE_AdvancedTheme._resizer;if(!resizer.resizing)return;e=typeof(e)=="undefined"?window.event:e;var dx=e.screenX-resizer.downX;var dy=e.screenY-resizer.downY;var resizeBox=resizer.resizeBox;var editorId=resizer.editorId;switch(e.type){case"mousemove":var w,h;w=resizer.width+dx;h=resizer.height+dy;w=w<1?1:w;h=h<1?1:h;if(resizer.horizontal)resizeBox.style.width=w+"px";resizeBox.style.height=h+"px";break;case"mouseup":TinyMCE_AdvancedTheme._setResizing(e,editorId,false);TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId),resizer.width+dx,resizer.height+dy,resizer.horizontal);if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var expires=new Date();expires.setTime(expires.getTime()+3600000*24*30);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires)}break}},_setResizing:function(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_AdvancedTheme._resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_AdvancedTheme._resizeEventHandler);resizer.eventHandlers=true}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true)}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE&&!tinyMCE.isOpera?"block":"table";tinyMCE.execCommand('mceResetDesignMode')}},_getColorHTML:function(id,n,cm){var i,h,cl;h='<span class="mceMenuLine"></span>';cl=tinyMCE.getParam(n,TinyMCE_AdvancedTheme._defColors).split(',');h+='<table class="mceColors"><tr>';for(i=0;i<cl.length;i++){c='tinyMCE.execInstanceCommand(\''+id+'\', \''+cm+'\', false, \'#'+cl[i]+'\');';h+='<td><a href="javascript:'+c+'" style="background-color: #'+cl[i]+'" onclick="'+c+';return false;"></a></td>';if((i+1)%8==0)h+='</tr><tr>'}h+='</tr></table>';if(tinyMCE.getParam("theme_advanced_more_colors",true))h+='<a href="javascript:void(0);" onclick="TinyMCE_AdvancedTheme._pickColor(\''+id+'\',\''+cm+'\');" class="mceMoreColors">'+tinyMCE.getLang('lang_more_colors')+'</a>';return h},_pickColor:function(id,cm){var inputColor,inst=tinyMCE.selectedInstance;if(cm=='forecolor'&&inst)inputColor=inst.foreColor;if((cm=='backcolor'||cm=='HiliteColor')&&inst)inputColor=inst.backColor;tinyMCE.execCommand('mceColorPicker',true,{color:inputColor,callback:function(c){tinyMCE.execInstanceCommand(id,cm,false,c)}})},_insertImage:function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand("mceInsertContent",false,tinyMCE.createTagHTML('img',{src:tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src),mce_src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout}))},_insertLink:function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(tinyMCE.selectedInstance&&tinyMCE.selectedElement&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){var doc=tinyMCE.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));tinyMCE.selectedElement.parentNode.replaceChild(linkElement,tinyMCE.selectedElement)}return}if(!tinyMCE.linkElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="'+tinyMCE.uniqueURL+'">'+tinyMCE.selectedInstance.selection.getSelectedHTML()+'</a>')}else tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i<elementArray.length;i++){var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class)}tinyMCE.linkElement=elementArray[0]}if(tinyMCE.linkElement){var mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(tinyMCE.linkElement,'href',href);tinyMCE.setAttrib(tinyMCE.linkElement,'mce_href',mhref);tinyMCE.setAttrib(tinyMCE.linkElement,'target',target);tinyMCE.setAttrib(tinyMCE.linkElement,'title',title);tinyMCE.setAttrib(tinyMCE.linkElement,'onclick',onclick);tinyMCE.setAttrib(tinyMCE.linkElement,'class',style_class)}tinyMCE.execCommand('mceEndUndoLevel')}};tinyMCE.addTheme("advanced",TinyMCE_AdvancedTheme);tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_template_src.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_template_src.js
@@ -1,1052 +1,1517 @@
-/**
- * $Id: editor_template_src.js 852 2008-05-27 05:52:09Z spocke $
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+/* Import theme specific language pack */

+tinyMCE.importThemeLanguagePack('advanced');

+

+var TinyMCE_AdvancedTheme = {

+	// Private theme fields

+	_defColors : "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",

+	_autoImportCSSClasses : true,

+	_resizer : {},

+	_buttons : [

+		// Control id, button img, button title, command, user_interface, value

+		['bold', '{$lang_bold_img}', 'lang_bold_desc', 'Bold'],

+		['italic', '{$lang_italic_img}', 'lang_italic_desc', 'Italic'],

+		['underline', '{$lang_underline_img}', 'lang_underline_desc', 'Underline'],

+		['strikethrough', 'strikethrough.gif', 'lang_striketrough_desc', 'Strikethrough'],

+		['justifyleft', 'justifyleft.gif', 'lang_justifyleft_desc', 'JustifyLeft'],

+		['justifycenter', 'justifycenter.gif', 'lang_justifycenter_desc', 'JustifyCenter'],

+		['justifyright', 'justifyright.gif', 'lang_justifyright_desc', 'JustifyRight'],

+		['justifyfull', 'justifyfull.gif', 'lang_justifyfull_desc', 'JustifyFull'],

+		['bullist', 'bullist.gif', 'lang_bullist_desc', 'InsertUnorderedList'],

+		['numlist', 'numlist.gif', 'lang_numlist_desc', 'InsertOrderedList'],

+		['outdent', 'outdent.gif', 'lang_outdent_desc', 'Outdent'],

+		['indent', 'indent.gif', 'lang_indent_desc', 'Indent'],

+		['cut', 'cut.gif', 'lang_cut_desc', 'Cut'],

+		['copy', 'copy.gif', 'lang_copy_desc', 'Copy'],

+		['paste', 'paste.gif', 'lang_paste_desc', 'Paste'],

+		['undo', 'undo.gif', 'lang_undo_desc', 'Undo'],

+		['redo', 'redo.gif', 'lang_redo_desc', 'Redo'],

+		['link', 'link.gif', 'lang_link_desc', 'mceLink', true],

+		['unlink', 'unlink.gif', 'lang_unlink_desc', 'unlink'],

+		['image', 'image.gif', 'lang_image_desc', 'mceImage', true],

+		['cleanup', 'cleanup.gif', 'lang_cleanup_desc', 'mceCleanup'],

+		['help', 'help.gif', 'lang_help_desc', 'mceHelp'],

+		['code', 'code.gif', 'lang_theme_code_desc', 'mceCodeEditor'],

+		['hr', 'hr.gif', 'lang_theme_hr_desc', 'inserthorizontalrule'],

+		['removeformat', 'removeformat.gif', 'lang_theme_removeformat_desc', 'removeformat'],

+		['sub', 'sub.gif', 'lang_theme_sub_desc', 'subscript'],

+		['sup', 'sup.gif', 'lang_theme_sup_desc', 'superscript'],

+		['forecolor', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolor', true],

+		['forecolorpicker', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolorpicker', true],

+		['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc', 'HiliteColor', true],

+		['backcolorpicker', 'backcolor.gif', 'lang_theme_backcolor_desc', 'backcolorpicker', true],

+		['charmap', 'charmap.gif', 'lang_theme_charmap_desc', 'mceCharMap'],

+		['visualaid', 'visualaid.gif', 'lang_theme_visualaid_desc', 'mceToggleVisualAid'],

+		['anchor', 'anchor.gif', 'lang_theme_anchor_desc', 'mceInsertAnchor'],

+		['newdocument', 'newdocument.gif', 'lang_newdocument_desc', 'mceNewDocument']

+	],

+

+	_buttonMap : 'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',

+

+	/**

+	 * Returns HTML code for the specificed control.

+	 */

+	getControlHTML : function(button_name) {

+		var i, x, but;

+

+		// Lookup button in button list

+		for (i=0; i<TinyMCE_AdvancedTheme._buttons.length; i++) {

+			but = TinyMCE_AdvancedTheme._buttons[i];

+

+			if (but[0] == button_name && (button_name == "forecolor" || button_name == "backcolor"))

+				return tinyMCE.getMenuButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3] + "Menu", but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));

+

+			if (but[0] == button_name)

+				return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));

+		}

+

+		// Custom controlls other than buttons

+		switch (button_name) {

+			case "formatselect":

+				var html = '<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';

+				var formats = tinyMCE.getParam("theme_advanced_blockformats", "p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');

+				var lookup = [

+					['p', '{$lang_theme_paragraph}'],

+					['address', '{$lang_theme_address}'],

+					['pre', '{$lang_theme_pre}'],

+					['h1', '{$lang_theme_h1}'],

+					['h2', '{$lang_theme_h2}'],

+					['h3', '{$lang_theme_h3}'],

+					['h4', '{$lang_theme_h4}'],

+					['h5', '{$lang_theme_h5}'],

+					['h6', '{$lang_theme_h6}'],

+					['div', '{$lang_theme_div}'],

+					['blockquote', '{$lang_theme_blockquote}'],

+					['code', '{$lang_theme_code}'],

+					['dt', '{$lang_theme_dt}'],

+					['dd', '{$lang_theme_dd}'],

+					['samp', '{$lang_theme_samp}']

+				];

+

+				html += '<option value="">{$lang_theme_block}</option>';

+

+				// Build format select

+				for (var i=0; i<formats.length; i++) {

+					for (var x=0; x<lookup.length; x++) {

+						if (formats[i] == lookup[x][0])

+							html += '<option value="&lt;' + lookup[x][0] + '&gt;">' + lookup[x][1] + '</option>';

+					}

+				}

+

+				html += '</select>';

+

+				return html;

+

+			case "styleselect":

+				return '<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';

+

+			case "fontselect":

+				var fontHTML = '<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';

+				var iFonts = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';

+				var nFonts = 'Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';

+				var fonts = tinyMCE.getParam("theme_advanced_fonts", nFonts).split(';');

+				for (i=0; i<fonts.length; i++) {

+					if (fonts[i] != '') {

+						var parts = fonts[i].split('=');

+						fontHTML += '<option value="' + parts[1] + '">' + parts[0] + '</option>';

+					}

+				}

+

+				fontHTML += '</select>';

+				return fontHTML;

+

+			case "fontsizeselect":

+				return '<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+

+						'<option value="0">{$lang_theme_font_size}</option>'+

+						'<option value="1">1 (8 pt)</option>'+

+						'<option value="2">2 (10 pt)</option>'+

+						'<option value="3">3 (12 pt)</option>'+

+						'<option value="4">4 (14 pt)</option>'+

+						'<option value="5">5 (18 pt)</option>'+

+						'<option value="6">6 (24 pt)</option>'+

+						'<option value="7">7 (36 pt)</option>'+

+						'</select>';

+

+			case "|":

+			case "separator":

+				return '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" alt="" />';

+

+			case "spacer":

+				return '<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" alt="" />';

+

+			case "rowseparator":

+				return '<br />';

+		}

+

+		return "";

+	},

+

+	/**

+	 * Theme specific execcommand handling.

+	 */

+	execCommand : function(editor_id, element, command, user_interface, value) {

+		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 true;

+

+			case "mceLink":

+				var inst = tinyMCE.getInstanceById(editor_id);

+				var doc = inst.getDoc();

+				var selectedText = "";

+

+				if (tinyMCE.isMSIE) {

+					var rng = doc.selection.createRange();

+					selectedText = rng.text;

+				} else

+					selectedText = inst.getSel().toString();

+

+				if (!tinyMCE.linkElement) {

+					if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0))

+						return true;

+				}

+

+				var href = "", target = "", title = "", onclick = "", action = "insert", style_class = "";

+

+				if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a")

+					tinyMCE.linkElement = tinyMCE.selectedElement;

+

+				// Is anchor not a link

+				if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "")

+					tinyMCE.linkElement = null;

+

+				if (tinyMCE.linkElement) {

+					href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href');

+					target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target');

+					title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title');

+					onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');

+					style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class');

+

+					// Try old onclick to if copy/pasted content

+					if (onclick == "")

+						onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick');

+

+					onclick = tinyMCE.cleanupEventStr(onclick);

+

+					href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");

+

+					// Use mce_href if defined

+					mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href');

+					if (mceRealHref != "") {

+						href = mceRealHref;

+

+						if (tinyMCE.getParam('convert_urls'))

+							href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);");

+					}

+

+					action = "update";

+				}

+

+				var template = new Array();

+

+				template['file'] = 'link.htm';

+				template['width'] = 310;

+				template['height'] = 200;

+

+				// Language specific width and height addons

+				template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);

+

+				if (inst.settings['insertlink_callback']) {

+					var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);");

+					if (returnVal && returnVal['href'])

+						TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']);

+				} else {

+					tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"});

+				}

+

+				return true;

+

+			case "mceImage":

+				var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = "";

+				var title = "", onmouseover = "", onmouseout = "", action = "insert";

+				var img = tinyMCE.imgElement;

+				var inst = tinyMCE.getInstanceById(editor_id);

+

+				if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {

+					img = tinyMCE.selectedElement;

+					tinyMCE.imgElement = img;

+				}

+

+				if (img) {

+					// Is it a internal MCE visual aid image, then skip this one.

+					if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0)

+						return true;

+

+					src = tinyMCE.getAttrib(img, 'src');

+					alt = tinyMCE.getAttrib(img, 'alt');

+

+					// Try polling out the title

+					if (alt == "")

+						alt = tinyMCE.getAttrib(img, 'title');

+

+					// Fix width/height attributes if the styles is specified

+					if (tinyMCE.isGecko) {

+						var w = img.style.width;

+						if (w != null && w != "")

+							img.setAttribute("width", w);

+

+						var h = img.style.height;

+						if (h != null && h != "")

+							img.setAttribute("height", h);

+					}

+

+					border = tinyMCE.getAttrib(img, 'border');

+					hspace = tinyMCE.getAttrib(img, 'hspace');

+					vspace = tinyMCE.getAttrib(img, 'vspace');

+					width = tinyMCE.getAttrib(img, 'width');

+					height = tinyMCE.getAttrib(img, 'height');

+					align = tinyMCE.getAttrib(img, 'align');

+					onmouseover = tinyMCE.getAttrib(img, 'onmouseover');

+					onmouseout = tinyMCE.getAttrib(img, 'onmouseout');

+					title = tinyMCE.getAttrib(img, 'title');

+

+					// Is realy specified?

+					if (tinyMCE.isMSIE) {

+						width = img.attributes['width'].specified ? width : "";

+						height = img.attributes['height'].specified ? height : "";

+					}

+

+					//onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover));

+					//onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout));

+

+					src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");

+

+					// Use mce_src if defined

+					mceRealSrc = tinyMCE.getAttrib(img, 'mce_src');

+					if (mceRealSrc != "") {

+						src = mceRealSrc;

+

+						if (tinyMCE.getParam('convert_urls'))

+							src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);");

+					}

+

+					//if (onmouseover != "")

+					//	onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);");

+

+					//if (onmouseout != "")

+					//	onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);");

+

+					action = "update";

+				}

+

+				var template = new Array();

+

+				template['file'] = 'image.htm?src={$src}';

+				template['width'] = 355;

+				template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0);

+

+				// Language specific width and height addons

+				template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);

+

+				if (inst.settings['insertimage_callback']) {

+					var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");

+					if (returnVal && returnVal['src'])

+						TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']);

+				} else

+					tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"});

+

+				return true;

+

+			case "forecolor":

+				var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm;

+

+				TinyMCE_AdvancedTheme._hideMenus(editor_id);

+

+				if (!fcp.exists()) {

+					fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));

+					elm = fcp.getElement();

+					elm._editor_id = editor_id;

+					elm._command = "forecolor";

+					elm._switchId = editor_id + "_forecolor";

+					tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);

+					tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);

+					tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);

+				}

+

+				img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0];

+				p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));

+

+				fcp.moveTo(p.absLeft, p.absTop);

+				fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor;

+				fcp.show();

+

+				return false;

+

+			case "forecolorpicker":

+				this._pickColor(editor_id, 'forecolor');

+				return true;

+

+			case "forecolorMenu":

+				TinyMCE_AdvancedTheme._hideMenus(editor_id);

+

+				// Create color layer

+				var ml = new TinyMCE_Layer(editor_id + '_fcMenu');

+

+				if (!ml.exists())

+					ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor'));

+

+				tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus');

+				ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl');

+

+				ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);

+

+				if (tinyMCE.isOpera)

+					ml.moveBy(0, -2);

+

+				ml.show();

+			return true;

+

+			case "HiliteColor":

+				var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img;

+

+				TinyMCE_AdvancedTheme._hideMenus(editor_id);

+

+				if (!bcp.exists()) {

+					bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));

+					elm = bcp.getElement();

+					elm._editor_id = editor_id;

+					elm._command = "HiliteColor";

+					elm._switchId = editor_id + "_backcolor";

+					tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);

+					tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);

+					tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);

+				}

+

+				img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0];

+				p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));

+

+				bcp.moveTo(p.absLeft, p.absTop);

+				bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor;

+				bcp.show();

+

+				return false;

+

+			case "HiliteColorMenu":

+				TinyMCE_AdvancedTheme._hideMenus(editor_id);

+

+				// Create color layer

+				var ml = new TinyMCE_Layer(editor_id + '_bcMenu');

+

+				if (!ml.exists())

+					ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor'));

+

+				tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus');

+				ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl');

+

+				ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);

+

+				if (tinyMCE.isOpera)

+					ml.moveBy(0, -2);

+

+				ml.show();

+			return true;

+	

+			case "backcolorpicker":

+				this._pickColor(editor_id, 'HiliteColor');

+				return true;

+

+			case "mceColorPicker":

+				if (user_interface) {

+					var template = [];

+	

+					if (!value['callback'] && !value['color'])

+						value['color'] = value['document'].getElementById(value['element_id']).value;

+

+					template['file'] = 'color_picker.htm';

+					template['width'] = 380;

+					template['height'] = 250;

+					template['close_previous'] = "no";

+

+					template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0);

+					template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0);

+

+					if (typeof(value['store_selection']) == "undefined")

+						value['store_selection'] = true;

+

+					tinyMCE.lastColorPickerValue = value;

+					tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : value['color']});

+				} else {

+					var savedVal = tinyMCE.lastColorPickerValue, elm;

+

+					if (savedVal['callback']) {

+						savedVal['callback'](value);

+						return true;

+					}

+

+					elm = savedVal['document'].getElementById(savedVal['element_id']);

+					elm.value = value;

+

+					if (elm.onchange != null && elm.onchange != '')

+						eval('elm.onchange();');

+				}

+			return true;

+

+			case "mceCodeEditor":

+				var template = new Array();

+

+				template['file'] = 'source_editor.htm';

+				template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 720));

+				template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 580));

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"});

+				return true;

+

+			case "mceCharMap":

+				var template = new Array();

+

+				template['file'] = 'charmap.htm';

+				template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0);

+				template['height'] = 250;

+

+				template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0);

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});

+				return true;

+

+			case "mceInsertAnchor":

+				var template = new Array();

+

+				template['file'] = 'anchor.htm';

+				template['width'] = 320;

+				template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0);

+

+				template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0);

+				template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0);

+

+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});

+				return true;

+

+			case "mceNewDocument":

+				if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument'))))

+					tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ' ');

+

+				return true;

+		}

+

+		return false;

+	},

+

+	/**

+	 * Editor instance template function.

+	 */

+	getEditorTemplate : function(settings, editorId) {

+		function removeFromArray(in_array, remove_array) {

+			var outArray = new Array(), skip;

+			

+			for (var i=0; i<in_array.length; i++) {

+				skip = false;

+

+				for (var j=0; j<remove_array.length; j++) {

+					if (in_array[i] == remove_array[j]) {

+						skip = true;

+					}

+				}

+

+				if (!skip) {

+					outArray[outArray.length] = in_array[i];

+				}

+			}

+

+			return outArray;

+		}

+

+		function addToArray(in_array, add_array) {

+			for (var i=0; i<add_array.length; i++) {

+				in_array[in_array.length] = add_array[i];

+			}

+

+			return in_array;

+		}

+

+		var template = new Array();

+		var deltaHeight = 0;

+		var resizing = tinyMCE.getParam("theme_advanced_resizing", false);

+		var path = tinyMCE.getParam("theme_advanced_path", true);

+		var statusbarHTML = '<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: ' + (path ? "block" : "none") + '">&#160;</div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: ' + (resizing ? "block" : "none") + '" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';

+		var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout");

+

+		// Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY!

+		var styleSelectHTML = '<option value="">{$lang_theme_style_select}</option>';

+		if (settings['theme_advanced_styles']) {

+			var stylesAr = settings['theme_advanced_styles'].split(';');

+			

+			for (var i=0; i<stylesAr.length; i++) {

+				var key, value;

+

+				key = stylesAr[i].split('=')[0];

+				value = stylesAr[i].split('=')[1];

+

+				styleSelectHTML += '<option value="' + value + '">' + key + '</option>';

+			}

+

+			TinyMCE_AdvancedTheme._autoImportCSSClasses = false;

+		}

+

+		switch(layoutManager) {

+			case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)...

+				var toolbarHTML = "";

+				var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");

+				var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");

+				var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity

+				var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation);

+				var defVals = {

+					theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",

+					theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",

+					theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap"

+				};

+

+				// Add accessibility control

+				toolbarHTML += '<a href="#" accesskey="q" title="' + tinyMCE.getLang("lang_toolbar_focus") + '"';

+

+				if (!tinyMCE.getParam("accessibility_focus"))

+					toolbarHTML += ' onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"';

+

+				toolbarHTML += '></a>';

+

+				// Render rows

+				for (var i=1; i<100; i++) {

+					var def = defVals["theme_advanced_buttons" + i];

+

+					var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ? '' : def, true, ',');

+					if (buttons.length == 0)

+						break;

+

+					buttons = removeFromArray(buttons, tinyMCE.getParam("theme_advanced_disable", "", true, ','));

+					buttons = addToArray(buttons, tinyMCE.getParam("theme_advanced_buttons" + i + "_add", "", true, ','));

+					buttons = addToArray(tinyMCE.getParam("theme_advanced_buttons" + i + "_add_before", "", true, ','), buttons);

+

+					for (var b=0; b<buttons.length; b++)

+						toolbarHTML += tinyMCE.getControlHTML(buttons[b]);

+

+					if (buttons.length > 0) {

+						toolbarHTML += "<br />";

+						deltaHeight -= 23;

+					}

+				}

+

+				// Add accessibility control

+				toolbarHTML += '<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"></a>';

+

+				// Setup template html

+				template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';

+

+				if (toolbarLocation == "top")

+					template['html'] += '<tr><td dir="ltr" class="mceToolbarTop" align="' + toolbarAlign + '" height="1" nowrap="nowrap"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';

+

+				if (statusbarLocation == "top") {

+					template['html'] += '<tr><td class="mceStatusbarTop" height="1">' + statusbarHTML + '</td></tr>';

+					deltaHeight -= 23;

+				}

+

+				template['html'] += '<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';

+

+				if (toolbarLocation == "bottom")

+					template['html'] += '<tr><td dir="ltr" class="mceToolbarBottom" align="' + toolbarAlign + '" height="1"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';

+

+				// External toolbar changes

+				if (toolbarLocation == "external") {

+					var bod = document.body;

+					var elm = document.createElement ("div");

+

+					toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML);

+					toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId});

+

+					elm.className = "mceToolbarExternal";

+					elm.id = editorId+"_toolbar";

+					elm.innerHTML = '<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';

+					bod.appendChild (elm);

+					// bod.style.marginTop = elm.offsetHeight + "px";

+

+					deltaHeight = 0;

+					tinyMCE.getInstanceById(editorId).toolbarElement = elm;

+

+					//template['html'] = '<div id="mceExternalToolbar" align="center" class="mceToolbarExternal"><table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table></div>' + template["html"];

+				} else {

+					tinyMCE.getInstanceById(editorId).toolbarElement = null;

+				}

+

+				if (statusbarLocation == "bottom") {

+					template['html'] += '<tr><td class="mceStatusbarBottom" height="1">' + statusbarHTML + '</td></tr>';

+					deltaHeight -= 23;

+				}

+

+				template['html'] += '</tbody></table>';

+				//"SimpleLayout"

+			break;

+

+			case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom.

+				template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';

+

+				var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");

+				var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container");

+				var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center");

+

+				//Render Containers:

+				for (var i = 0; i < containers.length; i++)

+				{

+					if (containers[i] == "mceEditor") //Exceptions for mceEditor and ...

+						template['html'] += '<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';

+					else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath:

+					{

+						var pathClass = "mceStatusbar";

+

+						if (i == containers.length-1)

+						{

+							pathClass = "mceStatusbarBottom";

+						}

+						else if (i == 0)

+						{

+							pathClass = "mceStatusbar";

+						}

+						else

+						{

+							deltaHeight-=2;

+						}

+

+						template['html'] += '<tr><td class="' + pathClass + '" height="1">' + statusbarHTML + '</td></tr>';

+						deltaHeight -= 22;

+					} else { // Render normal Container

+						var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ',');

+						var curContainerHTML = "";

+						var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);

+						var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);

+

+						curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ','));

+

+						for (var j=0; j<curContainer.length; j++)

+							curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);

+

+						if (curContainer.length > 0) {

+							curContainerHTML += "<br />";

+							deltaHeight -= 23;

+						}

+

+						template['html'] += '<tr><td class="' + curCSS + '" align="' + curAlign + '" height="1">' + curContainerHTML + '</td></tr>';

+					}

+				}

+

+				template['html'] += '</tbody></table>';

+				//RowLayout

+			break;

+

+			case "CustomLayout" : //User defined layout callback...

+				var customLayout = tinyMCE.getParam("theme_advanced_custom_layout","");

+

+				if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") {

+					template = eval(customLayout + "(template);");

+				}

+			break;

+		}

+

+		if (resizing)

+			template['html'] += '<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';

+

+		template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML);

+

+		// Set to default values

+		if (!template['delta_width'])

+			template['delta_width'] = 0;

+

+		if (!template['delta_height'])

+			template['delta_height'] = deltaHeight;

+

+		return template;

+	},

+

+	initInstance : function(inst) {

+		if (tinyMCE.getParam("theme_advanced_resizing", false)) {

+			if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {

+				var w = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_width");

+				var h = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_height");

+

+				TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true));

+			}

+		}

+

+		inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink');

+	},

+

+	removeInstance : function(inst) {

+		new TinyMCE_Layer(inst.editorId + '_fcMenu').remove();

+		new TinyMCE_Layer(inst.editorId + '_bcMenu').remove();

+	},

+

+	hideInstance : function(inst) {

+		TinyMCE_AdvancedTheme._hideMenus(inst.editorId);

+	},

+

+	_handleMenuEvent : function(e) {

+		var te = tinyMCE.isMSIE ? window.event.srcElement : e.target;

+		tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId));

+

+		if (e.type == "click")

+			tinyMCE.execInstanceCommand(te._editor_id, te._command);

+	},

+

+	_hideMenus : function(id) {

+		var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu');

+

+		if (fcml.exists() && fcml.isVisible()) {

+			tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton');

+			fcml.hide();

+		}

+

+		if (bcml.exists() && bcml.isVisible()) {

+			tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton');

+			bcml.hide();

+		}

+	},

+

+	/**

+	 * Node change handler.

+	 */

+	handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) {

+		var alignNode, breakOut, classNode;

+

+		function selectByValue(select_elm, value, first_index) {

+			first_index = typeof(first_index) == "undefined" ? false : true;

+

+			if (select_elm) {

+				for (var i=0; i<select_elm.options.length; i++) {

+					var ov = "" + select_elm.options[i].value;

+

+					if (first_index && ov.toLowerCase().indexOf(value.toLowerCase()) == 0) {

+						select_elm.selectedIndex = i;

+						return true;

+					}

+

+					if (ov == value) {

+						select_elm.selectedIndex = i;

+						return true;

+					}

+				}

+			}

+

+			return false;

+		};

+

+		// No node provided

+		if (node == null)

+			return;

+

+		// Update path

+		var pathElm = document.getElementById(editor_id + "_path");

+		var inst = tinyMCE.getInstanceById(editor_id);

+		var doc = inst.getDoc();

+		TinyMCE_AdvancedTheme._hideMenus(editor_id);

+

+		if (pathElm) {

+			// Get node path

+			var parentNode = node;

+			var path = new Array();

+			

+			while (parentNode != null) {

+				if (parentNode.nodeName.toUpperCase() == "BODY") {

+					break;

+				}

+

+				// Only append element nodes to path

+				if (parentNode.nodeType == 1 && tinyMCE.getAttrib(parentNode, "class").indexOf('mceItemHidden') == -1) {

+					path[path.length] = parentNode;

+				}

+

+				parentNode = parentNode.parentNode;

+			}

+

+			// Setup HTML

+			var html = "";

+			for (var i=path.length-1; i>=0; i--) {

+				var nodeName = path[i].nodeName.toLowerCase();

+				var nodeData = "";

+

+				if (nodeName.indexOf("html:") == 0)

+					nodeName = nodeName.substring(5);

+

+				if (nodeName == "b") {

+					nodeName = "strong";

+				}

+

+				if (nodeName == "i") {

+					nodeName = "em";

+				}

+

+				if (nodeName == "span") {

+					var cn = tinyMCE.getAttrib(path[i], "class");

+					if (cn != "" && cn.indexOf('mceItem') == -1)

+						nodeData += "class: " + cn + " ";

+

+					var st = tinyMCE.getAttrib(path[i], "style");

+					if (st != "") {

+						st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st));

+						nodeData += "style: " + tinyMCE.xmlEncode(st) + " ";

+					}

+				}

+

+				if (nodeName == "font") {

+					if (tinyMCE.getParam("convert_fonts_to_spans"))

+						nodeName = "span";

+

+					var face = tinyMCE.getAttrib(path[i], "face");

+					if (face != "")

+						nodeData += "font: " + tinyMCE.xmlEncode(face) + " ";

+

+					var size = tinyMCE.getAttrib(path[i], "size");

+					if (size != "")

+						nodeData += "size: " + tinyMCE.xmlEncode(size) + " ";

+

+					var color = tinyMCE.getAttrib(path[i], "color");

+					if (color != "")

+						nodeData += "color: " + tinyMCE.xmlEncode(color) + " ";

+				}

+

+				if (tinyMCE.getAttrib(path[i], 'id') != "") {

+					nodeData += "id: " + path[i].getAttribute('id') + " ";

+				}

+

+				var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);

+				if (className != "" && className.indexOf('mceItem') == -1)

+					nodeData += "class: " + className + " ";

+

+				if (tinyMCE.getAttrib(path[i], 'src') != "") {

+					var src = tinyMCE.getAttrib(path[i], "mce_src");

+

+					if (src == "")

+						 src = tinyMCE.getAttrib(path[i], "src");

+

+					nodeData += "src: " + tinyMCE.xmlEncode(src) + " ";

+				}

+

+				if (path[i].nodeName == 'A' && tinyMCE.getAttrib(path[i], 'href') != "") {

+					var href = tinyMCE.getAttrib(path[i], "mce_href");

+

+					if (href == "")

+						 href = tinyMCE.getAttrib(path[i], "href");

+

+					nodeData += "href: " + tinyMCE.xmlEncode(href) + " ";

+				}

+

+				className = tinyMCE.getAttrib(path[i], "class");

+				if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) {

+					nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase();

+					nodeData = path[i].getAttribute('title');

+				}

+

+				if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") {

+					nodeName = "a";

+					nodeName += "#" + tinyMCE.xmlEncode(anchor);

+					nodeData = "";

+				}

+

+				if (tinyMCE.getAttrib(path[i], 'name').indexOf("mce_") != 0) {

+					var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false);

+					if (className != "" && className.indexOf('mceItem') == -1) {

+						nodeName += "." + className;

+					}

+				}

+

+				var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');';

+				html += '<a title="' + nodeData + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" target="_self" class="mcePathItem">' + nodeName + '</a>';

+

+				if (i > 0) {

+					html += " &raquo; ";

+				}

+			}

+

+			pathElm.innerHTML = '<a href="#" accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') + ": " + html + '&#160;';

+		}

+

+		// Reset old states

+		tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled');

+		tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal');

+

+		if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1)

+			tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected');

+

+		// Get link

+		var anchorLink = tinyMCE.getParentElement(node, "a", "href");

+

+		if (anchorLink || any_selection) {

+			tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');

+			tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal');

+		}

+

+		// Handle visual aid

+		tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal');

+

+		if (undo_levels != -1) {

+			tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled');

+			tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled');

+		}

+

+		// Within li, blockquote

+		if (tinyMCE.getParentElement(node, "li,blockquote"))

+			tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal');

+

+		// Has redo levels

+		if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0))

+			tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal');

+

+		// Has undo levels

+		if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))

+			tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal');

+

+		// Select class in select box

+		var selectElm = document.getElementById(editor_id + "_styleSelect");

+		

+		if (selectElm) {

+			TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);

+

+			classNode = node;

+			breakOut = false;

+			var index = 0;

+

+			do {

+				if (classNode && classNode.className) {

+					for (var i=0; i<selectElm.options.length; i++) {

+						if (selectElm.options[i].value == classNode.className) {

+							index = i;

+							breakOut = true;

+							break;

+						}

+					}

+				}

+			} while (!breakOut && classNode != null && (classNode = classNode.parentNode) != null);

+

+			selectElm.selectedIndex = index;

+		}

+

+		// Select formatblock

+		var selectElm = document.getElementById(editor_id + "_formatSelect");

+		if (selectElm) {

+			var elm = tinyMCE.getParentElement(node, "p,div,h1,h2,h3,h4,h5,h6,pre,address");

+

+			if (elm)

+				selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() + ">");

+			else

+				selectByValue(selectElm, "");

+		}

+

+		// Select fontselect

+		var selectElm = document.getElementById(editor_id + "_fontNameSelect");

+		if (selectElm) {

+			if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) {

+				var face = inst.queryCommandValue('FontName');

+

+				face = face == null || face == "" ? "" : face;

+

+				selectByValue(selectElm, face, face != "");

+			} else {

+				var elm = tinyMCE.getParentElement(node, "font", "face");

+

+				if (elm) {

+					var family = tinyMCE.getAttrib(elm, "face");

+

+					if (family == '')

+						family = '' + elm.style.fontFamily;

+

+					if (!selectByValue(selectElm, family, family != ""))

+						selectByValue(selectElm, "");

+				} else

+					selectByValue(selectElm, "");

+			}

+		}

+

+		// Select fontsize

+		var selectElm = document.getElementById(editor_id + "_fontSizeSelect");

+		if (selectElm) {

+			if (!tinyMCE.isSafari && !tinyMCE.isOpera) {

+				var size = inst.queryCommandValue('FontSize');

+				selectByValue(selectElm, size == null || size == "" ? "0" : size);

+			} else {

+				var elm = tinyMCE.getParentElement(node, "font", "size");

+				if (elm) {

+					var size = tinyMCE.getAttrib(elm, "size");

+

+					if (size == '') {

+						var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px');

+

+						size = '' + elm.style.fontSize;

+

+						for (var i=0; i<sizes.length; i++) {

+							if (('' + sizes[i]) == size) {

+								size = i;

+								break;

+							}

+						}

+					}

+

+					if (!selectByValue(selectElm, size))

+						selectByValue(selectElm, "");

+				} else

+					selectByValue(selectElm, "0");

+			}

+		}

+

+		// Handle align attributes

+		alignNode = node;

+		breakOut = false;

+		do {

+			if (!alignNode.getAttribute || !alignNode.getAttribute('align'))

+				continue;

+

+			switch (alignNode.getAttribute('align').toLowerCase()) {

+				case "left":

+					tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonSelected');

+					breakOut = true;

+				break;

+

+				case "right":

+					tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonSelected');

+					breakOut = true;

+				break;

+

+				case "middle":

+				case "center":

+					tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');

+					breakOut = true;

+				break;

+

+				case "justify":

+					tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonSelected');

+					breakOut = true;

+				break;

+			}

+		} while (!breakOut && (alignNode = alignNode.parentNode) != null);

+

+		// Div justification

+		var div = tinyMCE.getParentElement(node, "div");

+		if (div && div.style.textAlign == "center")

+			tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonSelected');

+

+		// Do special text

+		if (!setup_content) {

+			// , "JustifyLeft", "_justifyleft", "JustifyCenter", "justifycenter", "JustifyRight", "justifyright", "JustifyFull", "justifyfull", "InsertUnorderedList", "bullist", "InsertOrderedList", "numlist", "InsertUnorderedList", "bullist", "Outdent", "outdent", "Indent", "indent", "subscript", "sub"

+			var ar = new Array("Bold", "_bold", "Italic", "_italic", "Strikethrough", "_strikethrough", "superscript", "_sup", "subscript", "_sub");

+			for (var i=0; i<ar.length; i+=2) {

+				if (inst.queryCommandState(ar[i]))

+					tinyMCE.switchClass(editor_id + ar[i+1], 'mceButtonSelected');

+			}

+

+			if (inst.queryCommandState("Underline") && (node.parentNode == null || node.parentNode.nodeName != "A"))

+				tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');

+		}

+

+		// Handle elements

+		do {

+			switch (node.nodeName) {

+				case "UL":

+					tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');

+				break;

+

+				case "OL":

+					tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');

+				break;

+

+				case "HR":

+					 tinyMCE.switchClass(editor_id + '_hr', 'mceButtonSelected');

+				break;

+

+				case "IMG":

+				if (tinyMCE.getAttrib(node, 'name').indexOf('mce_') != 0 && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {

+					tinyMCE.switchClass(editor_id + '_image', 'mceButtonSelected');

+				}

+				break;

+			}

+		} while ((node = node.parentNode) != null);

+	},

+

+	// Private theme internal functions

+

+	// This function auto imports CSS classes into the class selection droplist

+	_setupCSSClasses : function(editor_id) {

+		var i, selectElm;

+

+		if (!TinyMCE_AdvancedTheme._autoImportCSSClasses)

+			return;

+

+		selectElm = document.getElementById(editor_id + '_styleSelect');

+

+		if (selectElm && selectElm.getAttribute('cssImported') != 'true') {

+			var csses = tinyMCE.getCSSClasses(editor_id);

+			if (csses && selectElm)	{

+				for (i=0; i<csses.length; i++)

+					selectElm.options[selectElm.options.length] = new Option(csses[i], csses[i]);

+			}

+

+			// Only do this once

+			if (csses != null && csses.length > 0)

+				selectElm.setAttribute('cssImported', 'true');

+		}

+	},

+

+	_setCookie : function(name, value, expires, path, domain, secure) {

+		var curCookie = name + "=" + escape(value) +

+			((expires) ? "; expires=" + expires.toGMTString() : "") +

+			((path) ? "; path=" + escape(path) : "") +

+			((domain) ? "; domain=" + domain : "") +

+			((secure) ? "; secure" : "");

+

+		document.cookie = curCookie;

+	},

+

+	_getCookie : function(name) {

+		var dc = document.cookie;

+		var prefix = name + "=";

+		var begin = dc.indexOf("; " + prefix);

+

+		if (begin == -1) {

+			begin = dc.indexOf(prefix);

+

+			if (begin != 0)

+				return null;

+		} else

+			begin += 2;

+

+		var end = document.cookie.indexOf(";", begin);

+

+		if (end == -1)

+			end = dc.length;

+

+		return unescape(dc.substring(begin + prefix.length, end));

+	},

+

+	_resizeTo : function(inst, w, h, set_w) {

+		var editorContainer = document.getElementById(inst.editorId + '_parent');

+		var tableElm = editorContainer.firstChild;

+		var iframe = inst.iframeElement;

+

+		if (w == null || w == "null") {

+			set_w = false;

+			w = 0;

+		}

+

+		if (h == null || h == "null")

+			return;

+

+		w = parseInt(w);

+		h = parseInt(h);

+

+		if (tinyMCE.isGecko) {

+			w += 2;

+			h += 2;

+		}

+

+		var dx = w - tableElm.clientWidth;

+		var dy = h - tableElm.clientHeight;

+

+		w = w < 1 ? 30 : w;

+		h = h < 1 ? 30 : h;

+

+		if (set_w)

+			tableElm.style.width = w + "px";

+

+		tableElm.style.height = h + "px";

+

+		iw = iframe.clientWidth + dx;

+		ih = iframe.clientHeight + dy;

+

+		iw = iw < 1 ? 30 : iw;

+		ih = ih < 1 ? 30 : ih;

+

+		if (tinyMCE.isGecko) {

+			iw -= 2;

+			ih -= 2;

+		}

+

+		if (set_w)

+			iframe.style.width = iw + "px";

+

+		iframe.style.height = ih + "px";

+

+		// Is it to small, make it bigger again

+		if (set_w) {

+			var tableBodyElm = tableElm.firstChild;

+			var minIframeWidth = tableBodyElm.scrollWidth;

+			if (inst.iframeElement.clientWidth < minIframeWidth) {

+				dx = minIframeWidth - inst.iframeElement.clientWidth;

+

+				inst.iframeElement.style.width = (iw + dx) + "px";

+			}

+		}

+

+		// Remove pesky table controls

+		inst.useCSS = false;

+	},

+

+	/**

+	 * Handles resizing events.

+	 */

+	_resizeEventHandler : function(e) {

+		var resizer = TinyMCE_AdvancedTheme._resizer;

+

+		// Do nothing

+		if (!resizer.resizing)

+			return;

+

+		e = typeof(e) == "undefined" ? window.event : e;

+

+		var dx = e.screenX - resizer.downX;

+		var dy = e.screenY - resizer.downY;

+		var resizeBox = resizer.resizeBox;

+		var editorId = resizer.editorId;

+

+		switch (e.type) {

+			case "mousemove":

+				var w, h;

+

+				w = resizer.width + dx;

+				h = resizer.height + dy;

+

+				w = w < 1 ? 1 : w;

+				h = h < 1 ? 1 : h;

+

+				if (resizer.horizontal)

+					resizeBox.style.width = w + "px";

+

+				resizeBox.style.height = h + "px";

+				break;

+

+			case "mouseup":

+				TinyMCE_AdvancedTheme._setResizing(e, editorId, false);

+				TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal);

+

+				// Expire in a month

+				if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) {

+					var expires = new Date();

+					expires.setTime(expires.getTime() + 3600000 * 24 * 30);

+

+					// Set the cookies

+					TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires);

+					TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires);

+				}

+				break;

+		}

+	},

+

+	/**

+	 * Starts/stops the editor resizing.

+	 */

+	_setResizing : function(e, editor_id, state) {

+		e = typeof(e) == "undefined" ? window.event : e;

+

+		var resizer = TinyMCE_AdvancedTheme._resizer;

+		var editorContainer = document.getElementById(editor_id + '_parent');

+		var editorArea = document.getElementById(editor_id + '_parent').firstChild;

+		var resizeBox = document.getElementById(editor_id + '_resize_box');

+		var inst = tinyMCE.getInstanceById(editor_id);

+

+		if (state) {

+			// Place box over editor area

+			var width = editorArea.clientWidth;

+			var height = editorArea.clientHeight;

+

+			resizeBox.style.width = width + "px";

+			resizeBox.style.height = height + "px";

+

+			resizer.iframeWidth = inst.iframeElement.clientWidth;

+			resizer.iframeHeight = inst.iframeElement.clientHeight;

+

+			// Hide editor and show resize box

+			editorArea.style.display = "none";

+			resizeBox.style.display = "block";

+

+			// Add event handlers, only once

+			if (!resizer.eventHandlers) {

+				if (tinyMCE.isMSIE)

+					tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);

+				else

+					tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler);

+

+				tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler);

+

+				resizer.eventHandlers = true;

+			}

+

+			resizer.resizing = true;

+			resizer.downX = e.screenX;

+			resizer.downY = e.screenY;

+			resizer.width = parseInt(resizeBox.style.width);

+			resizer.height = parseInt(resizeBox.style.height);

+			resizer.editorId = editor_id;

+			resizer.resizeBox = resizeBox;

+			resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true);

+		} else {

+			resizer.resizing = false;

+			resizeBox.style.display = "none";

+			editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table";

+			tinyMCE.execCommand('mceResetDesignMode');

+		}

+	},

+

+	_getColorHTML : function(id, n, cm) {

+		var i, h, cl;

+

+		h = '<span class="mceMenuLine"></span>';

+		cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(',');

+

+		h += '<table class="mceColors"><tr>';

+		for (i=0; i<cl.length; i++) {

+			c = 'tinyMCE.execInstanceCommand(\'' + id + '\', \'' + cm + '\', false, \'#' + cl[i] + '\');';

+			h += '<td><a href="javascript:' + c + '" style="background-color: #' + cl[i] + '" onclick="' + c + ';return false;"></a></td>';

+

+			if ((i+1) % 8 == 0)

+				h += '</tr><tr>';

+		}

+

+		h += '</tr></table>';

+

+		if (tinyMCE.getParam("theme_advanced_more_colors", true))

+			h += '<a href="javascript:void(0);" onclick="TinyMCE_AdvancedTheme._pickColor(\'' + id + '\',\'' + cm + '\');" class="mceMoreColors">' + tinyMCE.getLang('lang_more_colors') + '</a>';

+

+		return h;

+	},

+

+	_pickColor : function(id, cm) {

+		var inputColor, inst = tinyMCE.selectedInstance;

+

+		if (cm == 'forecolor' && inst)

+			inputColor = inst.foreColor;

+

+		if ((cm == 'backcolor' || cm == 'HiliteColor') && inst)

+			inputColor = inst.backColor;

+

+		tinyMCE.execCommand('mceColorPicker', true, {color : inputColor, callback : function(c) {

+			tinyMCE.execInstanceCommand(id, cm, false, c);

+		}});

+	},

+

+	_insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) {

+		tinyMCE.execCommand("mceInsertContent", false, tinyMCE.createTagHTML('img', {

+			src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src), // Force absolute

+			mce_src : src,

+			alt : alt,

+			border : border,

+			hspace : hspace,

+			vspace : vspace,

+			width : width,

+			height : height,

+			align : align,

+			title : title,

+			onmouseover : onmouseover,

+			onmouseout : onmouseout

+		}));

+	},

+

+	_insertLink : function(href, target, title, onclick, style_class) {

+		tinyMCE.execCommand('mceBeginUndoLevel');

+

+		if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {

+			var doc = tinyMCE.selectedInstance.getDoc();

+			var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");

+			var newLink = false;

+

+			if (!linkElement) {

+				linkElement = doc.createElement("a");

+				newLink = true;

+			}

+

+			var mhref = href;

+			var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);");

+			mhref = tinyMCE.getParam('convert_urls') ? href : mhref;

+

+			tinyMCE.setAttrib(linkElement, 'href', thref);

+			tinyMCE.setAttrib(linkElement, 'mce_href', mhref);

+			tinyMCE.setAttrib(linkElement, 'target', target);

+			tinyMCE.setAttrib(linkElement, 'title', title);

+			tinyMCE.setAttrib(linkElement, 'onclick', onclick);

+			tinyMCE.setAttrib(linkElement, 'class', style_class);

+

+			if (newLink) {

+				linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));

+				tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement);

+			}

+

+			return;

+		}

+

+		if (!tinyMCE.linkElement && tinyMCE.selectedInstance) {

+			if (tinyMCE.isSafari) {

+				tinyMCE.execCommand("mceInsertContent", false, '<a href="' + tinyMCE.uniqueURL + '">' + tinyMCE.selectedInstance.selection.getSelectedHTML() + '</a>');

+			} else

+				tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL);

+

+			tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);

+

+			var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL);

+

+			for (var i=0; i<elementArray.length; i++) {

+				var mhref = href;

+				var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, elementArray[i]);");

+				mhref = tinyMCE.getParam('convert_urls') ? href : mhref;

+

+				tinyMCE.setAttrib(elementArray[i], 'href', thref);

+				tinyMCE.setAttrib(elementArray[i], 'mce_href', mhref);

+				tinyMCE.setAttrib(elementArray[i], 'target', target);

+				tinyMCE.setAttrib(elementArray[i], 'title', title);

+				tinyMCE.setAttrib(elementArray[i], 'onclick', onclick);

+				tinyMCE.setAttrib(elementArray[i], 'class', style_class);

+			}

+

+			tinyMCE.linkElement = elementArray[0];

+		}

+

+		if (tinyMCE.linkElement) {

+			var mhref = href;

+			href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement);");

+			mhref = tinyMCE.getParam('convert_urls') ? href : mhref;

+

+			tinyMCE.setAttrib(tinyMCE.linkElement, 'href', href);

+			tinyMCE.setAttrib(tinyMCE.linkElement, 'mce_href', mhref);

+			tinyMCE.setAttrib(tinyMCE.linkElement, 'target', target);

+			tinyMCE.setAttrib(tinyMCE.linkElement, 'title', title);

+			tinyMCE.setAttrib(tinyMCE.linkElement, 'onclick', onclick);

+			tinyMCE.setAttrib(tinyMCE.linkElement, 'class', style_class);

+		}

+

+		tinyMCE.execCommand('mceEndUndoLevel');

+	}

+};

+

+tinyMCE.addTheme("advanced", TinyMCE_AdvancedTheme);

+

+// Add default buttons maps for advanced theme and all internal plugins

+tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);

 
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
-
-	// Tell it to load theme specific language pack(s)
-	tinymce.ThemeManager.requireLangPack('advanced');
-
-	tinymce.create('tinymce.themes.AdvancedTheme', {
-		// Control name lookup, format: title, command
-		controls : {
-			bold : ['bold_desc', 'Bold'],
-			italic : ['italic_desc', 'Italic'],
-			underline : ['underline_desc', 'Underline'],
-			strikethrough : ['striketrough_desc', 'Strikethrough'],
-			justifyleft : ['justifyleft_desc', 'JustifyLeft'],
-			justifycenter : ['justifycenter_desc', 'JustifyCenter'],
-			justifyright : ['justifyright_desc', 'JustifyRight'],
-			justifyfull : ['justifyfull_desc', 'JustifyFull'],
-			bullist : ['bullist_desc', 'InsertUnorderedList'],
-			numlist : ['numlist_desc', 'InsertOrderedList'],
-			outdent : ['outdent_desc', 'Outdent'],
-			indent : ['indent_desc', 'Indent'],
-			cut : ['cut_desc', 'Cut'],
-			copy : ['copy_desc', 'Copy'],
-			paste : ['paste_desc', 'Paste'],
-			undo : ['undo_desc', 'Undo'],
-			redo : ['redo_desc', 'Redo'],
-			link : ['link_desc', 'mceLink'],
-			unlink : ['unlink_desc', 'unlink'],
-			image : ['image_desc', 'mceImage'],
-			cleanup : ['cleanup_desc', 'mceCleanup'],
-			help : ['help_desc', 'mceHelp'],
-			code : ['code_desc', 'mceCodeEditor'],
-			hr : ['hr_desc', 'InsertHorizontalRule'],
-			removeformat : ['removeformat_desc', 'RemoveFormat'],
-			sub : ['sub_desc', 'subscript'],
-			sup : ['sup_desc', 'superscript'],
-			forecolor : ['forecolor_desc', 'ForeColor'],
-			forecolorpicker : ['forecolor_desc', 'mceForeColor'],
-			backcolor : ['backcolor_desc', 'HiliteColor'],
-			backcolorpicker : ['backcolor_desc', 'mceBackColor'],
-			charmap : ['charmap_desc', 'mceCharMap'],
-			visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
-			anchor : ['anchor_desc', 'mceInsertAnchor'],
-			newdocument : ['newdocument_desc', 'mceNewDocument'],
-			blockquote : ['blockquote_desc', 'mceBlockQuote']
-		},
-
-		stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
-
-		init : function(ed, url) {
-			var t = this, s, v;
-	
-			t.editor = ed;
-			t.url = url;
-			t.onResolveName = new tinymce.util.Dispatcher(this);
-
-			// Default settings
-			t.settings = s = extend({
-				theme_advanced_path : true,
-				theme_advanced_toolbar_location : 'bottom',
-				theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
-				theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
-				theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
-				theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
-				theme_advanced_toolbar_align : "center",
-				theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
-				theme_advanced_font_sizes : "1,2,3,4,5,6,7",
-				theme_advanced_more_colors : 1,
-				theme_advanced_row_height : 23,
-				theme_advanced_resize_horizontal : 1,
-				theme_advanced_resizing_use_cookie : 1
-			}, ed.settings);
-
-			if ((v = s.theme_advanced_path_location) && v != 'none')
-				s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
-
-			if (s.theme_advanced_statusbar_location == 'none')
-				s.theme_advanced_statusbar_location = 0;
-
-			// Init editor
-			ed.onInit.add(function() {
-				ed.onNodeChange.add(t._nodeChanged, t);
-
-				if (ed.settings.content_css !== false)
-					ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
-			});
-
-			ed.onSetProgressState.add(function(ed, b, ti) {
-				var co, id = ed.id, tb;
-
-				if (b) {
-					t.progressTimer = setTimeout(function() {
-						co = ed.getContainer();
-						co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
-						tb = DOM.get(ed.id + '_tbl');
-
-						DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
-						DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
-					}, ti || 0);
-				} else {
-					DOM.remove(id + '_blocker');
-					DOM.remove(id + '_progress');
-					clearTimeout(t.progressTimer);
-				}
-			});
-
-			DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui.css"));
-
-			if (s.skin_variant)
-				DOM.loadCSS(ed.baseURI.toAbsolute(s.editor_css || "themes/advanced/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"));
-		},
-
-		createControl : function(n, cf) {
-			var cd, c;
-
-			if (c = cf.createControl(n))
-				return c;
-
-			switch (n) {
-				case "styleselect":
-					return this._createStyleSelect();
-
-				case "formatselect":
-					return this._createBlockFormats();
-
-				case "fontselect":
-					return this._createFontSelect();
-
-				case "fontsizeselect":
-					return this._createFontSizeSelect();
-
-				case "forecolor":
-					return this._createForeColorMenu();
-
-				case "backcolor":
-					return this._createBackColorMenu();
-			}
-
-			if ((cd = this.controls[n]))
-				return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
-		},
-
-		execCommand : function(cmd, ui, val) {
-			var f = this['_' + cmd];
-
-			if (f) {
-				f.call(this, ui, val);
-				return true;
-			}
-
-			return false;
-		},
-
-		_importClasses : function(e) {
-			var ed = this.editor, c = ed.controlManager.get('styleselect');
-
-			if (c.getLength() == 0) {
-				each(ed.dom.getClasses(), function(o) {
-					c.add(o['class'], o['class']);
-				});
-			}
-		},
-
-		_createStyleSelect : function(n) {
-			var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {
-				title : 'advanced.style_select',
-				onselect : function(v) {
-					if (c.selectedValue === v) {
-						ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});
-						c.select();
-						return false;
-					} else
-						ed.execCommand('mceSetCSSClass', 0, v);
-				}
-			});
-
-			if (c) {
-				each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {
-					if (v)
-						c.add(t.editor.translate(k), v);
-				});
-
-				c.onPostRender.add(function(ed, n) {
-					Event.add(n.id + '_text', 'focus', t._importClasses, t);
-					Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
-				});
-			}
-
-			return c;
-		},
-
-		_createFontSelect : function() {
-			var c, t = this, ed = t.editor;
-
-			c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});
-			if (c) {
-				each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
-					c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
-				});
-			}
-
-			return c;
-		},
-
-		_createFontSizeSelect : function() {
-			var t = this, ed = t.editor, c, lo = [
-				"1 (8 pt)",
-				"2 (10 pt)",
-				"3 (12 pt)",
-				"4 (14 pt)",
-				"5 (18 pt)",
-				"6 (24 pt)",
-				"7 (36 pt)"
-			], fz = [8, 10, 12, 14, 18, 24, 36];
-
-			c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', cmd : 'FontSize'});
-			if (c) {
-				each(ed.getParam('theme_advanced_font_sizes', t.settings.theme_advanced_font_sizes, 'hash'), function(v, k) {
-					c.add(k != v ? k : lo[parseInt(v) - 1], v, {'style' : 'font-size:' + fz[v - 1] + 'pt', 'class' : 'mceFontSize' + v});
-				});
-			}
-
-			return c;
-		},
-
-		_createBlockFormats : function() {
-			var c, fmts = {
-				p : 'advanced.paragraph',
-				address : 'advanced.address',
-				pre : 'advanced.pre',
-				h1 : 'advanced.h1',
-				h2 : 'advanced.h2',
-				h3 : 'advanced.h3',
-				h4 : 'advanced.h4',
-				h5 : 'advanced.h5',
-				h6 : 'advanced.h6',
-				div : 'advanced.div',
-				blockquote : 'advanced.blockquote',
-				code : 'advanced.code',
-				dt : 'advanced.dt',
-				dd : 'advanced.dd',
-				samp : 'advanced.samp'
-			}, t = this;
-
-			c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});
-			if (c) {
-				each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
-					c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
-				});
-			}
-
-			return c;
-		},
-
-		_createForeColorMenu : function() {
-			var c, t = this, s = t.settings, o = {}, v;
-
-			if (s.theme_advanced_more_colors) {
-				o.more_colors_func = function() {
-					t._mceColorPicker(0, {
-						color : c.value,
-						func : function(co) {
-							c.setColor(co);
-						}
-					});
-				};
-			}
-
-			if (v = s.theme_advanced_text_colors)
-				o.colors = v;
-
-			o.title = 'advanced.forecolor_desc';
-			o.cmd = 'ForeColor';
-			o.scope = this;
-
-			c = t.editor.controlManager.createColorSplitButton('forecolor', o);
-
-			return c;
-		},
-
-		_createBackColorMenu : function() {
-			var c, t = this, s = t.settings, o = {}, v;
-
-			if (s.theme_advanced_more_colors) {
-				o.more_colors_func = function() {
-					t._mceColorPicker(0, {
-						color : c.value,
-						func : function(co) {
-							c.setColor(co);
-						}
-					});
-				};
-			}
-
-			if (v = s.theme_advanced_background_colors)
-				o.colors = v;
-
-			o.title = 'advanced.backcolor_desc';
-			o.cmd = 'HiliteColor';
-			o.scope = this;
-
-			c = t.editor.controlManager.createColorSplitButton('backcolor', o);
-
-			return c;
-		},
-
-		renderUI : function(o) {
-			var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
-
-			n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
-
-			if (!DOM.boxModel)
-				n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
-
-			n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
-			n = tb = DOM.add(n, 'tbody');
-
-			switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
-				case "rowlayout":
-					ic = t._rowLayout(s, tb, o);
-					break;
-
-				case "customlayout":
-					ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
-					break;
-
-				default:
-					ic = t._simpleLayout(s, tb, o, p);
-			}
-
-			n = o.targetNode;
-
-			// Add classes to first and last TRs
-			nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8
-			DOM.addClass(nl[0], 'mceFirst');
-			DOM.addClass(nl[nl.length - 1], 'mceLast');
-
-			// Add classes to first and last TDs
-			each(DOM.select('tr', tb), function(n) {
-				DOM.addClass(n.firstChild, 'mceFirst');
-				DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
-			});
-
-			if (DOM.get(s.theme_advanced_toolbar_container))
-				DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
-			else
-				DOM.insertAfter(p, n);
-
-			Event.add(ed.id + '_path_row', 'click', function(e) {
-				e = e.target;
-
-				if (e.nodeName == 'A') {
-					t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
-
-					return Event.cancel(e);
-				}
-			});
-/*
-			if (DOM.get(ed.id + '_path_row')) {
-				Event.add(ed.id + '_tbl', 'mouseover', function(e) {
-					var re;
-	
-					e = e.target;
-
-					if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
-						re = DOM.get(ed.id + '_path_row');
-						t.lastPath = re.innerHTML;
-						DOM.setHTML(re, e.parentNode.title);
-					}
-				});
-
-				Event.add(ed.id + '_tbl', 'mouseout', function(e) {
-					if (t.lastPath) {
-						DOM.setHTML(ed.id + '_path_row', t.lastPath);
-						t.lastPath = 0;
-					}
-				});
-			}
-*/
-
-			if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
-				Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
-
-			if (s.theme_advanced_toolbar_location == 'external')
-				o.deltaHeight = 0;
-
-			t.deltaHeight = o.deltaHeight;
-			o.targetNode = null;
-
-			return {
-				iframeContainer : ic,
-				editorContainer : ed.id + '_parent',
-				sizeContainer : sc,
-				deltaHeight : o.deltaHeight
-			};
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Advanced theme',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			}
-		},
-
-		resizeBy : function(dw, dh) {
-			var e = DOM.get(this.editor.id + '_tbl');
-
-			this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
-		},
-
-		resizeTo : function(w, h) {
-			var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;
-
-			// Boundery fix box
-			w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
-			h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
-			w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
-			h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
-
-			// Calc difference between iframe and container
-			dh = e.clientHeight - ifr.clientHeight;
-
-			// Resize iframe and container
-			DOM.setStyle(ifr, 'height', h - dh);
-			DOM.setStyles(e, {width : w, height : h});
-		},
-
-		destroy : function() {
-			var id = this.editor.id;
-
-			Event.clear(id + '_resize');
-			Event.clear(id + '_path_row');
-			Event.clear(id + '_external_close');
-		},
-
-		// Internal functions
-
-		_simpleLayout : function(s, tb, o, p) {
-			var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
-
-			// Create toolbar container at top
-			if (lo == 'top')
-				t._addToolbars(tb, o);
-
-			// Create external toolbar
-			if (lo == 'external') {
-				n = c = DOM.create('div', {style : 'position:relative'});
-				n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
-				DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
-				n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
-				etb = DOM.add(n, 'tbody');
-
-				if (p.firstChild.className == 'mceOldBoxModel')
-					p.firstChild.appendChild(c);
-				else
-					p.insertBefore(c, p.firstChild);
-
-				t._addToolbars(etb, o);
-
-				ed.onMouseUp.add(function() {
-					var e = DOM.get(ed.id + '_external');
-					DOM.show(e);
-
-					DOM.hide(lastExtID);
-
-					var f = Event.add(ed.id + '_external_close', 'click', function() {
-						DOM.hide(ed.id + '_external');
-						Event.remove(ed.id + '_external_close', 'click', f);
-					});
-
-					DOM.show(e);
-					DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
-
-					// Fixes IE rendering bug
-					DOM.hide(e);
-					DOM.show(e);
-					e.style.filter = '';
-
-					lastExtID = ed.id + '_external';
-
-					e = null;
-				});
-			}
-
-			if (sl == 'top')
-				t._addStatusBar(tb, o);
-
-			// Create iframe container
-			if (!s.theme_advanced_toolbar_container) {
-				n = DOM.add(tb, 'tr');
-				n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
-			}
-
-			// Create toolbar container at bottom
-			if (lo == 'bottom')
-				t._addToolbars(tb, o);
-
-			if (sl == 'bottom')
-				t._addStatusBar(tb, o);
-
-			return ic;
-		},
-
-		_rowLayout : function(s, tb, o) {
-			var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
-
-			dc = s.theme_advanced_containers_default_class || '';
-			da = s.theme_advanced_containers_default_align || 'center';
-
-			each(explode(s.theme_advanced_containers || ''), function(c, i) {
-				var v = s['theme_advanced_container_' + c] || '';
-
-				switch (v.toLowerCase()) {
-					case 'mceeditor':
-						n = DOM.add(tb, 'tr');
-						n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
-						break;
-
-					case 'mceelementpath':
-						t._addStatusBar(tb, o);
-						break;
-
-					default:
-						a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
-						a = 'mce' + t._ufirst(a);
-
-						n = DOM.add(DOM.add(tb, 'tr'), 'td', {
-							'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
-						});
-
-						to = cf.createToolbar("toolbar" + i);
-						t._addControls(v, to);
-						DOM.setHTML(n, to.renderHTML());
-						o.deltaHeight -= s.theme_advanced_row_height;
-				}
-			});
-
-			return ic;
-		},
-
-		_addControls : function(v, tb) {
-			var t = this, s = t.settings, di, cf = t.editor.controlManager;
-
-			if (s.theme_advanced_disable && !t._disabled) {
-				di = {};
-
-				each(explode(s.theme_advanced_disable), function(v) {
-					di[v] = 1;
-				});
-
-				t._disabled = di;
-			} else
-				di = t._disabled;
-
-			each(explode(v), function(n) {
-				var c;
-
-				if (di && di[n])
-					return;
-
-				// Compatiblity with 2.x
-				if (n == 'tablecontrols') {
-					each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
-						n = t.createControl(n, cf);
-
-						if (n)
-							tb.add(n);
-					});
-
-					return;
-				}
-
-				c = t.createControl(n, cf);
-
-				if (c)
-					tb.add(c);
-			});
-		},
-
-		_addToolbars : function(c, o) {
-			var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;
-
-			a = s.theme_advanced_toolbar_align.toLowerCase();
-			a = 'mce' + t._ufirst(a);
-
-			n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});
-
-			if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
-				h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
-
-			h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));
-
-			// Create toolbar and add the controls
-			for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
-				tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
-
-				if (s['theme_advanced_buttons' + i + '_add'])
-					v += ',' + s['theme_advanced_buttons' + i + '_add'];
-
-				if (s['theme_advanced_buttons' + i + '_add_before'])
-					v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
-
-				t._addControls(v, tb);
-
-				//n.appendChild(n = tb.render());
-				h.push(tb.renderHTML());
-
-				o.deltaHeight -= s.theme_advanced_row_height;
-			}
-
-			h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
-			DOM.setHTML(n, h.join(''));
-		},
-
-		_addStatusBar : function(tb, o) {
-			var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
-
-			n = DOM.add(tb, 'tr');
-			n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
-			n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : '&nbsp;');
-			DOM.add(n, 'a', {href : '#', accesskey : 'x'});
-
-			if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {
-				DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});
-
-				if (s.theme_advanced_resizing_use_cookie) {
-					ed.onPostRender.add(function() {
-						var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
-
-						if (!o)
-							return;
-
-						if (s.theme_advanced_resize_horizontal)
-							c.style.width = Math.max(10, o.cw) + 'px';
-
-						c.style.height = Math.max(10, o.ch) + 'px';
-						DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';
-					});
-				}
-
-				ed.onPostRender.add(function() {
-					Event.add(ed.id + '_resize', 'mousedown', function(e) {
-						var c, p, w, h, n, pa;
-
-						// Measure container
-						c = DOM.get(ed.id + '_tbl');
-						w = c.clientWidth;
-						h = c.clientHeight;
-
-						miw = s.theme_advanced_resizing_min_width || 100;
-						mih = s.theme_advanced_resizing_min_height || 100;
-						maw = s.theme_advanced_resizing_max_width || 0xFFFF;
-						mah = s.theme_advanced_resizing_max_height || 0xFFFF;
-
-						// Setup placeholder
-						p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});
-						DOM.setStyles(p, {width : w, height : h});
-
-						// Replace with placeholder
-						DOM.hide(c);
-						DOM.show(p);
-
-						// Create internal resize obj
-						r = {
-							x : e.screenX,
-							y : e.screenY,
-							w : w,
-							h : h,
-							dx : null,
-							dy : null
-						};
-
-						// Start listening
-						mf = Event.add(DOM.doc, 'mousemove', function(e) {
-							var w, h;
-
-							// Calc delta values
-							r.dx = e.screenX - r.x;
-							r.dy = e.screenY - r.y;
-
-							// Boundery fix box
-							w = Math.max(miw, r.w + r.dx);
-							h = Math.max(mih, r.h + r.dy);
-							w = Math.min(maw, w);
-							h = Math.min(mah, h);
-
-							// Resize placeholder
-							if (s.theme_advanced_resize_horizontal)
-								p.style.width = w + 'px';
-
-							p.style.height = h + 'px';
-
-							return Event.cancel(e);
-						});
-
-						me = Event.add(DOM.doc, 'mouseup', function(e) {
-							var ifr;
-
-							// Stop listening
-							Event.remove(DOM.doc, 'mousemove', mf);
-							Event.remove(DOM.doc, 'mouseup', me);
-
-							c.style.display = '';
-							DOM.remove(p);
-
-							if (r.dx === null)
-								return;
-
-							ifr = DOM.get(ed.id + '_ifr');
-
-							if (s.theme_advanced_resize_horizontal)
-								c.style.width = Math.max(10, r.w + r.dx) + 'px';
-
-							c.style.height = Math.max(10, r.h + r.dy) + 'px';
-							ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';
-
-							if (s.theme_advanced_resizing_use_cookie) {
-								Cookie.setHash("TinyMCE_" + ed.id + "_size", {
-									cw : r.w + r.dx,
-									ch : r.h + r.dy
-								});
-							}
-						});
-
-						return Event.cancel(e);
-					});
-				});
-			}
-
-			o.deltaHeight -= 21;
-			n = tb = null;
-		},
-
-		_nodeChanged : function(ed, cm, n, co) {
-			var t = this, p, de = 0, v, c, s = t.settings;
-
-			tinymce.each(t.stateControls, function(c) {
-				cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
-			});
-
-			cm.setActive('visualaid', ed.hasVisual);
-			cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
-			cm.setDisabled('redo', !ed.undoManager.hasRedo());
-			cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
-
-			p = DOM.getParent(n, 'A');
-			if (c = cm.get('link')) {
-				if (!p || !p.name) {
-					c.setDisabled(!p && co);
-					c.setActive(!!p);
-				}
-			}
-
-			if (c = cm.get('unlink')) {
-				c.setDisabled(!p && co);
-				c.setActive(!!p && !p.name);
-			}
-
-			if (c = cm.get('anchor')) {
-				c.setActive(!!p && p.name);
-
-				if (tinymce.isWebKit) {
-					p = DOM.getParent(n, 'IMG');
-					c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');
-				}
-			}
-
-			p = DOM.getParent(n, 'IMG');
-			if (c = cm.get('image'))
-				c.setActive(!!p && n.className.indexOf('mceItem') == -1);
-
-			if (c = cm.get('styleselect')) {
-				if (n.className) {
-					t._importClasses();
-					c.select(n.className);
-				} else
-					c.select();
-			}
-
-			if (c = cm.get('formatselect')) {
-				p = DOM.getParent(n, DOM.isBlock);
-
-				if (p)
-					c.select(p.nodeName.toLowerCase());
-			}
-
-			if (c = cm.get('fontselect'))
-				c.select(ed.queryCommandValue('FontName'));
-
-			if (c = cm.get('fontsizeselect'))
-				c.select('' + ed.queryCommandValue('FontSize'));
-
-			if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
-				p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
-				DOM.setHTML(p, '');
-
-				ed.dom.getParent(n, function(n) {
-					var na = n.nodeName.toLowerCase(), u, pi, ti = '';
-
-					// Ignore non element and hidden elements
-					if (n.nodeType != 1 || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
-						return;
-
-					// Fake name
-					if (v = DOM.getAttrib(n, 'mce_name'))
-						na = v;
-	
-					// Handle prefix
-					if (tinymce.isIE && n.scopeName !== 'HTML')
-						na = n.scopeName + ':' + na;
-
-					// Remove internal prefix
-					na = na.replace(/mce\:/g, '');
-
-					// Handle node name
-					switch (na) {
-						case 'b':
-							na = 'strong';
-							break;
-
-						case 'i':
-							na = 'em';
-							break;
-
-						case 'img':
-							if (v = DOM.getAttrib(n, 'src'))
-								ti += 'src: ' + v + ' ';
-
-							break;
-
-						case 'a':
-							if (v = DOM.getAttrib(n, 'name')) {
-								ti += 'name: ' + v + ' ';
-								na += '#' + v;
-							}
-
-							if (v = DOM.getAttrib(n, 'href'))
-								ti += 'href: ' + v + ' ';
-
-							break;
-
-						case 'font':
-							if (s.convert_fonts_to_spans)
-								na = 'span';
-
-							if (v = DOM.getAttrib(n, 'face'))
-								ti += 'font: ' + v + ' ';
-
-							if (v = DOM.getAttrib(n, 'size'))
-								ti += 'size: ' + v + ' ';
-
-							if (v = DOM.getAttrib(n, 'color'))
-								ti += 'color: ' + v + ' ';
-
-							break;
-
-						case 'span':
-							if (v = DOM.getAttrib(n, 'style'))
-								ti += 'style: ' + v + ' ';
-
-							break;
-					}
-
-					if (v = DOM.getAttrib(n, 'id'))
-						ti += 'id: ' + v + ' ';
-
-					if (v = n.className) {
-						v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');
-
-						if (v && v.indexOf('mceItem') == -1) {
-							ti += 'class: ' + v + ' ';
-
-							if (DOM.isBlock(n) || na == 'img' || na == 'span')
-								na += '.' + v;
-						}
-					}
-
-					na = na.replace(/(html:)/g, '');
-					na = {name : na, node : n, title : ti};
-					t.onResolveName.dispatch(t, na);
-					ti = na.title;
-					na = na.name;
-
-					//u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
-					pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
-
-					if (p.hasChildNodes()) {
-						p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);
-						p.insertBefore(pi, p.firstChild);
-					} else
-						p.appendChild(pi);
-				}, ed.getBody());
-			}
-		},
-
-		// Commands gets called by execCommand
-
-		_sel : function(v) {
-			this.editor.execCommand('mceSelectNodeDepth', false, v);
-		},
-
-		_mceInsertAnchor : function(ui, v) {
-			var ed = this.editor;
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/anchor.htm',
-				width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
-				height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
-				inline : true
-			}, {
-				theme_url : this.url
-			});
-		},
-
-		_mceCharMap : function() {
-			var ed = this.editor;
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/charmap.htm',
-				width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
-				height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
-				inline : true
-			}, {
-				theme_url : this.url
-			});
-		},
-
-		_mceHelp : function() {
-			var ed = this.editor;
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/about.htm',
-				width : 480,
-				height : 380,
-				inline : true
-			}, {
-				theme_url : this.url
-			});
-		},
-
-		_mceColorPicker : function(u, v) {
-			var ed = this.editor;
-
-			v = v || {};
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
-				width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
-				height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
-				close_previous : false,
-				inline : true
-			}, {
-				input_color : v.color,
-				func : v.func,
-				theme_url : this.url
-			});
-		},
-
-		_mceCodeEditor : function(ui, val) {
-			var ed = this.editor;
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
-				width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
-				height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
-				inline : true,
-				resizable : true,
-				maximizable : true
-			}, {
-				theme_url : this.url
-			});
-		},
-
-		_mceImage : function(ui, val) {
-			var ed = this.editor;
-
-			// Internal image object like a flash placeholder
-			if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
-				return;
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/image.htm',
-				width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
-				height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
-				inline : true
-			}, {
-				theme_url : this.url
-			});
-		},
-
-		_mceLink : function(ui, val) {
-			var ed = this.editor;
-
-			ed.windowManager.open({
-				url : tinymce.baseURL + '/themes/advanced/link.htm',
-				width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
-				height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
-				inline : true
-			}, {
-				theme_url : this.url
-			});
-		},
-
-		_mceNewDocument : function() {
-			var ed = this.editor;
-
-			ed.windowManager.confirm('advanced.newdocument', function(s) {
-				if (s)
-					ed.execCommand('mceSetContent', false, '');
-			});
-		},
-
-		_mceForeColor : function() {
-			var t = this;
-
-			this._mceColorPicker(0, {
-				color: t.fgColor,
-				func : function(co) {
-					t.fgColor = co;
-					t.editor.execCommand('ForeColor', false, co);
-				}
-			});
-		},
-
-		_mceBackColor : function() {
-			var t = this;
-
-			this._mceColorPicker(0, {
-				color: t.bgColor,
-				func : function(co) {
-					t.bgColor = co;
-					t.editor.execCommand('HiliteColor', false, co);
-				}
-			});
-		},
-
-		_ufirst : function(s) {
-			return s.substring(0, 1).toUpperCase() + s.substring(1);
-		}
-	});
-
-	tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
-}());

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_ui.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/editor_ui.css
@@ -1,200 +1,200 @@
-.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
-	margin-top: 1px;
-	margin-left: 1px;
-}
+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {

+	margin-top: 1px;

+	margin-left: 1px;

+}

+

+.mceButtonNormal {

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceButtonOver {

+/*	border-top: 1px solid buttonhighlight;

+	border-left: 1px solid buttonhighlight;

+	border-bottom: 1px solid buttonshadow;

+	border-right: 1px solid buttonshadow;*/

+	border: 1px solid #0A246A;

+	cursor: arrow;

+	background-color: #B6BDD2;

+}

+

+.mceButtonDown {

+/*	border-bottom: 1px solid buttonhighlight;

+	border-right: 1px solid buttonhighlight;

+	border-top: 1px solid buttonshadow;

+	border-left: 1px solid buttonshadow;*/

+	cursor: arrow;

+	border: 1px solid #0A246A;

+	background-color: #8592B5;

+}

+

+.mceButtonSelected {

+	border: 1px solid;

+	border-color: #C0C0BB;

+	cursor: arrow;

+}

+

+.mceButtonDisabled {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	-moz-opacity:0.3;

+	opacity: 0.3;

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceSeparator {

+	border-top: 1px solid buttonhighlight;

+	border-left: 1px solid buttonhighlight;

+	border-bottom: 1px solid buttonshadow;

+	border-right: 1px solid buttonshadow;

+	margin-right: 2px;

+	margin-left: 2px;

+}

+

+.mceSeparatorLine {

+	margin:2px;

+	margin-left: 4px;

+	background-color: #F0F0EE;

+	border-top: 1px solid buttonshadow;

+	border-left: 1px solid buttonshadow;

+	border-bottom: 1px solid buttonhighlight;

+	border-right: 1px solid buttonhighlight;

+	width: 0px;

+	height: 15px;

+}

+

+.mceSelectList {

+	font-family: "MS Sans Serif";

+	font-size: 7pt;

+	font-weight: normal;

+	margin-top: 3px;

+	padding: 0px;

+	display: inline;

+	vertical-align: top;

+	background-color: #F0F0EE

+}

+

+.mceLabel, .mceLabelDisabled {

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+}

+

+.mceLabel {

+	color: #000000;

+}

+

+.mceLabelDisabled {

+	cursor: text;

+	color: #999999;

+}

+

+.mceEditor {

+	background: #F0F0EE;

+	border: 1px solid #cccccc;

+}

+

+.mceEditorArea {

+	font-family: "MS Sans Serif";

+	background: #FFFFFF;

+}

+

+.mceToolbarTop, .mceToolbarBottom {

+	background: #F0F0EE;

+}

+

+.mceToolbarTop {

+	border-bottom: 1px solid #cccccc;

+}

+

+.mceToolbarBottom {

+	border-top: 1px solid #cccccc;

+}

+

+.mcePathTop, .mcePathBottom, .mcePath {

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+	padding: 2px;

+	height: 20px;

+}

+

+.mcePathTop {

+	border-bottom: 1px solid #cccccc;

+}

+

+.mcePathBottom {

+	border-top: 1px solid #cccccc;

+}

+

+.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {

+	text-decoration: none;

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+	color: #000000;

+}

+

+.mcePathItem:hover {

+	text-decoration: underline;

+}

+

+.mcePath {

+	border-bottom: 1px solid #cccccc;

+}

+

+.mceDialog {

+	position: absolute;

+	left: 100px;

+	top: 100px;

+	z-index: 1000;

+}

+

+.mceDialogHeader {

+	background: #F0F0EE;

+	width: 100%;

+	height: 16px;

+	margin: 0px;

+	padding: 0px;

+	border: 1px solid black;

+	border-bottom: 0px;

+}

+

+.mceDialogTitle {

+	float: left;

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+	height: 14px;

+}

+

+.mceDialogClose {

+	float: right;

+	width: 16px;

+	height: 16px;

+	background-image: url('images/close.gif');

+	background-repeat: no-repeat;

+	background-position: 0px 1px;

+	margin: 0px;

+	padding: 0px;

+}

+

+.mceDialogClose a {

+	width: 16px;

+	height: 14px;

+	display: block;

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+	margin: 0px;

+	padding: 0px;

+}

+

+.mceDialogIFrameWrapper {

+	border: 1px solid black;

+	clear: both;

+}

 
-.mceButtonNormal {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceButtonOver {
-/*	border-top: 1px solid buttonhighlight;
-	border-left: 1px solid buttonhighlight;
-	border-bottom: 1px solid buttonshadow;
-	border-right: 1px solid buttonshadow;*/
-	border: 1px solid #0A246A;
-	cursor: arrow;
-	background-color: #B6BDD2;
-}
-
-.mceButtonDown {
-/*	border-bottom: 1px solid buttonhighlight;
-	border-right: 1px solid buttonhighlight;
-	border-top: 1px solid buttonshadow;
-	border-left: 1px solid buttonshadow;*/
-	cursor: arrow;
-	border: 1px solid #0A246A;
-	background-color: #8592B5;
-}
-
-.mceButtonSelected {
-	border: 1px solid;
-	border-color: #C0C0BB;
-	cursor: arrow;
-}
-
-.mceButtonDisabled {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	-moz-opacity:0.3;
-	opacity: 0.3;
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceSeparator {
-	border-top: 1px solid buttonhighlight;
-	border-left: 1px solid buttonhighlight;
-	border-bottom: 1px solid buttonshadow;
-	border-right: 1px solid buttonshadow;
-	margin-right: 2px;
-	margin-left: 2px;
-}
-
-.mceSeparatorLine {
-	margin:2px;
-	margin-left: 4px;
-	background-color: #F0F0EE;
-	border-top: 1px solid buttonshadow;
-	border-left: 1px solid buttonshadow;
-	border-bottom: 1px solid buttonhighlight;
-	border-right: 1px solid buttonhighlight;
-	width: 0px;
-	height: 15px;
-}
-
-.mceSelectList {
-	font-family: "MS Sans Serif";
-	font-size: 7pt;
-	font-weight: normal;
-	margin-top: 3px;
-	padding: 0px;
-	display: inline;
-	vertical-align: top;
-	background-color: #F0F0EE
-}
-
-.mceLabel, .mceLabelDisabled {
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-}
-
-.mceLabel {
-	color: #000000;
-}
-
-.mceLabelDisabled {
-	cursor: text;
-	color: #999999;
-}
-
-.mceEditor {
-	background: #F0F0EE;
-	border: 1px solid #cccccc;
-}
-
-.mceEditorArea {
-	font-family: "MS Sans Serif";
-	background: #FFFFFF;
-}
-
-.mceToolbarTop, .mceToolbarBottom {
-	background: #F0F0EE;
-}
-
-.mceToolbarTop {
-	border-bottom: 1px solid #cccccc;
-}
-
-.mceToolbarBottom {
-	border-top: 1px solid #cccccc;
-}
-
-.mcePathTop, .mcePathBottom, .mcePath {
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-	padding: 2px;
-	height: 20px;
-}
-
-.mcePathTop {
-	border-bottom: 1px solid #cccccc;
-}
-
-.mcePathBottom {
-	border-top: 1px solid #cccccc;
-}
-
-.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {
-	text-decoration: none;
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-	color: #000000;
-}
-
-.mcePathItem:hover {
-	text-decoration: underline;
-}
-
-.mcePath {
-	border-bottom: 1px solid #cccccc;
-}
-
-.mceDialog {
-	position: absolute;
-	left: 100px;
-	top: 100px;
-	z-index: 1000;
-}
-
-.mceDialogHeader {
-	background: #F0F0EE;
-	width: 100%;
-	height: 16px;
-	margin: 0px;
-	padding: 0px;
-	border: 1px solid black;
-	border-bottom: 0px;
-}
-
-.mceDialogTitle {
-	float: left;
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-	height: 14px;
-}
-
-.mceDialogClose {
-	float: right;
-	width: 16px;
-	height: 16px;
-	background-image: url('images/close.gif');
-	background-repeat: no-repeat;
-	background-position: 0px 1px;
-	margin: 0px;
-	padding: 0px;
-}
-
-.mceDialogClose a {
-	width: 16px;
-	height: 14px;
-	display: block;
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-	margin: 0px;
-	padding: 0px;
-}
-
-.mceDialogIFrameWrapper {
-	border: 1px solid black;
-	clear: both;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/image.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/image.htm
@@ -1,87 +1,101 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advanced_dlg.image_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="js/image.js"></script>
-	<base target="_self" />
-</head>
-<body id="image" style="display: none">
-<form onsubmit="ImageDialog.update();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_insert_image_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/image.js"></script>

+	<base target="_self" />

+</head>

+<body id="image" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertImage();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_image_title}</a></span></li>

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+     <table border="0" cellpadding="4" cellspacing="0">

+          <tr>

+            <td nowrap="nowrap"><label for="src">{$lang_insert_image_src}</label></td>

+            <td><table border="0" cellspacing="0" cellpadding="0">

+                <tr>

+                  <td><input id="src" name="src" type="text" value="" style="width: 200px" onchange="getImageData();" /></td>

+                  <td id="srcbrowsercontainer">&nbsp;</td>

+                </tr>

+              </table></td>

+          </tr>

+		  <!-- Image list -->

+		  <script language="javascript">

+			if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {

+				var html = "";

+

+				html += '<tr><td><label for="image_list">{$lang_image_list}</label></td>';

+				html += '<td><select id="image_list" name="image_list" style="width: 200px" onchange="this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';

+				html += '<option value="">---</option>';

+

+				for (var i=0; i<tinyMCEImageList.length; i++)

+					html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';

+

+				html += '</select></td></tr>';

+

+				document.write(html);

+			}

+		  </script>

+		  <!-- /Image list -->

+          <tr>

+            <td nowrap="nowrap"><label for="alt">{$lang_insert_image_alt}</label></td>

+            <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>

+          </tr>

+          <tr>

+            <td nowrap="nowrap"><label for="align">{$lang_insert_image_align}</label></td>

+            <td><select id="align" name="align">

+                <option value="">{$lang_insert_image_align_default}</option>

+                <option value="baseline">{$lang_insert_image_align_baseline}</option>

+                <option value="top">{$lang_insert_image_align_top}</option>

+                <option value="middle">{$lang_insert_image_align_middle}</option>

+                <option value="bottom">{$lang_insert_image_align_bottom}</option>

+                <option value="texttop">{$lang_insert_image_align_texttop}</option>

+                <option value="absmiddle">{$lang_insert_image_align_absmiddle}</option>

+                <option value="absbottom">{$lang_insert_image_align_absbottom}</option>

+                <option value="left">{$lang_insert_image_align_left}</option>

+                <option value="right">{$lang_insert_image_align_right}</option>

+              </select></td>

+          </tr>

+          <tr>

+            <td nowrap="nowrap"><label for="width">{$lang_insert_image_dimensions}</label></td>

+            <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />

+              x

+              <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>

+          </tr>

+          <tr>

+            <td nowrap="nowrap"><label for="border">{$lang_insert_image_border}</label></td>

+            <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" /></td>

+          </tr>

+          <tr>

+            <td nowrap="nowrap"><label for="vspace">{$lang_insert_image_vspace}</label></td>

+            <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" /></td>

+          </tr>

+          <tr>

+            <td nowrap="nowrap"><label for="hspace">{$lang_insert_image_hspace}</label></td>

+            <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" /></td>

+          </tr>

+        </table>

+		</div>

+	</div>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();" />

+		</div>

+

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-     <table border="0" cellpadding="4" cellspacing="0">
-          <tr>
-            <td nowrap="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
-            <td><table border="0" cellspacing="0" cellpadding="0">
-                <tr>
-                  <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
-                  <td id="srcbrowsercontainer">&nbsp;</td>
-                </tr>
-              </table></td>
-          </tr>
-		  <tr>
-			<td><label for="image_list">{#advanced_dlg.image_list}</label></td>
-			<td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
-		  </tr>
-          <tr>
-            <td nowrap="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
-            <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
-          </tr>
-          <tr>
-            <td nowrap="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
-            <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
-                <option value="">{#not_set}</option>
-                <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
-                <option value="top">{#advanced_dlg.image_align_top}</option>
-                <option value="middle">{#advanced_dlg.image_align_middle}</option>
-                <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
-                <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
-                <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
-                <option value="left">{#advanced_dlg.image_align_left}</option>
-                <option value="right">{#advanced_dlg.image_align_right}</option>
-              </select></td>
-          </tr>
-          <tr>
-            <td nowrap="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
-            <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
-              x
-              <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
-          </tr>
-          <tr>
-            <td nowrap="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
-            <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
-          </tr>
-          <tr>
-            <td nowrap="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
-            <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
-          </tr>
-          <tr>
-            <td nowrap="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
-            <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
-          </tr>
-        </table>
-		</div>
-	</div>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#insert}" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/img/icons.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/about.js
+++ /dev/null
@@ -1,73 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-function init() {
-	var ed, tcont;
-
-	tinyMCEPopup.resizeToInnerSize();
-	ed = tinyMCEPopup.editor;
-
-	// Give FF some time
-	window.setTimeout('insertHelpIFrame();', 10);
-
-	tcont = document.getElementById('plugintablecontainer');
-	document.getElementById('plugins_tab').style.display = 'none';
-
-	var html = "";
-	html += '<table id="plugintable">';
-	html += '<thead>';
-	html += '<tr>';
-	html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
-	html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
-	html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
-	html += '</tr>';
-	html += '</thead>';
-	html += '<tbody>';
-
-	tinymce.each(ed.plugins, function(p, n) {
-		var info;
-
-		if (!p.getInfo)
-			return;
-
-		html += '<tr>';
-
-		info = p.getInfo();
-
-		if (info.infourl != null && info.infourl != '')
-			html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
-		else
-			html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
-
-		if (info.authorurl != null && info.authorurl != '')
-			html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
-		else
-			html += '<td width="35%">' + info.author + '</td>';
-
-		html += '<td width="15%">' + info.version + '</td>';
-		html += '</tr>';
-
-		document.getElementById('plugins_tab').style.display = '';
-
-	});
-
-	html += '</tbody>';
-	html += '</table>';
-
-	tcont.innerHTML = html;
-
-	tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
-	tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
-}
-
-function insertHelpIFrame() {
-	var html;
-
-	if (tinyMCEPopup.getParam('docs_url')) {
-		html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
-		document.getElementById('iframecontainer').innerHTML = html;
-		document.getElementById('help_tab').style.display = 'block';
-	}
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/anchor.js
+++ /dev/null
@@ -1,38 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var AnchorDialog = {
-	init : function(ed) {
-		var action, elm, f = document.forms[0];
-
-		this.editor = ed;
-		elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');
-		v = ed.dom.getAttrib(elm, 'name');
-
-		if (v) {
-			this.action = 'update';
-			f.anchorName.value = v;
-		}
-
-		f.insert.value = ed.getLang(elm ? 'update' : 'insert');
-	},
-
-	update : function() {
-		var ed = this.editor;
-		
-		tinyMCEPopup.restoreSelection();
-
-		if (this.action != 'update')
-			ed.selection.collapse(1);
-
-		// Webkit acts weird if empty inline element is inserted so we need to use a image instead
-		if (tinymce.isWebKit)
-			ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
-		else
-			ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
-
-		tinyMCEPopup.close();
-	}
-};
-
-tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/charmap.js
+++ /dev/null
@@ -1,326 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var charmap = [
-	['&nbsp;',    '&#160;',  true, 'no-break space'],
-	['&amp;',     '&#38;',   true, 'ampersand'],
-	['&quot;',    '&#34;',   true, 'quotation mark'],
-// finance
-	['&cent;',    '&#162;',  true, 'cent sign'],
-	['&euro;',    '&#8364;', true, 'euro sign'],
-	['&pound;',   '&#163;',  true, 'pound sign'],
-	['&yen;',     '&#165;',  true, 'yen sign'],
-// signs
-	['&copy;',    '&#169;',  true, 'copyright sign'],
-	['&reg;',     '&#174;',  true, 'registered sign'],
-	['&trade;',   '&#8482;', true, 'trade mark sign'],
-	['&permil;',  '&#8240;', true, 'per mille sign'],
-	['&micro;',   '&#181;',  true, 'micro sign'],
-	['&middot;',  '&#183;',  true, 'middle dot'],
-	['&bull;',    '&#8226;', true, 'bullet'],
-	['&hellip;',  '&#8230;', true, 'three dot leader'],
-	['&prime;',   '&#8242;', true, 'minutes / feet'],
-	['&Prime;',   '&#8243;', true, 'seconds / inches'],
-	['&sect;',    '&#167;',  true, 'section sign'],
-	['&para;',    '&#182;',  true, 'paragraph sign'],
-	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
-// quotations
-	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
-	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
-	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
-	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
-	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
-	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
-	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
-	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
-	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
-	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
-	['&lt;',      '&#60;',   true, 'less-than sign'],
-	['&gt;',      '&#62;',   true, 'greater-than sign'],
-	['&le;',      '&#8804;', true, 'less-than or equal to'],
-	['&ge;',      '&#8805;', true, 'greater-than or equal to'],
-	['&ndash;',   '&#8211;', true, 'en dash'],
-	['&mdash;',   '&#8212;', true, 'em dash'],
-	['&macr;',    '&#175;',  true, 'macron'],
-	['&oline;',   '&#8254;', true, 'overline'],
-	['&curren;',  '&#164;',  true, 'currency sign'],
-	['&brvbar;',  '&#166;',  true, 'broken bar'],
-	['&uml;',     '&#168;',  true, 'diaeresis'],
-	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
-	['&iquest;',  '&#191;',  true, 'turned question mark'],
-	['&circ;',    '&#710;',  true, 'circumflex accent'],
-	['&tilde;',   '&#732;',  true, 'small tilde'],
-	['&deg;',     '&#176;',  true, 'degree sign'],
-	['&minus;',   '&#8722;', true, 'minus sign'],
-	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
-	['&divide;',  '&#247;',  true, 'division sign'],
-	['&frasl;',   '&#8260;', true, 'fraction slash'],
-	['&times;',   '&#215;',  true, 'multiplication sign'],
-	['&sup1;',    '&#185;',  true, 'superscript one'],
-	['&sup2;',    '&#178;',  true, 'superscript two'],
-	['&sup3;',    '&#179;',  true, 'superscript three'],
-	['&frac14;',  '&#188;',  true, 'fraction one quarter'],
-	['&frac12;',  '&#189;',  true, 'fraction one half'],
-	['&frac34;',  '&#190;',  true, 'fraction three quarters'],
-// math / logical
-	['&fnof;',    '&#402;',  true, 'function / florin'],
-	['&int;',     '&#8747;', true, 'integral'],
-	['&sum;',     '&#8721;', true, 'n-ary sumation'],
-	['&infin;',   '&#8734;', true, 'infinity'],
-	['&radic;',   '&#8730;', true, 'square root'],
-	['&sim;',     '&#8764;', false,'similar to'],
-	['&cong;',    '&#8773;', false,'approximately equal to'],
-	['&asymp;',   '&#8776;', true, 'almost equal to'],
-	['&ne;',      '&#8800;', true, 'not equal to'],
-	['&equiv;',   '&#8801;', true, 'identical to'],
-	['&isin;',    '&#8712;', false,'element of'],
-	['&notin;',   '&#8713;', false,'not an element of'],
-	['&ni;',      '&#8715;', false,'contains as member'],
-	['&prod;',    '&#8719;', true, 'n-ary product'],
-	['&and;',     '&#8743;', false,'logical and'],
-	['&or;',      '&#8744;', false,'logical or'],
-	['&not;',     '&#172;',  true, 'not sign'],
-	['&cap;',     '&#8745;', true, 'intersection'],
-	['&cup;',     '&#8746;', false,'union'],
-	['&part;',    '&#8706;', true, 'partial differential'],
-	['&forall;',  '&#8704;', false,'for all'],
-	['&exist;',   '&#8707;', false,'there exists'],
-	['&empty;',   '&#8709;', false,'diameter'],
-	['&nabla;',   '&#8711;', false,'backward difference'],
-	['&lowast;',  '&#8727;', false,'asterisk operator'],
-	['&prop;',    '&#8733;', false,'proportional to'],
-	['&ang;',     '&#8736;', false,'angle'],
-// undefined
-	['&acute;',   '&#180;',  true, 'acute accent'],
-	['&cedil;',   '&#184;',  true, 'cedilla'],
-	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
-	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
-	['&dagger;',  '&#8224;', true, 'dagger'],
-	['&Dagger;',  '&#8225;', true, 'double dagger'],
-// alphabetical special chars
-	['&Agrave;',  '&#192;',  true, 'A - grave'],
-	['&Aacute;',  '&#193;',  true, 'A - acute'],
-	['&Acirc;',   '&#194;',  true, 'A - circumflex'],
-	['&Atilde;',  '&#195;',  true, 'A - tilde'],
-	['&Auml;',    '&#196;',  true, 'A - diaeresis'],
-	['&Aring;',   '&#197;',  true, 'A - ring above'],
-	['&AElig;',   '&#198;',  true, 'ligature AE'],
-	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
-	['&Egrave;',  '&#200;',  true, 'E - grave'],
-	['&Eacute;',  '&#201;',  true, 'E - acute'],
-	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
-	['&Euml;',    '&#203;',  true, 'E - diaeresis'],
-	['&Igrave;',  '&#204;',  true, 'I - grave'],
-	['&Iacute;',  '&#205;',  true, 'I - acute'],
-	['&Icirc;',   '&#206;',  true, 'I - circumflex'],
-	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
-	['&ETH;',     '&#208;',  true, 'ETH'],
-	['&Ntilde;',  '&#209;',  true, 'N - tilde'],
-	['&Ograve;',  '&#210;',  true, 'O - grave'],
-	['&Oacute;',  '&#211;',  true, 'O - acute'],
-	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
-	['&Otilde;',  '&#213;',  true, 'O - tilde'],
-	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
-	['&Oslash;',  '&#216;',  true, 'O - slash'],
-	['&OElig;',   '&#338;',  true, 'ligature OE'],
-	['&Scaron;',  '&#352;',  true, 'S - caron'],
-	['&Ugrave;',  '&#217;',  true, 'U - grave'],
-	['&Uacute;',  '&#218;',  true, 'U - acute'],
-	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
-	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
-	['&Yacute;',  '&#221;',  true, 'Y - acute'],
-	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
-	['&THORN;',   '&#222;',  true, 'THORN'],
-	['&agrave;',  '&#224;',  true, 'a - grave'],
-	['&aacute;',  '&#225;',  true, 'a - acute'],
-	['&acirc;',   '&#226;',  true, 'a - circumflex'],
-	['&atilde;',  '&#227;',  true, 'a - tilde'],
-	['&auml;',    '&#228;',  true, 'a - diaeresis'],
-	['&aring;',   '&#229;',  true, 'a - ring above'],
-	['&aelig;',   '&#230;',  true, 'ligature ae'],
-	['&ccedil;',  '&#231;',  true, 'c - cedilla'],
-	['&egrave;',  '&#232;',  true, 'e - grave'],
-	['&eacute;',  '&#233;',  true, 'e - acute'],
-	['&ecirc;',   '&#234;',  true, 'e - circumflex'],
-	['&euml;',    '&#235;',  true, 'e - diaeresis'],
-	['&igrave;',  '&#236;',  true, 'i - grave'],
-	['&iacute;',  '&#237;',  true, 'i - acute'],
-	['&icirc;',   '&#238;',  true, 'i - circumflex'],
-	['&iuml;',    '&#239;',  true, 'i - diaeresis'],
-	['&eth;',     '&#240;',  true, 'eth'],
-	['&ntilde;',  '&#241;',  true, 'n - tilde'],
-	['&ograve;',  '&#242;',  true, 'o - grave'],
-	['&oacute;',  '&#243;',  true, 'o - acute'],
-	['&ocirc;',   '&#244;',  true, 'o - circumflex'],
-	['&otilde;',  '&#245;',  true, 'o - tilde'],
-	['&ouml;',    '&#246;',  true, 'o - diaeresis'],
-	['&oslash;',  '&#248;',  true, 'o slash'],
-	['&oelig;',   '&#339;',  true, 'ligature oe'],
-	['&scaron;',  '&#353;',  true, 's - caron'],
-	['&ugrave;',  '&#249;',  true, 'u - grave'],
-	['&uacute;',  '&#250;',  true, 'u - acute'],
-	['&ucirc;',   '&#251;',  true, 'u - circumflex'],
-	['&uuml;',    '&#252;',  true, 'u - diaeresis'],
-	['&yacute;',  '&#253;',  true, 'y - acute'],
-	['&thorn;',   '&#254;',  true, 'thorn'],
-	['&yuml;',    '&#255;',  true, 'y - diaeresis'],
-    ['&Alpha;',   '&#913;',  true, 'Alpha'],
-	['&Beta;',    '&#914;',  true, 'Beta'],
-	['&Gamma;',   '&#915;',  true, 'Gamma'],
-	['&Delta;',   '&#916;',  true, 'Delta'],
-	['&Epsilon;', '&#917;',  true, 'Epsilon'],
-	['&Zeta;',    '&#918;',  true, 'Zeta'],
-	['&Eta;',     '&#919;',  true, 'Eta'],
-	['&Theta;',   '&#920;',  true, 'Theta'],
-	['&Iota;',    '&#921;',  true, 'Iota'],
-	['&Kappa;',   '&#922;',  true, 'Kappa'],
-	['&Lambda;',  '&#923;',  true, 'Lambda'],
-	['&Mu;',      '&#924;',  true, 'Mu'],
-	['&Nu;',      '&#925;',  true, 'Nu'],
-	['&Xi;',      '&#926;',  true, 'Xi'],
-	['&Omicron;', '&#927;',  true, 'Omicron'],
-	['&Pi;',      '&#928;',  true, 'Pi'],
-	['&Rho;',     '&#929;',  true, 'Rho'],
-	['&Sigma;',   '&#931;',  true, 'Sigma'],
-	['&Tau;',     '&#932;',  true, 'Tau'],
-	['&Upsilon;', '&#933;',  true, 'Upsilon'],
-	['&Phi;',     '&#934;',  true, 'Phi'],
-	['&Chi;',     '&#935;',  true, 'Chi'],
-	['&Psi;',     '&#936;',  true, 'Psi'],
-	['&Omega;',   '&#937;',  true, 'Omega'],
-	['&alpha;',   '&#945;',  true, 'alpha'],
-	['&beta;',    '&#946;',  true, 'beta'],
-	['&gamma;',   '&#947;',  true, 'gamma'],
-	['&delta;',   '&#948;',  true, 'delta'],
-	['&epsilon;', '&#949;',  true, 'epsilon'],
-	['&zeta;',    '&#950;',  true, 'zeta'],
-	['&eta;',     '&#951;',  true, 'eta'],
-	['&theta;',   '&#952;',  true, 'theta'],
-	['&iota;',    '&#953;',  true, 'iota'],
-	['&kappa;',   '&#954;',  true, 'kappa'],
-	['&lambda;',  '&#955;',  true, 'lambda'],
-	['&mu;',      '&#956;',  true, 'mu'],
-	['&nu;',      '&#957;',  true, 'nu'],
-	['&xi;',      '&#958;',  true, 'xi'],
-	['&omicron;', '&#959;',  true, 'omicron'],
-	['&pi;',      '&#960;',  true, 'pi'],
-	['&rho;',     '&#961;',  true, 'rho'],
-	['&sigmaf;',  '&#962;',  true, 'final sigma'],
-	['&sigma;',   '&#963;',  true, 'sigma'],
-	['&tau;',     '&#964;',  true, 'tau'],
-	['&upsilon;', '&#965;',  true, 'upsilon'],
-	['&phi;',     '&#966;',  true, 'phi'],
-	['&chi;',     '&#967;',  true, 'chi'],
-	['&psi;',     '&#968;',  true, 'psi'],
-	['&omega;',   '&#969;',  true, 'omega'],
-// symbols
-	['&alefsym;', '&#8501;', false,'alef symbol'],
-	['&piv;',     '&#982;',  false,'pi symbol'],
-	['&real;',    '&#8476;', false,'real part symbol'],
-	['&thetasym;','&#977;',  false,'theta symbol'],
-	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
-	['&weierp;',  '&#8472;', false,'Weierstrass p'],
-	['&image;',   '&#8465;', false,'imaginary part'],
-// arrows
-	['&larr;',    '&#8592;', true, 'leftwards arrow'],
-	['&uarr;',    '&#8593;', true, 'upwards arrow'],
-	['&rarr;',    '&#8594;', true, 'rightwards arrow'],
-	['&darr;',    '&#8595;', true, 'downwards arrow'],
-	['&harr;',    '&#8596;', true, 'left right arrow'],
-	['&crarr;',   '&#8629;', false,'carriage return'],
-	['&lArr;',    '&#8656;', false,'leftwards double arrow'],
-	['&uArr;',    '&#8657;', false,'upwards double arrow'],
-	['&rArr;',    '&#8658;', false,'rightwards double arrow'],
-	['&dArr;',    '&#8659;', false,'downwards double arrow'],
-	['&hArr;',    '&#8660;', false,'left right double arrow'],
-	['&there4;',  '&#8756;', false,'therefore'],
-	['&sub;',     '&#8834;', false,'subset of'],
-	['&sup;',     '&#8835;', false,'superset of'],
-	['&nsub;',    '&#8836;', false,'not a subset of'],
-	['&sube;',    '&#8838;', false,'subset of or equal to'],
-	['&supe;',    '&#8839;', false,'superset of or equal to'],
-	['&oplus;',   '&#8853;', false,'circled plus'],
-	['&otimes;',  '&#8855;', false,'circled times'],
-	['&perp;',    '&#8869;', false,'perpendicular'],
-	['&sdot;',    '&#8901;', false,'dot operator'],
-	['&lceil;',   '&#8968;', false,'left ceiling'],
-	['&rceil;',   '&#8969;', false,'right ceiling'],
-	['&lfloor;',  '&#8970;', false,'left floor'],
-	['&rfloor;',  '&#8971;', false,'right floor'],
-	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
-	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
-	['&loz;',     '&#9674;', true,'lozenge'],
-	['&spades;',  '&#9824;', false,'black spade suit'],
-	['&clubs;',   '&#9827;', true, 'black club suit'],
-	['&hearts;',  '&#9829;', true, 'black heart suit'],
-	['&diams;',   '&#9830;', true, 'black diamond suit'],
-	['&ensp;',    '&#8194;', false,'en space'],
-	['&emsp;',    '&#8195;', false,'em space'],
-	['&thinsp;',  '&#8201;', false,'thin space'],
-	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
-	['&zwj;',     '&#8205;', false,'zero width joiner'],
-	['&lrm;',     '&#8206;', false,'left-to-right mark'],
-	['&rlm;',     '&#8207;', false,'right-to-left mark'],
-	['&shy;',     '&#173;',  false,'soft hyphen']
-];
-
-tinyMCEPopup.onInit.add(function() {
-	tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
-});
-
-function renderCharMapHTML() {
-	var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
-	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
-	var cols=-1;
-
-	for (i=0; i<charmap.length; i++) {
-		if (charmap[i][2]==true) {
-			cols++;
-			html += ''
-				+ '<td class="charmap">'
-				+ '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
-				+ charmap[i][1]
-				+ '</a></td>';
-			if ((cols+1) % charsPerRow == 0)
-				html += '</tr><tr height="' + tdHeight + '">';
-		}
-	 }
-
-	if (cols % charsPerRow > 0) {
-		var padd = charsPerRow - (cols % charsPerRow);
-		for (var i=0; i<padd-1; i++)
-			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
-	}
-
-	html += '</tr></table>';
-
-	return html;
-}
-
-function insertChar(chr) {
-	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
-
-	// Refocus in window
-	if (tinyMCEPopup.isWindow)
-		window.focus();
-
-	tinyMCEPopup.editor.focus();
-	tinyMCEPopup.close();
-}
-
-function previewChar(codeA, codeB, codeN) {
-	var elmA = document.getElementById('codeA');
-	var elmB = document.getElementById('codeB');
-	var elmV = document.getElementById('codeV');
-	var elmN = document.getElementById('codeN');
-
-	if (codeA=='#160;') {
-		elmV.innerHTML = '__';
-	} else {
-		elmV.innerHTML = '&' + codeA;
-	}
-
-	elmB.innerHTML = '&amp;' + codeA;
-	elmA.innerHTML = '&amp;' + codeB;
-	elmN.innerHTML = codeN;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/color_picker.js
+++ /dev/null
@@ -1,254 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
-
-var colors = [
-	"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
-	"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
-	"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
-	"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
-	"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
-	"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
-	"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
-	"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
-	"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
-	"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
-	"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
-	"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
-	"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
-	"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
-	"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
-	"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
-	"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
-	"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
-	"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
-	"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
-	"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
-	"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
-	"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
-	"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
-	"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
-	"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
-	"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
-];
-
-var named = {
-	'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
-	'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
-	'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
-	'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
-	'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
-	'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
-	'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
-	'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
-	'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
-	'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
-	'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
-	'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
-	'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
-	'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
-	'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
-	'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
-	'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
-	'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
-	'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
-	'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
-	'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
-	'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
-	'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
-};
-
-function init() {
-	var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));
-
-	tinyMCEPopup.resizeToInnerSize();
-
-	generatePicker();
-
-	if (inputColor) {
-		changeFinalColor(inputColor);
-
-		col = convertHexToRGB(inputColor);
-
-		if (col)
-			updateLight(col.r, col.g, col.b);
-	}
-}
-
-function insertAction() {
-	var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
-
-	tinyMCEPopup.restoreSelection();
-
-	if (f)
-		f(color);
-
-	tinyMCEPopup.close();
-}
-
-function showColor(color, name) {
-	if (name)
-		document.getElementById("colorname").innerHTML = name;
-
-	document.getElementById("preview").style.backgroundColor = color;
-	document.getElementById("color").value = color.toLowerCase();
-}
-
-function convertRGBToHex(col) {
-	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
-	if (!col)
-		return col;
-
-	var rgb = col.replace(re, "$1,$2,$3").split(',');
-	if (rgb.length == 3) {
-		r = parseInt(rgb[0]).toString(16);
-		g = parseInt(rgb[1]).toString(16);
-		b = parseInt(rgb[2]).toString(16);
-
-		r = r.length == 1 ? '0' + r : r;
-		g = g.length == 1 ? '0' + g : g;
-		b = b.length == 1 ? '0' + b : b;
-
-		return "#" + r + g + b;
-	}
-
-	return col;
-}
-
-function convertHexToRGB(col) {
-	if (col.indexOf('#') != -1) {
-		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
-		r = parseInt(col.substring(0, 2), 16);
-		g = parseInt(col.substring(2, 4), 16);
-		b = parseInt(col.substring(4, 6), 16);
-
-		return {r : r, g : g, b : b};
-	}
-
-	return null;
-}
-
-function generatePicker() {
-	var el = document.getElementById('light'), h = '', i;
-
-	for (i = 0; i < detail; i++){
-		h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
-		+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
-		+ ' onmousedown="isMouseDown = true; return false;"'
-		+ ' onmouseup="isMouseDown = false;"'
-		+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
-		+ ' onmouseover="isMouseOver = true;"'
-		+ ' onmouseout="isMouseOver = false;"'
-		+ '></div>';
-	}
-
-	el.innerHTML = h;
-}
-
-function generateWebColors() {
-	var el = document.getElementById('webcolors'), h = '', i;
-
-	if (el.className == 'generated')
-		return;
-
-	h += '<table border="0" cellspacing="1" cellpadding="0">'
-		+ '<tr>';
-
-	for (i=0; i<colors.length; i++) {
-		h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
-			+ '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'
-			+ '</a></td>';
-		if ((i+1) % 18 == 0)
-			h += '</tr><tr>';
-	}
-
-	h += '</table>';
-
-	el.innerHTML = h;
-	el.className = 'generated';
-}
-
-function generateNamedColors() {
-	var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
-
-	if (el.className == 'generated')
-		return;
-
-	for (n in named) {
-		v = named[n];
-		h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n +  '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
-	}
-
-	el.innerHTML = h;
-	el.className = 'generated';
-}
-
-function dechex(n) {
-	return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
-}
-
-function computeColor(e) {
-	var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
-
-	x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
-	y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
-
-	partWidth = document.getElementById('colors').width / 6;
-	partDetail = detail / 2;
-	imHeight = document.getElementById('colors').height;
-
-	r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
-	g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255	+ (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
-	b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
-
-	coef = (imHeight - y) / imHeight;
-	r = 128 + (r - 128) * coef;
-	g = 128 + (g - 128) * coef;
-	b = 128 + (b - 128) * coef;
-
-	changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
-	updateLight(r, g, b);
-}
-
-function updateLight(r, g, b) {
-	var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
-
-	for (i=0; i<detail; i++) {
-		if ((i>=0) && (i<partDetail)) {
-			finalCoef = i / partDetail;
-			finalR = dechex(255 - (255 - r) * finalCoef);
-			finalG = dechex(255 - (255 - g) * finalCoef);
-			finalB = dechex(255 - (255 - b) * finalCoef);
-		} else {
-			finalCoef = 2 - i / partDetail;
-			finalR = dechex(r * finalCoef);
-			finalG = dechex(g * finalCoef);
-			finalB = dechex(b * finalCoef);
-		}
-
-		color = finalR + finalG + finalB;
-
-		setCol('gs' + i, '#'+color);
-	}
-}
-
-function changeFinalColor(color) {
-	if (color.indexOf('#') == -1)
-		color = convertRGBToHex(color);
-
-	setCol('preview', color);
-	document.getElementById('color').value = color;
-}
-
-function setCol(e, c) {
-	try {
-		document.getElementById(e).style.backgroundColor = c;
-	} catch (ex) {
-		// Ignore IE warning
-	}
-}
-
-tinyMCEPopup.onInit.add(init);
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/image.js
+++ /dev/null
@@ -1,246 +1,1 @@
-var ImageDialog = {
-	preInit : function() {
-		var url;
 
-		tinyMCEPopup.requireLangPack();
-
-		if (url = tinyMCEPopup.getParam("external_image_list_url"))
-			document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-	},
-
-	init : function() {
-		var f = document.forms[0], ed = tinyMCEPopup.editor;
-
-		// Setup browse button
-		document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
-		if (isVisible('srcbrowser'))
-			document.getElementById('src').style.width = '180px';
-
-		e = ed.selection.getNode();
-
-		this.fillFileList('image_list', 'tinyMCEImageList');
-
-		if (e.nodeName == 'IMG') {
-			f.src.value = ed.dom.getAttrib(e, 'src');
-			f.alt.value = ed.dom.getAttrib(e, 'alt');
-			f.border.value = this.getAttrib(e, 'border');
-			f.vspace.value = this.getAttrib(e, 'vspace');
-			f.hspace.value = this.getAttrib(e, 'hspace');
-			f.width.value = ed.dom.getAttrib(e, 'width');
-			f.height.value = ed.dom.getAttrib(e, 'height');
-			f.insert.value = ed.getLang('update');
-			this.styleVal = ed.dom.getAttrib(e, 'style');
-			selectByValue(f, 'image_list', f.src.value);
-			selectByValue(f, 'align', this.getAttrib(e, 'align'));
-			this.updateStyle();
-		}
-	},
-
-	fillFileList : function(id, l) {
-		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
-		l = window[l];
-
-		if (l && l.length > 0) {
-			lst.options[lst.options.length] = new Option('', '');
-
-			tinymce.each(l, function(o) {
-				lst.options[lst.options.length] = new Option(o[0], o[1]);
-			});
-		} else
-			dom.remove(dom.getParent(id, 'tr'));
-	},
-
-	update : function() {
-		var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
-
-		tinyMCEPopup.restoreSelection();
-
-		if (f.src.value === '') {
-			if (ed.selection.getNode().nodeName == 'IMG') {
-				ed.dom.remove(ed.selection.getNode());
-				ed.execCommand('mceRepaint');
-			}
-
-			tinyMCEPopup.close();
-			return;
-		}
-
-		if (!ed.settings.inline_styles) {
-			args = tinymce.extend(args, {
-				vspace : nl.vspace.value,
-				hspace : nl.hspace.value,
-				border : nl.border.value,
-				align : getSelectValue(f, 'align')
-			});
-		} else
-			args.style = this.styleVal;
-
-		tinymce.extend(args, {
-			src : f.src.value,
-			alt : f.alt.value,
-			width : f.width.value,
-			height : f.height.value
-		});
-
-		el = ed.selection.getNode();
-
-		if (el && el.nodeName == 'IMG') {
-			ed.dom.setAttribs(el, args);
-		} else {
-			ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
-			ed.dom.setAttribs('__mce_tmp', args);
-			ed.dom.setAttrib('__mce_tmp', 'id', '');
-			ed.undoManager.add();
-		}
-
-		tinyMCEPopup.close();
-	},
-
-	updateStyle : function() {
-		var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
-
-		if (tinyMCEPopup.editor.settings.inline_styles) {
-			st = tinyMCEPopup.dom.parseStyle(this.styleVal);
-
-			// Handle align
-			v = getSelectValue(f, 'align');
-			if (v) {
-				if (v == 'left' || v == 'right') {
-					st['float'] = v;
-					delete st['vertical-align'];
-				} else {
-					st['vertical-align'] = v;
-					delete st['float'];
-				}
-			} else {
-				delete st['float'];
-				delete st['vertical-align'];
-			}
-
-			// Handle border
-			v = f.border.value;
-			if (v || v == '0') {
-				if (v == '0')
-					st['border'] = '0';
-				else
-					st['border'] = v + 'px solid black';
-			} else
-				delete st['border'];
-
-			// Handle hspace
-			v = f.hspace.value;
-			if (v) {
-				delete st['margin'];
-				st['margin-left'] = v + 'px';
-				st['margin-right'] = v + 'px';
-			} else {
-				delete st['margin-left'];
-				delete st['margin-right'];
-			}
-
-			// Handle vspace
-			v = f.vspace.value;
-			if (v) {
-				delete st['margin'];
-				st['margin-top'] = v + 'px';
-				st['margin-bottom'] = v + 'px';
-			} else {
-				delete st['margin-top'];
-				delete st['margin-bottom'];
-			}
-
-			// Merge
-			st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
-			this.styleVal = dom.serializeStyle(st);
-		}
-	},
-
-	getAttrib : function(e, at) {
-		var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
-
-		if (ed.settings.inline_styles) {
-			switch (at) {
-				case 'align':
-					if (v = dom.getStyle(e, 'float'))
-						return v;
-
-					if (v = dom.getStyle(e, 'vertical-align'))
-						return v;
-
-					break;
-
-				case 'hspace':
-					v = dom.getStyle(e, 'margin-left')
-					v2 = dom.getStyle(e, 'margin-right');
-					if (v && v == v2)
-						return parseInt(v.replace(/[^0-9]/g, ''));
-
-					break;
-
-				case 'vspace':
-					v = dom.getStyle(e, 'margin-top')
-					v2 = dom.getStyle(e, 'margin-bottom');
-					if (v && v == v2)
-						return parseInt(v.replace(/[^0-9]/g, ''));
-
-					break;
-
-				case 'border':
-					v = 0;
-
-					tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
-						sv = dom.getStyle(e, 'border-' + sv + '-width');
-
-						// False or not the same as prev
-						if (!sv || (sv != v && v !== 0)) {
-							v = 0;
-							return false;
-						}
-
-						if (sv)
-							v = sv;
-					});
-
-					if (v)
-						return parseInt(v.replace(/[^0-9]/g, ''));
-
-					break;
-			}
-		}
-
-		if (v = dom.getAttrib(e, at))
-			return v;
-
-		return '';
-	},
-
-	resetImageData : function() {
-		var f = document.forms[0];
-
-		f.width.value = f.height.value = "";	
-	},
-
-	updateImageData : function() {
-		var f = document.forms[0], t = ImageDialog;
-
-		if (f.width.value == "")
-			f.width.value = t.preloadImg.width;
-
-		if (f.height.value == "")
-			f.height.value = t.preloadImg.height;
-	},
-
-	getImageData : function() {
-		var f = document.forms[0];
-
-		this.preloadImg = new Image();
-		this.preloadImg.onload = this.updateImageData;
-		this.preloadImg.onerror = this.resetImageData;
-		this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
-	}
-};
-
-ImageDialog.preInit();
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/link.js
+++ /dev/null
@@ -1,156 +1,1 @@
-tinyMCEPopup.requireLangPack();
 
-var LinkDialog = {
-	preInit : function() {
-		var url;
-
-		if (url = tinyMCEPopup.getParam("external_link_list_url"))
-			document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-	},
-
-	init : function() {
-		var f = document.forms[0], ed = tinyMCEPopup.editor;
-
-		// Setup browse button
-		document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
-		if (isVisible('hrefbrowser'))
-			document.getElementById('href').style.width = '180px';
-
-		this.fillClassList('class_list');
-		this.fillFileList('link_list', 'tinyMCELinkList');
-		this.fillTargetList('target_list');
-
-		if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
-			f.href.value = ed.dom.getAttrib(e, 'href');
-			f.linktitle.value = ed.dom.getAttrib(e, 'title');
-			f.insert.value = ed.getLang('update');
-			selectByValue(f, 'link_list', f.href.value);
-			selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
-			selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
-		}
-	},
-
-	update : function() {
-		var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;
-
-		tinyMCEPopup.restoreSelection();
-		e = ed.dom.getParent(ed.selection.getNode(), 'A');
-
-		// Remove element if there is no href
-		if (!f.href.value) {
-			if (e) {
-				tinyMCEPopup.execCommand("mceBeginUndoLevel");
-				b = ed.selection.getBookmark();
-				ed.dom.remove(e, 1);
-				ed.selection.moveToBookmark(b);
-				tinyMCEPopup.execCommand("mceEndUndoLevel");
-				tinyMCEPopup.close();
-				return;
-			}
-		}
-
-		tinyMCEPopup.execCommand("mceBeginUndoLevel");
-
-		// Create new anchor elements
-		if (e == null) {
-			tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
-
-			tinymce.each(ed.dom.select("a"), function(n) {
-				if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
-					e = n;
-
-					ed.dom.setAttribs(e, {
-						href : f.href.value,
-						title : f.linktitle.value,
-						target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
-						'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
-					});
-				}
-			});
-		} else {
-			ed.dom.setAttribs(e, {
-				href : f.href.value,
-				title : f.linktitle.value,
-				target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
-				'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
-			});
-		}
-
-		// Don't move caret if selection was image
-		if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
-			ed.focus();
-			ed.selection.select(e);
-			ed.selection.collapse(0);
-			tinyMCEPopup.storeSelection();
-		}
-
-		tinyMCEPopup.execCommand("mceEndUndoLevel");
-		tinyMCEPopup.close();
-	},
-
-	checkPrefix : function(n) {
-		if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
-			n.value = 'mailto:' + n.value;
-
-		if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
-			n.value = 'http://' + n.value;
-	},
-
-	fillFileList : function(id, l) {
-		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
-		l = window[l];
-
-		if (l && l.length > 0) {
-			lst.options[lst.options.length] = new Option('', '');
-
-			tinymce.each(l, function(o) {
-				lst.options[lst.options.length] = new Option(o[0], o[1]);
-			});
-		} else
-			dom.remove(dom.getParent(id, 'tr'));
-	},
-
-	fillClassList : function(id) {
-		var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
-		if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
-			cl = [];
-
-			tinymce.each(v.split(';'), function(v) {
-				var p = v.split('=');
-
-				cl.push({'title' : p[0], 'class' : p[1]});
-			});
-		} else
-			cl = tinyMCEPopup.editor.dom.getClasses();
-
-		if (cl.length > 0) {
-			lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-
-			tinymce.each(cl, function(o) {
-				lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
-			});
-		} else
-			dom.remove(dom.getParent(id, 'tr'));
-	},
-
-	fillTargetList : function(id) {
-		var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
-
-		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
-		lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
-
-		if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
-			tinymce.each(v.split(','), function(v) {
-				v = v.split('=');
-				lst.options[lst.options.length] = new Option(v[0], v[1]);
-			});
-		}
-	}
-};
-
-LinkDialog.preInit();
-tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/js/source_editor.js
+++ /dev/null
@@ -1,63 +1,1 @@
-tinyMCEPopup.requireLangPack();
-tinyMCEPopup.onInit.add(onLoadInit);
 
-function saveContent() {
-	tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value);
-	tinyMCEPopup.close();
-}
-
-function onLoadInit() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// Remove Gecko spellchecking
-	if (tinymce.isGecko)
-		document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
-
-	document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent();
-
-	if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
-		setWrap('soft');
-		document.getElementById('wraped').checked = true;
-	}
-
-	resizeInputs();
-}
-
-function setWrap(val) {
-	var v, n, s = document.getElementById('htmlSource');
-
-	s.wrap = val;
-
-	if (!tinymce.isIE) {
-		v = s.value;
-		n = s.cloneNode(false);
-		n.setAttribute("wrap", val);
-		s.parentNode.replaceChild(n, s);
-		n.value = v;
-	}
-}
-
-function toggleWordWrap(elm) {
-	if (elm.checked)
-		setWrap('soft');
-	else
-		setWrap('off');
-}
-
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-function resizeInputs() {
-	var el = document.getElementById('htmlSource');
-
-	if (!tinymce.isIE) {
-		 wHeight = self.innerHeight - 65;
-		 wWidth = self.innerWidth - 16;
-	} else {
-		 wHeight = document.body.clientHeight - 70;
-		 wWidth = document.body.clientWidth - 16;
-	}
-
-	el.style.height = Math.abs(wHeight) + 'px';
-	el.style.width  = Math.abs(wWidth) + 'px';
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/about.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/about.js
@@ -1,76 +1,76 @@
-function init() {
-	var inst;
+function init() {

+	var inst;

+

+	tinyMCEPopup.resizeToInnerSize();

+	inst = tinyMCE.selectedInstance;

+

+	// Give FF some time

+	window.setTimeout('insertHelpIFrame();', 10);

+

+	var tcont = document.getElementById('plugintablecontainer');

+	var plugins = tinyMCE.getParam('plugins', '', true, ',');

+	if (plugins.length == 0)

+		document.getElementById('plugins_tab').style.display = 'none';

+

+	var html = "";

+	html += '<table id="plugintable">';

+	html += '<thead>';

+	html += '<tr>';

+	html += '<td>' + tinyMCE.getLang('lang_plugin') + '</td>';

+	html += '<td>' + tinyMCE.getLang('lang_author') + '</td>';

+	html += '<td>' + tinyMCE.getLang('lang_version') + '</td>';

+	html += '</tr>';

+	html += '</thead>';

+	html += '<tbody>';

+

+	for (var i=0; i<inst.plugins.length; i++) {

+		var info = getPluginInfo(inst.plugins[i]);

+

+		html += '<tr>';

+

+		if (info.infourl != null && info.infourl != '')

+			html += '<td width="50%" title="' + plugins[i] + '"><a href="' + info.infourl + '" target="mceplugin">' + info.longname + '</a></td>';

+		else

+			html += '<td width="50%" title="' + plugins[i] + '">' + info.longname + '</td>';

+

+		if (info.authorurl != null && info.authorurl != '')

+			html += '<td width="35%"><a href="' + info.authorurl + '" target="mceplugin">' + info.author + '</a></td>';

+		else

+			html += '<td width="35%">' + info.author + '</td>';

+

+		html += '<td width="15%">' + info.version + '</td>';

+		html += '</tr>';

+	}

+

+	html += '</tbody>';

+	html += '</table>';

+

+	tcont.innerHTML = html;

+}

+

+function getPluginInfo(name) {

+	if (tinyMCE.plugins[name].getInfo)

+		return tinyMCE.plugins[name].getInfo();

+

+	return {

+		longname : name,

+		authorurl : '',

+		infourl : '',

+		author : '--',

+		version : '--'

+	};

+}

+

+function insertHelpIFrame() {

+	var html = '<iframe width="100%" height="300" src="' + tinyMCE.themeURL + "/docs/" + tinyMCE.settings['docs_language'] + "/index.htm" + '"></iframe>';

+

+	document.getElementById('iframecontainer').innerHTML = html;

+

+	html = '';

+	html += '<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a> ';

+	html += '<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a> ';

+	html += '<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a> ';

+

+	document.getElementById('buttoncontainer').innerHTML = html;

+}

 
-	tinyMCEPopup.resizeToInnerSize();
-	inst = tinyMCE.selectedInstance;
-
-	// Give FF some time
-	window.setTimeout('insertHelpIFrame();', 10);
-
-	var tcont = document.getElementById('plugintablecontainer');
-	var plugins = tinyMCE.getParam('plugins', '', true, ',');
-	if (plugins.length == 0)
-		document.getElementById('plugins_tab').style.display = 'none';
-
-	var html = "";
-	html += '<table id="plugintable">';
-	html += '<thead>';
-	html += '<tr>';
-	html += '<td>' + tinyMCE.getLang('lang_plugin') + '</td>';
-	html += '<td>' + tinyMCE.getLang('lang_author') + '</td>';
-	html += '<td>' + tinyMCE.getLang('lang_version') + '</td>';
-	html += '</tr>';
-	html += '</thead>';
-	html += '<tbody>';
-
-	for (var i=0; i<inst.plugins.length; i++) {
-		var info = getPluginInfo(inst.plugins[i]);
-
-		html += '<tr>';
-
-		if (info.infourl != null && info.infourl != '')
-			html += '<td width="50%" title="' + plugins[i] + '"><a href="' + info.infourl + '" target="mceplugin">' + info.longname + '</a></td>';
-		else
-			html += '<td width="50%" title="' + plugins[i] + '">' + info.longname + '</td>';
-
-		if (info.authorurl != null && info.authorurl != '')
-			html += '<td width="35%"><a href="' + info.authorurl + '" target="mceplugin">' + info.author + '</a></td>';
-		else
-			html += '<td width="35%">' + info.author + '</td>';
-
-		html += '<td width="15%">' + info.version + '</td>';
-		html += '</tr>';
-	}
-
-	html += '</tbody>';
-	html += '</table>';
-
-	tcont.innerHTML = html;
-}
-
-function getPluginInfo(name) {
-	if (tinyMCE.plugins[name].getInfo)
-		return tinyMCE.plugins[name].getInfo();
-
-	return {
-		longname : name,
-		authorurl : '',
-		infourl : '',
-		author : '--',
-		version : '--'
-	};
-}
-
-function insertHelpIFrame() {
-	var html = '<iframe width="100%" height="300" src="' + tinyMCE.themeURL + "/docs/" + tinyMCE.settings['docs_language'] + "/index.htm" + '"></iframe>';
-
-	document.getElementById('iframecontainer').innerHTML = html;
-
-	html = '';
-	html += '<a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a> ';
-	html += '<a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a> ';
-	html += '<a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a> ';
-
-	document.getElementById('buttoncontainer').innerHTML = html;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js
@@ -1,75 +1,75 @@
-var action, element;
+var action, element;

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name");

+	var img = inst.getFocusElement();

+	action = 'insert';

+

+	if (anchor != null) {

+		element = anchor;

+		action = "update";

+	}

+

+	if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") {

+		element = img;

+		action = "update";

+	}

+

+	if (action == "update")

+		document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name");

+

+	document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);

+}

+

+function insertAnchor() {

+	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));

+	var name = document.forms[0].anchorName.value, e;

+

+	tinyMCEPopup.execCommand("mceBeginUndoLevel");

+

+	if (action == "update") {

+		if (element.nodeName == "IMG")

+			element.setAttribute("title", name);

+		else

+			element.setAttribute("name", name);

+	} else {

+		var rng = inst.getRng();

+

+		if (rng.collapse)

+			rng.collapse(false);

+

+		name = name.replace(/&/g, '&amp;');

+		name = name.replace(/\"/g, '&quot;');

+		name = name.replace(/</g, '&lt;');

+		name = name.replace(/>/g, '&gt;');

+

+		// Fix for bug #1447335

+		if (tinyMCE.isGecko)

+			html = '<a id="mceNewAnchor" name="' + name + '"></a>';

+		else

+			html = '<a name="' + name + '"></a>';

+

+		tinyMCEPopup.execCommand("mceInsertContent", false, html);

+

+		// Fix for bug #1447335 force cursor after the anchor element

+		if (tinyMCE.isGecko) {

+			e = inst.getDoc().getElementById('mceNewAnchor');

+

+			if (e) {

+				inst.selection.selectNode(e, true, false, false);

+				e.removeAttribute('id');

+			}

+		}

+

+		tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);

+	}

+

+	tinyMCEPopup.execCommand("mceEndUndoLevel");

+

+	tinyMCE.triggerNodeChange();

+	tinyMCEPopup.close();

+}

 
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name");
-	var img = inst.getFocusElement();
-	action = 'insert';
-
-	if (anchor != null) {
-		element = anchor;
-		action = "update";
-	}
-
-	if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") {
-		element = img;
-		action = "update";
-	}
-
-	if (action == "update")
-		document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name");
-
-	document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
-}
-
-function insertAnchor() {
-	var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
-	var name = document.forms[0].anchorName.value, e;
-
-	tinyMCEPopup.execCommand("mceBeginUndoLevel");
-
-	if (action == "update") {
-		if (element.nodeName == "IMG")
-			element.setAttribute("title", name);
-		else
-			element.setAttribute("name", name);
-	} else {
-		var rng = inst.getRng();
-
-		if (rng.collapse)
-			rng.collapse(false);
-
-		name = name.replace(/&/g, '&amp;');
-		name = name.replace(/\"/g, '&quot;');
-		name = name.replace(/</g, '&lt;');
-		name = name.replace(/>/g, '&gt;');
-
-		// Fix for bug #1447335
-		if (tinyMCE.isGecko)
-			html = '<a id="mceNewAnchor" name="' + name + '"></a>';
-		else
-			html = '<a name="' + name + '"></a>';
-
-		tinyMCEPopup.execCommand("mceInsertContent", false, html);
-
-		// Fix for bug #1447335 force cursor after the anchor element
-		if (tinyMCE.isGecko) {
-			e = inst.getDoc().getElementById('mceNewAnchor');
-
-			if (e) {
-				inst.selection.selectNode(e, true, false, false);
-				e.removeAttribute('id');
-			}
-		}
-
-		tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
-	}
-
-	tinyMCEPopup.execCommand("mceEndUndoLevel");
-
-	tinyMCE.triggerNodeChange();
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js
@@ -1,327 +1,327 @@
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-}
+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+}

+

+var charmap = new Array();

+

+// for mor details please see w3c.org

+// now here is the complete list ;)

+

+charmap = [

+	['&nbsp;',    '&#160;',  true, 'no-break space'],

+	['&amp;',     '&#38;',   true, 'ampersand'],

+	['&quot;',    '&#34;',   true, 'quotation mark'],

+// finance

+	['&cent;',    '&#162;',  true, 'cent sign'],

+	['&euro;',    '&#8364;', true, 'euro sign'],

+	['&pound;',   '&#163;',  true, 'pound sign'],

+	['&yen;',     '&#165;',  true, 'yen sign'],

+// signs

+	['&copy;',    '&#169;',  true, 'copyright sign'],

+	['&reg;',     '&#174;',  true, 'registered sign'],

+	['&trade;',   '&#8482;', true, 'trade mark sign'],

+	['&permil;',  '&#8240;', true, 'per mille sign'],

+	['&micro;',   '&#181;',  true, 'micro sign'],

+	['&middot;',  '&#183;',  true, 'middle dot'],

+	['&bull;',    '&#8226;', true, 'bullet'],

+	['&hellip;',  '&#8230;', true, 'three dot leader'],

+	['&prime;',   '&#8242;', true, 'minutes / feet'],

+	['&Prime;',   '&#8243;', true, 'seconds / inches'],

+	['&sect;',    '&#167;',  true, 'section sign'],

+	['&para;',    '&#182;',  true, 'paragraph sign'],

+	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],

+// quotations

+	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],

+	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],

+	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],

+	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],

+	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],

+	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],

+	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],

+	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],

+	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],

+	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],

+	['&lt;',      '&#60;',   true, 'less-than sign'],

+	['&gt;',      '&#62;',   true, 'greater-than sign'],

+	['&le;',      '&#8804;', true, 'less-than or equal to'],

+	['&ge;',      '&#8805;', true, 'greater-than or equal to'],

+	['&ndash;',   '&#8211;', true, 'en dash'],

+	['&mdash;',   '&#8212;', true, 'em dash'],

+	['&macr;',    '&#175;',  true, 'macron'],

+	['&oline;',   '&#8254;', true, 'overline'],

+	['&curren;',  '&#164;',  true, 'currency sign'],

+	['&brvbar;',  '&#166;',  true, 'broken bar'],

+	['&uml;',     '&#168;',  true, 'diaeresis'],

+	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],

+	['&iquest;',  '&#191;',  true, 'turned question mark'],

+	['&circ;',    '&#710;',  true, 'circumflex accent'],

+	['&tilde;',   '&#732;',  true, 'small tilde'],

+	['&deg;',     '&#176;',  true, 'degree sign'],

+	['&minus;',   '&#8722;', true, 'minus sign'],

+	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],

+	['&divide;',  '&#247;',  true, 'division sign'],

+	['&frasl;',   '&#8260;', true, 'fraction slash'],

+	['&times;',   '&#215;',  true, 'multiplication sign'],

+	['&sup1;',    '&#185;',  true, 'superscript one'],

+	['&sup2;',    '&#178;',  true, 'superscript two'],

+	['&sup3;',    '&#179;',  true, 'superscript three'],

+	['&frac14;',  '&#188;',  true, 'fraction one quarter'],

+	['&frac12;',  '&#189;',  true, 'fraction one half'],

+	['&frac34;',  '&#190;',  true, 'fraction three quarters'],

+// math / logical

+	['&fnof;',    '&#402;',  true, 'function / florin'],

+	['&int;',     '&#8747;', true, 'integral'],

+	['&sum;',     '&#8721;', true, 'n-ary sumation'],

+	['&infin;',   '&#8734;', true, 'infinity'],

+	['&radic;',   '&#8730;', true, 'square root'],

+	['&sim;',     '&#8764;', false,'similar to'],

+	['&cong;',    '&#8773;', false,'approximately equal to'],

+	['&asymp;',   '&#8776;', true, 'almost equal to'],

+	['&ne;',      '&#8800;', true, 'not equal to'],

+	['&equiv;',   '&#8801;', true, 'identical to'],

+	['&isin;',    '&#8712;', false,'element of'],

+	['&notin;',   '&#8713;', false,'not an element of'],

+	['&ni;',      '&#8715;', false,'contains as member'],

+	['&prod;',    '&#8719;', true, 'n-ary product'],

+	['&and;',     '&#8743;', false,'logical and'],

+	['&or;',      '&#8744;', false,'logical or'],

+	['&not;',     '&#172;',  true, 'not sign'],

+	['&cap;',     '&#8745;', true, 'intersection'],

+	['&cup;',     '&#8746;', false,'union'],

+	['&part;',    '&#8706;', true, 'partial differential'],

+	['&forall;',  '&#8704;', false,'for all'],

+	['&exist;',   '&#8707;', false,'there exists'],

+	['&empty;',   '&#8709;', false,'diameter'],

+	['&nabla;',   '&#8711;', false,'backward difference'],

+	['&lowast;',  '&#8727;', false,'asterisk operator'],

+	['&prop;',    '&#8733;', false,'proportional to'],

+	['&ang;',     '&#8736;', false,'angle'],

+// undefined

+	['&acute;',   '&#180;',  true, 'acute accent'],

+	['&cedil;',   '&#184;',  true, 'cedilla'],

+	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],

+	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],

+	['&dagger;',  '&#8224;', true, 'dagger'],

+	['&Dagger;',  '&#8225;', true, 'double dagger'],

+// alphabetical special chars

+	['&Agrave;',  '&#192;',  true, 'A - grave'],

+	['&Aacute;',  '&#193;',  true, 'A - acute'],

+	['&Acirc;',   '&#194;',  true, 'A - circumflex'],

+	['&Atilde;',  '&#195;',  true, 'A - tilde'],

+	['&Auml;',    '&#196;',  true, 'A - diaeresis'],

+	['&Aring;',   '&#197;',  true, 'A - ring above'],

+	['&AElig;',   '&#198;',  true, 'ligature AE'],

+	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],

+	['&Egrave;',  '&#200;',  true, 'E - grave'],

+	['&Eacute;',  '&#201;',  true, 'E - acute'],

+	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],

+	['&Euml;',    '&#203;',  true, 'E - diaeresis'],

+	['&Igrave;',  '&#204;',  true, 'I - grave'],

+	['&Iacute;',  '&#205;',  true, 'I - acute'],

+	['&Icirc;',   '&#206;',  true, 'I - circumflex'],

+	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],

+	['&ETH;',     '&#208;',  true, 'ETH'],

+	['&Ntilde;',  '&#209;',  true, 'N - tilde'],

+	['&Ograve;',  '&#210;',  true, 'O - grave'],

+	['&Oacute;',  '&#211;',  true, 'O - acute'],

+	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],

+	['&Otilde;',  '&#213;',  true, 'O - tilde'],

+	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],

+	['&Oslash;',  '&#216;',  true, 'O - slash'],

+	['&OElig;',   '&#338;',  true, 'ligature OE'],

+	['&Scaron;',  '&#352;',  true, 'S - caron'],

+	['&Ugrave;',  '&#217;',  true, 'U - grave'],

+	['&Uacute;',  '&#218;',  true, 'U - acute'],

+	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],

+	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],

+	['&Yacute;',  '&#221;',  true, 'Y - acute'],

+	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],

+	['&THORN;',   '&#222;',  true, 'THORN'],

+	['&agrave;',  '&#224;',  true, 'a - grave'],

+	['&aacute;',  '&#225;',  true, 'a - acute'],

+	['&acirc;',   '&#226;',  true, 'a - circumflex'],

+	['&atilde;',  '&#227;',  true, 'a - tilde'],

+	['&auml;',    '&#228;',  true, 'a - diaeresis'],

+	['&aring;',   '&#229;',  true, 'a - ring above'],

+	['&aelig;',   '&#230;',  true, 'ligature ae'],

+	['&ccedil;',  '&#231;',  true, 'c - cedilla'],

+	['&egrave;',  '&#232;',  true, 'e - grave'],

+	['&eacute;',  '&#233;',  true, 'e - acute'],

+	['&ecirc;',   '&#234;',  true, 'e - circumflex'],

+	['&euml;',    '&#235;',  true, 'e - diaeresis'],

+	['&igrave;',  '&#236;',  true, 'i - grave'],

+	['&iacute;',  '&#237;',  true, 'i - acute'],

+	['&icirc;',   '&#238;',  true, 'i - circumflex'],

+	['&iuml;',    '&#239;',  true, 'i - diaeresis'],

+	['&eth;',     '&#240;',  true, 'eth'],

+	['&ntilde;',  '&#241;',  true, 'n - tilde'],

+	['&ograve;',  '&#242;',  true, 'o - grave'],

+	['&oacute;',  '&#243;',  true, 'o - acute'],

+	['&ocirc;',   '&#244;',  true, 'o - circumflex'],

+	['&otilde;',  '&#245;',  true, 'o - tilde'],

+	['&ouml;',    '&#246;',  true, 'o - diaeresis'],

+	['&oslash;',  '&#248;',  true, 'o slash'],

+	['&oelig;',   '&#339;',  true, 'ligature oe'],

+	['&scaron;',  '&#353;',  true, 's - caron'],

+	['&ugrave;',  '&#249;',  true, 'u - grave'],

+	['&uacute;',  '&#250;',  true, 'u - acute'],

+	['&ucirc;',   '&#251;',  true, 'u - circumflex'],

+	['&uuml;',    '&#252;',  true, 'u - diaeresis'],

+	['&yacute;',  '&#253;',  true, 'y - acute'],

+	['&thorn;',   '&#254;',  true, 'thorn'],

+	['&yuml;',    '&#255;',  true, 'y - diaeresis'],

+    ['&Alpha;',   '&#913;',  true, 'Alpha'],

+	['&Beta;',    '&#914;',  true, 'Beta'],

+	['&Gamma;',   '&#915;',  true, 'Gamma'],

+	['&Delta;',   '&#916;',  true, 'Delta'],

+	['&Epsilon;', '&#917;',  true, 'Epsilon'],

+	['&Zeta;',    '&#918;',  true, 'Zeta'],

+	['&Eta;',     '&#919;',  true, 'Eta'],

+	['&Theta;',   '&#920;',  true, 'Theta'],

+	['&Iota;',    '&#921;',  true, 'Iota'],

+	['&Kappa;',   '&#922;',  true, 'Kappa'],

+	['&Lambda;',  '&#923;',  true, 'Lambda'],

+	['&Mu;',      '&#924;',  true, 'Mu'],

+	['&Nu;',      '&#925;',  true, 'Nu'],

+	['&Xi;',      '&#926;',  true, 'Xi'],

+	['&Omicron;', '&#927;',  true, 'Omicron'],

+	['&Pi;',      '&#928;',  true, 'Pi'],

+	['&Rho;',     '&#929;',  true, 'Rho'],

+	['&Sigma;',   '&#931;',  true, 'Sigma'],

+	['&Tau;',     '&#932;',  true, 'Tau'],

+	['&Upsilon;', '&#933;',  true, 'Upsilon'],

+	['&Phi;',     '&#934;',  true, 'Phi'],

+	['&Chi;',     '&#935;',  true, 'Chi'],

+	['&Psi;',     '&#936;',  true, 'Psi'],

+	['&Omega;',   '&#937;',  true, 'Omega'],

+	['&alpha;',   '&#945;',  true, 'alpha'],

+	['&beta;',    '&#946;',  true, 'beta'],

+	['&gamma;',   '&#947;',  true, 'gamma'],

+	['&delta;',   '&#948;',  true, 'delta'],

+	['&epsilon;', '&#949;',  true, 'epsilon'],

+	['&zeta;',    '&#950;',  true, 'zeta'],

+	['&eta;',     '&#951;',  true, 'eta'],

+	['&theta;',   '&#952;',  true, 'theta'],

+	['&iota;',    '&#953;',  true, 'iota'],

+	['&kappa;',   '&#954;',  true, 'kappa'],

+	['&lambda;',  '&#955;',  true, 'lambda'],

+	['&mu;',      '&#956;',  true, 'mu'],

+	['&nu;',      '&#957;',  true, 'nu'],

+	['&xi;',      '&#958;',  true, 'xi'],

+	['&omicron;', '&#959;',  true, 'omicron'],

+	['&pi;',      '&#960;',  true, 'pi'],

+	['&rho;',     '&#961;',  true, 'rho'],

+	['&sigmaf;',  '&#962;',  true, 'final sigma'],

+	['&sigma;',   '&#963;',  true, 'sigma'],

+	['&tau;',     '&#964;',  true, 'tau'],

+	['&upsilon;', '&#965;',  true, 'upsilon'],

+	['&phi;',     '&#966;',  true, 'phi'],

+	['&chi;',     '&#967;',  true, 'chi'],

+	['&psi;',     '&#968;',  true, 'psi'],

+	['&omega;',   '&#969;',  true, 'omega'],

+// symbols

+	['&alefsym;', '&#8501;', false,'alef symbol'],

+	['&piv;',     '&#982;',  false,'pi symbol'],

+	['&real;',    '&#8476;', false,'real part symbol'],

+	['&thetasym;','&#977;',  false,'theta symbol'],

+	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],

+	['&weierp;',  '&#8472;', false,'Weierstrass p'],

+	['&image;',   '&#8465;', false,'imaginary part'],

+// arrows

+	['&larr;',    '&#8592;', true, 'leftwards arrow'],

+	['&uarr;',    '&#8593;', true, 'upwards arrow'],

+	['&rarr;',    '&#8594;', true, 'rightwards arrow'],

+	['&darr;',    '&#8595;', true, 'downwards arrow'],

+	['&harr;',    '&#8596;', true, 'left right arrow'],

+	['&crarr;',   '&#8629;', false,'carriage return'],

+	['&lArr;',    '&#8656;', false,'leftwards double arrow'],

+	['&uArr;',    '&#8657;', false,'upwards double arrow'],

+	['&rArr;',    '&#8658;', false,'rightwards double arrow'],

+	['&dArr;',    '&#8659;', false,'downwards double arrow'],

+	['&hArr;',    '&#8660;', false,'left right double arrow'],

+	['&there4;',  '&#8756;', false,'therefore'],

+	['&sub;',     '&#8834;', false,'subset of'],

+	['&sup;',     '&#8835;', false,'superset of'],

+	['&nsub;',    '&#8836;', false,'not a subset of'],

+	['&sube;',    '&#8838;', false,'subset of or equal to'],

+	['&supe;',    '&#8839;', false,'superset of or equal to'],

+	['&oplus;',   '&#8853;', false,'circled plus'],

+	['&otimes;',  '&#8855;', false,'circled times'],

+	['&perp;',    '&#8869;', false,'perpendicular'],

+	['&sdot;',    '&#8901;', false,'dot operator'],

+	['&lceil;',   '&#8968;', false,'left ceiling'],

+	['&rceil;',   '&#8969;', false,'right ceiling'],

+	['&lfloor;',  '&#8970;', false,'left floor'],

+	['&rfloor;',  '&#8971;', false,'right floor'],

+	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],

+	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],

+	['&loz;',     '&#9674;', true,'lozenge'],

+	['&spades;',  '&#9824;', false,'black spade suit'],

+	['&clubs;',   '&#9827;', true, 'black club suit'],

+	['&hearts;',  '&#9829;', true, 'black heart suit'],

+	['&diams;',   '&#9830;', true, 'black diamond suit'],

+	['&ensp;',    '&#8194;', false,'en space'],

+	['&emsp;',    '&#8195;', false,'em space'],

+	['&thinsp;',  '&#8201;', false,'thin space'],

+	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],

+	['&zwj;',     '&#8205;', false,'zero width joiner'],

+	['&lrm;',     '&#8206;', false,'left-to-right mark'],

+	['&rlm;',     '&#8207;', false,'right-to-left mark'],

+	['&shy;',     '&#173;',  false,'soft hyphen']

+];

+

+function renderCharMapHTML() {

+	var charsPerRow = 20, tdWidth=20, tdHeight=20;

+	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';

+	var cols=-1;

+	for (var i=0; i<charmap.length; i++) {

+		if (charmap[i][2]==true) {

+			cols++;

+			html += ''

+				+ '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'

+				+ ' onmouseover="this.className=\'charmapOver\';'

+				+ 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'

+				+ ' onmouseout="this.className=\'charmap\';"'

+				+ ' nowrap="nowrap" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"><a style="text-decoration: none;" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'

+				+ charmap[i][1]

+				+ '</a></td>';

+			if ((cols+1) % charsPerRow == 0)

+				html += '</tr><tr height="' + tdHeight + '">';

+		}

+	 }

+	if (cols % charsPerRow > 0) {

+		var padd = charsPerRow - (cols % charsPerRow);

+		for (var i=0; i<padd-1; i++)

+			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';

+	}

+	html += '</tr></table>';

+	document.write(html);

+}

+

+function insertChar(chr) {

+	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');

+

+	// Refocus in window

+	if (tinyMCEPopup.isWindow)

+		window.focus();

+

+	tinyMCEPopup.close();

+}

+

+function previewChar(codeA, codeB, codeN) {

+	var elmA = document.getElementById('codeA');

+	var elmB = document.getElementById('codeB');

+	var elmV = document.getElementById('codeV');

+	var elmN = document.getElementById('codeN');

+

+	if (codeA=='#160;') {

+		elmV.innerHTML = '__';

+	} else {

+		elmV.innerHTML = '&' + codeA;

+	}

+

+	elmB.innerHTML = '&amp;' + codeA;

+	elmA.innerHTML = '&amp;' + codeB;

+	elmN.innerHTML = codeN;

+}

 
-var charmap = new Array();
-
-// for mor details please see w3c.org
-// now here is the complete list ;)
-
-charmap = [
-	['&nbsp;',    '&#160;',  true, 'no-break space'],
-	['&amp;',     '&#38;',   true, 'ampersand'],
-	['&quot;',    '&#34;',   true, 'quotation mark'],
-// finance
-	['&cent;',    '&#162;',  true, 'cent sign'],
-	['&euro;',    '&#8364;', true, 'euro sign'],
-	['&pound;',   '&#163;',  true, 'pound sign'],
-	['&yen;',     '&#165;',  true, 'yen sign'],
-// signs
-	['&copy;',    '&#169;',  true, 'copyright sign'],
-	['&reg;',     '&#174;',  true, 'registered sign'],
-	['&trade;',   '&#8482;', true, 'trade mark sign'],
-	['&permil;',  '&#8240;', true, 'per mille sign'],
-	['&micro;',   '&#181;',  true, 'micro sign'],
-	['&middot;',  '&#183;',  true, 'middle dot'],
-	['&bull;',    '&#8226;', true, 'bullet'],
-	['&hellip;',  '&#8230;', true, 'three dot leader'],
-	['&prime;',   '&#8242;', true, 'minutes / feet'],
-	['&Prime;',   '&#8243;', true, 'seconds / inches'],
-	['&sect;',    '&#167;',  true, 'section sign'],
-	['&para;',    '&#182;',  true, 'paragraph sign'],
-	['&szlig;',   '&#223;',  true, 'sharp s / ess-zed'],
-// quotations
-	['&lsaquo;',  '&#8249;', true, 'single left-pointing angle quotation mark'],
-	['&rsaquo;',  '&#8250;', true, 'single right-pointing angle quotation mark'],
-	['&laquo;',   '&#171;',  true, 'left pointing guillemet'],
-	['&raquo;',   '&#187;',  true, 'right pointing guillemet'],
-	['&lsquo;',   '&#8216;', true, 'left single quotation mark'],
-	['&rsquo;',   '&#8217;', true, 'right single quotation mark'],
-	['&ldquo;',   '&#8220;', true, 'left double quotation mark'],
-	['&rdquo;',   '&#8221;', true, 'right double quotation mark'],
-	['&sbquo;',   '&#8218;', true, 'single low-9 quotation mark'],
-	['&bdquo;',   '&#8222;', true, 'double low-9 quotation mark'],
-	['&lt;',      '&#60;',   true, 'less-than sign'],
-	['&gt;',      '&#62;',   true, 'greater-than sign'],
-	['&le;',      '&#8804;', true, 'less-than or equal to'],
-	['&ge;',      '&#8805;', true, 'greater-than or equal to'],
-	['&ndash;',   '&#8211;', true, 'en dash'],
-	['&mdash;',   '&#8212;', true, 'em dash'],
-	['&macr;',    '&#175;',  true, 'macron'],
-	['&oline;',   '&#8254;', true, 'overline'],
-	['&curren;',  '&#164;',  true, 'currency sign'],
-	['&brvbar;',  '&#166;',  true, 'broken bar'],
-	['&uml;',     '&#168;',  true, 'diaeresis'],
-	['&iexcl;',   '&#161;',  true, 'inverted exclamation mark'],
-	['&iquest;',  '&#191;',  true, 'turned question mark'],
-	['&circ;',    '&#710;',  true, 'circumflex accent'],
-	['&tilde;',   '&#732;',  true, 'small tilde'],
-	['&deg;',     '&#176;',  true, 'degree sign'],
-	['&minus;',   '&#8722;', true, 'minus sign'],
-	['&plusmn;',  '&#177;',  true, 'plus-minus sign'],
-	['&divide;',  '&#247;',  true, 'division sign'],
-	['&frasl;',   '&#8260;', true, 'fraction slash'],
-	['&times;',   '&#215;',  true, 'multiplication sign'],
-	['&sup1;',    '&#185;',  true, 'superscript one'],
-	['&sup2;',    '&#178;',  true, 'superscript two'],
-	['&sup3;',    '&#179;',  true, 'superscript three'],
-	['&frac14;',  '&#188;',  true, 'fraction one quarter'],
-	['&frac12;',  '&#189;',  true, 'fraction one half'],
-	['&frac34;',  '&#190;',  true, 'fraction three quarters'],
-// math / logical
-	['&fnof;',    '&#402;',  true, 'function / florin'],
-	['&int;',     '&#8747;', true, 'integral'],
-	['&sum;',     '&#8721;', true, 'n-ary sumation'],
-	['&infin;',   '&#8734;', true, 'infinity'],
-	['&radic;',   '&#8730;', true, 'square root'],
-	['&sim;',     '&#8764;', false,'similar to'],
-	['&cong;',    '&#8773;', false,'approximately equal to'],
-	['&asymp;',   '&#8776;', true, 'almost equal to'],
-	['&ne;',      '&#8800;', true, 'not equal to'],
-	['&equiv;',   '&#8801;', true, 'identical to'],
-	['&isin;',    '&#8712;', false,'element of'],
-	['&notin;',   '&#8713;', false,'not an element of'],
-	['&ni;',      '&#8715;', false,'contains as member'],
-	['&prod;',    '&#8719;', true, 'n-ary product'],
-	['&and;',     '&#8743;', false,'logical and'],
-	['&or;',      '&#8744;', false,'logical or'],
-	['&not;',     '&#172;',  true, 'not sign'],
-	['&cap;',     '&#8745;', true, 'intersection'],
-	['&cup;',     '&#8746;', false,'union'],
-	['&part;',    '&#8706;', true, 'partial differential'],
-	['&forall;',  '&#8704;', false,'for all'],
-	['&exist;',   '&#8707;', false,'there exists'],
-	['&empty;',   '&#8709;', false,'diameter'],
-	['&nabla;',   '&#8711;', false,'backward difference'],
-	['&lowast;',  '&#8727;', false,'asterisk operator'],
-	['&prop;',    '&#8733;', false,'proportional to'],
-	['&ang;',     '&#8736;', false,'angle'],
-// undefined
-	['&acute;',   '&#180;',  true, 'acute accent'],
-	['&cedil;',   '&#184;',  true, 'cedilla'],
-	['&ordf;',    '&#170;',  true, 'feminine ordinal indicator'],
-	['&ordm;',    '&#186;',  true, 'masculine ordinal indicator'],
-	['&dagger;',  '&#8224;', true, 'dagger'],
-	['&Dagger;',  '&#8225;', true, 'double dagger'],
-// alphabetical special chars
-	['&Agrave;',  '&#192;',  true, 'A - grave'],
-	['&Aacute;',  '&#193;',  true, 'A - acute'],
-	['&Acirc;',   '&#194;',  true, 'A - circumflex'],
-	['&Atilde;',  '&#195;',  true, 'A - tilde'],
-	['&Auml;',    '&#196;',  true, 'A - diaeresis'],
-	['&Aring;',   '&#197;',  true, 'A - ring above'],
-	['&AElig;',   '&#198;',  true, 'ligature AE'],
-	['&Ccedil;',  '&#199;',  true, 'C - cedilla'],
-	['&Egrave;',  '&#200;',  true, 'E - grave'],
-	['&Eacute;',  '&#201;',  true, 'E - acute'],
-	['&Ecirc;',   '&#202;',  true, 'E - circumflex'],
-	['&Euml;',    '&#203;',  true, 'E - diaeresis'],
-	['&Igrave;',  '&#204;',  true, 'I - grave'],
-	['&Iacute;',  '&#205;',  true, 'I - acute'],
-	['&Icirc;',   '&#206;',  true, 'I - circumflex'],
-	['&Iuml;',    '&#207;',  true, 'I - diaeresis'],
-	['&ETH;',     '&#208;',  true, 'ETH'],
-	['&Ntilde;',  '&#209;',  true, 'N - tilde'],
-	['&Ograve;',  '&#210;',  true, 'O - grave'],
-	['&Oacute;',  '&#211;',  true, 'O - acute'],
-	['&Ocirc;',   '&#212;',  true, 'O - circumflex'],
-	['&Otilde;',  '&#213;',  true, 'O - tilde'],
-	['&Ouml;',    '&#214;',  true, 'O - diaeresis'],
-	['&Oslash;',  '&#216;',  true, 'O - slash'],
-	['&OElig;',   '&#338;',  true, 'ligature OE'],
-	['&Scaron;',  '&#352;',  true, 'S - caron'],
-	['&Ugrave;',  '&#217;',  true, 'U - grave'],
-	['&Uacute;',  '&#218;',  true, 'U - acute'],
-	['&Ucirc;',   '&#219;',  true, 'U - circumflex'],
-	['&Uuml;',    '&#220;',  true, 'U - diaeresis'],
-	['&Yacute;',  '&#221;',  true, 'Y - acute'],
-	['&Yuml;',    '&#376;',  true, 'Y - diaeresis'],
-	['&THORN;',   '&#222;',  true, 'THORN'],
-	['&agrave;',  '&#224;',  true, 'a - grave'],
-	['&aacute;',  '&#225;',  true, 'a - acute'],
-	['&acirc;',   '&#226;',  true, 'a - circumflex'],
-	['&atilde;',  '&#227;',  true, 'a - tilde'],
-	['&auml;',    '&#228;',  true, 'a - diaeresis'],
-	['&aring;',   '&#229;',  true, 'a - ring above'],
-	['&aelig;',   '&#230;',  true, 'ligature ae'],
-	['&ccedil;',  '&#231;',  true, 'c - cedilla'],
-	['&egrave;',  '&#232;',  true, 'e - grave'],
-	['&eacute;',  '&#233;',  true, 'e - acute'],
-	['&ecirc;',   '&#234;',  true, 'e - circumflex'],
-	['&euml;',    '&#235;',  true, 'e - diaeresis'],
-	['&igrave;',  '&#236;',  true, 'i - grave'],
-	['&iacute;',  '&#237;',  true, 'i - acute'],
-	['&icirc;',   '&#238;',  true, 'i - circumflex'],
-	['&iuml;',    '&#239;',  true, 'i - diaeresis'],
-	['&eth;',     '&#240;',  true, 'eth'],
-	['&ntilde;',  '&#241;',  true, 'n - tilde'],
-	['&ograve;',  '&#242;',  true, 'o - grave'],
-	['&oacute;',  '&#243;',  true, 'o - acute'],
-	['&ocirc;',   '&#244;',  true, 'o - circumflex'],
-	['&otilde;',  '&#245;',  true, 'o - tilde'],
-	['&ouml;',    '&#246;',  true, 'o - diaeresis'],
-	['&oslash;',  '&#248;',  true, 'o slash'],
-	['&oelig;',   '&#339;',  true, 'ligature oe'],
-	['&scaron;',  '&#353;',  true, 's - caron'],
-	['&ugrave;',  '&#249;',  true, 'u - grave'],
-	['&uacute;',  '&#250;',  true, 'u - acute'],
-	['&ucirc;',   '&#251;',  true, 'u - circumflex'],
-	['&uuml;',    '&#252;',  true, 'u - diaeresis'],
-	['&yacute;',  '&#253;',  true, 'y - acute'],
-	['&thorn;',   '&#254;',  true, 'thorn'],
-	['&yuml;',    '&#255;',  true, 'y - diaeresis'],
-    ['&Alpha;',   '&#913;',  true, 'Alpha'],
-	['&Beta;',    '&#914;',  true, 'Beta'],
-	['&Gamma;',   '&#915;',  true, 'Gamma'],
-	['&Delta;',   '&#916;',  true, 'Delta'],
-	['&Epsilon;', '&#917;',  true, 'Epsilon'],
-	['&Zeta;',    '&#918;',  true, 'Zeta'],
-	['&Eta;',     '&#919;',  true, 'Eta'],
-	['&Theta;',   '&#920;',  true, 'Theta'],
-	['&Iota;',    '&#921;',  true, 'Iota'],
-	['&Kappa;',   '&#922;',  true, 'Kappa'],
-	['&Lambda;',  '&#923;',  true, 'Lambda'],
-	['&Mu;',      '&#924;',  true, 'Mu'],
-	['&Nu;',      '&#925;',  true, 'Nu'],
-	['&Xi;',      '&#926;',  true, 'Xi'],
-	['&Omicron;', '&#927;',  true, 'Omicron'],
-	['&Pi;',      '&#928;',  true, 'Pi'],
-	['&Rho;',     '&#929;',  true, 'Rho'],
-	['&Sigma;',   '&#931;',  true, 'Sigma'],
-	['&Tau;',     '&#932;',  true, 'Tau'],
-	['&Upsilon;', '&#933;',  true, 'Upsilon'],
-	['&Phi;',     '&#934;',  true, 'Phi'],
-	['&Chi;',     '&#935;',  true, 'Chi'],
-	['&Psi;',     '&#936;',  true, 'Psi'],
-	['&Omega;',   '&#937;',  true, 'Omega'],
-	['&alpha;',   '&#945;',  true, 'alpha'],
-	['&beta;',    '&#946;',  true, 'beta'],
-	['&gamma;',   '&#947;',  true, 'gamma'],
-	['&delta;',   '&#948;',  true, 'delta'],
-	['&epsilon;', '&#949;',  true, 'epsilon'],
-	['&zeta;',    '&#950;',  true, 'zeta'],
-	['&eta;',     '&#951;',  true, 'eta'],
-	['&theta;',   '&#952;',  true, 'theta'],
-	['&iota;',    '&#953;',  true, 'iota'],
-	['&kappa;',   '&#954;',  true, 'kappa'],
-	['&lambda;',  '&#955;',  true, 'lambda'],
-	['&mu;',      '&#956;',  true, 'mu'],
-	['&nu;',      '&#957;',  true, 'nu'],
-	['&xi;',      '&#958;',  true, 'xi'],
-	['&omicron;', '&#959;',  true, 'omicron'],
-	['&pi;',      '&#960;',  true, 'pi'],
-	['&rho;',     '&#961;',  true, 'rho'],
-	['&sigmaf;',  '&#962;',  true, 'final sigma'],
-	['&sigma;',   '&#963;',  true, 'sigma'],
-	['&tau;',     '&#964;',  true, 'tau'],
-	['&upsilon;', '&#965;',  true, 'upsilon'],
-	['&phi;',     '&#966;',  true, 'phi'],
-	['&chi;',     '&#967;',  true, 'chi'],
-	['&psi;',     '&#968;',  true, 'psi'],
-	['&omega;',   '&#969;',  true, 'omega'],
-// symbols
-	['&alefsym;', '&#8501;', false,'alef symbol'],
-	['&piv;',     '&#982;',  false,'pi symbol'],
-	['&real;',    '&#8476;', false,'real part symbol'],
-	['&thetasym;','&#977;',  false,'theta symbol'],
-	['&upsih;',   '&#978;',  false,'upsilon - hook symbol'],
-	['&weierp;',  '&#8472;', false,'Weierstrass p'],
-	['&image;',   '&#8465;', false,'imaginary part'],
-// arrows
-	['&larr;',    '&#8592;', true, 'leftwards arrow'],
-	['&uarr;',    '&#8593;', true, 'upwards arrow'],
-	['&rarr;',    '&#8594;', true, 'rightwards arrow'],
-	['&darr;',    '&#8595;', true, 'downwards arrow'],
-	['&harr;',    '&#8596;', true, 'left right arrow'],
-	['&crarr;',   '&#8629;', false,'carriage return'],
-	['&lArr;',    '&#8656;', false,'leftwards double arrow'],
-	['&uArr;',    '&#8657;', false,'upwards double arrow'],
-	['&rArr;',    '&#8658;', false,'rightwards double arrow'],
-	['&dArr;',    '&#8659;', false,'downwards double arrow'],
-	['&hArr;',    '&#8660;', false,'left right double arrow'],
-	['&there4;',  '&#8756;', false,'therefore'],
-	['&sub;',     '&#8834;', false,'subset of'],
-	['&sup;',     '&#8835;', false,'superset of'],
-	['&nsub;',    '&#8836;', false,'not a subset of'],
-	['&sube;',    '&#8838;', false,'subset of or equal to'],
-	['&supe;',    '&#8839;', false,'superset of or equal to'],
-	['&oplus;',   '&#8853;', false,'circled plus'],
-	['&otimes;',  '&#8855;', false,'circled times'],
-	['&perp;',    '&#8869;', false,'perpendicular'],
-	['&sdot;',    '&#8901;', false,'dot operator'],
-	['&lceil;',   '&#8968;', false,'left ceiling'],
-	['&rceil;',   '&#8969;', false,'right ceiling'],
-	['&lfloor;',  '&#8970;', false,'left floor'],
-	['&rfloor;',  '&#8971;', false,'right floor'],
-	['&lang;',    '&#9001;', false,'left-pointing angle bracket'],
-	['&rang;',    '&#9002;', false,'right-pointing angle bracket'],
-	['&loz;',     '&#9674;', true,'lozenge'],
-	['&spades;',  '&#9824;', false,'black spade suit'],
-	['&clubs;',   '&#9827;', true, 'black club suit'],
-	['&hearts;',  '&#9829;', true, 'black heart suit'],
-	['&diams;',   '&#9830;', true, 'black diamond suit'],
-	['&ensp;',    '&#8194;', false,'en space'],
-	['&emsp;',    '&#8195;', false,'em space'],
-	['&thinsp;',  '&#8201;', false,'thin space'],
-	['&zwnj;',    '&#8204;', false,'zero width non-joiner'],
-	['&zwj;',     '&#8205;', false,'zero width joiner'],
-	['&lrm;',     '&#8206;', false,'left-to-right mark'],
-	['&rlm;',     '&#8207;', false,'right-to-left mark'],
-	['&shy;',     '&#173;',  false,'soft hyphen']
-];
-
-function renderCharMapHTML() {
-	var charsPerRow = 20, tdWidth=20, tdHeight=20;
-	var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
-	var cols=-1;
-	for (var i=0; i<charmap.length; i++) {
-		if (charmap[i][2]==true) {
-			cols++;
-			html += ''
-				+ '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
-				+ ' onmouseover="this.className=\'charmapOver\';'
-				+ 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
-				+ ' onmouseout="this.className=\'charmap\';"'
-				+ ' nowrap="nowrap" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"><a style="text-decoration: none;" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
-				+ charmap[i][1]
-				+ '</a></td>';
-			if ((cols+1) % charsPerRow == 0)
-				html += '</tr><tr height="' + tdHeight + '">';
-		}
-	 }
-	if (cols % charsPerRow > 0) {
-		var padd = charsPerRow - (cols % charsPerRow);
-		for (var i=0; i<padd-1; i++)
-			html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
-	}
-	html += '</tr></table>';
-	document.write(html);
-}
-
-function insertChar(chr) {
-	tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
-
-	// Refocus in window
-	if (tinyMCEPopup.isWindow)
-		window.focus();
-
-	tinyMCEPopup.close();
-}
-
-function previewChar(codeA, codeB, codeN) {
-	var elmA = document.getElementById('codeA');
-	var elmB = document.getElementById('codeB');
-	var elmV = document.getElementById('codeV');
-	var elmN = document.getElementById('codeN');
-
-	if (codeA=='#160;') {
-		elmV.innerHTML = '__';
-	} else {
-		elmV.innerHTML = '&' + codeA;
-	}
-
-	elmB.innerHTML = '&amp;' + codeA;
-	elmA.innerHTML = '&amp;' + codeB;
-	elmN.innerHTML = codeN;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js
@@ -1,249 +1,240 @@
-var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
-
-var colors = new Array(
-	"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
-	"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
-	"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
-	"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
-	"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
-	"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
-	"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
-	"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
-	"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
-	"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
-	"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
-	"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
-	"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
-	"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
-	"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
-	"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
-	"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
-	"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
-	"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
-	"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
-	"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
-	"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
-	"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
-	"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
-	"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
-	"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
-	"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
-);
-
-var named = {
-	'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
-	'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
-	'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
-	'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
-	'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
-	'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
-	'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
-	'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
-	'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
-	'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
-	'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
-	'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
-	'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
-	'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
-	'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
-	'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
-	'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
-	'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
-	'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
-	'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
-	'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
-	'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
-	'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
-};
-
-function init() {
-	var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color'));
-
-	if (tinyMCE.isMSIE)
-		tinyMCEPopup.resizeToInnerSize();
-
-	generatePicker();
-
-	if (inputColor) {
-		changeFinalColor(inputColor);
-
-		col = convertHexToRGB(inputColor);
-
-		if (col)
-			updateLight(col.r, col.g, col.b);
-	}
-}
-
-function insertAction() {
-	var color = document.getElementById("color").value;
-
-	tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color);
-	tinyMCEPopup.close();
-}
-
-function showColor(color, name) {
-	if (name)
-		document.getElementById("colorname").innerHTML = name;
-
-	document.getElementById("preview").style.backgroundColor = color;
-	document.getElementById("color").value = color;
-}
-
-function convertRGBToHex(col) {
-	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
-	if (!col)
-		return col;
-
-	var rgb = col.replace(re, "$1,$2,$3").split(',');
-	if (rgb.length == 3) {
-		r = parseInt(rgb[0]).toString(16);
-		g = parseInt(rgb[1]).toString(16);
-		b = parseInt(rgb[2]).toString(16);
-
-		r = r.length == 1 ? '0' + r : r;
-		g = g.length == 1 ? '0' + g : g;
-		b = b.length == 1 ? '0' + b : b;
-
-		return "#" + r + g + b;
-	}
-
-	return col;
-}
-
-function convertHexToRGB(col) {
-	if (col.indexOf('#') != -1) {
-		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
-		r = parseInt(col.substring(0, 2), 16);
-		g = parseInt(col.substring(2, 4), 16);
-		b = parseInt(col.substring(4, 6), 16);
-
-		return {r : r, g : g, b : b};
-	}
-
-	return null;
-}
-
-function generatePicker() {
-	var el = document.getElementById('light'), h = '', i;
-
-	for (i = 0; i < detail; i++){
-		h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
-		+ ' onclick="changeFinalColor(this.style.backgroundColor)"'
-		+ ' onmousedown="isMouseDown = true; return false;"'
-		+ ' onmouseup="isMouseDown = false;"'
-		+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
-		+ ' onmouseover="isMouseOver = true;"'
-		+ ' onmouseout="isMouseOver = false;"'
-		+ '></div>';
-	}
-
-	el.innerHTML = h;
-}
-
-function generateWebColors() {
-	var el = document.getElementById('webcolors'), h = '', i;
-
-	if (el.className == 'generated')
-		return;
-
-	h += '<table border="0" cellspacing="1" cellpadding="0">'
-		+ '<tr>';
-
-	for (i=0; i<colors.length; i++) {
-		h += '<td bgcolor="' + colors[i] + '">'
-			+ '<a href="javascript:selectColor();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');">'
-			+ '<img border="0" src="images/spacer.gif" width="10" height="10" title="' + colors[i] +  '" alt="' + colors[i] +  '" /></a></td>';
-		if ((i+1) % 18 == 0)
-			h += '</tr><tr>';
-	}
-
-	h += '</table>';
-
-	el.innerHTML = h;
-	el.className = 'generated';
-}
-
-function generateNamedColors() {
-	var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
-
-	if (el.className == 'generated')
-		return;
-
-	for (n in named) {
-		v = named[n];
-		h += '<a href="javascript:selectColor();" onmouseover="showColor(\'' + n +  '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
-	}
-
-	el.innerHTML = h;
-	el.className = 'generated';
-}
-
-function selectColor() {
-	var color = document.getElementById("color").value;
-
-	if(window.opener)
-		window.opener.tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),tinyMCE.getWindowArg('command'),false,color);
-
-	window.close();
-}
-
-function dechex(n) {
-	return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
-}
-
-function computeColor(e) {
-	var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
-
-	x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
-	y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
-
-	partWidth = document.getElementById('colorpicker').width / 6;
-	partDetail = detail / 2;
-	imHeight = document.getElementById('colorpicker').height;
-
-	r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
-	g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255	+ (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
-	b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
-
-	coef = (imHeight - y) / imHeight;
-	r = 128 + (r - 128) * coef;
-	g = 128 + (g - 128) * coef;
-	b = 128 + (b - 128) * coef;
-
-	changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
-	updateLight(r, g, b);
-}
-
-function updateLight(r, g, b) {
-	var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
-
-	for (i=0; i<detail; i++) {
-		if ((i>=0) && (i<partDetail)) {
-			finalCoef = i / partDetail;
-			finalR = dechex(255 - (255 - r) * finalCoef);
-			finalG = dechex(255 - (255 - g) * finalCoef);
-			finalB = dechex(255 - (255 - b) * finalCoef);
-		} else {
-			finalCoef = 2 - i / partDetail;
-			finalR = dechex(r * finalCoef);
-			finalG = dechex(g * finalCoef);
-			finalB = dechex(b * finalCoef);
-		}
-
-		color = finalR + finalG + finalB;
-
-		document.getElementById('gs' + i).style.backgroundColor = '#'+color;
-	}
-}
-
-function changeFinalColor(color) {
-	if (color.indexOf('#') == -1)
-		color = convertRGBToHex(color);
-
-	document.getElementById('preview').style.backgroundColor = color;
-	document.getElementById('color').value = color;
-}
-
+var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;

+

+var colors = new Array(

+	"#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",

+	"#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",

+	"#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",

+	"#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",

+	"#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",

+	"#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",

+	"#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",

+	"#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",

+	"#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",

+	"#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",

+	"#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",

+	"#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",

+	"#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",

+	"#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",

+	"#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",

+	"#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",

+	"#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",

+	"#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",

+	"#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",

+	"#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",

+	"#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",

+	"#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",

+	"#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",

+	"#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",

+	"#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",

+	"#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",

+	"#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"

+);

+

+var named = {

+	'#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',

+	'#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',

+	'#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',

+	'#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',

+	'#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',

+	'#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',

+	'#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',

+	'#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',

+	'#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',

+	'#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',

+	'#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',

+	'#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',

+	'#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',

+	'#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',

+	'#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',

+	'#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',

+	'#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',

+	'#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',

+	'#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',

+	'#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',

+	'#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',

+	'#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',

+	'#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'

+};

+

+function init() {

+	var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color'));

+

+	if (tinyMCE.isMSIE)

+		tinyMCEPopup.resizeToInnerSize();

+

+	generatePicker();

+

+	if (inputColor) {

+		changeFinalColor(inputColor);

+

+		col = convertHexToRGB(inputColor);

+

+		if (col)

+			updateLight(col.r, col.g, col.b);

+	}

+}

+

+function insertAction() {

+	var color = document.getElementById("color").value;

+

+	tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color);

+	tinyMCEPopup.close();

+}

+

+function showColor(color, name) {

+	if (name)

+		document.getElementById("colorname").innerHTML = name;

+

+	document.getElementById("preview").style.backgroundColor = color;

+	document.getElementById("color").value = color;

+}

+

+function convertRGBToHex(col) {

+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");

+

+	if (!col)

+		return col;

+

+	var rgb = col.replace(re, "$1,$2,$3").split(',');

+	if (rgb.length == 3) {

+		r = parseInt(rgb[0]).toString(16);

+		g = parseInt(rgb[1]).toString(16);

+		b = parseInt(rgb[2]).toString(16);

+

+		r = r.length == 1 ? '0' + r : r;

+		g = g.length == 1 ? '0' + g : g;

+		b = b.length == 1 ? '0' + b : b;

+

+		return "#" + r + g + b;

+	}

+

+	return col;

+}

+

+function convertHexToRGB(col) {

+	if (col.indexOf('#') != -1) {

+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');

+

+		r = parseInt(col.substring(0, 2), 16);

+		g = parseInt(col.substring(2, 4), 16);

+		b = parseInt(col.substring(4, 6), 16);

+

+		return {r : r, g : g, b : b};

+	}

+

+	return null;

+}

+

+function generatePicker() {

+	var el = document.getElementById('light'), h = '', i;

+

+	for (i = 0; i < detail; i++){

+		h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'

+		+ ' onclick="changeFinalColor(this.style.backgroundColor)"'

+		+ ' onmousedown="isMouseDown = true; return false;"'

+		+ ' onmouseup="isMouseDown = false;"'

+		+ ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'

+		+ ' onmouseover="isMouseOver = true;"'

+		+ ' onmouseout="isMouseOver = false;"'

+		+ '></div>';

+	}

+

+	el.innerHTML = h;

+}

+

+function generateWebColors() {

+	var el = document.getElementById('webcolors'), h = '', i;

+

+	if (el.className == 'generated')

+		return;

+

+	h += '<table border="0" cellspacing="1" cellpadding="0">'

+		+ '<tr>';

+

+	for (i=0; i<colors.length; i++) {

+		h += '<td bgcolor="' + colors[i] + '">'

+			+ '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] +  '\');" onmouseover="showColor(\'' + colors[i] +  '\');">'

+			+ '<img border="0" src="images/spacer.gif" width="10" height="10" title="' + colors[i] +  '" alt="' + colors[i] +  '" /></a></td>';

+		if ((i+1) % 18 == 0)

+			h += '</tr><tr>';

+	}

+

+	h += '</table>';

+

+	el.innerHTML = h;

+	el.className = 'generated';

+}

+

+function generateNamedColors() {

+	var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;

+

+	if (el.className == 'generated')

+		return;

+

+	for (n in named) {

+		v = named[n];

+		h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n +  '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'

+	}

+

+	el.innerHTML = h;

+	el.className = 'generated';

+}

+

+function dechex(n) {

+	return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);

+}

+

+function computeColor(e) {

+	var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;

+

+	x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);

+	y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);

+

+	partWidth = document.getElementById('colorpicker').width / 6;

+	partDetail = detail / 2;

+	imHeight = document.getElementById('colorpicker').height;

+

+	r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;

+	g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255	+ (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);

+	b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);

+

+	coef = (imHeight - y) / imHeight;

+	r = 128 + (r - 128) * coef;

+	g = 128 + (g - 128) * coef;

+	b = 128 + (b - 128) * coef;

+

+	changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));

+	updateLight(r, g, b);

+}

+

+function updateLight(r, g, b) {

+	var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;

+

+	for (i=0; i<detail; i++) {

+		if ((i>=0) && (i<partDetail)) {

+			finalCoef = i / partDetail;

+			finalR = dechex(255 - (255 - r) * finalCoef);

+			finalG = dechex(255 - (255 - g) * finalCoef);

+			finalB = dechex(255 - (255 - b) * finalCoef);

+		} else {

+			finalCoef = 2 - i / partDetail;

+			finalR = dechex(r * finalCoef);

+			finalG = dechex(g * finalCoef);

+			finalB = dechex(b * finalCoef);

+		}

+

+		color = finalR + finalG + finalB;

+

+		document.getElementById('gs' + i).style.backgroundColor = '#'+color;

+	}

+}

+

+function changeFinalColor(color) {

+	if (color.indexOf('#') == -1)

+		color = convertRGBToHex(color);

+

+	document.getElementById('preview').style.backgroundColor = color;

+	document.getElementById('color').value = color;

+}

+

 window.focus();

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/image.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/image.js
@@ -1,82 +1,82 @@
-var url = tinyMCE.getParam("external_image_list_url");
-if (url != null) {
-	// Fix relative
-	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-		url = tinyMCE.documentBasePath + "/" + url;
+var url = tinyMCE.getParam("external_image_list_url");

+if (url != null) {

+	// Fix relative

+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+		url = tinyMCE.documentBasePath + "/" + url;

+

+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+}

+

+function insertImage() {

+	var src = document.forms[0].src.value;

+	var alt = document.forms[0].alt.value;

+	var border = document.forms[0].border.value;

+	var vspace = document.forms[0].vspace.value;

+	var hspace = document.forms[0].hspace.value;

+	var width = document.forms[0].width.value;

+	var height = document.forms[0].height.value;

+	var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;

+

+	tinyMCEPopup.restoreSelection();

+	tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align);

+	tinyMCEPopup.close();

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');

+

+	var formObj = document.forms[0];

+

+	for (var i=0; i<document.forms[0].align.options.length; i++) {

+		if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))

+			document.forms[0].align.options.selectedIndex = i;

+	}

+

+	formObj.src.value = tinyMCE.getWindowArg('src');

+	formObj.alt.value = tinyMCE.getWindowArg('alt');

+	formObj.border.value = tinyMCE.getWindowArg('border');

+	formObj.vspace.value = tinyMCE.getWindowArg('vspace');

+	formObj.hspace.value = tinyMCE.getWindowArg('hspace');

+	formObj.width.value = tinyMCE.getWindowArg('width');

+	formObj.height.value = tinyMCE.getWindowArg('height');

+	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 

+

+	// Handle file browser

+	if (isVisible('srcbrowser'))

+		document.getElementById('src').style.width = '180px';

+

+	// Auto select image in list

+	if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {

+		for (var i=0; i<formObj.image_list.length; i++) {

+			if (formObj.image_list.options[i].value == tinyMCE.getWindowArg('src'))

+				formObj.image_list.options[i].selected = true;

+		}

+	}

+}

+

+var preloadImg = new Image();

+

+function resetImageData() {

+	var formObj = document.forms[0];

+	formObj.width.value = formObj.height.value = "";	

+}

+

+function updateImageData() {

+	var formObj = document.forms[0];

+

+	if (formObj.width.value == "")

+		formObj.width.value = preloadImg.width;

+

+	if (formObj.height.value == "")

+		formObj.height.value = preloadImg.height;

+}

+

+function getImageData() {

+	preloadImg = new Image();

+	tinyMCE.addEvent(preloadImg, "load", updateImageData);

+	tinyMCE.addEvent(preloadImg, "error", function () {var formObj = document.forms[0];formObj.width.value = formObj.height.value = "";});

+	preloadImg.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], document.forms[0].src.value);

+}

 
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-}
-
-function insertImage() {
-	var src = document.forms[0].src.value;
-	var alt = document.forms[0].alt.value;
-	var border = document.forms[0].border.value;
-	var vspace = document.forms[0].vspace.value;
-	var hspace = document.forms[0].hspace.value;
-	var width = document.forms[0].width.value;
-	var height = document.forms[0].height.value;
-	var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value;
-
-	tinyMCEPopup.restoreSelection();
-	tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align);
-	tinyMCEPopup.close();
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
-
-	var formObj = document.forms[0];
-
-	for (var i=0; i<document.forms[0].align.options.length; i++) {
-		if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
-			document.forms[0].align.options.selectedIndex = i;
-	}
-
-	formObj.src.value = tinyMCE.getWindowArg('src');
-	formObj.alt.value = tinyMCE.getWindowArg('alt');
-	formObj.border.value = tinyMCE.getWindowArg('border');
-	formObj.vspace.value = tinyMCE.getWindowArg('vspace');
-	formObj.hspace.value = tinyMCE.getWindowArg('hspace');
-	formObj.width.value = tinyMCE.getWindowArg('width');
-	formObj.height.value = tinyMCE.getWindowArg('height');
-	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
-
-	// Handle file browser
-	if (isVisible('srcbrowser'))
-		document.getElementById('src').style.width = '180px';
-
-	// Auto select image in list
-	if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
-		for (var i=0; i<formObj.image_list.length; i++) {
-			if (formObj.image_list.options[i].value == tinyMCE.getWindowArg('src'))
-				formObj.image_list.options[i].selected = true;
-		}
-	}
-}
-
-var preloadImg = new Image();
-
-function resetImageData() {
-	var formObj = document.forms[0];
-	formObj.width.value = formObj.height.value = "";	
-}
-
-function updateImageData() {
-	var formObj = document.forms[0];
-
-	if (formObj.width.value == "")
-		formObj.width.value = preloadImg.width;
-
-	if (formObj.height.value == "")
-		formObj.height.value = preloadImg.height;
-}
-
-function getImageData() {
-	preloadImg = new Image();
-	tinyMCE.addEvent(preloadImg, "load", updateImageData);
-	tinyMCE.addEvent(preloadImg, "error", function () {var formObj = document.forms[0];formObj.width.value = formObj.height.value = "";});
-	preloadImg.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], document.forms[0].src.value);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/link.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/link.js
@@ -1,67 +1,75 @@
-var url = tinyMCE.getParam("external_link_list_url");
-if (url != null) {
-	// Fix relative
-	if (url.charAt(0) != '/' && url.indexOf('://') == -1)
-		url = tinyMCE.documentBasePath + "/" + url;
+var url = tinyMCE.getParam("external_link_list_url");

+if (url != null) {

+	// Fix relative

+	if (url.charAt(0) != '/' && url.indexOf('://') == -1)

+		url = tinyMCE.documentBasePath + "/" + url;

+

+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');

+}

+

+function init() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link');

+

+	// Handle file browser

+	if (isVisible('hrefbrowser'))

+		document.getElementById('href').style.width = '180px';

+

+	var formObj = document.forms[0];

+

+	for (var i=0; i<document.forms[0].target.options.length; i++) {

+		var option = document.forms[0].target.options[i];

+

+		if (option.value == tinyMCE.getWindowArg('target'))

+			option.selected = true;

+	}

+

+	document.forms[0].href.value = tinyMCE.getWindowArg('href');

+	document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');

+	document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 

+

+	addClassesToList('styleSelect', 'theme_advanced_link_styles');

+	selectByValue(formObj, 'styleSelect', tinyMCE.getWindowArg('className'), true);

+

+	// Hide css select row if no CSS classes

+	if (formObj.styleSelect && formObj.styleSelect.options.length <= 1) {

+		var sr = document.getElementById('styleSelectRow');

+		sr.style.display = 'none';

+		sr.parentNode.removeChild(sr);

+	}

+

+	// Auto select link in list

+	if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {

+		var formObj = document.forms[0];

+

+		for (var i=0; i<formObj.link_list.length; i++) {

+			if (formObj.link_list.options[i].value == tinyMCE.getWindowArg('href'))

+				formObj.link_list.options[i].selected = true;

+		}

+	}

+}

+

+function checkPrefix(n) {

+	if (Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email')))

+		n.value = 'mailto:' + n.value;

+

+	if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external')))

+		n.value = 'http://' + n.value;

+}

+

+function insertLink() {

+	var href = document.forms[0].href.value;

+	var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;

+	var title = document.forms[0].linktitle.value;

+	var style_class = document.forms[0].styleSelect ? document.forms[0].styleSelect.value : "";

+	var dummy;

+

+	if (target == '_self')

+		target = '';

+

+	tinyMCEPopup.restoreSelection();

+	tinyMCE.themes['advanced']._insertLink(href, target, title, dummy, style_class);

+	tinyMCEPopup.close();

+}

 
-	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
-}
-
-function init() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link');
-
-	// Handle file browser
-	if (isVisible('hrefbrowser'))
-		document.getElementById('href').style.width = '180px';
-
-	var formObj = document.forms[0];
-
-	for (var i=0; i<document.forms[0].target.options.length; i++) {
-		var option = document.forms[0].target.options[i];
-
-		if (option.value == tinyMCE.getWindowArg('target'))
-			option.selected = true;
-	}
-
-	document.forms[0].href.value = tinyMCE.getWindowArg('href');
-	document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
-	document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
-
-	addClassesToList('styleSelect', 'theme_advanced_link_styles');
-	selectByValue(formObj, 'styleSelect', tinyMCE.getWindowArg('className'), true);
-
-	// Hide css select row if no CSS classes
-	if (formObj.styleSelect && formObj.styleSelect.options.length <= 1) {
-		var sr = document.getElementById('styleSelectRow');
-		sr.style.display = 'none';
-		sr.parentNode.removeChild(sr);
-	}
-
-	// Auto select link in list
-	if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
-		var formObj = document.forms[0];
-
-		for (var i=0; i<formObj.link_list.length; i++) {
-			if (formObj.link_list.options[i].value == tinyMCE.getWindowArg('href'))
-				formObj.link_list.options[i].selected = true;
-		}
-	}
-}
-
-function insertLink() {
-	var href = document.forms[0].href.value;
-	var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
-	var title = document.forms[0].linktitle.value;
-	var style_class = document.forms[0].styleSelect ? document.forms[0].styleSelect.value : "";
-	var dummy;
-
-	if (target == '_self')
-		target = '';
-
-	tinyMCEPopup.restoreSelection();
-	tinyMCE.themes['advanced']._insertLink(href, target, title, dummy, style_class);
-	tinyMCEPopup.close();
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/source_editor.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/jscripts/source_editor.js
@@ -1,60 +1,60 @@
-function saveContent() {
-	tinyMCE.setContent(document.getElementById('htmlSource').value);
-	tinyMCE.closeWindow(window);
-}
+function saveContent() {

+	tinyMCE.setContent(document.getElementById('htmlSource').value);

+	tinyMCE.closeWindow(window);

+}

+

+function onLoadInit() {

+	tinyMCEPopup.resizeToInnerSize();

+

+	// Remove Gecko spellchecking

+	if (tinyMCE.isGecko)

+		document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");

+

+	document.getElementById('htmlSource').value = tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'));

+

+	resizeInputs();

+

+	if (tinyMCE.getParam("theme_advanced_source_editor_wrap", true)) {

+		setWrap('soft');

+		document.getElementById('wraped').checked = true;

+	}

+}

+

+function setWrap(val) {

+	var s = document.getElementById('htmlSource');

+

+	s.wrap = val;

+

+	if (tinyMCE.isGecko || tinyMCE.isOpera) {

+		var v = s.value;

+		var n = s.cloneNode(false);

+		n.setAttribute("wrap", val);

+		s.parentNode.replaceChild(n, s);

+		n.value = v;

+	}

+}

+

+function toggleWordWrap(elm) {

+	if (elm.checked)

+		setWrap('soft');

+	else

+		setWrap('off');

+}

+

+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;

+

+function resizeInputs() {

+	var el = document.getElementById('htmlSource');

+

+	if (!tinyMCE.isMSIE) {

+		 wHeight = self.innerHeight - 60;

+		 wWidth = self.innerWidth - 16;

+	} else {

+		 wHeight = document.body.clientHeight - 60;

+		 wWidth = document.body.clientWidth - 16;

+	}

+

+	el.style.height = Math.abs(wHeight) + 'px';

+	el.style.width  = Math.abs(wWidth) + 'px';

+}

 
-function onLoadInit() {
-	tinyMCEPopup.resizeToInnerSize();
-
-	// Remove Gecko spellchecking
-	if (tinyMCE.isGecko)
-		document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
-
-	document.getElementById('htmlSource').value = tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'));
-
-	resizeInputs();
-
-	if (tinyMCE.getParam("theme_advanced_source_editor_wrap", true)) {
-		setWrap('soft');
-		document.getElementById('wraped').checked = true;
-	}
-}
-
-function setWrap(val) {
-	var s = document.getElementById('htmlSource');
-
-	s.wrap = val;
-
-	if (tinyMCE.isGecko || tinyMCE.isOpera) {
-		var v = s.value;
-		var n = s.cloneNode(false);
-		n.setAttribute("wrap", val);
-		s.parentNode.replaceChild(n, s);
-		n.value = v;
-	}
-}
-
-function toggleWordWrap(elm) {
-	if (elm.checked)
-		setWrap('soft');
-	else
-		setWrap('off');
-}
-
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
-function resizeInputs() {
-	var el = document.getElementById('htmlSource');
-
-	if (!tinyMCE.isMSIE) {
-		 wHeight = self.innerHeight - 60;
-		 wWidth = self.innerWidth - 16;
-	} else {
-		 wHeight = document.body.clientHeight - 60;
-		 wWidth = document.body.clientWidth - 16;
-	}
-
-	el.style.height = Math.abs(wHeight) + 'px';
-	el.style.width  = Math.abs(wWidth) + 'px';
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ar.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ar.js
@@ -1,64 +1,64 @@
-// Arabic lang variables
+// Arabic lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : '&#1578;&#1589;&#1575;&#1605;&#1610;&#1605;',

+theme_code_desc : '&#1588;&#1601;&#1585;&#1577; &#1575;&#1604;&#1605;&#1589;&#1583;&#1585;',

+theme_code_title : '&#1588;&#1601;&#1585;&#1577; &#1575;&#1604;&#1605;&#1589;&#1583;&#1585;',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : '&#1605;&#1606;&#1582;&#1601;&#1590;',

+theme_sup_desc : '&#1605;&#1585;&#1578;&#1601;&#1593;',

+theme_hr_desc : '&#1573;&#1583;&#1585;&#1575;&#1580; &#1582;&#1591; &#1601;&#1575;&#1589;&#1604;',

+theme_removeformat_desc : '&#1573;&#1586;&#1575;&#1604;&#1577; &#1575;&#1604;&#1578;&#1606;&#1587;&#1610;&#1602;&#1575;&#1578;',

+theme_custom1_desc : 'Your custom description here',

+insert_image_border : '&#1587;&#1605;&#1603; &#1575;&#1604;&#1581;&#1583;&#1608;&#1583;',

+insert_image_dimensions : '&#1575;&#1604;&#1605;&#1608;&#1575;&#1589;&#1601;&#1575;&#1578;',

+insert_image_vspace : '&#1578;&#1576;&#1575;&#1593;&#1583; &#1593;&#1605;&#1608;&#1583;&#1610;',

+insert_image_hspace : '&#1578;&#1576;&#1575;&#1593;&#1583; &#1571;&#1601;&#1602;&#1610;',

+insert_image_align : '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577;',

+insert_image_align_default : 'Default',

+insert_image_align_baseline : '&#1593;&#1604;&#1609; &#1575;&#1604;&#1587;&#1591;&#1585;',

+insert_image_align_top : '&#1571;&#1593;&#1604;&#1609;',

+insert_image_align_middle : '&#1608;&#1587;&#1591;',

+insert_image_align_bottom : '&#1571;&#1587;&#1601;&#1604;',

+insert_image_align_texttop : '&#1571;&#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1589;',

+insert_image_align_absmiddle : '&#1608;&#1587;&#1591; &#1575;&#1604;&#1587;&#1591;&#1585;',

+insert_image_align_absbottom : '&#1571;&#1587;&#1601;&#1604; &#1575;&#1604;&#1606;&#1589;',

+insert_image_align_left : '&#1610;&#1587;&#1575;&#1585;',

+insert_image_align_right : '&#1610;&#1605;&#1610;&#1606;',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraph',

+theme_div : 'Div',

+theme_address : 'Address',

+theme_pre : 'Preformatted',

+theme_h1 : 'Heading 1',

+theme_h2 : 'Heading 2',

+theme_h3 : 'Heading 3',

+theme_h4 : 'Heading 4',

+theme_h5 : 'Heading 5',

+theme_h6 : 'Heading 6',

+theme_colorpicker_title : '&#1604;&#1608;&#1606; &#1575;&#1604;&#1606;&#1589;',

+theme_colorpicker_apply : 'Apply',

+theme_forecolor_desc : '&#1604;&#1608;&#1606; &#1575;&#1604;&#1606;&#1589;',

+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : '&#1573;&#1583;&#1585;&#1575;&#1580;  &#1585;&#1605;&#1586;..&#1616;',

+theme_charmap_desc : '&#1573;&#1583;&#1585;&#1575;&#1580;  &#1585;&#1605;&#1586;..&#1616;',

+theme_visualaid_desc : 'Toggle guidelines/invisible elements',

+insert_anchor_title : 'Insert/edit anchor',

+insert_anchor_name : 'Anchor name',

+theme_anchor_desc : 'Insert/edit anchor',

+theme_insert_link_titlefield : 'Title',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : '&#1578;&#1589;&#1575;&#1605;&#1610;&#1605;',
-theme_code_desc : '&#1588;&#1601;&#1585;&#1577; &#1575;&#1604;&#1605;&#1589;&#1583;&#1585;',
-theme_code_title : '&#1588;&#1601;&#1585;&#1577; &#1575;&#1604;&#1605;&#1589;&#1583;&#1585;',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : '&#1605;&#1606;&#1582;&#1601;&#1590;',
-theme_sup_desc : '&#1605;&#1585;&#1578;&#1601;&#1593;',
-theme_hr_desc : '&#1573;&#1583;&#1585;&#1575;&#1580; &#1582;&#1591; &#1601;&#1575;&#1589;&#1604;',
-theme_removeformat_desc : '&#1573;&#1586;&#1575;&#1604;&#1577; &#1575;&#1604;&#1578;&#1606;&#1587;&#1610;&#1602;&#1575;&#1578;',
-theme_custom1_desc : 'Your custom description here',
-insert_image_border : '&#1587;&#1605;&#1603; &#1575;&#1604;&#1581;&#1583;&#1608;&#1583;',
-insert_image_dimensions : '&#1575;&#1604;&#1605;&#1608;&#1575;&#1589;&#1601;&#1575;&#1578;',
-insert_image_vspace : '&#1578;&#1576;&#1575;&#1593;&#1583; &#1593;&#1605;&#1608;&#1583;&#1610;',
-insert_image_hspace : '&#1578;&#1576;&#1575;&#1593;&#1583; &#1571;&#1601;&#1602;&#1610;',
-insert_image_align : '&#1605;&#1581;&#1575;&#1584;&#1575;&#1577;',
-insert_image_align_default : 'Default',
-insert_image_align_baseline : '&#1593;&#1604;&#1609; &#1575;&#1604;&#1587;&#1591;&#1585;',
-insert_image_align_top : '&#1571;&#1593;&#1604;&#1609;',
-insert_image_align_middle : '&#1608;&#1587;&#1591;',
-insert_image_align_bottom : '&#1571;&#1587;&#1601;&#1604;',
-insert_image_align_texttop : '&#1571;&#1593;&#1604;&#1609; &#1575;&#1604;&#1606;&#1589;',
-insert_image_align_absmiddle : '&#1608;&#1587;&#1591; &#1575;&#1604;&#1587;&#1591;&#1585;',
-insert_image_align_absbottom : '&#1571;&#1587;&#1601;&#1604; &#1575;&#1604;&#1606;&#1589;',
-insert_image_align_left : '&#1610;&#1587;&#1575;&#1585;',
-insert_image_align_right : '&#1610;&#1605;&#1610;&#1606;',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraph',
-theme_div : 'Div',
-theme_address : 'Address',
-theme_pre : 'Preformatted',
-theme_h1 : 'Heading 1',
-theme_h2 : 'Heading 2',
-theme_h3 : 'Heading 3',
-theme_h4 : 'Heading 4',
-theme_h5 : 'Heading 5',
-theme_h6 : 'Heading 6',
-theme_colorpicker_title : '&#1604;&#1608;&#1606; &#1575;&#1604;&#1606;&#1589;',
-theme_colorpicker_apply : 'Apply',
-theme_forecolor_desc : '&#1604;&#1608;&#1606; &#1575;&#1604;&#1606;&#1589;',
-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : '&#1573;&#1583;&#1585;&#1575;&#1580;  &#1585;&#1605;&#1586;..&#1616;',
-theme_charmap_desc : '&#1573;&#1583;&#1585;&#1575;&#1580;  &#1585;&#1605;&#1586;..&#1616;',
-theme_visualaid_desc : 'Toggle guidelines/invisible elements',
-insert_anchor_title : 'Insert/edit anchor',
-insert_anchor_name : 'Anchor name',
-theme_anchor_desc : 'Insert/edit anchor',
-theme_insert_link_titlefield : 'Title',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ca.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ca.js
@@ -1,65 +1,65 @@
-// CA lang variables by Marc Bria
+// CA lang variables by Marc Bria

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Estils',

+theme_code_desc : 'Editar codi HTML',

+theme_code_title : 'Editor codi HTML',




+theme_hr_desc : 'Insertar un separador horitzontal',

+theme_removeformat_desc : 'Eliminar format',


+insert_image_border : 'Marc',

+insert_image_dimensions : 'Dimensions',

+insert_image_vspace : 'Espai vertical',

+insert_image_hspace : 'Espai horizontal',

+insert_image_align : 'Alineament',

+insert_image_align_default : 'Per defecte',


+insert_image_align_top : 'Superior',

+insert_image_align_middle : 'Centre',

+insert_image_align_bottom : 'Inferior',

+insert_image_align_texttop : 'Alinear text amunt',

+insert_image_align_absmiddle : 'Centrat horitzontal',

+insert_image_align_absbottom : 'Centrat a baix',

+insert_image_align_left : 'Esquerra',

+insert_image_align_right : 'Dreta',

+insert_image_delta_height : 10,

+theme_font_size : '-- Mida font --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraph',

+theme_div : 'Div',

+theme_address : 'Address',

+theme_pre : 'Preformatejat',







+theme_colorpicker_title : 'Selecciona el color',

+theme_colorpicker_apply : 'Apply',

+theme_forecolor_desc : 'Selecciona color frontal',

+theme_backcolor_desc : 'Selecciona color de fons',










+cut_desc : 'Retallar',

+copy_desc : 'Copiar',

+paste_desc : 'Enganxar',



+browse : 'Explorar',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Estils',
-theme_code_desc : 'Editar codi HTML',
-theme_code_title : 'Editor codi HTML',



-theme_hr_desc : 'Insertar un separador horitzontal',
-theme_removeformat_desc : 'Eliminar format',

-insert_image_border : 'Marc',
-insert_image_dimensions : 'Dimensions',
-insert_image_vspace : 'Espai vertical',
-insert_image_hspace : 'Espai horizontal',
-insert_image_align : 'Alineament',
-insert_image_align_default : 'Per defecte',

-insert_image_align_top : 'Superior',
-insert_image_align_middle : 'Centre',
-insert_image_align_bottom : 'Inferior',
-insert_image_align_texttop : 'Alinear text amunt',
-insert_image_align_absmiddle : 'Centrat horitzontal',
-insert_image_align_absbottom : 'Centrat a baix',
-insert_image_align_left : 'Esquerra',
-insert_image_align_right : 'Dreta',
-insert_image_delta_height : 10,
-theme_font_size : '-- Mida font --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraph',
-theme_div : 'Div',
-theme_address : 'Address',
-theme_pre : 'Preformatejat',






-theme_colorpicker_title : 'Selecciona el color',
-theme_colorpicker_apply : 'Apply',
-theme_forecolor_desc : 'Selecciona color frontal',
-theme_backcolor_desc : 'Selecciona color de fons',









-cut_desc : 'Retallar',
-copy_desc : 'Copiar',
-paste_desc : 'Enganxar',


-browse : 'Explorar',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/cs.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/cs.js
@@ -1,71 +1,71 @@
-/**
- * Czech lang variables 
- * encoding: utf-8
- *  
- * $Id$ 
- */  
+/**

+ * Czech lang variables 

+ * encoding: utf-8

+ *  

+ * $Id$ 

+ */  

+

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Styly',

+theme_code_desc : 'Zobrazit HTML',

+theme_code_title : 'Editace HTML',

+theme_code_wordwrap : 'Bez dělení slov',

+theme_sub_desc : 'Dolní index',

+theme_sup_desc : 'Horní index',

+theme_hr_desc : 'Vložit vodorovný oddělovač',

+theme_removeformat_desc : 'Zrušit formátování',

+theme_custom1_desc : 'Libovolný popisek',

+insert_image_border : 'Rámeček',

+insert_image_dimensions : 'Rozměry',

+insert_image_vspace : 'Vertikální okraj',

+insert_image_hspace : 'Horizontální okraj',

+insert_image_align : 'Zarovnání',

+insert_image_align_default : 'Výchozí',

+insert_image_align_baseline : 'Na účaří',

+insert_image_align_top : 'Nahoru',

+insert_image_align_middle : 'Na střed',

+insert_image_align_bottom : 'Dolů',

+insert_image_align_texttop : 'Nejvyšší bod textu',

+insert_image_align_absmiddle : 'Střed řádku',

+insert_image_align_absbottom : 'Spodek řádku',

+insert_image_align_left : 'Vlevo',

+insert_image_align_right : 'Vpravo',

+theme_font_size : '-- Velikost textu --',

+theme_fontdefault : '-- Písmo --',

+theme_block : '-- Formát --',

+theme_paragraph : 'Odstavec',

+theme_div : 'Div',

+theme_address : 'Adresa',

+theme_pre : 'Předformát',

+theme_h1 : 'Nadpis 1',

+theme_h2 : 'Nadpis 2',

+theme_h3 : 'Nadpis 3',

+theme_h4 : 'Nadpis 4',

+theme_h5 : 'Nadpis 5',

+theme_h6 : 'Nadpis 6',

+theme_colorpicker_title : 'Výběr barvy',

+theme_colorpicker_apply : 'Vybrat',

+theme_forecolor_desc : 'Barva popředí',

+theme_backcolor_desc : 'Barva pozadí',

+theme_charmap_title : 'Výběr znaku',

+theme_charmap_desc : 'Vložit znak',

+theme_visualaid_desc : 'Zapnout značky/neviditelné prvky',

+insert_anchor_title : 'Vložení/editace záložky',

+insert_anchor_name : 'Název',

+theme_anchor_desc : 'Vložit/editovat záložku',

+theme_insert_link_titlefield : 'Název',

+theme_clipboard_msg : 'Funkce Kopírovat/vyjmout/vložit nejsou použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?',

+theme_path : 'Cesta',

+cut_desc : 'Vyjmout',

+copy_desc : 'Kopírovat',

+paste_desc : 'Vložit',

+link_list : 'Seznam',

+image_list : 'Seznam',

+browse : 'Procházet',

+image_props_desc : 'Vlastnosti obrázku',

+newdocument_desc : 'Nový dokument',

+newdocument : 'Jste si opravdu jistý(á), že chcete vymazat veškerý obsah?'

+});

+

 
-
-tinyMCE.addToLang('',{
-theme_style_select : 'Styly',
-theme_code_desc : 'Zobrazit HTML',
-theme_code_title : 'Editace HTML',
-theme_code_wordwrap : 'Bez dělení slov',
-theme_sub_desc : 'Dolní index',
-theme_sup_desc : 'Horní index',
-theme_hr_desc : 'Vložit vodorovný oddělovač',
-theme_removeformat_desc : 'Zrušit formátování',
-theme_custom1_desc : 'Libovolný popisek',
-insert_image_border : 'Rámeček',
-insert_image_dimensions : 'Rozměry',
-insert_image_vspace : 'Vertikální okraj',
-insert_image_hspace : 'Horizontální okraj',
-insert_image_align : 'Zarovnání',
-insert_image_align_default : 'Výchozí',
-insert_image_align_baseline : 'Na účaří',
-insert_image_align_top : 'Nahoru',
-insert_image_align_middle : 'Na střed',
-insert_image_align_bottom : 'Dolů',
-insert_image_align_texttop : 'Nejvyšší bod textu',
-insert_image_align_absmiddle : 'Střed řádku',
-insert_image_align_absbottom : 'Spodek řádku',
-insert_image_align_left : 'Vlevo',
-insert_image_align_right : 'Vpravo',
-theme_font_size : '-- Velikost textu --',
-theme_fontdefault : '-- Písmo --',
-theme_block : '-- Formát --',
-theme_paragraph : 'Odstavec',
-theme_div : 'Div',
-theme_address : 'Adresa',
-theme_pre : 'Předformát',
-theme_h1 : 'Nadpis 1',
-theme_h2 : 'Nadpis 2',
-theme_h3 : 'Nadpis 3',
-theme_h4 : 'Nadpis 4',
-theme_h5 : 'Nadpis 5',
-theme_h6 : 'Nadpis 6',
-theme_colorpicker_title : 'Výběr barvy',
-theme_colorpicker_apply : 'Vybrat',
-theme_forecolor_desc : 'Barva popředí',
-theme_backcolor_desc : 'Barva pozadí',
-theme_charmap_title : 'Výběr znaku',
-theme_charmap_desc : 'Vložit znak',
-theme_visualaid_desc : 'Zapnout značky/neviditelné prvky',
-insert_anchor_title : 'Vložení/editace záložky',
-insert_anchor_name : 'Název',
-theme_anchor_desc : 'Vložit/editovat záložku',
-theme_insert_link_titlefield : 'Název',
-theme_clipboard_msg : 'Funkce Kopírovat/vyjmout/vložit nejsou použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?',
-theme_path : 'Cesta',
-cut_desc : 'Vyjmout',
-copy_desc : 'Kopírovat',
-paste_desc : 'Vložit',
-link_list : 'Seznam',
-image_list : 'Seznam',
-browse : 'Procházet',
-image_props_desc : 'Vlastnosti obrázku',
-newdocument_desc : 'Nový dokument',
-newdocument : 'Jste si opravdu jistý(á), že chcete vymazat veškerý obsah?'
-});
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/da.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/da.js
@@ -1,77 +1,77 @@
-// DK lang variables contributed by Jan Moelgaard
+// DK lang variables contributed by Jan Moelgaard

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Stilelementer',

+theme_code_desc : 'Rediger html-kode',

+theme_code_title : 'HTML Kodeeditor',

+theme_code_wordwrap : 'Ombrydning',

+theme_sub_desc : 'S&#230;nket skrift',

+theme_sup_desc : 'H&#230;vet skrift',

+theme_hr_desc : 'Inds&#230;t horisontal linje',

+theme_removeformat_desc : 'Fjern formatering',

+theme_custom1_desc : 'Inds&#230;t din egen beskrivelse her',

+insert_image_border : 'Kant',

+insert_image_dimensions : 'Dimensioner',

+insert_image_vspace : 'Flyt til venstre',

+insert_image_hspace : 'Flyt til h&#248;jre',

+insert_image_align : 'Justering',

+insert_image_align_default : 'Standard',

+insert_image_align_baseline : 'Bundlinje',

+insert_image_align_top : 'Top',

+insert_image_align_middle : 'Midt i',

+insert_image_align_bottom : 'I bunden',

+insert_image_align_texttop : 'I toppen af teksten',

+insert_image_align_absmiddle : 'Absolut midte',

+insert_image_align_absbottom : 'Absolut bund',

+insert_image_align_left : 'Venstre',

+insert_image_align_right : 'H&#248;jre',

+theme_font_size : '-- Font st&#248;rrelse --',

+theme_fontdefault : '-- Font gruppe --',

+theme_block : '-- Format --',

+theme_paragraph : 'Afsnit',

+theme_div : 'Div',

+theme_address : 'Addresse',

+theme_pre : 'Pr&#230;formateret',

+theme_h1 : 'Overskrift 1',

+theme_h2 : 'Overskrift 2',

+theme_h3 : 'Overskrift 3',

+theme_h4 : 'Overskrift 4',

+theme_h5 : 'Overskrift 5',

+theme_h6 : 'Overskrift 6',

+theme_colorpicker_title : 'V&#230;lg en farve',

+theme_colorpicker_apply : 'Anvend',

+theme_forecolor_desc : 'V&#230;lg forgrundsfarve',

+theme_backcolor_desc : 'V&#230;lg baggrundsfarve',

+theme_charmap_title : 'V&#230;lg specialkarakter',

+theme_charmap_desc : 'Inds&#230;t specialkarakter',

+theme_visualaid_desc : 'Sl&#229; linjer/usynlige elementer til og fra',

+insert_anchor_title : 'Inds&#230;t/rediger bogm&#230;rke',

+insert_anchor_name : 'Bogm&#230;rkets navn',

+theme_anchor_desc : 'Inds&#230;t/rediger bogm&#230;rke',

+theme_insert_link_titlefield : 'Title',

+theme_clipboard_msg : 'Kopier/Klip/Inds&#230;t virker ikke i Mozilla og Firefox.\nVil du vide mere om dette?',

+theme_path : 'Sti',

+cut_desc : 'Klip',

+copy_desc : 'Kopier',

+paste_desc : 'Inds&#230;t',

+link_list : 'Linkliste',

+image_list : 'Billedliste',

+browse : 'Gennemse',

+image_props_desc : 'Billedegenskaber',

+newdocument_desc : 'Nyt dokument',

+class_name : 'Klasse',

+newdocument : 'Er du sikker p&#229;, at du vil slette alt?',

+about_title : 'About TinyMCE',

+about : 'Om',

+license : 'Licens',

+plugins : 'Plugins',

+plugin : 'Plugin',

+author : 'Forfatter',

+version : 'Version',

+loaded_plugins : 'Indl&#230;ste plugins',

+help : 'Hj&#230;lp',

+not_set : '-- Ikke defineret --',

+close : 'Luk',

+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Stilelementer',
-theme_code_desc : 'Rediger html-kode',
-theme_code_title : 'HTML Kodeeditor',
-theme_code_wordwrap : 'Ombrydning',
-theme_sub_desc : 'S&#230;nket skrift',
-theme_sup_desc : 'H&#230;vet skrift',
-theme_hr_desc : 'Inds&#230;t horisontal linje',
-theme_removeformat_desc : 'Fjern formatering',
-theme_custom1_desc : 'Inds&#230;t din egen beskrivelse her',
-insert_image_border : 'Kant',
-insert_image_dimensions : 'Dimensioner',
-insert_image_vspace : 'Flyt til venstre',
-insert_image_hspace : 'Flyt til h&#248;jre',
-insert_image_align : 'Justering',
-insert_image_align_default : 'Standard',
-insert_image_align_baseline : 'Bundlinje',
-insert_image_align_top : 'Top',
-insert_image_align_middle : 'Midt i',
-insert_image_align_bottom : 'I bunden',
-insert_image_align_texttop : 'I toppen af teksten',
-insert_image_align_absmiddle : 'Absolut midte',
-insert_image_align_absbottom : 'Absolut bund',
-insert_image_align_left : 'Venstre',
-insert_image_align_right : 'H&#248;jre',
-theme_font_size : '-- Font st&#248;rrelse --',
-theme_fontdefault : '-- Font gruppe --',
-theme_block : '-- Format --',
-theme_paragraph : 'Afsnit',
-theme_div : 'Div',
-theme_address : 'Addresse',
-theme_pre : 'Pr&#230;formateret',
-theme_h1 : 'Overskrift 1',
-theme_h2 : 'Overskrift 2',
-theme_h3 : 'Overskrift 3',
-theme_h4 : 'Overskrift 4',
-theme_h5 : 'Overskrift 5',
-theme_h6 : 'Overskrift 6',
-theme_colorpicker_title : 'V&#230;lg en farve',
-theme_colorpicker_apply : 'Anvend',
-theme_forecolor_desc : 'V&#230;lg forgrundsfarve',
-theme_backcolor_desc : 'V&#230;lg baggrundsfarve',
-theme_charmap_title : 'V&#230;lg specialkarakter',
-theme_charmap_desc : 'Inds&#230;t specialkarakter',
-theme_visualaid_desc : 'Sl&#229; linjer/usynlige elementer til og fra',
-insert_anchor_title : 'Inds&#230;t/rediger bogm&#230;rke',
-insert_anchor_name : 'Bogm&#230;rkets navn',
-theme_anchor_desc : 'Inds&#230;t/rediger bogm&#230;rke',
-theme_insert_link_titlefield : 'Title',
-theme_clipboard_msg : 'Kopier/Klip/Inds&#230;t virker ikke i Mozilla og Firefox.\nVil du vide mere om dette?',
-theme_path : 'Sti',
-cut_desc : 'Klip',
-copy_desc : 'Kopier',
-paste_desc : 'Inds&#230;t',
-link_list : 'Linkliste',
-image_list : 'Billedliste',
-browse : 'Gennemse',
-image_props_desc : 'Billedegenskaber',
-newdocument_desc : 'Nyt dokument',
-class_name : 'Klasse',
-newdocument : 'Er du sikker p&#229;, at du vil slette alt?',
-about_title : 'About TinyMCE',
-about : 'Om',
-license : 'Licens',
-plugins : 'Plugins',
-plugin : 'Plugin',
-author : 'Forfatter',
-version : 'Version',
-loaded_plugins : 'Indl&#230;ste plugins',
-help : 'Hj&#230;lp',
-not_set : '-- Ikke defineret --',
-close : 'Luk',
-toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/de.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/de.js
@@ -1,77 +1,77 @@
-// DE lang variables
+// DE lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : '-- CSS-Stile --',

+theme_code_desc : 'HTML-Quelltext editieren',

+theme_code_title : 'HTML-Quelltexteditor',

+theme_code_wordwrap : 'Zeilenumbruch',

+theme_sub_desc : 'Tiefergestellt',

+theme_sup_desc : 'Hochgestellt',

+theme_hr_desc : 'Horizontalen Balken einf&uuml;gen',

+theme_removeformat_desc : 'Formatierung l&ouml;schen',

+theme_custom1_desc : 'Eigene Beschreibung',

+insert_image_border : 'Rahmen',

+insert_image_dimensions : 'Gr&ouml;&szlig;e',

+insert_image_vspace : 'Vertikaler Raum',

+insert_image_hspace : 'Horizontaler Raum',

+insert_image_align : 'Ausrichtung',

+insert_image_align_default : '-- Nicht festgelegt --',

+insert_image_align_baseline : 'Grundlinie',

+insert_image_align_top : 'Oben',

+insert_image_align_middle : 'Mitte',

+insert_image_align_bottom : 'Unten',

+insert_image_align_texttop : 'Mit dem Text',

+insert_image_align_absmiddle : 'Absolute mittig',

+insert_image_align_absbottom : 'Absolut unten',

+insert_image_align_left : 'Links',

+insert_image_align_right : 'Rechts',

+theme_font_size : '-- Schriftgr&ouml;&szlig;e --',

+theme_fontdefault : '-- Schriftfamilie --',

+theme_block : '-- Format --',

+theme_paragraph : 'Absatz',

+theme_div : 'Block',

+theme_address : 'Adresse',

+theme_pre : 'Vorformatiert',

+theme_h1 : '&Uuml;berschrift 1',

+theme_h2 : '&Uuml;berschrift 2',

+theme_h3 : '&Uuml;berschrift 3',

+theme_h4 : '&Uuml;berschrift 4',

+theme_h5 : '&Uuml;berschrift 5',

+theme_h6 : '&Uuml;berschrift 6',

+theme_colorpicker_title : 'Farbe ausw&auml;hlen',

+theme_colorpicker_apply : 'Farbe festlegen',

+theme_forecolor_desc : 'Schriftfarbe ausw&auml;hlen',

+theme_backcolor_desc : 'Hintergrundfarbe ausw&auml;hlen',

+theme_charmap_title : 'Sonderzeichen einf&uuml;gen',

+theme_charmap_desc : 'Sonderzeichen einf&uuml;gen',

+theme_visualaid_desc : 'Hilfslinen/Unsichtbare Elemente anzeigen',

+insert_anchor_title : 'Anker einf&uuml;gen/bearbeiten',

+insert_anchor_name : 'Ankername',

+theme_anchor_desc : 'Anker einf&uuml;gen/bearbeiten',

+theme_insert_link_titlefield : 'Titel',

+theme_clipboard_msg : 'Zwischenablagefunktionen sind in Mozilla und Firefox nicht verf&uuml;gbar.\nW&uuml;nschen Sie hierzu weitere Informationen?',

+theme_path : 'Pfad',

+cut_desc : 'Ausschneiden',

+copy_desc : 'Kopieren',

+paste_desc : 'Einf&uuml;gen',

+link_list : 'Hyperlink-Liste',

+image_list : 'Bild-Liste',

+browse : 'Durchsuchen',

+image_props_desc : 'Bildeigenschaften',

+newdocument_desc : 'Neues Dokument',

+class_name : 'CSS-Klasse',

+newdocument : 'Sind Sie sicher, dass Sie alle Inhalte l&ouml;schen wollen?',

+about_title : '&Uuml;ber TinyMCE',

+about : '&Uuml;ber',

+license : 'Lizenz',

+plugins : 'Plugins',

+plugin : 'Plugin',

+author : 'Autor',

+version : 'Version',

+loaded_plugins : 'Geladene Plugins',

+help : 'Hilfe',

+not_set : '-- Nicht festgelegt --',

+close : 'Schlie&szlig;en',

+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : '-- CSS-Stile --',
-theme_code_desc : 'HTML-Quelltext editieren',
-theme_code_title : 'HTML-Quelltexteditor',
-theme_code_wordwrap : 'Zeilenumbruch',
-theme_sub_desc : 'Tiefergestellt',
-theme_sup_desc : 'Hochgestellt',
-theme_hr_desc : 'Horizontalen Balken einf&uuml;gen',
-theme_removeformat_desc : 'Formatierung l&ouml;schen',
-theme_custom1_desc : 'Eigene Beschreibung',
-insert_image_border : 'Rahmen',
-insert_image_dimensions : 'Gr&ouml;&szlig;e',
-insert_image_vspace : 'Vertikaler Raum',
-insert_image_hspace : 'Horizontaler Raum',
-insert_image_align : 'Ausrichtung',
-insert_image_align_default : '-- Nicht festgelegt --',
-insert_image_align_baseline : 'Grundlinie',
-insert_image_align_top : 'Oben',
-insert_image_align_middle : 'Mitte',
-insert_image_align_bottom : 'Unten',
-insert_image_align_texttop : 'Mit dem Text',
-insert_image_align_absmiddle : 'Absolute mittig',
-insert_image_align_absbottom : 'Absolut unten',
-insert_image_align_left : 'Links',
-insert_image_align_right : 'Rechts',
-theme_font_size : '-- Schriftgr&ouml;&szlig;e --',
-theme_fontdefault : '-- Schriftfamilie --',
-theme_block : '-- Format --',
-theme_paragraph : 'Absatz',
-theme_div : 'Block',
-theme_address : 'Adresse',
-theme_pre : 'Vorformatiert',
-theme_h1 : '&Uuml;berschrift 1',
-theme_h2 : '&Uuml;berschrift 2',
-theme_h3 : '&Uuml;berschrift 3',
-theme_h4 : '&Uuml;berschrift 4',
-theme_h5 : '&Uuml;berschrift 5',
-theme_h6 : '&Uuml;berschrift 6',
-theme_colorpicker_title : 'Farbe ausw&auml;hlen',
-theme_colorpicker_apply : 'Farbe festlegen',
-theme_forecolor_desc : 'Schriftfarbe ausw&auml;hlen',
-theme_backcolor_desc : 'Hintergrundfarbe ausw&auml;hlen',
-theme_charmap_title : 'Sonderzeichen einf&uuml;gen',
-theme_charmap_desc : 'Sonderzeichen einf&uuml;gen',
-theme_visualaid_desc : 'Hilfslinen/Unsichtbare Elemente anzeigen',
-insert_anchor_title : 'Anker einf&uuml;gen/bearbeiten',
-insert_anchor_name : 'Ankername',
-theme_anchor_desc : 'Anker einf&uuml;gen/bearbeiten',
-theme_insert_link_titlefield : 'Titel',
-theme_clipboard_msg : 'Zwischenablagefunktionen sind in Mozilla und Firefox nicht verf&uuml;gbar.\nW&uuml;nschen Sie hierzu weitere Informationen?',
-theme_path : 'Pfad',
-cut_desc : 'Ausschneiden',
-copy_desc : 'Kopieren',
-paste_desc : 'Einf&uuml;gen',
-link_list : 'Hyperlink-Liste',
-image_list : 'Bild-Liste',
-browse : 'Durchsuchen',
-image_props_desc : 'Bildeigenschaften',
-newdocument_desc : 'Neues Dokument',
-class_name : 'CSS-Klasse',
-newdocument : 'Sind Sie sicher, dass Sie alle Inhalte l&ouml;schen wollen?',
-about_title : '&Uuml;ber TinyMCE',
-about : '&Uuml;ber',
-license : 'Lizenz',
-plugins : 'Plugins',
-plugin : 'Plugin',
-author : 'Autor',
-version : 'Version',
-loaded_plugins : 'Geladene Plugins',
-help : 'Hilfe',
-not_set : '-- Nicht festgelegt --',
-close : 'Schlie&szlig;en',
-toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/el.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/el.js
@@ -1,65 +1,65 @@
-// Greek lang variables by Jacaranda Bill
+// Greek lang variables by Jacaranda Bill

+

+tinyMCE.addToLang('',{




+theme_code_wordwrap : 'Word wrap',





















+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',


+theme_div : 'Div',


+theme_pre : 'Preformatted',










+theme_backcolor_desc : 'Select background color',








+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',


+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{



-theme_code_wordwrap : 'Word wrap',




















-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',

-theme_div : 'Div',

-theme_pre : 'Preformatted',









-theme_backcolor_desc : 'Select background color',







-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',

-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/en.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/en.js
@@ -1,62 +1,94 @@
-tinyMCE.addI18n('en.advanced',{
-style_select:"Styles",
-font_size:"Font size",
-fontdefault:"Font family",
-block:"Format",
-paragraph:"Paragraph",
-div:"Div",
-address:"Address",
-pre:"Preformatted",
-h1:"Heading 1",
-h2:"Heading 2",
-h3:"Heading 3",
-h4:"Heading 4",
-h5:"Heading 5",
-h6:"Heading 6",
-blockquote:"Blockquote",
-code:"Code",
-samp:"Code sample",
-dt:"Definition term ",
-dd:"Definition description",
-bold_desc:"Bold (Ctrl+B)",
-italic_desc:"Italic (Ctrl+I)",
-underline_desc:"Underline (Ctrl+U)",
-striketrough_desc:"Strikethrough",
-justifyleft_desc:"Align left",
-justifycenter_desc:"Align center",
-justifyright_desc:"Align right",
-justifyfull_desc:"Align full",
-bullist_desc:"Unordered list",
-numlist_desc:"Ordered list",
-outdent_desc:"Outdent",
-indent_desc:"Indent",
-undo_desc:"Undo (Ctrl+Z)",
-redo_desc:"Redo (Ctrl+Y)",
-link_desc:"Insert/edit link",
-unlink_desc:"Unlink",
-image_desc:"Insert/edit image",
-cleanup_desc:"Cleanup messy code",
-code_desc:"Edit HTML Source",
-sub_desc:"Subscript",
-sup_desc:"Superscript",
-hr_desc:"Insert horizontal ruler",
-removeformat_desc:"Remove formatting",
-custom1_desc:"Your custom description here",
-forecolor_desc:"Select text color",
-backcolor_desc:"Select background color",
-charmap_desc:"Insert custom character",
-visualaid_desc:"Toggle guidelines/invisible elements",
-anchor_desc:"Insert/edit anchor",
-cut_desc:"Cut",
-copy_desc:"Copy",
-paste_desc:"Paste",
-image_props_desc:"Image properties",
-newdocument_desc:"New document",
-help_desc:"Help",
-blockquote_desc:"Blockquote",
-clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",
-path:"Path",
-newdocument:"Are you sure you want clear all contents?",
-toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
-more_colors:"More colors"
-});
+// UK lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : '-- Styles --',

+theme_code_desc : 'Edit HTML Source',

+theme_code_title : 'HTML Source Editor',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Subscript',

+theme_sup_desc : 'Superscript',

+theme_hr_desc : 'Insert horizontal ruler',

+theme_removeformat_desc : 'Remove formatting',

+theme_custom1_desc : 'Your custom description here',

+insert_image_border : 'Border',

+insert_image_dimensions : 'Dimensions',

+insert_image_vspace : 'Vertical space',

+insert_image_hspace : 'Horizontal space',

+insert_image_align : 'Alignment',

+insert_image_align_default : '-- Not set --',

+insert_image_align_baseline : 'Baseline',

+insert_image_align_top : 'Top',

+insert_image_align_middle : 'Middle',

+insert_image_align_bottom : 'Bottom',

+insert_image_align_texttop : 'TextTop',

+insert_image_align_absmiddle : 'Absolute Middle',

+insert_image_align_absbottom : 'Absolute Bottom',

+insert_image_align_left : 'Left',

+insert_image_align_right : 'Right',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraph',

+theme_div : 'Div',

+theme_address : 'Address',

+theme_pre : 'Preformatted',

+theme_h1 : 'Heading 1',

+theme_h2 : 'Heading 2',

+theme_h3 : 'Heading 3',

+theme_h4 : 'Heading 4',

+theme_h5 : 'Heading 5',

+theme_h6 : 'Heading 6',

+theme_blockquote : 'Blockquote',

+theme_code : 'Code',

+theme_samp : 'Code sample',

+theme_dt : 'Definition term ',

+theme_dd : 'Definition description',

+theme_colorpicker_title : 'Select a color',

+theme_colorpicker_apply : 'Apply',

+theme_forecolor_desc : 'Select text color',

+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : 'Select custom character',

+theme_charmap_desc : 'Insert custom character',

+theme_visualaid_desc : 'Toggle guidelines/invisible elements',

+insert_anchor_title : 'Insert/edit anchor',

+insert_anchor_name : 'Anchor name',

+theme_anchor_desc : 'Insert/edit anchor',

+theme_insert_link_titlefield : 'Title',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+class_name : 'Class',

+newdocument : 'Are you sure you want clear all contents?',

+about_title : 'About TinyMCE',

+about : 'About',

+license : 'License',

+plugins : 'Plugins',

+plugin : 'Plugin',

+author : 'Author',

+version : 'Version',

+loaded_plugins : 'Loaded plugins',

+help : 'Help',

+not_set : '-- Not set --',

+close : 'Close',

+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X',

+invalid_data : 'Error: Invalid values entered, these are marked in red.',

+more_colors : 'More colors',

+color_picker_tab : 'Picker',

+color_picker : 'Color picker',

+web_colors_tab : 'Palette',

+web_colors : 'Palette colors',

+named_colors_tab : 'Named',

+named_colors : 'Named colors',

+color : 'Color:',

+color_name : 'Name:',

+is_email : 'The URL you entered seems to be an email address, do you want to add the required mailto: prefix?',

+is_external : 'The URL you entered seems to external link, do you want to add the required http:// prefix?'

+});

+

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js
+++ /dev/null
@@ -1,51 +1,1 @@
-tinyMCE.addI18n('en.advanced_dlg',{
-about_title:"About TinyMCE",
-about_general:"About",
-about_help:"Help",
-about_license:"License",
-about_plugins:"Plugins",
-about_plugin:"Plugin",
-about_author:"Author",
-about_version:"Version",
-about_loaded:"Loaded plugins",
-anchor_title:"Insert/edit anchor",
-anchor_name:"Anchor name",
-code_title:"HTML Source Editor",
-code_wordwrap:"Word wrap",
-colorpicker_title:"Select a color",
-colorpicker_picker_tab:"Picker",
-colorpicker_picker_title:"Color picker",
-colorpicker_palette_tab:"Palette",
-colorpicker_palette_title:"Palette colors",
-colorpicker_named_tab:"Named",
-colorpicker_named_title:"Named colors",
-colorpicker_color:"Color:",
-colorpicker_name:"Name:",
-charmap_title:"Select custom character",
-image_title:"Insert/edit image",
-image_src:"Image URL",
-image_alt:"Image description",
-image_list:"Image list",
-image_border:"Border",
-image_dimensions:"Dimensions",
-image_vspace:"Vertical space",
-image_hspace:"Horizontal space",
-image_align:"Alignment",
-image_align_baseline:"Baseline",
-image_align_top:"Top",
-image_align_middle:"Middle",
-image_align_bottom:"Bottom",
-image_align_texttop:"Text top",
-image_align_textbottom:"Text bottom",
-image_align_left:"Left",
-image_align_right:"Right",
-link_title:"Insert/edit link",
-link_url:"Link URL",
-link_target:"Target",
-link_target_same:"Open link in the same window",
-link_target_blank:"Open link in a new window",
-link_titlefield:"Title",
-link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
-link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
-link_list:"Link list"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/es.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/es.js
@@ -1,65 +1,65 @@
-// ES lang variables by Alvaro Velasco
+// ES lang variables by Alvaro Velasco

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Estilos',

+theme_code_desc : 'Editar codigo HTML',

+theme_code_title : 'Editor codigo HTML',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Subindice',

+theme_sup_desc : 'Superindice',

+theme_hr_desc : 'Insertar un separador horizontal',

+theme_removeformat_desc : 'Quitar formato',

+theme_custom1_desc : 'Tu descricion',

+insert_image_border : 'Borde',

+insert_image_dimensions : 'Dimensiones',

+insert_image_vspace : 'Espacio vertical',

+insert_image_hspace : 'Espacio horizontal',

+insert_image_align : 'Alineamiento',

+insert_image_align_default : 'Por defecto',

+insert_image_align_baseline : 'Baseline',

+insert_image_align_top : 'Superior',

+insert_image_align_middle : 'Centro',

+insert_image_align_bottom : 'Inferior',

+insert_image_align_texttop : 'Alinear texto arriba',

+insert_image_align_absmiddle : 'Centrado horizontal',

+insert_image_align_absbottom : 'Centrado abajo',

+insert_image_align_left : 'Izquierda',

+insert_image_align_right : 'Derecha',

+insert_image_delta_height : 10,

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraph',

+theme_div : 'Div',

+theme_address : 'Address',

+theme_pre : 'Preformatted',

+theme_h1 : 'Heading 1',

+theme_h2 : 'Heading 2',

+theme_h3 : 'Heading 3',

+theme_h4 : 'Heading 4',

+theme_h5 : 'Heading 5',

+theme_h6 : 'Heading 6',

+theme_colorpicker_title : 'Select a color',

+theme_colorpicker_apply : 'Apply',

+theme_forecolor_desc : 'Select forecolor',

+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : 'Select custom character',

+theme_charmap_desc : 'Insert custom character',

+theme_visualaid_desc : 'Toggle guidelines/invisible elements',

+insert_anchor_title : 'Insert/edit anchor',

+insert_anchor_name : 'Anchor name',

+theme_anchor_desc : 'Insert/edit anchor',

+theme_insert_link_titlefield : 'Title',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Estilos',
-theme_code_desc : 'Editar codigo HTML',
-theme_code_title : 'Editor codigo HTML',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Subindice',
-theme_sup_desc : 'Superindice',
-theme_hr_desc : 'Insertar un separador horizontal',
-theme_removeformat_desc : 'Quitar formato',
-theme_custom1_desc : 'Tu descricion',
-insert_image_border : 'Borde',
-insert_image_dimensions : 'Dimensiones',
-insert_image_vspace : 'Espacio vertical',
-insert_image_hspace : 'Espacio horizontal',
-insert_image_align : 'Alineamiento',
-insert_image_align_default : 'Por defecto',
-insert_image_align_baseline : 'Baseline',
-insert_image_align_top : 'Superior',
-insert_image_align_middle : 'Centro',
-insert_image_align_bottom : 'Inferior',
-insert_image_align_texttop : 'Alinear texto arriba',
-insert_image_align_absmiddle : 'Centrado horizontal',
-insert_image_align_absbottom : 'Centrado abajo',
-insert_image_align_left : 'Izquierda',
-insert_image_align_right : 'Derecha',
-insert_image_delta_height : 10,
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraph',
-theme_div : 'Div',
-theme_address : 'Address',
-theme_pre : 'Preformatted',
-theme_h1 : 'Heading 1',
-theme_h2 : 'Heading 2',
-theme_h3 : 'Heading 3',
-theme_h4 : 'Heading 4',
-theme_h5 : 'Heading 5',
-theme_h6 : 'Heading 6',
-theme_colorpicker_title : 'Select a color',
-theme_colorpicker_apply : 'Apply',
-theme_forecolor_desc : 'Select forecolor',
-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : 'Select custom character',
-theme_charmap_desc : 'Insert custom character',
-theme_visualaid_desc : 'Toggle guidelines/invisible elements',
-insert_anchor_title : 'Insert/edit anchor',
-insert_anchor_name : 'Anchor name',
-theme_anchor_desc : 'Insert/edit anchor',
-theme_insert_link_titlefield : 'Title',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fa.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fa.js
@@ -1,66 +1,66 @@
-// IR lang variables
-// Persian (Farsi) language pack (for IRAN)
-// By: Morteza Zafari
-// Lost@LostLord.com
-// http://www.LostLord.com
+// IR lang variables

+// Persian (Farsi) language pack (for IRAN)

+// By: Morteza Zafari

+// Lost@LostLord.com

+// http://www.LostLord.com

+

+tinyMCE.addToLang('',{

+dir : 'rtl',

+theme_style_select : '????',

+theme_code_desc : '?????? ????',

+theme_code_title : 'HTML ???????? ????',

+theme_code_wordwrap : '?? ???',

+theme_sub_desc : '??? ????',

+theme_sup_desc : '???? ????',

+theme_hr_desc : '??? ?? ????',

+theme_removeformat_desc : '??? ?? ??? ???? ????',

+theme_custom1_desc : 'Your custom description here',

+insert_image_border : '?????',

+insert_image_dimensions : '?????',

+insert_image_vspace : '????? ?????',

+insert_image_hspace : '????? ????',

+insert_image_align : '??? ????????',

+insert_image_align_default : '??? ???',

+insert_image_align_baseline : '?? ????',

+insert_image_align_top : '????',

+insert_image_align_middle : '???',

+insert_image_align_bottom : '?????',

+insert_image_align_texttop : '????? ???',

+insert_image_align_absmiddle : '??? ????',

+insert_image_align_absbottom : '????? ????',

+insert_image_align_left : '??',

+insert_image_align_right : '????',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : '????????',

+theme_div : 'Div',

+theme_address : '????',

+theme_pre : '?? ??? ????? ???',

+theme_h1 : '???? 1',

+theme_h2 : '???? 2',

+theme_h3 : '???? 3',

+theme_h4 : '???? 4',

+theme_h5 : '???? 5',

+theme_h6 : '???? 6',

+theme_colorpicker_title : '??? ?? ?????? ????',

+theme_colorpicker_apply : '?????',

+theme_forecolor_desc : '?????? ??? ???',

+theme_backcolor_desc : '?????? ??? ?????',

+theme_charmap_title : '?????? ??????? ????',

+theme_charmap_desc : '??? ??????? ????',

+theme_visualaid_desc : '????? ???? ???? ? ????? ??????',

+insert_anchor_title : '??? ? ?????? Anchor',

+insert_anchor_name : '??? Anchor',

+theme_anchor_desc : '??? ? ?????? Anchor',

+theme_insert_link_titlefield : '?????',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : '????',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-dir : 'rtl',
-theme_style_select : '????',
-theme_code_desc : '?????? ????',
-theme_code_title : 'HTML ???????? ????',
-theme_code_wordwrap : '?? ???',
-theme_sub_desc : '??? ????',
-theme_sup_desc : '???? ????',
-theme_hr_desc : '??? ?? ????',
-theme_removeformat_desc : '??? ?? ??? ???? ????',
-theme_custom1_desc : 'Your custom description here',
-insert_image_border : '?????',
-insert_image_dimensions : '?????',
-insert_image_vspace : '????? ?????',
-insert_image_hspace : '????? ????',
-insert_image_align : '??? ????????',
-insert_image_align_default : '??? ???',
-insert_image_align_baseline : '?? ????',
-insert_image_align_top : '????',
-insert_image_align_middle : '???',
-insert_image_align_bottom : '?????',
-insert_image_align_texttop : '????? ???',
-insert_image_align_absmiddle : '??? ????',
-insert_image_align_absbottom : '????? ????',
-insert_image_align_left : '??',
-insert_image_align_right : '????',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : '????????',
-theme_div : 'Div',
-theme_address : '????',
-theme_pre : '?? ??? ????? ???',
-theme_h1 : '???? 1',
-theme_h2 : '???? 2',
-theme_h3 : '???? 3',
-theme_h4 : '???? 4',
-theme_h5 : '???? 5',
-theme_h6 : '???? 6',
-theme_colorpicker_title : '??? ?? ?????? ????',
-theme_colorpicker_apply : '?????',
-theme_forecolor_desc : '?????? ??? ???',
-theme_backcolor_desc : '?????? ??? ?????',
-theme_charmap_title : '?????? ??????? ????',
-theme_charmap_desc : '??? ??????? ????',
-theme_visualaid_desc : '????? ???? ???? ? ????? ??????',
-insert_anchor_title : '??? ? ?????? Anchor',
-insert_anchor_name : '??? Anchor',
-theme_anchor_desc : '??? ? ?????? Anchor',
-theme_insert_link_titlefield : '?????',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : '????',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fi.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fi.js
@@ -1,64 +1,64 @@
-// FI lang variables by Urho Konttori from Absolutions
+// FI lang variables by Urho Konttori from Absolutions

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Tyylit',

+theme_code_desc : 'Muokkaa HTML l&auml;hdekoodia',

+theme_code_title : 'HTML L&auml;hdekoodin muokkaus',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Alam&auml;&auml;re',

+theme_sup_desc : 'Yl&auml;m&auml;&auml;re',

+theme_hr_desc : 'Lis&auml;&auml; vaakaviiva',

+theme_removeformat_desc : 'Poista muotoilu',

+theme_custom1_desc : 'Kirjoita oma selityksesi t&auml;h&auml;n',

+insert_image_border : 'Reuna',

+insert_image_dimensions : 'Mitat',

+insert_image_vspace : 'Pystyv&auml;li',

+insert_image_hspace : 'Vaakav&auml;li',

+insert_image_align : 'Asettelu',

+insert_image_align_default : 'Oletus',

+insert_image_align_baseline : 'Perustasoon',

+insert_image_align_top : 'Yl&auml;laitaan',

+insert_image_align_middle : 'Keskelle',

+insert_image_align_bottom : 'Alalaitaan',

+insert_image_align_texttop : 'Tekstin yl&auml;laitaan',

+insert_image_align_absmiddle : 'Absoluuttisen keskelle',

+insert_image_align_absbottom : 'Absoluuttisen alas',

+insert_image_align_left : 'Vasemmalle',

+insert_image_align_right : 'Oikealle',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Kappale',

+theme_div : 'Div',

+theme_address : 'Osoite',

+theme_pre : 'Etuk&auml;teen muotoiltu',

+theme_h1 : 'Otsikko 1',

+theme_h2 : 'Otsikko 2',

+theme_h3 : 'Otsikko 3',

+theme_h4 : 'Otsikko 4',

+theme_h5 : 'Otsikko 5',

+theme_h6 : 'Otsikko 6',

+theme_colorpicker_title : 'Valitse v&auml;ri',

+theme_colorpicker_apply : 'Aseta v&auml;ri',

+theme_forecolor_desc : 'Valitse etuv&auml;ri',

+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : 'Select custom character',

+theme_charmap_desc : 'Insert custom character',

+theme_visualaid_desc : 'Toggle guidelines/invisible elements',

+insert_anchor_title : 'Insert/edit anchor',

+insert_anchor_name : 'Anchor name',

+theme_anchor_desc : 'Insert/edit anchor',

+theme_insert_link_titlefield : 'Title',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Tyylit',
-theme_code_desc : 'Muokkaa HTML l&auml;hdekoodia',
-theme_code_title : 'HTML L&auml;hdekoodin muokkaus',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Alam&auml;&auml;re',
-theme_sup_desc : 'Yl&auml;m&auml;&auml;re',
-theme_hr_desc : 'Lis&auml;&auml; vaakaviiva',
-theme_removeformat_desc : 'Poista muotoilu',
-theme_custom1_desc : 'Kirjoita oma selityksesi t&auml;h&auml;n',
-insert_image_border : 'Reuna',
-insert_image_dimensions : 'Mitat',
-insert_image_vspace : 'Pystyv&auml;li',
-insert_image_hspace : 'Vaakav&auml;li',
-insert_image_align : 'Asettelu',
-insert_image_align_default : 'Oletus',
-insert_image_align_baseline : 'Perustasoon',
-insert_image_align_top : 'Yl&auml;laitaan',
-insert_image_align_middle : 'Keskelle',
-insert_image_align_bottom : 'Alalaitaan',
-insert_image_align_texttop : 'Tekstin yl&auml;laitaan',
-insert_image_align_absmiddle : 'Absoluuttisen keskelle',
-insert_image_align_absbottom : 'Absoluuttisen alas',
-insert_image_align_left : 'Vasemmalle',
-insert_image_align_right : 'Oikealle',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Kappale',
-theme_div : 'Div',
-theme_address : 'Osoite',
-theme_pre : 'Etuk&auml;teen muotoiltu',
-theme_h1 : 'Otsikko 1',
-theme_h2 : 'Otsikko 2',
-theme_h3 : 'Otsikko 3',
-theme_h4 : 'Otsikko 4',
-theme_h5 : 'Otsikko 5',
-theme_h6 : 'Otsikko 6',
-theme_colorpicker_title : 'Valitse v&auml;ri',
-theme_colorpicker_apply : 'Aseta v&auml;ri',
-theme_forecolor_desc : 'Valitse etuv&auml;ri',
-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : 'Select custom character',
-theme_charmap_desc : 'Insert custom character',
-theme_visualaid_desc : 'Toggle guidelines/invisible elements',
-insert_anchor_title : 'Insert/edit anchor',
-insert_anchor_name : 'Anchor name',
-theme_anchor_desc : 'Insert/edit anchor',
-theme_insert_link_titlefield : 'Title',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fr.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fr.js
@@ -1,66 +1,66 @@
-// Canadian French lang variables by Virtuelcom
-// Modify by Laurent Dran 13-02-2006
+// Canadian French lang variables by Virtuelcom

+// Modify by Laurent Dran 13-02-2006

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Styles',

+theme_code_desc : 'Modifier le code source HTML',

+theme_code_title : '&Eacute;diteur de code source HTML',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Souscrit',

+theme_sup_desc : 'Indice sup&eacute;rieur',

+theme_hr_desc : 'Ins&eacute;rer un s&eacute;parateur horizontal',

+theme_removeformat_desc : 'Supprimer le formattage',

+theme_custom1_desc : 'Votre description personnalis&eacute;e ici',

+insert_image_border : 'Bordure',

+insert_image_dimensions : 'Dimensions',

+insert_image_vspace : 'VSpace',

+insert_image_hspace : 'HSpace',

+insert_image_align : 'Alignement',

+insert_image_align_default : 'D&eacute;faut',

+insert_image_align_baseline : 'Baseline',

+insert_image_align_top : 'Haut',

+insert_image_align_middle : 'Milieu',

+insert_image_align_bottom : 'Bas',

+insert_image_align_texttop : 'TextTop',

+insert_image_align_absmiddle : 'Milieu absolu',

+insert_image_align_absbottom : 'Bas absolu',

+insert_image_align_left : 'Gauche',

+insert_image_align_right : 'Droit',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraphe',

+theme_div : 'Div',

+theme_address : 'Addresse',

+theme_pre : 'Pr&eacute;formatt&eacute;',

+theme_h1 : 'Ent&ecirc;te 1',

+theme_h2 : 'Ent&ecirc;te 2',

+theme_h3 : 'Ent&ecirc;te 3',

+theme_h4 : 'Ent&ecirc;te 4',

+theme_h5 : 'Ent&ecirc;te 5',

+theme_h6 : 'Ent&ecirc;te 6',

+theme_colorpicker_title : 'Choisir une couleur',

+theme_colorpicker_apply : 'Appliquer',

+theme_forecolor_desc : 'Choisir la couleur d\'avant plan',

+theme_backcolor_desc : 'Choisir la couleur de fond',

+theme_charmap_title : 'S&eacute;lectionner un charact&egrave;re sp&eacute;cial',

+theme_charmap_desc : 'Ins&eacute;rer un charact&egrave;re sp&eacute;cial',

+theme_visualaid_desc : 'Active/D&eacute;sactive les lignes guides et les &eacute;l&eacute;ments invisibles',

+insert_anchor_title : 'Ins&eacute;rer/Modifier une ancre',

+insert_anchor_name : 'Nom de l\'ancre',

+theme_anchor_desc : 'Ins&eacute;rer/Modifier une ancre',

+theme_insert_link_titlefield : 'Titre',


+theme_path : 'Chemin',

+cut_desc : 'Couper',

+copy_desc : 'Copier',

+paste_desc : 'Coller',

+link_list : 'Lien de la liste',

+image_list : 'Image de la liste',

+browse : 'Naviguer',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+class_name : 'Classe CSS',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Styles',
-theme_code_desc : 'Modifier le code source HTML',
-theme_code_title : '&Eacute;diteur de code source HTML',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Souscrit',
-theme_sup_desc : 'Indice sup&eacute;rieur',
-theme_hr_desc : 'Ins&eacute;rer un s&eacute;parateur horizontal',
-theme_removeformat_desc : 'Supprimer le formattage',
-theme_custom1_desc : 'Votre description personnalis&eacute;e ici',
-insert_image_border : 'Bordure',
-insert_image_dimensions : 'Dimensions',
-insert_image_vspace : 'VSpace',
-insert_image_hspace : 'HSpace',
-insert_image_align : 'Alignement',
-insert_image_align_default : 'D&eacute;faut',
-insert_image_align_baseline : 'Baseline',
-insert_image_align_top : 'Haut',
-insert_image_align_middle : 'Milieu',
-insert_image_align_bottom : 'Bas',
-insert_image_align_texttop : 'TextTop',
-insert_image_align_absmiddle : 'Milieu absolu',
-insert_image_align_absbottom : 'Bas absolu',
-insert_image_align_left : 'Gauche',
-insert_image_align_right : 'Droit',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraphe',
-theme_div : 'Div',
-theme_address : 'Addresse',
-theme_pre : 'Pr&eacute;formatt&eacute;',
-theme_h1 : 'Ent&ecirc;te 1',
-theme_h2 : 'Ent&ecirc;te 2',
-theme_h3 : 'Ent&ecirc;te 3',
-theme_h4 : 'Ent&ecirc;te 4',
-theme_h5 : 'Ent&ecirc;te 5',
-theme_h6 : 'Ent&ecirc;te 6',
-theme_colorpicker_title : 'Choisir une couleur',
-theme_colorpicker_apply : 'Appliquer',
-theme_forecolor_desc : 'Choisir la couleur d\'avant plan',
-theme_backcolor_desc : 'Choisir la couleur de fond',
-theme_charmap_title : 'S&eacute;lectionner un charact&egrave;re sp&eacute;cial',
-theme_charmap_desc : 'Ins&eacute;rer un charact&egrave;re sp&eacute;cial',
-theme_visualaid_desc : 'Active/D&eacute;sactive les lignes guides et les &eacute;l&eacute;ments invisibles',
-insert_anchor_title : 'Ins&eacute;rer/Modifier une ancre',
-insert_anchor_name : 'Nom de l\'ancre',
-theme_anchor_desc : 'Ins&eacute;rer/Modifier une ancre',
-theme_insert_link_titlefield : 'Titre',

-theme_path : 'Chemin',
-cut_desc : 'Couper',
-copy_desc : 'Copier',
-paste_desc : 'Coller',
-link_list : 'Lien de la liste',
-image_list : 'Image de la liste',
-browse : 'Naviguer',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-class_name : 'Classe CSS',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fr_ca.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/fr_ca.js
@@ -1,65 +1,65 @@
-// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15
+// Canadian French lang variables by Virtuelcom   last modification: 2005-06-15

+

+tinyMCE.addToLang('',{

+theme_style_select : '-- Styles --',

+theme_code_desc : 'Modifier le code source HTML',


+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Souscrit',



+theme_removeformat_desc : 'Supprimer le formattage',


+insert_image_border : 'Bordure',

+insert_image_dimensions : 'Dimensions',

+insert_image_vspace : 'VSpace',

+insert_image_hspace : 'HSpace',

+insert_image_align : 'Alignement',


+insert_image_align_baseline : 'Baseline',

+insert_image_align_top : 'Haut',

+insert_image_align_middle : 'Milieu',

+insert_image_align_bottom : 'Bas',

+insert_image_align_texttop : 'TextTop',

+insert_image_align_absmiddle : 'Milieu absolu',

+insert_image_align_absbottom : 'Bas absolu',

+insert_image_align_left : 'Gauche',

+insert_image_align_right : 'Droit',

+theme_font_size : 'Taille',

+theme_fontdefault : '-- Police --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraphe',

+theme_div : 'Div',

+theme_address : 'Addresse',








+theme_colorpicker_title : 'Choisir une couleur',

+theme_colorpicker_apply : 'Appliquer',

+theme_forecolor_desc : 'Choisir la couleur d\'avant plan',






+insert_anchor_name : 'Nom de l\'ancre',


+theme_insert_link_titlefield : 'Titre',


+theme_path : 'Chemin',

+cut_desc : 'Couper',

+copy_desc : 'Copier',

+paste_desc : 'Coller',

+link_list : 'Liste de liens',

+image_list : 'Liste d\'images',



+newdocument_desc : 'Nouveau Document',

+class_name : 'Classe',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : '-- Styles --',
-theme_code_desc : 'Modifier le code source HTML',

-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Souscrit',


-theme_removeformat_desc : 'Supprimer le formattage',

-insert_image_border : 'Bordure',
-insert_image_dimensions : 'Dimensions',
-insert_image_vspace : 'VSpace',
-insert_image_hspace : 'HSpace',
-insert_image_align : 'Alignement',

-insert_image_align_baseline : 'Baseline',
-insert_image_align_top : 'Haut',
-insert_image_align_middle : 'Milieu',
-insert_image_align_bottom : 'Bas',
-insert_image_align_texttop : 'TextTop',
-insert_image_align_absmiddle : 'Milieu absolu',
-insert_image_align_absbottom : 'Bas absolu',
-insert_image_align_left : 'Gauche',
-insert_image_align_right : 'Droit',
-theme_font_size : 'Taille',
-theme_fontdefault : '-- Police --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraphe',
-theme_div : 'Div',
-theme_address : 'Addresse',







-theme_colorpicker_title : 'Choisir une couleur',
-theme_colorpicker_apply : 'Appliquer',
-theme_forecolor_desc : 'Choisir la couleur d\'avant plan',





-insert_anchor_name : 'Nom de l\'ancre',

-theme_insert_link_titlefield : 'Titre',

-theme_path : 'Chemin',
-cut_desc : 'Couper',
-copy_desc : 'Copier',
-paste_desc : 'Coller',
-link_list : 'Liste de liens',
-image_list : 'Liste d\'images',


-newdocument_desc : 'Nouveau Document',
-class_name : 'Classe',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/he.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/he.js
@@ -1,76 +1,76 @@
-// HE lang variables by Liron Newman, http://eesh.net
+// HE lang variables by Liron Newman, http://eesh.net

+

+tinyMCE.addToLang('',{








































































+});

 
-tinyMCE.addToLang('',{







































































-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/hu.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/hu.js
@@ -1,76 +1,76 @@
-// HU lang variables
+// HU lang variables

+

+tinyMCE.addToLang('',{










+insert_image_border : 'Keret',






+insert_image_align_baseline : 'Baseline',



+insert_image_align_bottom : 'Alul',




+insert_image_align_left : 'Balra',

+insert_image_align_right : 'Jobbra',





+theme_div : 'Div',










+theme_colorpicker_apply : 'Alkalmaz',















+link_list : 'Link lista',









+license : 'Licensz',









+});

 
-tinyMCE.addToLang('',{









-insert_image_border : 'Keret',





-insert_image_align_baseline : 'Baseline',


-insert_image_align_bottom : 'Alul',



-insert_image_align_left : 'Balra',
-insert_image_align_right : 'Jobbra',




-theme_div : 'Div',









-theme_colorpicker_apply : 'Alkalmaz',














-link_list : 'Link lista',








-license : 'Licensz',








-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/it.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/it.js
@@ -1,65 +1,65 @@
-// Variabili di lingua IT - fabrix.xm@lombardiacom.it
+// Variabili di lingua IT - fabrix.xm@lombardiacom.it

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Stili',

+theme_code_desc : 'Edita il sorgente HTML',

+theme_code_title : 'Editor Sorgente HTML',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Pedice',

+theme_sup_desc : 'Apice',

+theme_hr_desc : 'Inserisce linea orizzontale',

+theme_removeformat_desc : 'Rimuovi formattazione',

+theme_custom1_desc : 'Scrivi qui la tua descrizione personalizzata',

+insert_image_border : 'Bordo',

+insert_image_dimensions : 'Dimensioni',

+insert_image_vspace : 'Spazio verticale',

+insert_image_hspace : 'Spazio orizzontale',

+insert_image_align : 'Allineamento',

+insert_image_align_default : 'Default',

+insert_image_align_baseline : 'Baseline',

+insert_image_align_top : 'Superiore',

+insert_image_align_middle : 'Centrale',

+insert_image_align_bottom : 'Inferiore',

+insert_image_align_texttop : 'TextTop',

+insert_image_align_absmiddle : 'Centro assoluto',

+insert_image_align_absbottom : 'Inferiore assoluto',

+insert_image_align_left : 'Sinistra',

+insert_image_align_right : 'Destra',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragrafo',

+theme_div : 'Div',

+theme_address : 'Indirizzo',

+theme_pre : 'Preformattato',

+theme_h1 : 'Intestazione 1',

+theme_h2 : 'Intestazione 2',

+theme_h3 : 'Intestazione 3',

+theme_h4 : 'Intestazione 4',

+theme_h5 : 'Intestazione 5',

+theme_h6 : 'Intestazione 6',

+theme_colorpicker_title : 'Seleziona un colore',

+theme_colorpicker_apply : 'Appplica',

+theme_forecolor_desc : 'Seleziona il colore',

+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : 'Seleziona un carattere custom',

+theme_charmap_desc : 'Inserisci un carattere custom',

+theme_visualaid_desc : 'Mostra/nascondi linee guida e elementi invisibili',

+insert_anchor_title : 'Inserisci/modifica &agrave;ncora',

+insert_anchor_name : 'Nome &agrave;ncora',

+theme_anchor_desc : 'Inserisci/modifica &agrave;ncora',

+theme_insert_link_titlefield : 'Titolo',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+class_name : 'Classe', 

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Stili',
-theme_code_desc : 'Edita il sorgente HTML',
-theme_code_title : 'Editor Sorgente HTML',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Pedice',
-theme_sup_desc : 'Apice',
-theme_hr_desc : 'Inserisce linea orizzontale',
-theme_removeformat_desc : 'Rimuovi formattazione',
-theme_custom1_desc : 'Scrivi qui la tua descrizione personalizzata',
-insert_image_border : 'Bordo',
-insert_image_dimensions : 'Dimensioni',
-insert_image_vspace : 'Spazio verticale',
-insert_image_hspace : 'Spazio orizzontale',
-insert_image_align : 'Allineamento',
-insert_image_align_default : 'Default',
-insert_image_align_baseline : 'Baseline',
-insert_image_align_top : 'Superiore',
-insert_image_align_middle : 'Centrale',
-insert_image_align_bottom : 'Inferiore',
-insert_image_align_texttop : 'TextTop',
-insert_image_align_absmiddle : 'Centro assoluto',
-insert_image_align_absbottom : 'Inferiore assoluto',
-insert_image_align_left : 'Sinistra',
-insert_image_align_right : 'Destra',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragrafo',
-theme_div : 'Div',
-theme_address : 'Indirizzo',
-theme_pre : 'Preformattato',
-theme_h1 : 'Intestazione 1',
-theme_h2 : 'Intestazione 2',
-theme_h3 : 'Intestazione 3',
-theme_h4 : 'Intestazione 4',
-theme_h5 : 'Intestazione 5',
-theme_h6 : 'Intestazione 6',
-theme_colorpicker_title : 'Seleziona un colore',
-theme_colorpicker_apply : 'Appplica',
-theme_forecolor_desc : 'Seleziona il colore',
-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : 'Seleziona un carattere custom',
-theme_charmap_desc : 'Inserisci un carattere custom',
-theme_visualaid_desc : 'Mostra/nascondi linee guida e elementi invisibili',
-insert_anchor_title : 'Inserisci/modifica &agrave;ncora',
-insert_anchor_name : 'Nome &agrave;ncora',
-theme_anchor_desc : 'Inserisci/modifica &agrave;ncora',
-theme_insert_link_titlefield : 'Titolo',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-class_name : 'Classe', 
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ja.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ja.js
@@ -1,63 +1,63 @@
-// JP lang variables
+// JP lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : '$B%9%?%$%k(B',

+theme_paragraph : '$BJ8L.(B',

+theme_address : '$B%"%I%l%9(B',

+theme_pre : '$B@07A:Q$_(B',

+theme_h1 : 'H1',

+theme_h2 : 'H2',

+theme_h3 : 'H3',

+theme_h4 : 'H4',

+theme_h5 : 'H5',

+theme_h6 : 'H6',

+theme_div : 'Div',

+insert_anchor_title : '$B%"%s%+!<$NA^F~(B/$BJT=8(B',

+insert_anchor_name : '$B%"%s%+!<$NL>A0(B',

+theme_anchor_desc : '$B%"%s%+!<$NA^F~(B/$BJT=8(B',

+theme_code_desc : 'HTML$B$ND>@\JT=8(B',

+theme_code_title : 'HTML$B$NJT=8(B',

+theme_code_wordwrap : 'Word wrap',

+theme_hr_desc : '$B?eJ?@~(B',

+theme_removeformat_desc : '$B@07A>pJs:o=|(B',

+theme_visualaid_desc : '$BJd=u>pJs$N;k3P2=(B($B%H%0%k(B)',

+theme_sub_desc : '$BE:;z2<(B',

+theme_sup_desc : '$BE:;z>e(B',

+theme_charmap_desc : '$BFC<lJ8;z$NF~NO(B',

+theme_charmap_title : '$BFC<lJ8;z$rA*Br$7$F2<$5$$(B',

+insert_image_dimensions : '$BBg$-$5;XDj(B',

+insert_image_border : '$B6-3&I}(B',

+insert_image_vspace : '$B=DM>Gr(B',

+insert_image_hspace : '$B2#M>Gr(B',

+insert_image_align : '$B0LCV9g$o$;(B',

+insert_image_align_default : '$B0EL[(B',

+insert_image_align_baseline : '$B4p=`@~(B',

+insert_image_align_top : '$B>e(B',

+insert_image_align_middle : '$BCf(B',

+insert_image_align_bottom : '$B2<(B',

+insert_image_align_texttop : '$BJ8;z$N>e(B',

+insert_image_align_absmiddle : '$B@dBP$KCf(B',

+insert_image_align_absbottom : '$B@dBP$K2<(B',

+insert_image_align_left : '$B:8(B',

+insert_image_align_right : '$B1&(B',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_colorpicker_title : '$B?\'$N;XDj(B',

+theme_colorpicker_apply : '$BE,MQ(B',

+theme_forecolor_desc : '$BA07J?\'(B',

+theme_backcolor_desc : 'Select background color',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+class_name : '$B%/%i%9(B',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : '$B%9%?%$%k(B',
-theme_paragraph : '$BJ8L.(B',
-theme_address : '$B%"%I%l%9(B',
-theme_pre : '$B@07A:Q$_(B',
-theme_h1 : 'H1',
-theme_h2 : 'H2',
-theme_h3 : 'H3',
-theme_h4 : 'H4',
-theme_h5 : 'H5',
-theme_h6 : 'H6',
-theme_div : 'Div',
-insert_anchor_title : '$B%"%s%+!<$NA^F~(B/$BJT=8(B',
-insert_anchor_name : '$B%"%s%+!<$NL>A0(B',
-theme_anchor_desc : '$B%"%s%+!<$NA^F~(B/$BJT=8(B',
-theme_code_desc : 'HTML$B$ND>@\JT=8(B',
-theme_code_title : 'HTML$B$NJT=8(B',
-theme_code_wordwrap : 'Word wrap',
-theme_hr_desc : '$B?eJ?@~(B',
-theme_removeformat_desc : '$B@07A>pJs:o=|(B',
-theme_visualaid_desc : '$BJd=u>pJs$N;k3P2=(B($B%H%0%k(B)',
-theme_sub_desc : '$BE:;z2<(B',
-theme_sup_desc : '$BE:;z>e(B',
-theme_charmap_desc : '$BFC<lJ8;z$NF~NO(B',
-theme_charmap_title : '$BFC<lJ8;z$rA*Br$7$F2<$5$$(B',
-insert_image_dimensions : '$BBg$-$5;XDj(B',
-insert_image_border : '$B6-3&I}(B',
-insert_image_vspace : '$B=DM>Gr(B',
-insert_image_hspace : '$B2#M>Gr(B',
-insert_image_align : '$B0LCV9g$o$;(B',
-insert_image_align_default : '$B0EL[(B',
-insert_image_align_baseline : '$B4p=`@~(B',
-insert_image_align_top : '$B>e(B',
-insert_image_align_middle : '$BCf(B',
-insert_image_align_bottom : '$B2<(B',
-insert_image_align_texttop : '$BJ8;z$N>e(B',
-insert_image_align_absmiddle : '$B@dBP$KCf(B',
-insert_image_align_absbottom : '$B@dBP$K2<(B',
-insert_image_align_left : '$B:8(B',
-insert_image_align_right : '$B1&(B',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_colorpicker_title : '$B?\'$N;XDj(B',
-theme_colorpicker_apply : '$BE,MQ(B',
-theme_forecolor_desc : '$BA07J?\'(B',
-theme_backcolor_desc : 'Select background color',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-class_name : '$B%/%i%9(B',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ko.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/ko.js
@@ -1,66 +1,66 @@
-// KO lang variables
+// KO lang variables

+

+tinyMCE.addToLang('',{




+theme_code_wordwrap : 'Word wrap',






+theme_custom1_desc : 'Your custom description here',







+insert_image_align_baseline : 'Baseline',

+insert_image_align_top : 'Top',

+insert_image_align_middle : 'Middle',

+insert_image_align_bottom : 'Bottom',

+insert_image_align_texttop : 'TextTop',

+insert_image_align_absmiddle : 'Absolute Middle',

+insert_image_align_absbottom : 'Absolute Bottom',

+insert_image_align_left : 'Left',

+insert_image_align_right : 'Right',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',


+theme_div : 'Div',












+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : 'Select custom character',

+theme_charmap_desc : 'Insert custom character',

+theme_visualaid_desc : 'Toggle guidelines/invisible elements',





+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',


+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{



-theme_code_wordwrap : 'Word wrap',





-theme_custom1_desc : 'Your custom description here',






-insert_image_align_baseline : 'Baseline',
-insert_image_align_top : 'Top',
-insert_image_align_middle : 'Middle',
-insert_image_align_bottom : 'Bottom',
-insert_image_align_texttop : 'TextTop',
-insert_image_align_absmiddle : 'Absolute Middle',
-insert_image_align_absbottom : 'Absolute Bottom',
-insert_image_align_left : 'Left',
-insert_image_align_right : 'Right',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',

-theme_div : 'Div',











-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : 'Select custom character',
-theme_charmap_desc : 'Insert custom character',
-theme_visualaid_desc : 'Toggle guidelines/invisible elements',




-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',

-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/nl.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/nl.js
@@ -1,67 +1,67 @@
-// NL lang variables
+// NL lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Stijlen',

+theme_code_desc : 'Toon/bewerk HTML broncode',

+theme_code_title : 'HTML broncode editor',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Subscript',

+theme_sup_desc : 'Superscript',

+theme_hr_desc : 'Invoegen horizontale lijn',

+theme_removeformat_desc : 'Verwijder opmaak',

+theme_custom1_desc : 'Uw eigen omschrijving hier',

+insert_image_border : 'Omranding (pixels)',

+insert_image_dimensions : 'Afmetingen (Leeg: Originele afm.)',

+insert_image_vspace : 'Verticale marge (pixels)',

+insert_image_hspace : 'Horizontale marge (pixels)',

+insert_image_align : 'Uitlijning',

+insert_image_align_default : 'Standaard',

+insert_image_align_baseline : 'Basislijn',

+insert_image_align_top : 'Boven',

+insert_image_align_middle : 'Midden',

+insert_image_align_bottom : 'Onder',

+insert_image_align_texttop : 'TextTop',

+insert_image_align_absmiddle : 'Absoluut Midden',

+insert_image_align_absbottom : 'Absoluut Onder',

+insert_image_align_left : 'Links',

+insert_image_align_right : 'Rechts',

+insert_image_delta_height : 0,

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraaf',

+theme_div : 'Div',

+theme_address : 'Adres',

+theme_pre : 'voorgeformatteerd',

+theme_h1 : 'Titel 1',

+theme_h2 : 'Titel 2',

+theme_h3 : 'Titel 3',

+theme_h4 : 'Titel 4',

+theme_h5 : 'Titel 5',

+theme_h6 : 'Titel 6',

+theme_colorpicker_title : 'Kies een kleur',

+theme_colorpicker_apply : 'Toepassen',

+theme_forecolor_desc : 'Selecteer voorgrondkleur',

+theme_backcolor_desc : 'Select background color',

+theme_charmap_title : 'Kies een bijzonder karakter',

+theme_charmap_desc : 'Voeg een bijzonder karakter in',

+theme_preview_desc : 'Toon de pagina in een nieuw venster',

+theme_visualaid_desc : 'Toon/verberg hulplijnen',

+insert_anchor_title : 'Anker toevoegen/wijzigen',

+insert_anchor_name : 'Anker naam',

+theme_anchor_desc : 'Anker toevoegen/wijzigen',

+theme_insert_link_titlefield : 'Titel',

+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+class_name : 'CSS-Stijl',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Stijlen',
-theme_code_desc : 'Toon/bewerk HTML broncode',
-theme_code_title : 'HTML broncode editor',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Subscript',
-theme_sup_desc : 'Superscript',
-theme_hr_desc : 'Invoegen horizontale lijn',
-theme_removeformat_desc : 'Verwijder opmaak',
-theme_custom1_desc : 'Uw eigen omschrijving hier',
-insert_image_border : 'Omranding (pixels)',
-insert_image_dimensions : 'Afmetingen (Leeg: Originele afm.)',
-insert_image_vspace : 'Verticale marge (pixels)',
-insert_image_hspace : 'Horizontale marge (pixels)',
-insert_image_align : 'Uitlijning',
-insert_image_align_default : 'Standaard',
-insert_image_align_baseline : 'Basislijn',
-insert_image_align_top : 'Boven',
-insert_image_align_middle : 'Midden',
-insert_image_align_bottom : 'Onder',
-insert_image_align_texttop : 'TextTop',
-insert_image_align_absmiddle : 'Absoluut Midden',
-insert_image_align_absbottom : 'Absoluut Onder',
-insert_image_align_left : 'Links',
-insert_image_align_right : 'Rechts',
-insert_image_delta_height : 0,
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraaf',
-theme_div : 'Div',
-theme_address : 'Adres',
-theme_pre : 'voorgeformatteerd',
-theme_h1 : 'Titel 1',
-theme_h2 : 'Titel 2',
-theme_h3 : 'Titel 3',
-theme_h4 : 'Titel 4',
-theme_h5 : 'Titel 5',
-theme_h6 : 'Titel 6',
-theme_colorpicker_title : 'Kies een kleur',
-theme_colorpicker_apply : 'Toepassen',
-theme_forecolor_desc : 'Selecteer voorgrondkleur',
-theme_backcolor_desc : 'Select background color',
-theme_charmap_title : 'Kies een bijzonder karakter',
-theme_charmap_desc : 'Voeg een bijzonder karakter in',
-theme_preview_desc : 'Toon de pagina in een nieuw venster',
-theme_visualaid_desc : 'Toon/verberg hulplijnen',
-insert_anchor_title : 'Anker toevoegen/wijzigen',
-insert_anchor_name : 'Anker naam',
-theme_anchor_desc : 'Anker toevoegen/wijzigen',
-theme_insert_link_titlefield : 'Titel',
-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-class_name : 'CSS-Stijl',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/no.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/no.js
@@ -1,78 +1,78 @@
-// NO lang variables by Knut B. Jacobsen
+// NO lang variables by Knut B. Jacobsen

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Stiler',

+theme_code_desc : 'Redigere HTML Koden',

+theme_code_title : 'HTML Kildekode Redigering',

+theme_code_wordwrap : 'Word wrap',

+theme_sub_desc : 'Nedsenkt skrift',

+theme_sup_desc : 'Opph&oslash;d skrift',

+theme_hr_desc : 'Sett inn horisontal linje',

+theme_removeformat_desc : 'Fjern formatering',

+theme_custom1_desc : 'Din spesialfunksjons beskrivelse her',

+insert_image_border : 'Ramme',

+insert_image_dimensions : 'Dimensjoner',

+insert_image_vspace : 'Vertikalt tomrom',

+insert_image_hspace : 'Horisontalt tomrom',

+insert_image_align : 'Justering',

+insert_image_align_default : 'Intet',

+insert_image_align_baseline : 'Bunnlinjen',

+insert_image_align_top : 'Lengst opp',

+insert_image_align_middle : 'Midten',

+insert_image_align_bottom : 'Lengst ned',

+insert_image_align_texttop : 'Tekstens topp',

+insert_image_align_absmiddle : 'Absolutt midten',

+insert_image_align_absbottom : 'Absolutt lengst ned',

+insert_image_align_left : 'Venstre',

+insert_image_align_right : 'H&oslash;yre',

+insert_image_delta_width : 30,

+insert_image_delta_height : 10,

+theme_font_size : '-- Font st&oslash;rrelse --',

+theme_fontdefault : '-- Font familie --',

+theme_block : '-- Format --',

+theme_paragraph : 'Paragraf',

+theme_div : 'Div',

+theme_address : 'Addresse',

+theme_pre : 'Pre-formattert',

+theme_h1 : 'Overskrift 1',

+theme_h2 : 'Overskrift 2',

+theme_h3 : 'Overskrift 3',

+theme_h4 : 'Overskrift 4',

+theme_h5 : 'Overskrift 5',

+theme_h6 : 'Overskrift 6',

+theme_colorpicker_title : 'Velg en farge',

+theme_colorpicker_apply : 'Bruk',

+theme_forecolor_desc : 'Velg forgrunnsfarge',

+theme_backcolor_desc : 'Velg bakgrunnsfarge',

+theme_charmap_title : 'Velg spesialtegn',

+theme_charmap_desc : 'Sett inn spesialtegn',

+theme_visualaid_desc : 'Sl&aring; av/p&aring; usynlige elementer',

+insert_anchor_title : 'Opprette/endre anker',

+insert_anchor_name : 'Ankernavn',

+theme_anchor_desc : 'Opprett/endre anker',

+theme_insert_link_titlefield : 'Tittel',

+theme_clipboard_msg : 'Kopier/Klipp ut/Lim inn er ikke tilgjengelig i Mozilla/Firefox.\nVil du ha mere informasjon om dette?',

+theme_path : 'S&oslash;kevei',

+cut_desc : 'Klipp ut',

+copy_desc : 'Kopier',

+paste_desc : 'Lim inn',

+link_list : 'Link liste',

+image_list : 'Image liste',

+browse : 'Bla gjennom',

+image_props_desc : 'Image egenskaper',

+newdocument_desc : 'Nytt dokument',

+class_name : 'Stil',

+newdocument : 'Er du sikker p&aring; at du vil t&oslash;mme hele redigerings omr&aring;det?',

+about_title : 'Om TinyMCE',

+about : 'Om',

+license : 'Lisens',

+plugins : 'Innstikksprogrammer',

+plugin : 'Innstikksprogram',

+author : 'Utviklere',

+version : 'Versjon',

+loaded_plugins : 'Lastet innstikksprogram',

+help : 'Hjelp',

+not_set : '-- Ikke satt --',

+close : 'Stopp'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Stiler',
-theme_code_desc : 'Redigere HTML Koden',
-theme_code_title : 'HTML Kildekode Redigering',
-theme_code_wordwrap : 'Word wrap',
-theme_sub_desc : 'Nedsenkt skrift',
-theme_sup_desc : 'Opph&oslash;d skrift',
-theme_hr_desc : 'Sett inn horisontal linje',
-theme_removeformat_desc : 'Fjern formatering',
-theme_custom1_desc : 'Din spesialfunksjons beskrivelse her',
-insert_image_border : 'Ramme',
-insert_image_dimensions : 'Dimensjoner',
-insert_image_vspace : 'Vertikalt tomrom',
-insert_image_hspace : 'Horisontalt tomrom',
-insert_image_align : 'Justering',
-insert_image_align_default : 'Intet',
-insert_image_align_baseline : 'Bunnlinjen',
-insert_image_align_top : 'Lengst opp',
-insert_image_align_middle : 'Midten',
-insert_image_align_bottom : 'Lengst ned',
-insert_image_align_texttop : 'Tekstens topp',
-insert_image_align_absmiddle : 'Absolutt midten',
-insert_image_align_absbottom : 'Absolutt lengst ned',
-insert_image_align_left : 'Venstre',
-insert_image_align_right : 'H&oslash;yre',
-insert_image_delta_width : 30,
-insert_image_delta_height : 10,
-theme_font_size : '-- Font st&oslash;rrelse --',
-theme_fontdefault : '-- Font familie --',
-theme_block : '-- Format --',
-theme_paragraph : 'Paragraf',
-theme_div : 'Div',
-theme_address : 'Addresse',
-theme_pre : 'Pre-formattert',
-theme_h1 : 'Overskrift 1',
-theme_h2 : 'Overskrift 2',
-theme_h3 : 'Overskrift 3',
-theme_h4 : 'Overskrift 4',
-theme_h5 : 'Overskrift 5',
-theme_h6 : 'Overskrift 6',
-theme_colorpicker_title : 'Velg en farge',
-theme_colorpicker_apply : 'Bruk',
-theme_forecolor_desc : 'Velg forgrunnsfarge',
-theme_backcolor_desc : 'Velg bakgrunnsfarge',
-theme_charmap_title : 'Velg spesialtegn',
-theme_charmap_desc : 'Sett inn spesialtegn',
-theme_visualaid_desc : 'Sl&aring; av/p&aring; usynlige elementer',
-insert_anchor_title : 'Opprette/endre anker',
-insert_anchor_name : 'Ankernavn',
-theme_anchor_desc : 'Opprett/endre anker',
-theme_insert_link_titlefield : 'Tittel',
-theme_clipboard_msg : 'Kopier/Klipp ut/Lim inn er ikke tilgjengelig i Mozilla/Firefox.\nVil du ha mere informasjon om dette?',
-theme_path : 'S&oslash;kevei',
-cut_desc : 'Klipp ut',
-copy_desc : 'Kopier',
-paste_desc : 'Lim inn',
-link_list : 'Link liste',
-image_list : 'Image liste',
-browse : 'Bla gjennom',
-image_props_desc : 'Image egenskaper',
-newdocument_desc : 'Nytt dokument',
-class_name : 'Stil',
-newdocument : 'Er du sikker p&aring; at du vil t&oslash;mme hele redigerings omr&aring;det?',
-about_title : 'Om TinyMCE',
-about : 'Om',
-license : 'Lisens',
-plugins : 'Innstikksprogrammer',
-plugin : 'Innstikksprogram',
-author : 'Utviklere',
-version : 'Versjon',
-loaded_plugins : 'Lastet innstikksprogram',
-help : 'Hjelp',
-not_set : '-- Ikke satt --',
-close : 'Stopp'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/pl.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/pl.js
@@ -1,65 +1,65 @@
-// UK lang variables
+// UK lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Styl',

+theme_code_desc : 'Edytuj zródlo html',

+theme_code_title : 'Edytor zródla html',

+theme_code_wordwrap : 'Zwijanie wierszy',

+theme_sub_desc : 'Nadpisywanie',

+theme_sup_desc : 'Podpisywanie',

+theme_hr_desc : 'Wstaw pozioma linie',

+theme_removeformat_desc : 'Usun formatowanie',

+theme_custom1_desc : 'Wstaw wlasny opis',

+insert_image_border : 'Ramka',

+insert_image_dimensions : 'Wymiary',

+insert_image_vspace : 'VSpace',

+insert_image_hspace : 'HSpace',

+insert_image_align : 'Otaczanie',

+insert_image_align_default : 'Domyslne',

+insert_image_align_baseline : 'Glówne',

+insert_image_align_top : 'Górne',

+insert_image_align_middle : 'Srodkowe',

+insert_image_align_bottom : 'Dolne',

+insert_image_align_texttop : 'Tekst powyzej',

+insert_image_align_absmiddle : 'Absolutny srodek',

+insert_image_align_absbottom : 'Absolutny dól',

+insert_image_align_left : 'Lewe',

+insert_image_align_right : 'Prawe',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

+theme_paragraph : '-- Paragraf --',

+theme_div : 'Div',

+theme_address : 'Adres',

+theme_pre : 'Preformatowanie',

+theme_h1 : 'Naglówek 1',

+theme_h2 : 'Naglówek 2',

+theme_h3 : 'Naglówek 3',

+theme_h4 : 'Naglówek 4',

+theme_h5 : 'Naglówek 5',

+theme_h6 : 'Naglówek 6',

+theme_colorpicker_title : 'Wybierz kolor',

+theme_colorpicker_apply : 'Wybierz',

+theme_forecolor_desc : 'Wybierz kolor tekstu',

+theme_backcolor_desc : 'Wybierz kolor tla',

+theme_charmap_title : 'Wybierz znak',

+theme_charmap_desc : 'Wstaw znak',

+theme_visualaid_desc : 'Toggle guidelines/invisible elements',

+insert_anchor_title : 'Kotwica',

+insert_anchor_name : 'Nazwa kotwicy',

+theme_anchor_desc : 'Wstaw/Edytuj kotwice',

+theme_insert_link_titlefield : 'Tytul',

+theme_clipboard_msg : 'Kopiuj/Edytuj/Wklej nie jest dostepne w przegladarkach Mozilla and Firefox.\nPotrzebujesz wiecej informacji na ten temat?',

+theme_path : 'Sciezka',

+cut_desc : 'Wytnij',

+copy_desc : 'Kopiuj',

+paste_desc : 'Wklej',

+link_list : 'Lista linków',

+image_list : 'Lista obrazków',

+browse : 'Przegladaj',

+image_props_desc : 'Wlasciwosci obrazka',

+newdocument_desc : 'New document',

+class_name : 'Klasa',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Styl',
-theme_code_desc : 'Edytuj zródlo html',
-theme_code_title : 'Edytor zródla html',
-theme_code_wordwrap : 'Zwijanie wierszy',
-theme_sub_desc : 'Nadpisywanie',
-theme_sup_desc : 'Podpisywanie',
-theme_hr_desc : 'Wstaw pozioma linie',
-theme_removeformat_desc : 'Usun formatowanie',
-theme_custom1_desc : 'Wstaw wlasny opis',
-insert_image_border : 'Ramka',
-insert_image_dimensions : 'Wymiary',
-insert_image_vspace : 'VSpace',
-insert_image_hspace : 'HSpace',
-insert_image_align : 'Otaczanie',
-insert_image_align_default : 'Domyslne',
-insert_image_align_baseline : 'Glówne',
-insert_image_align_top : 'Górne',
-insert_image_align_middle : 'Srodkowe',
-insert_image_align_bottom : 'Dolne',
-insert_image_align_texttop : 'Tekst powyzej',
-insert_image_align_absmiddle : 'Absolutny srodek',
-insert_image_align_absbottom : 'Absolutny dól',
-insert_image_align_left : 'Lewe',
-insert_image_align_right : 'Prawe',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
-theme_paragraph : '-- Paragraf --',
-theme_div : 'Div',
-theme_address : 'Adres',
-theme_pre : 'Preformatowanie',
-theme_h1 : 'Naglówek 1',
-theme_h2 : 'Naglówek 2',
-theme_h3 : 'Naglówek 3',
-theme_h4 : 'Naglówek 4',
-theme_h5 : 'Naglówek 5',
-theme_h6 : 'Naglówek 6',
-theme_colorpicker_title : 'Wybierz kolor',
-theme_colorpicker_apply : 'Wybierz',
-theme_forecolor_desc : 'Wybierz kolor tekstu',
-theme_backcolor_desc : 'Wybierz kolor tla',
-theme_charmap_title : 'Wybierz znak',
-theme_charmap_desc : 'Wstaw znak',
-theme_visualaid_desc : 'Toggle guidelines/invisible elements',
-insert_anchor_title : 'Kotwica',
-insert_anchor_name : 'Nazwa kotwicy',
-theme_anchor_desc : 'Wstaw/Edytuj kotwice',
-theme_insert_link_titlefield : 'Tytul',
-theme_clipboard_msg : 'Kopiuj/Edytuj/Wklej nie jest dostepne w przegladarkach Mozilla and Firefox.\nPotrzebujesz wiecej informacji na ten temat?',
-theme_path : 'Sciezka',
-cut_desc : 'Wytnij',
-copy_desc : 'Kopiuj',
-paste_desc : 'Wklej',
-link_list : 'Lista linków',
-image_list : 'Lista obrazków',
-browse : 'Przegladaj',
-image_props_desc : 'Wlasciwosci obrazka',
-newdocument_desc : 'New document',
-class_name : 'Klasa',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/pt.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/pt.js
@@ -1,66 +1,66 @@
-// PT lang variables
+// PT lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Estilos CSS',

+theme_code_desc : 'Editar Fonte HTML',

+theme_code_title : 'Editor de fonte HTML',

+theme_code_save : 'Guardar',

+theme_code_wordwrap : 'Translinear palavras',

+theme_sub_desc : 'Subscrito',

+theme_sup_desc : 'Superscrito',

+theme_hr_desc : 'Inserir linha horizontal',



+insert_image_border : 'Borda',




+insert_image_align : 'Alinhamento',


+insert_image_align_baseline : 'Linha de base',

+insert_image_align_top : 'Topo',

+insert_image_align_middle : 'Centrado',

+insert_image_align_bottom : 'Fundo',

+insert_image_align_texttop : 'Topo do Texto',

+insert_image_align_absmiddle : 'Centrado absoluto',

+insert_image_align_absbottom : 'Fundo absoluto',

+insert_image_align_left : 'Esquerda',

+insert_image_align_right : 'Direita',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',


+theme_div : 'Bloco HTML',

+theme_address : 'Morada',









+theme_colorpicker_apply : 'Aplicar',


+theme_backcolor_desc : 'Select background color',









+theme_path : 'Path',

+cut_desc : 'Cortar',

+copy_desc : 'Copiar',

+paste_desc : 'Colar',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+class_name : 'Classe de CSS',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Estilos CSS',
-theme_code_desc : 'Editar Fonte HTML',
-theme_code_title : 'Editor de fonte HTML',
-theme_code_save : 'Guardar',
-theme_code_wordwrap : 'Translinear palavras',
-theme_sub_desc : 'Subscrito',
-theme_sup_desc : 'Superscrito',
-theme_hr_desc : 'Inserir linha horizontal',


-insert_image_border : 'Borda',



-insert_image_align : 'Alinhamento',

-insert_image_align_baseline : 'Linha de base',
-insert_image_align_top : 'Topo',
-insert_image_align_middle : 'Centrado',
-insert_image_align_bottom : 'Fundo',
-insert_image_align_texttop : 'Topo do Texto',
-insert_image_align_absmiddle : 'Centrado absoluto',
-insert_image_align_absbottom : 'Fundo absoluto',
-insert_image_align_left : 'Esquerda',
-insert_image_align_right : 'Direita',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',

-theme_div : 'Bloco HTML',
-theme_address : 'Morada',








-theme_colorpicker_apply : 'Aplicar',

-theme_backcolor_desc : 'Select background color',








-theme_path : 'Path',
-cut_desc : 'Cortar',
-copy_desc : 'Copiar',
-paste_desc : 'Colar',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-class_name : 'Classe de CSS',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/pt_br.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/pt_br.js
@@ -1,65 +1,65 @@
-// pt_BR lang variables
+// pt_BR lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : 'Estilos',



+theme_code_wordwrap : 'Quebrar Linhas',

+theme_sub_desc : 'Subscrito',

+theme_sup_desc : 'Subrescrito',

+theme_hr_desc : 'Inserir linha horizontal',



+insert_image_border : 'Borda',




+insert_image_align : 'Alinhamento',


+insert_image_align_baseline : 'Linha base',

+insert_image_align_top : 'Topo',

+insert_image_align_middle : 'Centro',

+insert_image_align_bottom : 'Fundo',

+insert_image_align_texttop : 'Texto ao Topo',

+insert_image_align_absmiddle : 'Centro Absoluto',

+insert_image_align_absbottom : 'Fundo Absoluto',

+insert_image_align_left : 'Esquerda',

+insert_image_align_right : 'Direita',

+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',


+theme_div : 'Div',









+theme_colorpicker_title : 'Selecionar cor',

+theme_colorpicker_apply : 'Aplicar',

+theme_forecolor_desc : 'Selecionar cor do texto',

+theme_backcolor_desc : 'Selecionar cor de fundo',

+theme_charmap_title : 'Selecionar caractere especial',

+theme_charmap_desc : 'Inserir caractere especial',







+theme_path : 'Caminho',

+cut_desc : 'Recortar',

+copy_desc : 'Copiar',

+paste_desc : 'Colar',

+link_list : 'Lista de Links',

+image_list : 'Lista de Imagens',

+browse : 'Navegar',

+image_props_desc : 'Propriedades da Imagem',

+newdocument_desc : 'New document',

+class_name : 'Class',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : 'Estilos',


-theme_code_wordwrap : 'Quebrar Linhas',
-theme_sub_desc : 'Subscrito',
-theme_sup_desc : 'Subrescrito',
-theme_hr_desc : 'Inserir linha horizontal',


-insert_image_border : 'Borda',



-insert_image_align : 'Alinhamento',

-insert_image_align_baseline : 'Linha base',
-insert_image_align_top : 'Topo',
-insert_image_align_middle : 'Centro',
-insert_image_align_bottom : 'Fundo',
-insert_image_align_texttop : 'Texto ao Topo',
-insert_image_align_absmiddle : 'Centro Absoluto',
-insert_image_align_absbottom : 'Fundo Absoluto',
-insert_image_align_left : 'Esquerda',
-insert_image_align_right : 'Direita',
-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',

-theme_div : 'Div',








-theme_colorpicker_title : 'Selecionar cor',
-theme_colorpicker_apply : 'Aplicar',
-theme_forecolor_desc : 'Selecionar cor do texto',
-theme_backcolor_desc : 'Selecionar cor de fundo',
-theme_charmap_title : 'Selecionar caractere especial',
-theme_charmap_desc : 'Inserir caractere especial',






-theme_path : 'Caminho',
-cut_desc : 'Recortar',
-copy_desc : 'Copiar',
-paste_desc : 'Colar',
-link_list : 'Lista de Links',
-image_list : 'Lista de Imagens',
-browse : 'Navegar',
-image_props_desc : 'Propriedades da Imagem',
-newdocument_desc : 'New document',
-class_name : 'Class',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/readme.txt
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/readme.txt
@@ -1,5 +1,5 @@
-Theme specific language packs.
+Theme specific language packs.

+

+The language pack codes are based on ISO-639-2

+http://www.loc.gov/standards/iso639-2/englangn.html

 
-The language pack codes are based on ISO-639-2
-http://www.loc.gov/standards/iso639-2/englangn.html
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/sv.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/sv.js
@@ -1,78 +1,78 @@
-// SE lang variables
+// SE lang variables

+

+tinyMCE.addToLang('',{

+theme_style_select : '-- Stilar --',

+theme_code_desc : 'Editera HTML-koden',

+theme_code_title : 'HTML-k&auml;llkodseditor',

+theme_code_wordwrap : 'Automatiskt radbyte',

+theme_sub_desc : 'Neds&auml;nkt text',

+theme_sup_desc : 'Upph&ouml;jd text',

+theme_hr_desc : 'S&auml;tt in horisontell linje',

+theme_removeformat_desc : 'Ta bort formatering',

+theme_custom1_desc : 'Din specialbeskriving h&auml;r',

+insert_image_border : 'Ram',

+insert_image_dimensions : 'Dimensioner',

+insert_image_vspace : 'Vertikalt tomrum',

+insert_image_hspace : 'Horisontellt tomrum',

+insert_image_align : 'Justering',

+insert_image_align_default : 'Ingen',

+insert_image_align_baseline : 'Bottenlinjen',

+insert_image_align_top : 'L&auml;ngst upp',

+insert_image_align_middle : 'Mitten',

+insert_image_align_bottom : 'L&auml;ngst ner',

+insert_image_align_texttop : 'Textens top',

+insert_image_align_absmiddle : 'Absoluta mitten',

+insert_image_align_absbottom : 'Absolut l&auml;ngst ner',

+insert_image_align_left : 'V&auml;nster',

+insert_image_align_right : 'H&ouml;ger',

+insert_image_delta_width : 30,

+insert_image_delta_height : 10,

+theme_font_size : '-- Fontstorlek --',

+theme_fontdefault : '-- Font familj --',

+theme_block : '-- Stycke --',

+theme_paragraph : 'Paragraf',

+theme_div : 'Div',

+theme_address : 'Adress',

+theme_pre : 'F&ouml;rformatterad',

+theme_h1 : 'Rubrik 1',

+theme_h2 : 'Rubrik 2',

+theme_h3 : 'Rubrik 3',

+theme_h4 : 'Rubrik 4',

+theme_h5 : 'Rubrik 5',

+theme_h6 : 'Rubrik 6',

+theme_colorpicker_title : 'V&auml;lj en f&auml;rg',

+theme_colorpicker_apply : 'Verkst&auml;ll',

+theme_forecolor_desc : 'V&auml;lj f&ouml;rgrundsf&auml;rg',

+theme_backcolor_desc : 'V&auml;lj bakgrundsf&auml;rg',

+theme_charmap_title : 'V&auml;lj specialtecken',

+theme_charmap_desc : 'S&auml;tt in specialtecken',

+theme_visualaid_desc : 'Sl&aring; av/p&aring; osynliga element',

+insert_anchor_title : 'Skapa/redigera ankare',

+insert_anchor_name : 'Ankarnamn',

+theme_anchor_desc : 'Skapa/redigera ankare',

+theme_insert_link_titlefield : 'Titel',

+theme_clipboard_msg : 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?',

+theme_path : 'S&ouml;kv&auml;g',

+cut_desc : 'Klipp ut',

+copy_desc : 'Kopiera',

+paste_desc : 'Klistra in',

+link_list : 'L&auml;nkar',

+image_list : 'Bilder',

+browse : 'Bl&auml;ddra',

+image_props_desc : 'Bild egenskaper',

+newdocument_desc : 'Nytt dokument',

+class_name : 'Stil',

+newdocument : '&Auml;r du s&auml;ker p&aring; att du vill t&ouml;mma hela redigerings ytan?',

+about_title : 'Om TinyMCE',

+about : 'Om',

+license : 'Licens',

+plugins : 'Insticksprogram',

+plugin : 'Insticksprogram',

+author : 'Utvecklare',

+version : 'Version',

+loaded_plugins : 'Laddade insticksprogram',

+help : 'Hj&auml;lp',

+not_set : '-- Inte satt --',

+close : 'St&auml;ng'

+});

 
-tinyMCE.addToLang('',{
-theme_style_select : '-- Stilar --',
-theme_code_desc : 'Editera HTML-koden',
-theme_code_title : 'HTML-k&auml;llkodseditor',
-theme_code_wordwrap : 'Automatiskt radbyte',
-theme_sub_desc : 'Neds&auml;nkt text',
-theme_sup_desc : 'Upph&ouml;jd text',
-theme_hr_desc : 'S&auml;tt in horisontell linje',
-theme_removeformat_desc : 'Ta bort formatering',
-theme_custom1_desc : 'Din specialbeskriving h&auml;r',
-insert_image_border : 'Ram',
-insert_image_dimensions : 'Dimensioner',
-insert_image_vspace : 'Vertikalt tomrum',
-insert_image_hspace : 'Horisontellt tomrum',
-insert_image_align : 'Justering',
-insert_image_align_default : 'Ingen',
-insert_image_align_baseline : 'Bottenlinjen',
-insert_image_align_top : 'L&auml;ngst upp',
-insert_image_align_middle : 'Mitten',
-insert_image_align_bottom : 'L&auml;ngst ner',
-insert_image_align_texttop : 'Textens top',
-insert_image_align_absmiddle : 'Absoluta mitten',
-insert_image_align_absbottom : 'Absolut l&auml;ngst ner',
-insert_image_align_left : 'V&auml;nster',
-insert_image_align_right : 'H&ouml;ger',
-insert_image_delta_width : 30,
-insert_image_delta_height : 10,
-theme_font_size : '-- Fontstorlek --',
-theme_fontdefault : '-- Font familj --',
-theme_block : '-- Stycke --',
-theme_paragraph : 'Paragraf',
-theme_div : 'Div',
-theme_address : 'Adress',
-theme_pre : 'F&ouml;rformatterad',
-theme_h1 : 'Rubrik 1',
-theme_h2 : 'Rubrik 2',
-theme_h3 : 'Rubrik 3',
-theme_h4 : 'Rubrik 4',
-theme_h5 : 'Rubrik 5',
-theme_h6 : 'Rubrik 6',
-theme_colorpicker_title : 'V&auml;lj en f&auml;rg',
-theme_colorpicker_apply : 'Verkst&auml;ll',
-theme_forecolor_desc : 'V&auml;lj f&ouml;rgrundsf&auml;rg',
-theme_backcolor_desc : 'V&auml;lj bakgrundsf&auml;rg',
-theme_charmap_title : 'V&auml;lj specialtecken',
-theme_charmap_desc : 'S&auml;tt in specialtecken',
-theme_visualaid_desc : 'Sl&aring; av/p&aring; osynliga element',
-insert_anchor_title : 'Skapa/redigera ankare',
-insert_anchor_name : 'Ankarnamn',
-theme_anchor_desc : 'Skapa/redigera ankare',
-theme_insert_link_titlefield : 'Titel',
-theme_clipboard_msg : 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?',
-theme_path : 'S&ouml;kv&auml;g',
-cut_desc : 'Klipp ut',
-copy_desc : 'Kopiera',
-paste_desc : 'Klistra in',
-link_list : 'L&auml;nkar',
-image_list : 'Bilder',
-browse : 'Bl&auml;ddra',
-image_props_desc : 'Bild egenskaper',
-newdocument_desc : 'Nytt dokument',
-class_name : 'Stil',
-newdocument : '&Auml;r du s&auml;ker p&aring; att du vill t&ouml;mma hela redigerings ytan?',
-about_title : 'Om TinyMCE',
-about : 'Om',
-license : 'Licens',
-plugins : 'Insticksprogram',
-plugin : 'Insticksprogram',
-author : 'Utvecklare',
-version : 'Version',
-loaded_plugins : 'Laddade insticksprogram',
-help : 'Hj&auml;lp',
-not_set : '-- Inte satt --',
-close : 'St&auml;ng'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/tw.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/tw.js
@@ -1,92 +1,92 @@
-// TW lang variables contributed by Jim Kou
+// TW lang variables contributed by Jim Kou

+

+tinyMCE.addToLang('',{


+bold_img : "bold.gif",


































+italic_img : "italic.gif",















+theme_code_wordwrap : 'Word wrap',




+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',


+theme_backcolor_desc : 'Select background color',


















+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',

+theme_path : 'Path',

+cut_desc : 'Cut',

+copy_desc : 'Copy',

+paste_desc : 'Paste',

+link_list : 'Link list',

+image_list : 'Image list',

+browse : 'Browse',

+image_props_desc : 'Image properties',

+newdocument_desc : 'New document',

+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{

-bold_img : "bold.gif",

































-italic_img : "italic.gif",














-theme_code_wordwrap : 'Word wrap',



-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',

-theme_backcolor_desc : 'Select background color',

















-theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?',
-theme_path : 'Path',
-cut_desc : 'Cut',
-copy_desc : 'Copy',
-paste_desc : 'Paste',
-link_list : 'Link list',
-image_list : 'Image list',
-browse : 'Browse',
-image_props_desc : 'Image properties',
-newdocument_desc : 'New document',
-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/zh_cn.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/langs/zh_cn.js
@@ -1,66 +1,66 @@
-// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com)

+// Simplified Chinese lang variables contributed by cube316 (cube316@gmail.com)


+

+tinyMCE.addToLang('',{

























+theme_font_size : '-- Font size --',

+theme_fontdefault : '-- Font family --',

+theme_block : '-- Format --',

































+newdocument : 'Are you sure you want clear all contents?'

+});

 
-tinyMCE.addToLang('',{
























-theme_font_size : '-- Font size --',
-theme_fontdefault : '-- Font family --',
-theme_block : '-- Format --',
































-newdocument : 'Are you sure you want clear all contents?'
-});
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/link.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/link.htm
@@ -1,65 +1,102 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>{#advanced_dlg.link_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="../../utils/mctabs.js"></script>
-	<script type="text/javascript" src="../../utils/form_utils.js"></script>
-	<script type="text/javascript" src="../../utils/validate.js"></script>
-	<script type="text/javascript" src="js/link.js"></script>
-	<base target="_self" />
-</head>
-<body id="link" style="display: none">
-<form onsubmit="LinkDialog.update();return false;" action="#">
-	<div class="tabs">
-		<ul>
-			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
-		</ul>
-	</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<title>{$lang_insert_link_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>

+	<script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/link.js"></script>

+	<base target="_self" />

+</head>

+<body id="link" onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">

+<form onsubmit="insertLink();return false;" action="#">

+	<div class="tabs">

+		<ul>

+			<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{$lang_insert_link_title}</a></span></li>

+		</ul>

+	</div>

+

+	<div class="panel_wrapper">

+		<div id="general_panel" class="panel current">

+

+		<table border="0" cellpadding="4" cellspacing="0">

+          <tr>

+            <td nowrap="nowrap"><label for="href">{$lang_insert_link_url}</label></td>

+            <td><table border="0" cellspacing="0" cellpadding="0"> 

+				  <tr> 

+					<td><input id="href" name="href" type="text" value="" style="width: 200px" onchange="checkPrefix(this);" /></td> 

+					<td id="hrefbrowsercontainer">&nbsp;</td>

+				  </tr> 

+				</table></td>

+          </tr>

+		  <!-- Link list -->

+		  <script language="javascript">

+			if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {

+				var html = "";

+

+				html += '<tr><td><label for="link_list">{$lang_link_list}</label></td>';

+				html += '<td><select id="link_list" name="link_list" style="width: 200px" onchange="this.form.href.value=this.options[this.selectedIndex].value;">';

+				html += '<option value="">---</option>';

+

+				for (var i=0; i<tinyMCELinkList.length; i++)

+					html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';

+

+				html += '</select></td></tr>';

+

+				document.write(html);

+			}

+		  </script>

+		  <!-- /Link list -->

+          <tr>

+            <td nowrap="nowrap"><label for="target">{$lang_insert_link_target}</label></td>

+            <td><select id="target" name="target" style="width: 200px">

+                <option value="_self">{$lang_insert_link_target_same}</option>

+                <option value="_blank">{$lang_insert_link_target_blank}</option>

+				<script language="javascript">

+					var html = "";

+					var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');

+

+					for (var i=0; i<targets.length; i++) {

+						var key, value;

+

+						if (targets[i] == "")

+							continue;

+

+						key = targets[i].split('=')[0];

+						value = targets[i].split('=')[1];

+

+						html += '<option value="' + value + '">' + key + '</option>';

+					}

+

+					document.write(html);

+				</script>

+            </select></td>

+          </tr>

+          <tr>

+            <td nowrap="nowrap"><label for="linktitle">{$lang_theme_insert_link_titlefield}</label></td>

+            <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px"></td>

+          </tr>

+          <tr id="styleSelectRow">

+            <td><label for="styleSelect">{$lang_class_name}</label></td>

+            <td>

+			 <select id="styleSelect" name="styleSelect">

+                <option value="" selected>{$lang_theme_style_select}</option>

+             </select></td>

+          </tr>

+        </table>

+		</div>

+	</div>

+

+	<div class="mceActionPanel">

+		<div style="float: left">

+			<input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();" />

+		</div>

+

+		<div style="float: right">

+			<input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />

+		</div>

+	</div>

+</form>

+</body>

+</html>

 
-	<div class="panel_wrapper">
-		<div id="general_panel" class="panel current">
-
-		<table border="0" cellpadding="4" cellspacing="0">
-          <tr>
-            <td nowrap="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
-            <td><table border="0" cellspacing="0" cellpadding="0"> 
-				  <tr> 
-					<td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td> 
-					<td id="hrefbrowsercontainer">&nbsp;</td>
-				  </tr> 
-				</table></td>
-          </tr>
-		  <tr>
-			<td><label for="link_list">{#advanced_dlg.link_list}</label></td>
-			<td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
-		  </tr>
-		<tr>
-			<td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
-			<td><select id="target_list" name="target_list"></select></td>
-		</tr>
-          <tr>
-            <td nowrap="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
-            <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
-          </tr>
-			<tr>
-				<td><label for="class_list">{#class_name}</label></td>
-				<td><select id="class_list" name="class_list"></select></td>
-			</tr>
-        </table>
-		</div>
-	</div>
-
-	<div class="mceActionPanel">
-		<div style="float: left">
-			<input type="submit" id="insert" name="insert" value="{#insert}" />
-		</div>
-
-		<div style="float: right">
-			<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
-		</div>
-	</div>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/content.css
+++ /dev/null
@@ -1,33 +1,1 @@
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
-body {background:#FFF;}
-body.mceForceColors {background:#FFF; color:#000;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}
-img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}
-img {border:0;}
-table {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
 
-/* IE */
-* html body {
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
+++ /dev/null
@@ -1,114 +1,1 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
 
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-}
-
-#insert {background:url(img/buttons.png) 0 -52px;}
-#cancel {background:url(img/buttons.png) 0 0;}
-
-/* Browse */
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}

 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
+++ /dev/null
@@ -1,216 +1,1 @@
-/* Reset */
-.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.defaultSkin table td {vertical-align:middle}
 
-/* Containers */
-.defaultSkin table {background:#F0F0EE}
-.defaultSkin iframe {display:block; background:#FFF}
-.defaultSkin .mceToolbar {height:26px}
-.defaultSkin .mceLeft {text-align:left}
-.defaultSkin .mceRight {text-align:right}
-
-/* External */
-.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}
-.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
-.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
-.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
-.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
-.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
-.defaultSkin .mceStatusbar div {float:left; margin:2px}
-.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
-.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
-.defaultSkin table.mceToolbar {margin-left:3px}
-.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.defaultSkin td.mceCenter {text-align:center;}
-.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
-.defaultSkin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}
-.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}
-.defaultSkin .mceButtonLabeled {width:auto}
-.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
-.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
-
-/* ListBox */
-.defaultSkin .mceListBox {direction:ltr}
-.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
-.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
-.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
-.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
-.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
-.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
-.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
-.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
-
-/* SplitButton */
-.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
-.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
-.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
-.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}
-.defaultSkin .mceSplitButton a.mceOpen {width:9px; border:1px solid #F0F0EE;}
-.defaultSkin .mceSplitButton span.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0;}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {border:1px solid #0A246A;}
-.defaultSkin table.mceSplitButtonEnabled:hover span.mceOpen, .defaultSkin .mceSplitButtonHover span.mceOpen, .defaultSkin .mceSplitButtonSelected span.mceOpen {background-color:#B2BBD0}
-.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled span.mceOpen {opacity:0.3; filter:alpha(opacity=30)}
-.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
-
-/* ColorSplitButton */
-.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.defaultSkin .mceColorSplitMenu td {padding:2px}
-.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
-.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
-.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
-
-/* Menu */
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
-.defaultSkin .mceNoIcons span.mceIcon {width:0;}
-.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
-.defaultSkin .mceMenu table {background:#FFF}
-.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
-.defaultSkin .mceMenu td {height:20px}
-.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
-.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
-.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
-.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
-.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
-.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
-.defaultSkin .mceMenu span.mceMenuLine {display:none}
-.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
-
-/* Progress,Resize */
-.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}
-.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-.defaultSkin .mcePlaceHolder {border:1px dotted gray}
-
-/* Formats */
-.defaultSkin .mce_formatPreview a {font-size:10px}
-.defaultSkin .mce_p span.mceText {}
-.defaultSkin .mce_address span.mceText {font-style:italic}
-.defaultSkin .mce_pre span.mceText {font-family:monospace}
-.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.defaultSkin span.mce_bold {background-position:0 0}
-.defaultSkin span.mce_italic {background-position:-60px 0}
-.defaultSkin span.mce_underline {background-position:-140px 0}
-.defaultSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSkin span.mce_undo {background-position:-160px 0}
-.defaultSkin span.mce_redo {background-position:-100px 0}
-.defaultSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSkin span.mce_bullist {background-position:-20px 0}
-.defaultSkin span.mce_numlist {background-position:-80px 0}
-.defaultSkin span.mce_justifyleft {background-position:-460px 0}
-.defaultSkin span.mce_justifyright {background-position:-480px 0}
-.defaultSkin span.mce_justifycenter {background-position:-420px 0}
-.defaultSkin span.mce_justifyfull {background-position:-440px 0}
-.defaultSkin span.mce_anchor {background-position:-200px 0}
-.defaultSkin span.mce_indent {background-position:-400px 0}
-.defaultSkin span.mce_outdent {background-position:-540px 0}
-.defaultSkin span.mce_link {background-position:-500px 0}
-.defaultSkin span.mce_unlink {background-position:-640px 0}
-.defaultSkin span.mce_sub {background-position:-600px 0}
-.defaultSkin span.mce_sup {background-position:-620px 0}
-.defaultSkin span.mce_removeformat {background-position:-580px 0}
-.defaultSkin span.mce_newdocument {background-position:-520px 0}
-.defaultSkin span.mce_image {background-position:-380px 0}
-.defaultSkin span.mce_help {background-position:-340px 0}
-.defaultSkin span.mce_code {background-position:-260px 0}
-.defaultSkin span.mce_hr {background-position:-360px 0}
-.defaultSkin span.mce_visualaid {background-position:-660px 0}
-.defaultSkin span.mce_charmap {background-position:-240px 0}
-.defaultSkin span.mce_paste {background-position:-560px 0}
-.defaultSkin span.mce_copy {background-position:-700px 0}
-.defaultSkin span.mce_cut {background-position:-680px 0}
-.defaultSkin span.mce_blockquote {background-position:-220px 0}
-.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
-.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
-.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
-.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.defaultSkin span.mce_advhr {background-position:-0px -20px}
-.defaultSkin span.mce_ltr {background-position:-20px -20px}
-.defaultSkin span.mce_rtl {background-position:-40px -20px}
-.defaultSkin span.mce_emotions {background-position:-60px -20px}
-.defaultSkin span.mce_fullpage {background-position:-80px -20px}
-.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
-.defaultSkin span.mce_iespell {background-position:-120px -20px}
-.defaultSkin span.mce_insertdate {background-position:-140px -20px}
-.defaultSkin span.mce_inserttime {background-position:-160px -20px}
-.defaultSkin span.mce_absolute {background-position:-180px -20px}
-.defaultSkin span.mce_backward {background-position:-200px -20px}
-.defaultSkin span.mce_forward {background-position:-220px -20px}
-.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
-.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
-.defaultSkin span.mce_movebackward {background-position:-280px -20px}
-.defaultSkin span.mce_moveforward {background-position:-300px -20px}
-.defaultSkin span.mce_media {background-position:-320px -20px}
-.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
-.defaultSkin span.mce_pastetext {background-position:-360px -20px}
-.defaultSkin span.mce_pasteword {background-position:-380px -20px}
-.defaultSkin span.mce_selectall {background-position:-400px -20px}
-.defaultSkin span.mce_preview {background-position:-420px -20px}
-.defaultSkin span.mce_print {background-position:-440px -20px}
-.defaultSkin span.mce_cancel {background-position:-460px -20px}
-.defaultSkin span.mce_save {background-position:-480px -20px}
-.defaultSkin span.mce_replace {background-position:-500px -20px}
-.defaultSkin span.mce_search {background-position:-520px -20px}
-.defaultSkin span.mce_styleprops {background-position:-560px -20px}
-.defaultSkin span.mce_table {background-position:-580px -20px}
-.defaultSkin span.mce_cell_props {background-position:-600px -20px}
-.defaultSkin span.mce_delete_table {background-position:-620px -20px}
-.defaultSkin span.mce_delete_col {background-position:-640px -20px}
-.defaultSkin span.mce_delete_row {background-position:-660px -20px}
-.defaultSkin span.mce_col_after {background-position:-680px -20px}
-.defaultSkin span.mce_col_before {background-position:-700px -20px}
-.defaultSkin span.mce_row_after {background-position:-720px -20px}
-.defaultSkin span.mce_row_before {background-position:-740px -20px}
-.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
-.defaultSkin span.mce_table_props {background-position:-980px -20px}
-.defaultSkin span.mce_row_props {background-position:-780px -20px}
-.defaultSkin span.mce_split_cells {background-position:-800px -20px}
-.defaultSkin span.mce_template {background-position:-820px -20px}
-.defaultSkin span.mce_visualchars {background-position:-840px -20px}
-.defaultSkin span.mce_abbr {background-position:-860px -20px}
-.defaultSkin span.mce_acronym {background-position:-880px -20px}
-.defaultSkin span.mce_attribs {background-position:-900px -20px}
-.defaultSkin span.mce_cite {background-position:-920px -20px}
-.defaultSkin span.mce_del {background-position:-940px -20px}
-.defaultSkin span.mce_ins {background-position:-960px -20px}
-.defaultSkin span.mce_pagebreak {background-position:0 -40px}
-.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css
+++ /dev/null
@@ -1,33 +1,1 @@
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
-body {background:#FFF;}
-body.mceForceColors {background:#FFF; color:#000;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}
-img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}
-img {border:0;}
-table {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
 
-/* IE */
-* html body {
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
+++ /dev/null
@@ -1,114 +1,1 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
 
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(../default/img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-}
-
-#insert {background:url(../default/img/buttons.png) 0 -52px;}
-#cancel {background:url(../default/img/buttons.png) 0 0;}
-
-/* Browse */
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-

 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png and /dev/null differ
 Binary files a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
+++ /dev/null
@@ -1,216 +1,1 @@
-/* Reset */
-.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.o2k7Skin table td {vertical-align:middle}
 
-/* Containers */
-.o2k7Skin table {background:#E5EFFD}
-.o2k7Skin iframe {display:block; background:#FFF}
-.o2k7Skin .mceToolbar {height:26px}
-
-/* External */
-.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
-.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
-.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
-.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
-.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
-.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
-.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
-.o2k7Skin .mceStatusbar div {float:left; padding:2px}
-.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
-.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
-.o2k7Skin table.mceToolbar {margin-left:3px}
-.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
-.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
-.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
-.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
-.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
-.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.o2k7Skin td.mceCenter {text-align:center;}
-.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
-.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
-.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
-.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
-.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
-.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
-.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}
-.o2k7Skin .mceButtonLabeled {width:auto}
-.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
-.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
-
-/* ListBox */
-.o2k7Skin .mceListBox {margin-left:3px}
-.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
-.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
-.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
-.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
-.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
-.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
-.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
-
-/* SplitButton */
-.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}
-.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
-.o2k7Skin .mceSplitButton a.mceAction {width:22px}
-.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}
-.o2k7Skin .mceSplitButton a.mceOpen {width:10px}
-.o2k7Skin .mceSplitButton span.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
-.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
-.o2k7Skin table.mceSplitButtonEnabled:hover span.mceOpen, .o2k7Skin .mceSplitButtonHover span.mceOpen, .o2k7Skin .mceSplitButtonSelected span.mceOpen {background-position:-44px -44px}
-.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; filter:alpha(opacity=30)}
-.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
-
-/* ColorSplitButton */
-.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.o2k7Skin .mceColorSplitMenu td {padding:2px}
-.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
-.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
-.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
-
-/* Menu */
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
-.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
-.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
-.o2k7Skin .mceMenu table {background:#FFF}
-.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
-.o2k7Skin .mceMenu td {height:20px}
-.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
-.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
-.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
-.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
-.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
-.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
-.o2k7Skin .mceMenu span.mceMenuLine {display:none}
-.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
-
-/* Progress,Resize */
-.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}
-.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-.o2k7Skin .mcePlaceHolder {border:1px dotted gray}
-
-/* Formats */
-.o2k7Skin .mce_formatPreview a {font-size:10px}
-.o2k7Skin .mce_p span.mceText {}
-.o2k7Skin .mce_address span.mceText {font-style:italic}
-.o2k7Skin .mce_pre span.mceText {font-family:monospace}
-.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.o2k7Skin span.mce_bold {background-position:0 0}
-.o2k7Skin span.mce_italic {background-position:-60px 0}
-.o2k7Skin span.mce_underline {background-position:-140px 0}
-.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
-.o2k7Skin span.mce_undo {background-position:-160px 0}
-.o2k7Skin span.mce_redo {background-position:-100px 0}
-.o2k7Skin span.mce_cleanup {background-position:-40px 0}
-.o2k7Skin span.mce_bullist {background-position:-20px 0}
-.o2k7Skin span.mce_numlist {background-position:-80px 0}
-.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
-.o2k7Skin span.mce_justifyright {background-position:-480px 0}
-.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
-.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
-.o2k7Skin span.mce_anchor {background-position:-200px 0}
-.o2k7Skin span.mce_indent {background-position:-400px 0}
-.o2k7Skin span.mce_outdent {background-position:-540px 0}
-.o2k7Skin span.mce_link {background-position:-500px 0}
-.o2k7Skin span.mce_unlink {background-position:-640px 0}
-.o2k7Skin span.mce_sub {background-position:-600px 0}
-.o2k7Skin span.mce_sup {background-position:-620px 0}
-.o2k7Skin span.mce_removeformat {background-position:-580px 0}
-.o2k7Skin span.mce_newdocument {background-position:-520px 0}
-.o2k7Skin span.mce_image {background-position:-380px 0}
-.o2k7Skin span.mce_help {background-position:-340px 0}
-.o2k7Skin span.mce_code {background-position:-260px 0}
-.o2k7Skin span.mce_hr {background-position:-360px 0}
-.o2k7Skin span.mce_visualaid {background-position:-660px 0}
-.o2k7Skin span.mce_charmap {background-position:-240px 0}
-.o2k7Skin span.mce_paste {background-position:-560px 0}
-.o2k7Skin span.mce_copy {background-position:-700px 0}
-.o2k7Skin span.mce_cut {background-position:-680px 0}
-.o2k7Skin span.mce_blockquote {background-position:-220px 0}
-.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
-.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
-.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
-.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.o2k7Skin span.mce_advhr {background-position:-0px -20px}
-.o2k7Skin span.mce_ltr {background-position:-20px -20px}
-.o2k7Skin span.mce_rtl {background-position:-40px -20px}
-.o2k7Skin span.mce_emotions {background-position:-60px -20px}
-.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
-.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
-.o2k7Skin span.mce_iespell {background-position:-120px -20px}
-.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
-.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
-.o2k7Skin span.mce_absolute {background-position:-180px -20px}
-.o2k7Skin span.mce_backward {background-position:-200px -20px}
-.o2k7Skin span.mce_forward {background-position:-220px -20px}
-.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
-.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
-.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
-.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
-.o2k7Skin span.mce_media {background-position:-320px -20px}
-.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
-.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
-.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
-.o2k7Skin span.mce_selectall {background-position:-400px -20px}
-.o2k7Skin span.mce_preview {background-position:-420px -20px}
-.o2k7Skin span.mce_print {background-position:-440px -20px}
-.o2k7Skin span.mce_cancel {background-position:-460px -20px}
-.o2k7Skin span.mce_save {background-position:-480px -20px}
-.o2k7Skin span.mce_replace {background-position:-500px -20px}
-.o2k7Skin span.mce_search {background-position:-520px -20px}
-.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
-.o2k7Skin span.mce_table {background-position:-580px -20px}
-.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
-.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
-.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
-.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
-.o2k7Skin span.mce_col_after {background-position:-680px -20px}
-.o2k7Skin span.mce_col_before {background-position:-700px -20px}
-.o2k7Skin span.mce_row_after {background-position:-720px -20px}
-.o2k7Skin span.mce_row_before {background-position:-740px -20px}
-.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
-.o2k7Skin span.mce_table_props {background-position:-980px -20px}
-.o2k7Skin span.mce_row_props {background-position:-780px -20px}
-.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
-.o2k7Skin span.mce_template {background-position:-820px -20px}
-.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
-.o2k7Skin span.mce_abbr {background-position:-860px -20px}
-.o2k7Skin span.mce_acronym {background-position:-880px -20px}
-.o2k7Skin span.mce_attribs {background-position:-900px -20px}
-.o2k7Skin span.mce_cite {background-position:-920px -20px}
-.o2k7Skin span.mce_del {background-position:-940px -20px}
-.o2k7Skin span.mce_ins {background-position:-960px -20px}
-.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
-.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
+++ /dev/null
@@ -1,8 +1,1 @@
-/* Black */
-.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton span.mceOpen, .o2k7SkinBlack .mceListBox .mceOpen {background-image:url(img/button_bg_black.png)}
-.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
-.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
-.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
-.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
-.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
-.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
+

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
+++ /dev/null
@@ -1,6 +1,1 @@
-/* Silver */
-.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton span.mceOpen, .o2k7SkinSilver .mceListBox .mceOpen {background-image:url(img/button_bg_silver.png)}
-.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
-.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
-.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
 

--- a/tinymce/2/jscripts/tiny_mce/themes/advanced/source_editor.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/advanced/source_editor.htm
@@ -1,33 +1,33 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-	<title>{#advanced_dlg.code_title}</title>
-	<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-	<script type="text/javascript" src="js/source_editor.js"></script>
-	<base target="_self" />
-</head>
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
-	<form name="source" onsubmit="saveContent();return false;" action="#">
-		<div style="float: left" class="title">{#advanced_dlg.code_title}</div>
+<html xmlns="http://www.w3.org/1999/xhtml">

+<head>

+	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

+	<title>{$lang_theme_code_title}</title>

+	<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>

+	<script language="javascript" type="text/javascript" src="jscripts/source_editor.js"></script>

+	<base target="_self" />

+</head>

+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');" onresize="resizeInputs();" style="display: none">

+	<form name="source" onsubmit="saveContent();" action="#">

+		<div style="float: left" class="title">{$lang_theme_code_title}</div>

+

+		<div id="wrapline" style="float: right">

+			<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>

+		</div>

+

+		<br style="clear: both" />

+

+		<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px" dir="ltr" wrap="off"></textarea>

+

+		<div class="mceActionPanel">

+			<div style="float: left">

+				<input type="button" name="insert" value="{$lang_update}" onclick="saveContent();" id="insert" />

+			</div>

+

+			<div style="float: right">

+				<input type="button" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" id="cancel" />

+			</div>

+		</div>

+	</form>

+</body>

+</html>

 
-		<div id="wrapline" style="float: right">
-			<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
-		</div>
-
-		<br style="clear: both" />
-
-		<textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
-
-		<div class="mceActionPanel">
-			<div style="float: left">
-				<input type="submit" name="insert" value="{#update}" id="insert" />
-			</div>
-
-			<div style="float: right">
-				<input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
-			</div>
-		</div>
-	</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/about.htm
@@ -1,33 +1,33 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>O TinyMCE</TITLE>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>O TinyMCE</TITLE>

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">O TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>




+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">O TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>



-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/common_buttons.htm
@@ -1,124 +1,124 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/cut.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/copy.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/paste.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Podtrhne text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/cut.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/copy.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/paste.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Podtrhne text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/index.htm
@@ -1,27 +1,27 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Obsah</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>



-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Obsah</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>




+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/insert_image_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_image_window.png" width="348" height="160"><br>

+<br>



+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_image_window.png" width="348" height="160"><br>
-<br>


-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/insert_link_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>

-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>


+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right"><a href="index.htm">Obsah</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_link_window.png" width="328" height="160"><br>

+<br>



+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Jdi na: <a href="index.htm">Obsah</a></td>

+    <td align="right"><a href="#">Nahoru</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right"><a href="index.htm">Obsah</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_link_window.png" width="328" height="160"><br>
-<br>


-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Jdi na: <a href="index.htm">Obsah</a></td>
-    <td align="right"><a href="#">Nahoru</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/cs/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: 0; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: 0; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/about.htm
@@ -1,33 +1,33 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>&Uuml;ber TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>&Uuml;ber TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">&Uuml;ber TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE ist ein kompakter WYSIWYG-Editor f&uuml;r Webbrowser wie MSIE oder Mozilla

+der es Ihnen erm&ouml;glicht HTML-Inhalte auf eine benutzerfreundliche Weise zu


+Textverarbeitungen vorkommen und sollte einfach zu benutzen sein.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">&Uuml;ber TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE ist ein kompakter WYSIWYG-Editor f&uuml;r Webbrowser wie MSIE oder Mozilla
-der es Ihnen erm&ouml;glicht HTML-Inhalte auf eine benutzerfreundliche Weise zu

-Textverarbeitungen vorkommen und sollte einfach zu benutzen sein.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/common_buttons.htm
@@ -1,109 +1,109 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>

+    <td>Fetter Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>

+    <td>Kursiver Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Unterstrichener Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Durchgestrichener Text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Linksb&uuml;ndig.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Zentriert.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Rechtsb&uuml;ndig.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Blocksatz.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Unsortierte Liste / Punktierte Liste.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Sortierte Liste / Nummerierte Liste.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Einzug verkleinern.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Einzug vergr&ouml;ssern.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Letzte Aktion r&uuml;ckg&auml;ngig machen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Letzte Aktion wiederholen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Einen neuen Hyperlink einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_link_button.htm">Hyperlink einf&uuml;gen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Den gegenw&auml;rtige markierten Hyperlink entfernen / Alle gegenw&auml;rtig markierten Hyperlinks entfernen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Ein neues Bild einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_image_button.htm">Bild einf&uuml;gen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>unsauberen Code aufr&auml;umen / Entfernt ungewollte Formatierungen. Diese Funktion ist n&uuml;tzlich,

+		wenn Sie beispielsweise Inhalte aus einem Office Produkt kopieren.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Zeigt diese Hilfe an.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
-    <td>Fetter Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
-    <td>Kursiver Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Unterstrichener Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Durchgestrichener Text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Linksb&uuml;ndig.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Zentriert.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Rechtsb&uuml;ndig.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Blocksatz.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Unsortierte Liste / Punktierte Liste.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Sortierte Liste / Nummerierte Liste.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Einzug verkleinern.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Einzug vergr&ouml;ssern.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Letzte Aktion r&uuml;ckg&auml;ngig machen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Letzte Aktion wiederholen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Einen neuen Hyperlink einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_link_button.htm">Hyperlink einf&uuml;gen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Den gegenw&auml;rtige markierten Hyperlink entfernen / Alle gegenw&auml;rtig markierten Hyperlinks entfernen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Ein neues Bild einf&uuml;gen, lesen Sie mehr &uuml;ber diese Funktion im Kapitel <a href="insert_image_button.htm">Bild einf&uuml;gen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>unsauberen Code aufr&auml;umen / Entfernt ungewollte Formatierungen. Diese Funktion ist n&uuml;tzlich,
-		wenn Sie beispielsweise Inhalte aus einem Office Produkt kopieren.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Zeigt diese Hilfe an.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/index.htm
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Inhaltsverzeichnis</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Klicken Sie auf die untenstehenden Links um die verschiedenen Bereiche der Hilfe zu betrachten. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">&Uuml;ber TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Allgemeine Schaltfl&auml;chen</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Schaltfl&auml;che Bild einf&uuml;gen</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Schaltfl&auml;che Hyperlink einf&uuml;gen</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Inhaltsverzeichnis</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Klicken Sie auf die untenstehenden Links um die verschiedenen Bereiche der Hilfe zu betrachten. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">&Uuml;ber TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Allgemeine Schaltfl&auml;chen</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Schaltfl&auml;che Bild einf&uuml;gen</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Schaltfl&auml;che Hyperlink einf&uuml;gen</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/insert_image_button.htm
@@ -1,35 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Schaltfl&auml;che Bild einf&uuml;gen</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Die Schaltfl&auml;che &quot;Bild einf&uuml;gen&quot; &ouml;ffnet das unten gezeigte Fenster.<br>

+<br>

+<img src="images/insert_image_window.gif" width="350" height="166"><br>

+<br>


+Beschreibung des Bildes, welche dann als alternative Textbeschreibung verwendet wird.

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Schaltfl&auml;che Bild einf&uuml;gen</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Die Schaltfl&auml;che &quot;Bild einf&uuml;gen&quot; &ouml;ffnet das unten gezeigte Fenster.<br>
-<br>
-<img src="images/insert_image_window.gif" width="350" height="166"><br>
-<br>

-Beschreibung des Bildes, welche dann als alternative Textbeschreibung verwendet wird.
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/insert_link_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Schaltfl&auml;che Hyperlink einf&uuml;gen</span></td>

+    <td align="right"><a href="index.htm">Inhalt</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Diese Schaltfl&auml;che &ouml;ffnet das Fenster f&uuml;r die &quot;Hyperlink einf&uuml;gen / bearbeiten&quot;-Funktion.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="166"><br>

+<br>



+ge&ouml;ffnet werden soll.

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>

+    <td align="right"><a href="#">nach oben</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Schaltfl&auml;che Hyperlink einf&uuml;gen</span></td>
-    <td align="right"><a href="index.htm">Inhalt</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Diese Schaltfl&auml;che &ouml;ffnet das Fenster f&uuml;r die &quot;Hyperlink einf&uuml;gen / bearbeiten&quot;-Funktion.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="166"><br>
-<br>


-ge&ouml;ffnet werden soll.
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Gehe zu: <a href="index.htm">Inhaltsverzeichnis</a></td>
-    <td align="right"><a href="#">nach oben</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/de/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/about.htm
@@ -1,33 +1,33 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>About TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>About TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">About TinyMCE</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla 

+that enables you to edit HTML contents in a more user friendly way. It has common 

+features that are found in most word processors and should not be difficult to 

+use.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">About TinyMCE</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla 
-that enables you to edit HTML contents in a more user friendly way. It has common 
-features that are found in most word processors and should not be difficult to 
-use.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/common_buttons.htm
@@ -1,112 +1,112 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Common buttons</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Common buttons</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Common buttons</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Below is a short description about each button.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Bold text style.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Italic text style.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Underline text style.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Strikethrough text style.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Align left.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Align center.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Align right.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Align full.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Unordered list/bullet list.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Ordered list/numbered list</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Outdent/decrease indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Indent/incread indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Undo the last operation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Redo the last operation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert 

+      link section</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Unlinks the current selection/removes all selected links.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert 

+      image section</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Cleanup code/Removes unwanted formating. This function is useful when 

+      you copy contents from for example a office product.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Shows this help window.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Common buttons</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Below is a short description about each button.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Bold text style.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Italic text style.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Underline text style.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Strikethrough text style.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Align left.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Align center.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Align right.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Align full.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Unordered list/bullet list.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Ordered list/numbered list</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Outdent/decrease indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Indent/incread indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Undo the last operation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Redo the last operation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Insert a new link, read more about this function in the <a href="insert_link_button.htm">Insert 
-      link section</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Unlinks the current selection/removes all selected links.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Insert a new image, read more about this function in the <a href="insert_image_button.htm">Insert 
-      image section</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Cleanup code/Removes unwanted formating. This function is useful when 
-      you copy contents from for example a office product.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Shows this help window.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/index.htm
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Help Index</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Table of contents</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Click the links below to go to the different help sections. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">About TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Help Index</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Table of contents</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Click the links below to go to the different help sections. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">About TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Common buttons</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Insert image button</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Insert link button</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/insert_image_button.htm
@@ -1,35 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Insert image button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Insert image button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insert image button</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+The insert image button opens the window shown below.<br>

+<br>

+<img src="images/insert_image_window.gif" width="350" height="159"><br>

+<br>

+You simply enter a URL to the image you want to link to and enter a image description, 

+this is then displayed as an alternative text descripton of the image on the page.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insert image button</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-The insert image button opens the window shown below.<br>
-<br>
-<img src="images/insert_image_window.gif" width="350" height="159"><br>
-<br>
-You simply enter a URL to the image you want to link to and enter a image description, 
-this is then displayed as an alternative text descripton of the image on the page.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/insert_link_button.htm
@@ -1,35 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Insert link button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Insert link button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insert link button</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+This button opens a new window with the insert/edit link function.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>

+There are two fields in this window the first one &quot;Link URL&quot; is the 

+URL of the link. The target enables you to select how the link is to be opened.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Go to: <a href="index.htm">Table of contents</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insert link button</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-This button opens a new window with the insert/edit link function.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>
-There are two fields in this window the first one &quot;Link URL&quot; is the 
-URL of the link. The target enables you to select how the link is to be opened.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Go to: <a href="index.htm">Table of contents</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/en/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/about.htm
@@ -1,30 +1,30 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Acerca de TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Acerca de TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Acerca de  TinyMCE</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE es un editor WYSIWYG para navegadores como  MSIE o Mozilla que te permite editar el contenido HTML de una manera m&aacute;s amigable. Tiene la mayor&iacute;a de las opciones de un procesador de texto y no deber&iacute;a ser dificil de usar.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Acerca de  TinyMCE</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE es un editor WYSIWYG para navegadores como  MSIE o Mozilla que te permite editar el contenido HTML de una manera m&aacute;s amigable. Tiene la mayor&iacute;a de las opciones de un procesador de texto y no deber&iacute;a ser dificil de usar.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/common_buttons.htm
@@ -1,109 +1,109 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Botones de uso com&uacute;n</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Botones de uso com&uacute;n</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Botones de uso com&uacute;n</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Peque&ntilde;a descripci&oacute;n de cada bot&oacute;n.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Texto en negrita.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Texto en cursiva.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Texto subrayado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Texto tachado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Alinear a la izquierda.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Alinear al centro.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Alinear a la derecha.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Alinear justificado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Lista desordenada/lista por puntos.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Lista ordenada/lista numerada</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Disminuir la sangr&iacute;a.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Aumentar la sangr&iacute;a.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Deshacer la &uacute;ltima operaci&oacute;n.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Rehacer la &uacute;ltima operaci&oacute;n.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Insertar un enlace, m&aacute;s informaci&oacute;n en <a href="insert_link_button.htm">insertar enlace</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Quita el enlace al texto seleccionado.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Inserta una nueva imagen, m&aacute;s informaci&oacute;n en <a href="insert_image_button.htm">insertar imagen</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Limpiar c&oacute;digo. Esta funci&oacute;n es &uacute;til cuando copias el c&oacute;digo de otra p&aacute;gina.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Muestra esta ventana de ayuda.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Botones de uso com&uacute;n</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Peque&ntilde;a descripci&oacute;n de cada bot&oacute;n.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Texto en negrita.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Texto en cursiva.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Texto subrayado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Texto tachado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Alinear a la izquierda.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Alinear al centro.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Alinear a la derecha.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Alinear justificado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Lista desordenada/lista por puntos.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Lista ordenada/lista numerada</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Disminuir la sangr&iacute;a.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Aumentar la sangr&iacute;a.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Deshacer la &uacute;ltima operaci&oacute;n.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Rehacer la &uacute;ltima operaci&oacute;n.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Insertar un enlace, m&aacute;s informaci&oacute;n en <a href="insert_link_button.htm">insertar enlace</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Quita el enlace al texto seleccionado.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Inserta una nueva imagen, m&aacute;s informaci&oacute;n en <a href="insert_image_button.htm">insertar imagen</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Limpiar c&oacute;digo. Esta funci&oacute;n es &uacute;til cuando copias el c&oacute;digo de otra p&aacute;gina.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Muestra esta ventana de ayuda.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/index.htm
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Indice de la ayuda</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Lista de contenidos</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Selecciona una secci&oacute;n para ver la ayuda. 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Acerca de  TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Botones</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Insertar imagen</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Insertar enlaces</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Indice de la ayuda</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Lista de contenidos</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Selecciona una secci&oacute;n para ver la ayuda. 

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Acerca de  TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Botones</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Insertar imagen</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Insertar enlaces</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/insert_image_button.htm
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Insertar imagen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Insertar imagen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insertar imagen</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+El bot&oacute;n insertar imagen abre la siguiente ventana.<br>

+<br>

+<img src="images/insert_image_window.gif" width="350" height="159"><br>

+<br>

+Tu s&oacute;lo tienes que escribir la URL de la imagen que quieres que aparezca y escribir una descripci&oacute;n de esta, esta descripci&oacute;n aparecera como un texto alternativo que describa la imagen.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insertar imagen</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-El bot&oacute;n insertar imagen abre la siguiente ventana.<br>
-<br>
-<img src="images/insert_image_window.gif" width="350" height="159"><br>
-<br>
-Tu s&oacute;lo tienes que escribir la URL de la imagen que quieres que aparezca y escribir una descripci&oacute;n de esta, esta descripci&oacute;n aparecera como un texto alternativo que describa la imagen.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/insert_link_button.htm
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Insertar enlaces</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Insertar enlaces</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Insertar enlaces</span></td>

+    <td align="right"><a href="index.htm">TOC</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Este bot&oacute;n abre una nueva ventana con la funci&oacute;n insertar/editar enlace.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>

+Hay dos campos en esta ventana, el primero &quot;Link URL&quot; es donde hay que escribir la direcci&oacute;n del enlace. El segundo &quot;Target&quot; indica c&oacute;mo se abrir&aacute; el enlace.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>

+    <td align="right"><a href="#">Top</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Insertar enlaces</span></td>
-    <td align="right"><a href="index.htm">TOC</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Este bot&oacute;n abre una nueva ventana con la funci&oacute;n insertar/editar enlace.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>
-Hay dos campos en esta ventana, el primero &quot;Link URL&quot; es donde hay que escribir la direcci&oacute;n del enlace. El segundo &quot;Target&quot; indica c&oacute;mo se abrir&aacute; el enlace.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ir a: <a href="index.htm">Lista de contenidos</a></td>
-    <td align="right"><a href="#">Top</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/es/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/about.htm
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>&Agrave; propos de TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>&Agrave; propos de TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">&Agrave; propos de TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui

+vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.

+Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans

+les traitements de texte.

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">&Agrave; propos de TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui
-vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.
-Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans
-les traitements de texte.
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/common_buttons.htm
@@ -1,113 +1,113 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Outils communs</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Outils communs</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outils communs</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Barre le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; gauche.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Alignement au centr&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; droite.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Texte justifi&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Liste &agrave; puces.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Liste num&eacute;rot&eacute;e</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>R&eacute;duit l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Augmente l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Annule la derni&egrave;re op&eacute;ration.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">

+        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">

+        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil

+    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels

+    de bureatique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Affiche cette page d'aide.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outils communs</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Barre le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; gauche.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Alignement au centr&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; droite.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Texte justifi&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Liste &agrave; puces.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Liste num&eacute;rot&eacute;e</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>R&eacute;duit l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Augmente l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Annule la derni&egrave;re op&eacute;ration.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">
-        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">
-        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil
-    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels
-    de bureatique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Affiche cette page d'aide.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/index.htm
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Table des mati&egrave;res de l'aide</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Table des mati&egrave;res</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Faites votre s&eacute;lection parmis les th&egrave;mes suivants:
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Table des mati&egrave;res de l'aide</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Table des mati&egrave;res</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Faites votre s&eacute;lection parmis les th&egrave;mes suivants:

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/insert_image_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Outil d'ajout d'images</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Outil d'ajout d'images</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'images</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et

+entrez une description facultative.  La description sera affich&eacute;e en texte alternatif

+sur l'image lorsqu'elle sera publi&eacute;e.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'images</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et
-entrez une description facultative.  La description sera affich&eacute;e en texte alternatif
-sur l'image lorsqu'elle sera publi&eacute;e.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/insert_link_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Outil d'ajout d'hyperliens</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Outil d'ajout d'hyperliens</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'hyperliens</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_link_window.gif"><br>

+<br>

+Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse

+de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on

+l'hyperlien sera ouvert.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'hyperliens</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_link_window.gif"><br>
-<br>
-Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse
-de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on
-l'hyperlien sera ouvert.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/about.htm
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>&Agrave; propos de TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>&Agrave; propos de TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">&Agrave; propos de TinyMCE</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui

+vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.

+Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans

+les traitements de texte.

+<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">&Agrave; propos de TinyMCE</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE est un petit &eacute;diteur "WYSIWYG" pour page Web comme MSIE ou Mozilla qui
-vous permet de manipuler du contenu HTML d'une fa&ccedil;on plus intuitive.
-Il est simple d'utilisation et poss&egrave;de les fonctionalit&eacute;s ls plus r&eacute;pendues que l'on peut retrouver dans
-les traitements de texte.
-<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/common_buttons.htm
@@ -1,113 +1,113 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Outils communs</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Outils communs</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outils communs</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 

+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Barre le texte s&eacute;lectionn&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; gauche.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Alignement au centr&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Alignement &agrave; droite.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Texte justifi&eacute;.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Liste &agrave; puces.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Liste num&eacute;rot&eacute;e</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>R&eacute;duit l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>Augmente l'indentation.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>Annule la derni&egrave;re op&eacute;ration.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">

+        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">

+        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil

+    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels

+    de bureatique.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Affiche cette page d'aide.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outils communs</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Ci-dessous une courte description de chacuns des outils.<img src="../../images/spacer.gif" width="1" height="1"> 
-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_fr.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en gras.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Met le texte s&eacute;lectionn&eacute; en italique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Souligne le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Barre le texte s&eacute;lectionn&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; gauche.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Alignement au centr&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Alignement &agrave; droite.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Texte justifi&eacute;.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Liste &agrave; puces.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Liste num&eacute;rot&eacute;e</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>R&eacute;duit l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>Augmente l'indentation.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>Annule la derni&egrave;re op&eacute;ration.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>Refait la derni&egrave;re op&eacute;ration annul&eacute;e.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie un hyperlien. Allez &agrave; la page <a href="insert_link_button.htm">
-        Outil d'ajout d'hyperliens</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Efface les hyperliens qui sont s&eacute;lection&eacute;es.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Ins&egrave;re ou modifie une image. Allez &agrave; la page <a href="insert_image_button.htm">
-        Outil d'ajout d'images</a> pour plus de d&eacute;tails.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Nettoie le code et retire les param&egrave;tres non d&eacute;sir&eacute;s.  Cet outil
-    est tr&egrave;s utile lorsque vous copiez du contenu provenant de logiciels
-    de bureatique.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Affiche cette page d'aide.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/index.htm
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Table des mati&egrave;res de l'aide</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Table des mati&egrave;res</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Faites votre s&eacute;lection parmis les th&egrave;mes suivants:
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Table des mati&egrave;res de l'aide</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Table des mati&egrave;res</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Faites votre s&eacute;lection parmis les th&egrave;mes suivants:

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">&Agrave; propos de TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Outils communs</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Outil d'ajout d'images</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Outil d'ajout d'hyperliens</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/insert_image_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Outil d'ajout d'images</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Outil d'ajout d'images</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'images</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>

+Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et

+entrez une description facultative.  La description sera affich&eacute;e en texte alternatif

+sur l'image lorsqu'elle sera publi&eacute;e.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'images</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'images ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>
-Vous entrez tout simplement l'adresse de l'image que vous d&eacute;sirez ajouter et
-entrez une description facultative.  La description sera affich&eacute;e en texte alternatif
-sur l'image lorsqu'elle sera publi&eacute;e.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/insert_link_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Outil d'ajout d'hyperliens</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Outil d'ajout d'hyperliens</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Outil d'ajout d'hyperliens</span></td>

+    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>

+<br>

+<img src="images/insert_link_window.gif"><br>

+<br>

+Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse

+de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on

+l'hyperlien sera ouvert.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>

+    <td align="right"><a href="#">Haut de page</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Outil d'ajout d'hyperliens</span></td>
-    <td align="right"><a href="index.htm">Table des mati&egrave;res</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-L'outil d'ajout d'hyperlien ouvre la fen&ecirc;tre ci-dessous.<br>
-<br>
-<img src="images/insert_link_window.gif"><br>
-<br>
-Il y a deux champs dans cette fen&ecirc;tre. L'Adresse URL est l'adresse
-de l'hyperlien.  La destination vous permet de choisir de quelle fa&ccedil;on
-l'hyperlien sera ouvert.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Aller &agrave;: <a href="index.htm">Table des mati&egrave;res</a></td>
-    <td align="right"><a href="#">Haut de page</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/fr_ca/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/about.htm
@@ -1,30 +1,30 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>&Uuml;ber TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>&Uuml;ber TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">A TinyMCE-r&#337;l</span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+A TinyMCE egy kompakt WYSIWYG-szerkeszt&#337; az MSIE-hoz &eacute;s a Mozill&aacute;hoz hasonl&oacute; webb&ouml;ng&eacute;sz&#337;k sz&aacute;m&aacute;ra, mely lehet&#337;s&eacute;get ny&uacute;jt &ouml;nnek a HTML tartalmak egyszer&#369; szerkeszt&eacute;s&eacute;re. A legt&ouml;bb sz&ouml;vegszerkeszt&#337;ben el&eacute;rhet&#337; funkci&oacute;kat ny&uacute;jtja egyszer&#369;en kezelhet&#337; form&aacute;ban.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>

+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">A TinyMCE-r&#337;l</span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-A TinyMCE egy kompakt WYSIWYG-szerkeszt&#337; az MSIE-hoz &eacute;s a Mozill&aacute;hoz hasonl&oacute; webb&ouml;ng&eacute;sz&#337;k sz&aacute;m&aacute;ra, mely lehet&#337;s&eacute;get ny&uacute;jt &ouml;nnek a HTML tartalmak egyszer&#369; szerkeszt&eacute;s&eacute;re. A legt&ouml;bb sz&ouml;vegszerkeszt&#337;ben el&eacute;rhet&#337; funkci&oacute;kat ny&uacute;jtja egyszer&#369;en kezelhet&#337; form&aacute;ban.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
-    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/common_buttons.htm
@@ -1,108 +1,108 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Allgemeine Schaltfl&auml;chen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Allgemeine Schaltfl&auml;chen</span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Untenstehend eine kurze Beschreibung jeder Schaltfl&auml;che.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/index.htm
@@ -1,26 +1,26 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">




-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Inhaltsverzeichnis der Hilfe</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">





+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/insert_image_button.htm
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Schaltfl&auml;che Bild einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">K&eacute;p beilleszt&eacute;se gomb </span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br> 

+A K&eacute;p beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.

+<br>

+<br>

+<img src="images/insert_image_window.gif" width="350" height="166"><br>

+<br>

+Egyszer&#369;en meg kell adni a beilleszteni k&iacute;v&aacute;nt k&eacute;p el&eacute;r&eacute;s&eacute;nek URL-j&eacute;t, valamint egy r&ouml;vd le&iacute;r&aacute;st, mely alternat&iacute;v sz&ouml;vegk&eacute;nt ker&uuml;l megjelen&iacute;t&eacute;sre (pl. nem grafikus b&ouml;ng&eacute;sz&#337;kben).<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>

+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">K&eacute;p beilleszt&eacute;se gomb </span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br> 
-A K&eacute;p beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.
-<br>
-<br>
-<img src="images/insert_image_window.gif" width="350" height="166"><br>
-<br>
-Egyszer&#369;en meg kell adni a beilleszteni k&iacute;v&aacute;nt k&eacute;p el&eacute;r&eacute;s&eacute;nek URL-j&eacute;t, valamint egy r&ouml;vd le&iacute;r&aacute;st, mely alternat&iacute;v sz&ouml;vegk&eacute;nt ker&uuml;l megjelen&iacute;t&eacute;sre (pl. nem grafikus b&ouml;ng&eacute;sz&#337;kben).<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
-    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/insert_link_button.htm
@@ -1,33 +1,33 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Schaltfl&auml;che Hyperlink einf&uuml;gen</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Link beilleszt&eacute;se gomb </span></td>

+    <td align="right"><a href="index.htm">Tartalom</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+A Link beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="166"><br>

+<br>

+K&eacute;t mez&#337;t kell kit&ouml;ltenie ebben az ablakban. Az els&#337; - &quot;Link URL&quot; - a hivatkoz&aacute;s URL-je. A m&aacute;sodik lehet&#337;s&eacute;get ad &Ouml;nnek a hivatkozt&aacute;s megjelen&iacute;t&eacute;s&eacute;nek kiv&aacute;laszt&aacute;s&aacute;hoz.<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>

+    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Link beilleszt&eacute;se gomb </span></td>
-    <td align="right"><a href="index.htm">Tartalom</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-A Link beilleszt&eacute;se gomb az al&aacute;bbi ablakot nyitja meg.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="166"><br>
-<br>
-K&eacute;t mez&#337;t kell kit&ouml;ltenie ebben az ablakban. Az els&#337; - &quot;Link URL&quot; - a hivatkoz&aacute;s URL-je. A m&aacute;sodik lehet&#337;s&eacute;get ad &Ouml;nnek a hivatkozt&aacute;s megjelen&iacute;t&eacute;s&eacute;nek kiv&aacute;laszt&aacute;s&aacute;hoz.<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>Ugr&aacute;s a <a href="index.htm">Tartalomjegyz&eacute;kre</a></td>
-    <td align="right"><a href="#">ugr&aacute;s a lap tetej&eacute;re </a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/hu/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/about.htm
@@ -1,39 +1,39 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>Informazioni su TinyMCE</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Informazioni su TinyMCE</span></td>
-      <td align="right"><a href="index.htm">TOC</a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-TinyMCE &egrave; un piccolo WYSIWYG (What You See Is What You Get,
-quello che vedi &egrave; quello che ottieni) editor per i web browser
-come MSIE o Mozilla che permette di editare HTML in modo comodo. Ha le
-funzionalit&agrave; comuni di molti word processor e non dovrebbe
-essere difficile da usare.<br>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <title>Informazioni su TinyMCE</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Informazioni su TinyMCE</span></td>

+      <td align="right"><a href="index.htm">TOC</a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+TinyMCE &egrave; un piccolo WYSIWYG (What You See Is What You Get,

+quello che vedi &egrave; quello che ottieni) editor per i web browser

+come MSIE o Mozilla che permette di editare HTML in modo comodo. Ha le

+funzionalit&agrave; comuni di molti word processor e non dovrebbe

+essere difficile da usare.<br>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+<br>

+<br>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/common_buttons.htm
@@ -1,127 +1,127 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>Pulsanti comuni</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Pulsanti comuni<br>
-      </span></td>
-      <td align="right"><a href="index.htm">TOC</a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Di seguito una breve descrizione di ogni pulsante.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tbody>
-    <tr>
-      <td><img src="../../images/bold.gif" height="20" width="20"></td>
-      <td>Testo <span style="font-weight: bold;">grassetto</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/italic.gif" height="20" width="20"></td>
-      <td>Testo <span style="font-style: italic;">corsivo</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/underline.gif" height="20" width="20"></td>
-      <td>Testo <span style="text-decoration: underline;">sottolineato</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/strikethrough.gif" height="20"
- width="20"></td>
-      <td>Testo <span style="text-decoration: line-through;">barrato</span>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/left.gif" height="20" width="20"></td>
-      <td>Allinea a sinistra.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/center.gif" height="20" width="20"></td>
-      <td>Allinea al centro.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/right.gif" height="20" width="20"></td>
-      <td>Allinea a destra.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/full.gif" height="20" width="20"></td>
-      <td>Giustifica.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/bullist.gif" height="20" width="20"></td>
-      <td>Lista non ordinata.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/numlist.gif" height="20" width="20"></td>
-      <td>Lista ordianta.<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/outdent.gif" height="20" width="20"></td>
-      <td>Diminuisci l'indentazione.<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/indent.gif" height="20" width="20"></td>
-      <td>Aumenta l'indentazione.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/undo.gif" height="20" width="20"></td>
-      <td>Annulla l'ultima operazione.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/redo.gif" height="20" width="20"></td>
-      <td>Ripeti l'ultima operazione.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/link.gif" height="20" width="20"></td>
-      <td>Inserieci un nuovo collegamento, maggiori informazioni su
-questa funzione nella <a href="insert_link_button.htm">Sezione
-'Inserisci un collegamento'</a></td>
-    </tr>
-    <tr>
-      <td><img src="../../images/unlink.gif" height="20" width="20"></td>
-      <td>Rimuovi tutti i collegamenti selezionati<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/image.gif" height="20" width="20"></td>
-      <td>Inserieci una nuova immagine, maggiori informazioni su questa
-funzione nella <a href="insert_image_button.htm">Sezione 'Inserisci
-una immagine'</a>.</td>
-    </tr>
-    <tr>
-      <td><img src="../../images/cleanup.gif" height="20" width="20"></td>
-      <td>Ripulisci il codice/rimuovi la formattazione non voluta.
-Questa funzione &egrave; utile quando si copia per esempio da un
-programma office<br>
-      </td>
-    </tr>
-    <tr>
-      <td><img src="../../images/help.gif" height="20" width="20"></td>
-      <td>Mostra questa guida<br>
-      </td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <title>Pulsanti comuni</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Pulsanti comuni<br>

+      </span></td>

+      <td align="right"><a href="index.htm">TOC</a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Di seguito una breve descrizione di ogni pulsante.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tbody>

+    <tr>

+      <td><img src="../../images/bold.gif" height="20" width="20"></td>

+      <td>Testo <span style="font-weight: bold;">grassetto</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/italic.gif" height="20" width="20"></td>

+      <td>Testo <span style="font-style: italic;">corsivo</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/underline.gif" height="20" width="20"></td>

+      <td>Testo <span style="text-decoration: underline;">sottolineato</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/strikethrough.gif" height="20"

+ width="20"></td>

+      <td>Testo <span style="text-decoration: line-through;">barrato</span>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/left.gif" height="20" width="20"></td>

+      <td>Allinea a sinistra.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/center.gif" height="20" width="20"></td>

+      <td>Allinea al centro.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/right.gif" height="20" width="20"></td>

+      <td>Allinea a destra.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/full.gif" height="20" width="20"></td>

+      <td>Giustifica.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/bullist.gif" height="20" width="20"></td>

+      <td>Lista non ordinata.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/numlist.gif" height="20" width="20"></td>

+      <td>Lista ordianta.<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/outdent.gif" height="20" width="20"></td>

+      <td>Diminuisci l'indentazione.<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/indent.gif" height="20" width="20"></td>

+      <td>Aumenta l'indentazione.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/undo.gif" height="20" width="20"></td>

+      <td>Annulla l'ultima operazione.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/redo.gif" height="20" width="20"></td>

+      <td>Ripeti l'ultima operazione.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/link.gif" height="20" width="20"></td>

+      <td>Inserieci un nuovo collegamento, maggiori informazioni su

+questa funzione nella <a href="insert_link_button.htm">Sezione

+'Inserisci un collegamento'</a></td>

+    </tr>

+    <tr>

+      <td><img src="../../images/unlink.gif" height="20" width="20"></td>

+      <td>Rimuovi tutti i collegamenti selezionati<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/image.gif" height="20" width="20"></td>

+      <td>Inserieci una nuova immagine, maggiori informazioni su questa

+funzione nella <a href="insert_image_button.htm">Sezione 'Inserisci

+una immagine'</a>.</td>

+    </tr>

+    <tr>

+      <td><img src="../../images/cleanup.gif" height="20" width="20"></td>

+      <td>Ripulisci il codice/rimuovi la formattazione non voluta.

+Questa funzione &egrave; utile quando si copia per esempio da un

+programma office<br>

+      </td>

+    </tr>

+    <tr>

+      <td><img src="../../images/help.gif" height="20" width="20"></td>

+      <td>Mostra questa guida<br>

+      </td>

+    </tr>

+  </tbody>

+</table>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/index.htm
@@ -1,33 +1,33 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>Indice della guida</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body onload="window.focus();">
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Tavola dei contenuti<br>
-      </span></td>
-      <td align="right">&nbsp;</td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Seleziona un argomento:<br>
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Informazioni su TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Pulsanti comuni</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Pulsante
-'Inserisci immagine'<br>
-    </a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Pulsante
-'Inserisci collegamento'</a></li>
-</ul>
-<hr noshade="noshade">
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <title>Indice della guida</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body onload="window.focus();">

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Tavola dei contenuti<br>

+      </span></td>

+      <td align="right">&nbsp;</td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Seleziona un argomento:<br>

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Informazioni su TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Pulsanti comuni</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Pulsante

+'Inserisci immagine'<br>

+    </a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Pulsante

+'Inserisci collegamento'</a></li>

+</ul>

+<hr noshade="noshade">

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/insert_image_button.htm
@@ -1,42 +1,42 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>Pulsante 'Inserisci immagine'</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Pulsante 'Inserisci immagine'<br>
-      </span></td>
-      <td align="right"><a href="index.htm">TOC</a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Il pulsante 'inserisci immagine' apre questa finestra.<br>
-<br>
-<img src="images/insert_image_window.gif" height="156" width="346"><br>
-<br>
-Semplicemente, inserite l'inidirzzo all'immagine che volete collegare e
-datene una descrizione, che sar&agrave; poi visualizzata come testo
-alternativo all'immagine nella pagina.<br>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <title>Pulsante 'Inserisci immagine'</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Pulsante 'Inserisci immagine'<br>

+      </span></td>

+      <td align="right"><a href="index.htm">TOC</a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Il pulsante 'inserisci immagine' apre questa finestra.<br>

+<br>

+<img src="images/insert_image_window.gif" height="156" width="346"><br>

+<br>

+Semplicemente, inserite l'inidirzzo all'immagine che volete collegare e

+datene una descrizione, che sar&agrave; poi visualizzata come testo

+alternativo all'immagine nella pagina.<br>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+<br>

+<br>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/insert_link_button.htm
@@ -1,43 +1,43 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-  <title>Pulsante 'Inserisci collegamento'</title>
-  <link href="style.css" rel="stylesheet" type="text/css">
-</head>
-<body>
-<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td><span class="title">Pulsante 'Inserisci collegamento'<br>
-      </span></td>
-      <td align="right"><a href="index.htm">TOC</a></td>
-    </tr>
-  </tbody>
-</table>
-<hr noshade="noshade">
-<br>
-Questo pulsante apre una nuova finstra con le funzioni di
-inserimento/modifica del collegamento.<br>
-<br>
-<img src="images/insert_link_window.gif" height="156" width="326"><br>
-<br>
-Ci sono due campi in questa finestra: il primo, "Link URL" &egrave;
-l'indirizzo del collegamento. Il 'target' permette di selezionare come
-il collegamento deve essere aperto.<br>
-<br>
-<hr noshade="noshade">
-<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
- width="100%">
-  <tbody>
-    <tr>
-      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>
-      <td align="right"><a href="#">Su</a></td>
-    </tr>
-  </tbody>
-</table>
-<br>
-<br>
-</body>
-</html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+  <title>Pulsante 'Inserisci collegamento'</title>

+  <link href="style.css" rel="stylesheet" type="text/css">

+</head>

+<body>

+<table class="pageheader" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td><span class="title">Pulsante 'Inserisci collegamento'<br>

+      </span></td>

+      <td align="right"><a href="index.htm">TOC</a></td>

+    </tr>

+  </tbody>

+</table>

+<hr noshade="noshade">

+<br>

+Questo pulsante apre una nuova finstra con le funzioni di

+inserimento/modifica del collegamento.<br>

+<br>

+<img src="images/insert_link_window.gif" height="156" width="326"><br>

+<br>

+Ci sono due campi in questa finestra: il primo, "Link URL" &egrave;

+l'indirizzo del collegamento. Il 'target' permette di selezionare come

+il collegamento deve essere aperto.<br>

+<br>

+<hr noshade="noshade">

+<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"

+ width="100%">

+  <tbody>

+    <tr>

+      <td>Vai a: <a href="index.htm">Tavola dei contenuti</a></td>

+      <td align="right"><a href="#">Su</a></td>

+    </tr>

+  </tbody>

+</table>

+<br>

+<br>

+</body>

+</html>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/it/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/about.htm
@@ -1,35 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<TITLE>O TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<TITLE>O TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">O TinyMCE</span></td>


+  </tr>

+</table>

+<hr noshade>

+<br>





+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">O TinyMCE</span></td>

-  </tr>
-</table>
-<hr noshade>
-<br>




-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/common_buttons.htm
@@ -1,114 +1,114 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold.gif" width="20" height="20"></td>

+    <td>Pogrubienie tekstu.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic.gif" width="20" height="20"></td>

+    <td>Pochylenie tekstu.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Wyjustowanie.</td>

+  </tr>

+   <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>



+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Pokazanie tego okna pomocy.</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold.gif" width="20" height="20"></td>
-    <td>Pogrubienie tekstu.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic.gif" width="20" height="20"></td>
-    <td>Pochylenie tekstu.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Wyjustowanie.</td>
-  </tr>
-   <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>


-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Pokazanie tego okna pomocy.</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/index.htm
@@ -1,28 +1,28 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
-<TITLE>Spis pomocy</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>



-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

+<TITLE>Spis pomocy</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">O TinyMCE</a></li>




+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/insert_image_button.htm
@@ -1,35 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_image_window.gif"><br>
-<br>


-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_image_window.gif"><br>

+<br>



+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/insert_link_button.htm
@@ -1,37 +1,37 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<meta name="generator" content="WebSite PRO 4.3" />
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">

-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<meta name="generator" content="WebSite PRO 4.3" />

+<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">


+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>



+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>


-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/pl/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/about.htm
@@ -1,34 +1,34 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>About TinyMCE</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>About TinyMCE</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Om TinyMCE</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+TinyMCE &auml;r en liten WYSIWYG-editor f&ouml;r webl&auml;sare som

+MSIE och Mozilla vilken m&ouml;jligg&ouml;r f&ouml;r anv&auml;ndare att redigera 

+HTML-inneh&aring;ll p&aring; ett mer anv&auml;ndarv&auml;nligt s&auml;tt.

+Applikationen har funktioner som liknar dem man finner i vanliga ordbehandlare

+och borde inte vara speciellt sv&aring;rt att anv&auml;nda.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Om TinyMCE</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-TinyMCE &auml;r en liten WYSIWYG-editor f&ouml;r webl&auml;sare som
-MSIE och Mozilla vilken m&ouml;jligg&ouml;r f&ouml;r anv&auml;ndare att redigera 
-HTML-inneh&aring;ll p&aring; ett mer anv&auml;ndarv&auml;nligt s&auml;tt.
-Applikationen har funktioner som liknar dem man finner i vanliga ordbehandlare
-och borde inte vara speciellt sv&aring;rt att anv&auml;nda.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/common_buttons.htm
@@ -1,112 +1,112 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Common buttons</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Common buttons</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Grundl&auml;ggande knappar</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Nedan finner du en kort beskrivning av varje knapp/funktion.<br>

+<br>

+<table border="1" cellpadding="3" cellspacing="0">

+  <tr>

+    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>

+    <td>Fet text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>

+    <td>Kursiv text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/underline.gif" width="20" height="20"></td>

+    <td>Understruken text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>

+    <td>Genomstruken text.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/left.gif" width="20" height="20"></td>

+    <td>Rak v&auml;nstermarginal.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/center.gif" width="20" height="20"></td>

+    <td>Centrera.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/right.gif" width="20" height="20"></td>

+    <td>Rak h&ouml;germarginal.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/full.gif" width="20" height="20"></td>

+    <td>Raka marginaler.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/bullist.gif" width="20" height="20"></td>

+    <td>Punktlista.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/numlist.gif" width="20" height="20"></td>

+    <td>Numrerad lista</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/outdent.gif" width="20" height="20"></td>

+    <td>Minska indrag.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/indent.gif" width="20" height="20"></td>

+    <td>&Ouml;ka utdrag.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/undo.gif" width="20" height="20"></td>

+    <td>&Aring;ngra senaste &auml;ndringen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/redo.gif" width="20" height="20"></td>

+    <td>G&ouml;r om senaste &auml;ndringen.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/link.gif" width="20" height="20"></td>

+    <td>Skapa/Redigera l&auml;nk, l&auml;s mer om denna funktion i

+	kapitlet <a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/unlink.gif" width="20" height="20"></td>

+    <td>Ta bort l&auml;nkar fr&aring;n markerade l&auml;nkar.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/image.gif" width="20" height="20"></td>

+    <td>Skapa/Redigera bild, l&auml;r mer om denna funktion i

+      kapitlet <a href="insert_image_button.htm">Skapa/Redigera bild</a>.</td>

+  </tr>

+  <tr>

+    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>

+    <td>Rensa/St&auml;da k&aring;den. Denna funktion tar bort on&ouml;dig

+      formatering. B&ouml;r anv&auml;ndas n&auml;r man t.ex. kopierar text

+      fr&aring;n Office-program. </td>

+  </tr>

+  <tr>

+    <td><img src="../../images/help.gif" width="20" height="20"></td>

+    <td>Visad denna hj&auml;lp</td>

+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Grundl&auml;ggande knappar</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Nedan finner du en kort beskrivning av varje knapp/funktion.<br>
-<br>
-<table border="1" cellpadding="3" cellspacing="0">
-  <tr>
-    <td><img src="../../images/bold_de_se.gif" width="20" height="20"></td>
-    <td>Fet text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/italic_de_se.gif" width="20" height="20"></td>
-    <td>Kursiv text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/underline.gif" width="20" height="20"></td>
-    <td>Understruken text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/strikethrough.gif" width="20" height="20"></td>
-    <td>Genomstruken text.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/left.gif" width="20" height="20"></td>
-    <td>Rak v&auml;nstermarginal.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/center.gif" width="20" height="20"></td>
-    <td>Centrera.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/right.gif" width="20" height="20"></td>
-    <td>Rak h&ouml;germarginal.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/full.gif" width="20" height="20"></td>
-    <td>Raka marginaler.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/bullist.gif" width="20" height="20"></td>
-    <td>Punktlista.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/numlist.gif" width="20" height="20"></td>
-    <td>Numrerad lista</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/outdent.gif" width="20" height="20"></td>
-    <td>Minska indrag.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/indent.gif" width="20" height="20"></td>
-    <td>&Ouml;ka utdrag.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/undo.gif" width="20" height="20"></td>
-    <td>&Aring;ngra senaste &auml;ndringen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/redo.gif" width="20" height="20"></td>
-    <td>G&ouml;r om senaste &auml;ndringen.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/link.gif" width="20" height="20"></td>
-    <td>Skapa/Redigera l&auml;nk, l&auml;s mer om denna funktion i
-	kapitlet <a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/unlink.gif" width="20" height="20"></td>
-    <td>Ta bort l&auml;nkar fr&aring;n markerade l&auml;nkar.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/image.gif" width="20" height="20"></td>
-    <td>Skapa/Redigera bild, l&auml;r mer om denna funktion i
-      kapitlet <a href="insert_image_button.htm">Skapa/Redigera bild</a>.</td>
-  </tr>
-  <tr>
-    <td><img src="../../images/cleanup.gif" width="20" height="20"></td>
-    <td>Rensa/St&auml;da k&aring;den. Denna funktion tar bort on&ouml;dig
-      formatering. B&ouml;r anv&auml;ndas n&auml;r man t.ex. kopierar text
-      fr&aring;n Office-program. </td>
-  </tr>
-  <tr>
-    <td><img src="../../images/help.gif" width="20" height="20"></td>
-    <td>Visad denna hj&auml;lp</td>
-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/index.htm
@@ -1,28 +1,28 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Help Index</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Inneh&aring;llsf&ouml;rteckning</span></td>
-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Klicka p&aring; l&auml;nkarna nedan f&ouml;r att g&aring; till olika
-hj&auml;lpkapitel.
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Help Index</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Inneh&aring;llsf&ouml;rteckning</span></td>

+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Klicka p&aring; l&auml;nkarna nedan f&ouml;r att g&aring; till olika

+hj&auml;lpkapitel.

+

+<ul class="toc_ul">

+  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>

+  <li class="toc_li"><a href="common_buttons.htm">Grundl&auml;ggande funktioner</a></li>

+  <li class="toc_li"><a href="insert_image_button.htm">Skapa/Redigera bild</a></li>

+  <li class="toc_li"><a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a></li>

+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 
-<ul class="toc_ul">
-  <li class="toc_li"><a href="about.htm">Om TinyMCE</a></li>
-  <li class="toc_li"><a href="common_buttons.htm">Grundl&auml;ggande funktioner</a></li>
-  <li class="toc_li"><a href="insert_image_button.htm">Skapa/Redigera bild</a></li>
-  <li class="toc_li"><a href="insert_link_button.htm">Skapa/Redigera l&auml;nk</a></li>
-</ul>
-<hr noshade>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/insert_image_button.htm
@@ -1,36 +1,36 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Insert image button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Insert image button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Skapa/Redigera bild</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Skapa/Redigera bild-funktionen &ouml;ppnar ett nytt f&ouml;nster som ser ut som 

+bilden nedan.<br>

+<br>

+<img src="images/insert_image_window.gif" width="330" height="159"><br>

+<br>

+I detta f&ouml;nster skriver du in URL:en till bilden du vill l&auml;nka till 

+samt en bildbeskrivning, denna beskrivning kommer att visas som en alternativ 

+text till bilden.<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Skapa/Redigera bild</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Skapa/Redigera bild-funktionen &ouml;ppnar ett nytt f&ouml;nster som ser ut som 
-bilden nedan.<br>
-<br>
-<img src="images/insert_image_window.gif" width="330" height="159"><br>
-<br>
-I detta f&ouml;nster skriver du in URL:en till bilden du vill l&auml;nka till 
-samt en bildbeskrivning, denna beskrivning kommer att visas som en alternativ 
-text till bilden.<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/insert_link_button.htm
@@ -1,35 +1,35 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-<HEAD>
-<TITLE>Insert link button</TITLE>
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML>

+<HEAD>

+<TITLE>Insert link button</TITLE>

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 

+    <td><span class="title">Skapa/Redigera l&auml;nk</span></td>

+    <td align="right"><a href="index.htm">IF</a></td>

+  </tr>

+</table>

+<hr noshade>

+<br>

+Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>

+<br>

+<img src="images/insert_link_window.gif" width="330" height="159"><br>

+<br>

+Detta f&ouml;nster har tv&aring; f&auml;lt l&auml;nkens URL/adress samt hur l&auml;nken 

+skall &ouml;ppnas.<br>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 

+    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>

+    <td align="right"><a href="#">Toppen</a></td>

+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 
-    <td><span class="title">Skapa/Redigera l&auml;nk</span></td>
-    <td align="right"><a href="index.htm">IF</a></td>
-  </tr>
-</table>
-<hr noshade>
-<br>
-Denna funktion &ouml;ppnar ett nytt f&ouml;nster liknande det nedan.<br>
-<br>
-<img src="images/insert_link_window.gif" width="330" height="159"><br>
-<br>
-Detta f&ouml;nster har tv&aring; f&auml;lt l&auml;nkens URL/adress samt hur l&auml;nken 
-skall &ouml;ppnas.<br>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 
-    <td>G&aring; till: <a href="index.htm">Inneh&aring;llsf&ouml;rteckning</a></td>
-    <td align="right"><a href="#">Toppen</a></td>
-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/sv/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/about.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/about.htm
@@ -1,30 +1,30 @@
-<HTML>
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<HTML>

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/common_buttons.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/common_buttons.htm
@@ -1,109 +1,109 @@
-<HTML>
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<HTML>

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>

+<br>


+<br>

+<br>

+<table cellpadding="3" cellspacing="1" bgcolor="#111111">

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/bold.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/italic.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/underline.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/strikethrough.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/left.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/center.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/right.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/full.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/bullist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/numlist.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/outdent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/indent.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/undo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/redo.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/link.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/unlink.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/image.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/cleanup.gif" width="20" height="20"></td>


+  </tr>

+  <tr>

+    <td bgcolor="#FFFFFF"><img src="../../images/help.gif" width="20" height="20"></td>


+  </tr>

+</table>

+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>
-<br>

-<br>
-<br>
-<table cellpadding="3" cellspacing="1" bgcolor="#111111">
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/bold.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/italic.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/underline.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/strikethrough.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/left.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/center.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/right.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/full.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/bullist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/numlist.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/outdent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/indent.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/undo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/redo.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/link.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/unlink.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/image.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/cleanup.gif" width="20" height="20"></td>

-  </tr>
-  <tr>
-    <td bgcolor="#FFFFFF"><img src="../../images/help.gif" width="20" height="20"></td>

-  </tr>
-</table>
-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/index.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/index.htm
@@ -1,26 +1,26 @@
-<HTML>
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
-<BODY onload="window.focus();">
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 

-    <td align="right">&nbsp;</td>
-  </tr>
-</table>
-<hr noshade>
-<br>

-<ul class="toc_ul">




-</ul>
-<hr noshade>
-</BODY>
-</HTML>
+<HTML>

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+<BODY onload="window.focus();">

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 


+    <td align="right">&nbsp;</td>

+  </tr>

+</table>

+<hr noshade>

+<br>


+<ul class="toc_ul">





+</ul>

+<hr noshade>

+</BODY>

+</HTML>

 

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/insert_image_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/insert_image_button.htm
@@ -1,32 +1,32 @@
-<HTML>
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<HTML>

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>


+<br>

+<img src="images/insert_image_window.gif" width="360" height="155" border="0"><br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>

-<br>
-<img src="images/insert_image_window.gif" width="360" height="155" border="0"><br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/insert_link_button.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/insert_link_button.htm
@@ -1,32 +1,32 @@
-<HTML>
-<HEAD>

-<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
-<link href="style.css" rel="stylesheet" type="text/css">
-</HEAD>
+<HTML>

+<HEAD>


+<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

+<link href="style.css" rel="stylesheet" type="text/css">

+</HEAD>

+

+<BODY>

+

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">

+  <tr> 



+  </tr>

+</table>

+<hr noshade>


+<br>

+<img src="images/insert_link_window.gif" width="320" height="155" border="0"><br>


+<br>

+<hr noshade>

+<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">

+  <tr> 



+  </tr>

+</table>

+<br>

+</BODY>

+</HTML>

 
-<BODY>
-
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
-  <tr> 


-  </tr>
-</table>
-<hr noshade>

-<br>
-<img src="images/insert_link_window.gif" width="320" height="155" border="0"><br>

-<br>
-<hr noshade>
-<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
-  <tr> 


-  </tr>
-</table>
-<br>
-</BODY>
-</HTML>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/style.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/docs/zh_cn/style.css
@@ -1,29 +1,29 @@
-body { background-color: #FFFFFF; }
-body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }
-.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }
-.subtitle { font-size: 12px; font-weight: bold; }
+body { background-color: #FFFFFF; }

+body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; }

+.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; }

+.subtitle { font-size: 12px; font-weight: bold; }

+

+.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }

+.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }

+img { border: #000000 solid 1px; }

+

+a:visited { color: #666666; text-decoration: underline; }

+a:active { color: #666666; text-decoration: underline; }

+a:hover { color: #666666; text-decoration: underline; }

+a { color: #666666; text-decoration: underline; }

+

+.pageheader { border: #E0E0E0 solid 1px; }

+.pagefooter { border: #E0E0E0 solid 1px; }

+.sample { background-color: #FFFFFF; border: #000000 solid 1px; }

+.samplecontent { font-size: 10px; }

+

+.code { background-color: #FFFFFF; border: #000000 solid 1px; }

+.codecontent { font-size: 10px; }

+.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }

+.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }

+.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }

+

+hr { height: 1px; }

+

 
-.toc_ul, .toc_li { margin-left: 8 px; line-height: 16px; }
-.step_ol, .step_li { margin-left: 11 px; line-height: 16px; }
-img { border: #000000 solid 1px; }
-
-a:visited { color: #666666; text-decoration: underline; }
-a:active { color: #666666; text-decoration: underline; }
-a:hover { color: #666666; text-decoration: underline; }
-a { color: #666666; text-decoration: underline; }
-
-.pageheader { border: #E0E0E0 solid 1px; }
-.pagefooter { border: #E0E0E0 solid 1px; }
-.sample { background-color: #FFFFFF; border: #000000 solid 1px; }
-.samplecontent { font-size: 10px; }
-
-.code { background-color: #FFFFFF; border: #000000 solid 1px; }
-.codecontent { font-size: 10px; }
-.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold }
-.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold  }
-.codecontent a { color: #666666; text-decoration: none; font-weight: bold  }
-
-hr { height: 1px; }
-
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/editor_content.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/editor_content.css
@@ -1,28 +1,28 @@
-body {
-	background-color: #FFFFFF;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
-}
+body {

+	background-color: #FFFFFF;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+pre {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+.mceVisualAid {

+	border: 1px dashed #BBBBBB;

+}

 
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-pre {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-.mceVisualAid {
-	border: 1px dashed #BBBBBB;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/editor_popup.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/editor_popup.css
@@ -1,41 +1,41 @@
-body {
-	background-color: #F0F0EE;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
+body {

+	background-color: #F0F0EE;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+}

+

+input {

+	background: #FFFFFF;

+	border: 1px solid #cccccc;

+}

+

+td, input, select, textarea {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+input, select, textarea {

+	border: 1px solid #808080;

+}

+

+.input_noborder {

+	border: 0px solid #808080;

+}

+

+.title {

+	font-size: 12px;

+	font-weight: bold;

 }
-
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-}
-
-input {
-	background: #FFFFFF;
-	border: 1px solid #cccccc;
-}
-
-td, input, select, textarea {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-input, select, textarea {
-	border: 1px solid #808080;
-}
-
-.input_noborder {
-	border: 0px solid #808080;
-}
-
-.title {
-	font-size: 12px;
-	font-weight: bold;
-}

--- a/tinymce/2/jscripts/tiny_mce/themes/default/editor_template.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/editor_template.js
@@ -1,32 +1,32 @@
-function TinyMCE_default_getEditorTemplate(){var template=new Array();template['html']='\
-<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">\
-<tr><td align="center">\
-<span id="{$editor_id}">IFRAME</span>\
-</td></tr>\
-<tr><td class="mceToolbar" align="center" height="1">\
-<img id="{$editor_id}_bold" src="{$themeurl}/images/{$lang_bold_img}" title="{$lang_bold_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Bold\')">\
-<img id="{$editor_id}_italic" src="{$themeurl}/images/{$lang_italic_img}" title="{$lang_italic_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Italic\')">\
-<img id="{$editor_id}_underline" src="{$themeurl}/images/{$lang_underline_img}" title="{$lang_underline_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Underline\')">\
-<img id="{$editor_id}_strikethrough" src="{$themeurl}/images/strikethrough.gif" title="{$lang_striketrough_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Strikethrough\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img id="{$editor_id}_left" src="{$themeurl}/images/left.gif" title="{$lang_justifyleft_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyLeft\')">\
-<img id="{$editor_id}_center" src="{$themeurl}/images/center.gif" title="{$lang_justifycenter_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyCenter\')">\
-<img id="{$editor_id}_right" src="{$themeurl}/images/right.gif" title="{$lang_justifyright_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyRight\')">\
-<img id="{$editor_id}_full" src="{$themeurl}/images/full.gif" title="{$lang_justifyfull_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyFull\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/outdent.gif" title="{$lang_outdent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Outdent\')">\
-<img src="{$themeurl}/images/indent.gif" title="{$lang_indent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Indent\')">\
-<br>\
-<img id="{$editor_id}_bullist" src="{$themeurl}/images/bullist.gif" title="{$lang_bullist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertUnorderedList\')">\
-<img id="{$editor_id}_numlist" src="{$themeurl}/images/numlist.gif" title="{$lang_numlist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertOrderedList\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" width="20" height="20" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/undo.gif" title="{$lang_undo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Undo\')">\
-<img src="{$themeurl}/images/redo.gif" title="{$lang_redo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Redo\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img id="{$editor_id}_link" src="{$themeurl}/images/link.gif" title="{$lang_link_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceLink\', true)">\
-<img src="{$themeurl}/images/unlink.gif" title="{$lang_unlink_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'unlink\')">\
-<img id="{$editor_id}_image" src="{$themeurl}/images/image.gif" title="{$lang_image_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceImage\', true)">\
-<img src="{$themeurl}/images/cleanup.gif" title="{$lang_cleanup_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceCleanup\')">\
-<img src="{$themeurl}/images/help.gif" title="{$lang_help_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceHelp\')">\
-</td></tr>\
+function TinyMCE_default_getEditorTemplate(){var template=new Array();template['html']='\

+<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">\

+<tr><td align="center">\

+<span id="{$editor_id}">IFRAME</span>\

+</td></tr>\

+<tr><td class="mceToolbar" align="center" height="1">\

+<img id="{$editor_id}_bold" src="{$themeurl}/images/{$lang_bold_img}" title="{$lang_bold_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Bold\')">\

+<img id="{$editor_id}_italic" src="{$themeurl}/images/{$lang_italic_img}" title="{$lang_italic_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Italic\')">\

+<img id="{$editor_id}_underline" src="{$themeurl}/images/{$lang_underline_img}" title="{$lang_underline_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Underline\')">\

+<img id="{$editor_id}_strikethrough" src="{$themeurl}/images/strikethrough.gif" title="{$lang_striketrough_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Strikethrough\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\

+<img id="{$editor_id}_left" src="{$themeurl}/images/left.gif" title="{$lang_justifyleft_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyLeft\')">\

+<img id="{$editor_id}_center" src="{$themeurl}/images/center.gif" title="{$lang_justifycenter_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyCenter\')">\

+<img id="{$editor_id}_right" src="{$themeurl}/images/right.gif" title="{$lang_justifyright_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyRight\')">\

+<img id="{$editor_id}_full" src="{$themeurl}/images/full.gif" title="{$lang_justifyfull_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyFull\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\

+<img src="{$themeurl}/images/outdent.gif" title="{$lang_outdent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Outdent\')">\

+<img src="{$themeurl}/images/indent.gif" title="{$lang_indent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Indent\')">\

+<br>\

+<img id="{$editor_id}_bullist" src="{$themeurl}/images/bullist.gif" title="{$lang_bullist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertUnorderedList\')">\

+<img id="{$editor_id}_numlist" src="{$themeurl}/images/numlist.gif" title="{$lang_numlist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertOrderedList\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" width="20" height="20" class="mceSeparatorLine">\

+<img src="{$themeurl}/images/undo.gif" title="{$lang_undo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Undo\')">\

+<img src="{$themeurl}/images/redo.gif" title="{$lang_redo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Redo\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\

+<img id="{$editor_id}_link" src="{$themeurl}/images/link.gif" title="{$lang_link_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceLink\', true)">\

+<img src="{$themeurl}/images/unlink.gif" title="{$lang_unlink_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'unlink\')">\

+<img id="{$editor_id}_image" src="{$themeurl}/images/image.gif" title="{$lang_image_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceImage\', true)">\

+<img src="{$themeurl}/images/cleanup.gif" title="{$lang_cleanup_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceCleanup\')">\

+<img src="{$themeurl}/images/help.gif" title="{$lang_help_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceHelp\')">\

+</td></tr>\

 </table>';template['delta_width']=0;template['delta_height']=-40;return template;}function TinyMCE_default_getInsertLinkTemplate(){var template=new Array();template['file']='link.htm';template['width']=320;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);return template;}function TinyMCE_default_getInsertImageTemplate(){var template=new Array();template['file']='image.htm';template['width']=360;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return template;}function TinyMCE_default_handleNodeChange(editor_id,node){tinyMCE.switchClassSticky(editor_id+'_left','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_right','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_center','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_full','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonNormal');alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case "left":tinyMCE.switchClassSticky(editor_id+'_left','mceButtonSelected');breakOut=true;break;case "right":tinyMCE.switchClassSticky(editor_id+'_right','mceButtonSelected');breakOut=true;break;case "middle":case "center":tinyMCE.switchClassSticky(editor_id+'_center','mceButtonSelected');breakOut=true;break;case "justify":tinyMCE.switchClassSticky(editor_id+'_full','mceButtonSelected');breakOut=true;break;}}while(!breakOut&&(alignNode=alignNode.parentNode));do{switch(node.nodeName.toLowerCase()){case "b":case "strong":tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonSelected');break;case "i":case "em":tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonSelected');break;case "u":tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonSelected');break;case "strike":tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonSelected');break;case "ul":tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonSelected');break;case "ol":tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonSelected');break;}}while((node=node.parentNode));}

--- a/tinymce/2/jscripts/tiny_mce/themes/default/editor_template_src.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/editor_template_src.js
@@ -1,152 +1,152 @@
-function TinyMCE_default_getEditorTemplate() {
-	var template = new Array();
+function TinyMCE_default_getEditorTemplate() {

+	var template = new Array();

+

+	template['html'] = '\

+<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">\

+<tr><td align="center">\

+<span id="{$editor_id}">IFRAME</span>\

+</td></tr>\

+<tr><td class="mceToolbar" align="center" height="1">\

+<img id="{$editor_id}_bold" src="{$themeurl}/images/{$lang_bold_img}" title="{$lang_bold_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Bold\')">\

+<img id="{$editor_id}_italic" src="{$themeurl}/images/{$lang_italic_img}" title="{$lang_italic_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Italic\')">\

+<img id="{$editor_id}_underline" src="{$themeurl}/images/{$lang_underline_img}" title="{$lang_underline_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Underline\')">\

+<img id="{$editor_id}_strikethrough" src="{$themeurl}/images/strikethrough.gif" title="{$lang_striketrough_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Strikethrough\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\

+<img id="{$editor_id}_left" src="{$themeurl}/images/left.gif" title="{$lang_justifyleft_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyLeft\')">\

+<img id="{$editor_id}_center" src="{$themeurl}/images/center.gif" title="{$lang_justifycenter_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyCenter\')">\

+<img id="{$editor_id}_right" src="{$themeurl}/images/right.gif" title="{$lang_justifyright_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyRight\')">\

+<img id="{$editor_id}_full" src="{$themeurl}/images/full.gif" title="{$lang_justifyfull_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyFull\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\

+<img src="{$themeurl}/images/outdent.gif" title="{$lang_outdent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Outdent\')">\

+<img src="{$themeurl}/images/indent.gif" title="{$lang_indent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Indent\')">\

+<br>\

+<img id="{$editor_id}_bullist" src="{$themeurl}/images/bullist.gif" title="{$lang_bullist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertUnorderedList\')">\

+<img id="{$editor_id}_numlist" src="{$themeurl}/images/numlist.gif" title="{$lang_numlist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertOrderedList\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" width="20" height="20" class="mceSeparatorLine">\

+<img src="{$themeurl}/images/undo.gif" title="{$lang_undo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Undo\')">\

+<img src="{$themeurl}/images/redo.gif" title="{$lang_redo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Redo\')">\

+<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\

+<img id="{$editor_id}_link" src="{$themeurl}/images/link.gif" title="{$lang_link_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceLink\', true)">\

+<img src="{$themeurl}/images/unlink.gif" title="{$lang_unlink_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'unlink\')">\

+<img id="{$editor_id}_image" src="{$themeurl}/images/image.gif" title="{$lang_image_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceImage\', true)">\

+<img src="{$themeurl}/images/cleanup.gif" title="{$lang_cleanup_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceCleanup\')">\

+<img src="{$themeurl}/images/help.gif" title="{$lang_help_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceHelp\')">\

+</td></tr>\

+</table>';

+

+	template['delta_width'] = 0;

+	template['delta_height'] = -40;

+

+	return template;

+}

+

+/**

+ * Insert link template function.

+ */

+function TinyMCE_default_getInsertLinkTemplate() {

+	var template = new Array();

+

+	template['file'] = 'link.htm';

+	template['width'] = 320;

+	template['height'] = 200;

+

+	// Language specific width and height addons

+	template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);

+	template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);

+

+	return template;

+}

+

+/**

+ * Insert image template function.

+ */

+function TinyMCE_default_getInsertImageTemplate() {

+	var template = new Array();

+

+	template['file'] = 'image.htm';

+	template['width'] = 360;

+	template['height'] = 200;

+

+	// Language specific width and height addons

+	template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);

+	template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);

+

+	return template;

+}

+

+function TinyMCE_default_handleNodeChange(editor_id, node) {

+	// Reset old states

+	tinyMCE.switchClassSticky(editor_id + '_left', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_right', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_center', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_full', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');

+	tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');

+

+	// Handle align attributes

+	alignNode = node;

+	breakOut = false;

+	do {

+		if (!alignNode.getAttribute || !alignNode.getAttribute('align'))

+			continue;

+

+		switch (alignNode.getAttribute('align').toLowerCase()) {

+			case "left":

+				tinyMCE.switchClassSticky(editor_id + '_left', 'mceButtonSelected');

+				breakOut = true;

+			break;

+

+			case "right":

+				tinyMCE.switchClassSticky(editor_id + '_right', 'mceButtonSelected');

+				breakOut = true;

+			break;

+

+			case "middle":

+			case "center":

+				tinyMCE.switchClassSticky(editor_id + '_center', 'mceButtonSelected');

+				breakOut = true;

+			break;

+

+			case "justify":

+				tinyMCE.switchClassSticky(editor_id + '_full', 'mceButtonSelected');

+				breakOut = true;

+			break;

+		}

+	} while (!breakOut && (alignNode = alignNode.parentNode));

+

+	// Handle elements

+	do {

+		switch (node.nodeName.toLowerCase()) {

+			case "b":

+			case "strong":

+				tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');

+			break;

+

+			case "i":

+			case "em":

+				tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected');

+			break;

+

+			case "u":

+				tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');

+			break;

+

+			case "strike":

+				tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');

+			break;

+			

+			case "ul":

+				tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');

+			break;

+

+			case "ol":

+				tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected');

+			break;

+		}

+	} while ((node = node.parentNode));

+}

 
-	template['html'] = '\
-<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">\
-<tr><td align="center">\
-<span id="{$editor_id}">IFRAME</span>\
-</td></tr>\
-<tr><td class="mceToolbar" align="center" height="1">\
-<img id="{$editor_id}_bold" src="{$themeurl}/images/{$lang_bold_img}" title="{$lang_bold_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Bold\')">\
-<img id="{$editor_id}_italic" src="{$themeurl}/images/{$lang_italic_img}" title="{$lang_italic_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Italic\')">\
-<img id="{$editor_id}_underline" src="{$themeurl}/images/{$lang_underline_img}" title="{$lang_underline_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Underline\')">\
-<img id="{$editor_id}_strikethrough" src="{$themeurl}/images/strikethrough.gif" title="{$lang_striketrough_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Strikethrough\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img id="{$editor_id}_left" src="{$themeurl}/images/left.gif" title="{$lang_justifyleft_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyLeft\')">\
-<img id="{$editor_id}_center" src="{$themeurl}/images/center.gif" title="{$lang_justifycenter_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyCenter\')">\
-<img id="{$editor_id}_right" src="{$themeurl}/images/right.gif" title="{$lang_justifyright_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyRight\')">\
-<img id="{$editor_id}_full" src="{$themeurl}/images/full.gif" title="{$lang_justifyfull_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'JustifyFull\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/outdent.gif" title="{$lang_outdent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Outdent\')">\
-<img src="{$themeurl}/images/indent.gif" title="{$lang_indent_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Indent\')">\
-<br>\
-<img id="{$editor_id}_bullist" src="{$themeurl}/images/bullist.gif" title="{$lang_bullist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertUnorderedList\')">\
-<img id="{$editor_id}_numlist" src="{$themeurl}/images/numlist.gif" title="{$lang_numlist_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertOrderedList\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" width="20" height="20" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/undo.gif" title="{$lang_undo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Undo\')">\
-<img src="{$themeurl}/images/redo.gif" title="{$lang_redo_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Redo\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1" height="15" class="mceSeparatorLine">\
-<img id="{$editor_id}_link" src="{$themeurl}/images/link.gif" title="{$lang_link_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceLink\', true)">\
-<img src="{$themeurl}/images/unlink.gif" title="{$lang_unlink_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'unlink\')">\
-<img id="{$editor_id}_image" src="{$themeurl}/images/image.gif" title="{$lang_image_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceImage\', true)">\
-<img src="{$themeurl}/images/cleanup.gif" title="{$lang_cleanup_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceCleanup\')">\
-<img src="{$themeurl}/images/help.gif" title="{$lang_help_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceHelp\')">\
-</td></tr>\
-</table>';
-
-	template['delta_width'] = 0;
-	template['delta_height'] = -40;
-
-	return template;
-}
-
-/**
- * Insert link template function.
- */
-function TinyMCE_default_getInsertLinkTemplate() {
-	var template = new Array();
-
-	template['file'] = 'link.htm';
-	template['width'] = 320;
-	template['height'] = 200;
-
-	// Language specific width and height addons
-	template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
-	template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
-
-	return template;
-}
-
-/**
- * Insert image template function.
- */
-function TinyMCE_default_getInsertImageTemplate() {
-	var template = new Array();
-
-	template['file'] = 'image.htm';
-	template['width'] = 360;
-	template['height'] = 200;
-
-	// Language specific width and height addons
-	template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
-	template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
-
-	return template;
-}
-
-function TinyMCE_default_handleNodeChange(editor_id, node) {
-	// Reset old states
-	tinyMCE.switchClassSticky(editor_id + '_left', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_right', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_center', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_full', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
-	tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
-
-	// Handle align attributes
-	alignNode = node;
-	breakOut = false;
-	do {
-		if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
-			continue;
-
-		switch (alignNode.getAttribute('align').toLowerCase()) {
-			case "left":
-				tinyMCE.switchClassSticky(editor_id + '_left', 'mceButtonSelected');
-				breakOut = true;
-			break;
-
-			case "right":
-				tinyMCE.switchClassSticky(editor_id + '_right', 'mceButtonSelected');
-				breakOut = true;
-			break;
-
-			case "middle":
-			case "center":
-				tinyMCE.switchClassSticky(editor_id + '_center', 'mceButtonSelected');
-				breakOut = true;
-			break;
-
-			case "justify":
-				tinyMCE.switchClassSticky(editor_id + '_full', 'mceButtonSelected');
-				breakOut = true;
-			break;
-		}
-	} while (!breakOut && (alignNode = alignNode.parentNode));
-
-	// Handle elements
-	do {
-		switch (node.nodeName.toLowerCase()) {
-			case "b":
-			case "strong":
-				tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
-			break;
-
-			case "i":
-			case "em":
-				tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonSelected');
-			break;
-
-			case "u":
-				tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonSelected');
-			break;
-
-			case "strike":
-				tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');
-			break;
-			
-			case "ul":
-				tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');
-			break;
-
-			case "ol":
-				tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonSelected');
-			break;
-		}
-	} while ((node = node.parentNode));
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/editor_ui.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/editor_ui.css
@@ -1,100 +1,100 @@
-.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
-	margin-top: 1px;
-	margin-left: 1px;
+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {

+	margin-top: 1px;

+	margin-left: 1px;

+}

+

+.mceButtonNormal {

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceButtonOver {

+/*	border-top: 1px solid buttonhighlight;

+	border-left: 1px solid buttonhighlight;

+	border-bottom: 1px solid buttonshadow;

+	border-right: 1px solid buttonshadow;*/

+	border: 1px solid #0A246A;

+	cursor: arrow;

+	background-color: #B6BDD2;

+}

+

+.mceButtonDown {

+/*	border-bottom: 1px solid buttonhighlight;

+	border-right: 1px solid buttonhighlight;

+	border-top: 1px solid buttonshadow;

+	border-left: 1px solid buttonshadow;*/

+	cursor: arrow;

+	border: 1px solid #0A246A;

+	background-color: #8592B5;

+}

+

+.mceButtonDisabled {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceSeparator {

+	border-top: 1px solid buttonhighlight;

+	border-left: 1px solid buttonhighlight;

+	border-bottom: 1px solid buttonshadow;

+	border-right: 1px solid buttonshadow;

+	margin-right: 2px;

+	margin-left: 2px;

+}

+

+.mceSeparatorLine {

+	margin:2px;

+	margin-left: 4px;

+	background-color: #F0F0EE;

+	border-top: 1px solid buttonshadow;

+	border-left: 1px solid buttonshadow;

+	border-bottom: 1px solid buttonhighlight;

+	border-right: 1px solid buttonhighlight;

+	width: 0px;

+	height: 15px;

+}

+

+.mceSelectList {

+	font-family: "MS Sans Serif";

+	font-size: 7pt;

+	font-weight: normal;

+	margin-top: 2px;

+}

+

+.mceLabel, .mceLabelDisabled {

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+}

+

+.mceLabel {

+	color: #000000;

+}

+

+.mceLabelDisabled {

+	cursor: text;

+	color: #999999;

+}

+

+.mceEditor {

+	background: #F0F0EE;

+	border: 1px solid #cccccc;

+}

+

+.mceEditorArea {

+	font-family: "MS Sans Serif";

+	background: #FFFFFF;

+}

+

+.mceToolbar {

+	background: #F0F0EE;

+	border-top: 1px solid #cccccc;

 }
-
-.mceButtonNormal {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceButtonOver {
-/*	border-top: 1px solid buttonhighlight;
-	border-left: 1px solid buttonhighlight;
-	border-bottom: 1px solid buttonshadow;
-	border-right: 1px solid buttonshadow;*/
-	border: 1px solid #0A246A;
-	cursor: arrow;
-	background-color: #B6BDD2;
-}
-
-.mceButtonDown {
-/*	border-bottom: 1px solid buttonhighlight;
-	border-right: 1px solid buttonhighlight;
-	border-top: 1px solid buttonshadow;
-	border-left: 1px solid buttonshadow;*/
-	cursor: arrow;
-	border: 1px solid #0A246A;
-	background-color: #8592B5;
-}
-
-.mceButtonDisabled {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceSeparator {
-	border-top: 1px solid buttonhighlight;
-	border-left: 1px solid buttonhighlight;
-	border-bottom: 1px solid buttonshadow;
-	border-right: 1px solid buttonshadow;
-	margin-right: 2px;
-	margin-left: 2px;
-}
-
-.mceSeparatorLine {
-	margin:2px;
-	margin-left: 4px;
-	background-color: #F0F0EE;
-	border-top: 1px solid buttonshadow;
-	border-left: 1px solid buttonshadow;
-	border-bottom: 1px solid buttonhighlight;
-	border-right: 1px solid buttonhighlight;
-	width: 0px;
-	height: 15px;
-}
-
-.mceSelectList {
-	font-family: "MS Sans Serif";
-	font-size: 7pt;
-	font-weight: normal;
-	margin-top: 2px;
-}
-
-.mceLabel, .mceLabelDisabled {
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-}
-
-.mceLabel {
-	color: #000000;
-}
-
-.mceLabelDisabled {
-	cursor: text;
-	color: #999999;
-}
-
-.mceEditor {
-	background: #F0F0EE;
-	border: 1px solid #cccccc;
-}
-
-.mceEditorArea {
-	font-family: "MS Sans Serif";
-	background: #FFFFFF;
-}
-
-.mceToolbar {
-	background: #F0F0EE;
-	border-top: 1px solid #cccccc;
-}

--- a/tinymce/2/jscripts/tiny_mce/themes/default/image.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/image.htm
@@ -1,58 +1,58 @@
-<html>
-<head>
-<title>{$lang_insert_image_title}</title>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
-	function insertImage() {
-		if (window.opener) {
-			var src = document.forms[0].src.value;
-			var alt = document.forms[0].alt.value;
+<html>

+<head>

+<title>{$lang_insert_image_title}</title>

+<script language="javascript" src="../../tiny_mce_popup.js"></script>

+<script language="javascript">

+	function insertImage() {

+		if (window.opener) {

+			var src = document.forms[0].src.value;

+			var alt = document.forms[0].alt.value;

+

+			window.opener.tinyMCE.insertImage(src, alt);

+			top.close();

+		}

+	}

+

+	function init() {

+		var formObj = document.forms[0];

+

+		formObj.src.value = tinyMCE.getWindowArg('src');

+		formObj.alt.value = tinyMCE.getWindowArg('alt');

+		formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 

+

+		window.focus();

+	}

+

+	function cancelAction() {

+		top.close();

+	}

+</script>

+</head>

+<body onload="window.focus();init();">

+<form onsubmit="insertImage();return false;">

+  <table border="0" cellpadding="0" cellspacing="0" width="100%">

+    <tr>

+      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">

+          <tr>

+            <td colspan="2" class="title">{$lang_insert_image_title}</td>

+          </tr>

+          <tr>

+            <td>{$lang_insert_image_src}:</td>

+            <td><input name="src" type="text" id="src" value="" style="width: 200px"></td>

+          </tr>

+          <tr>

+            <td>{$lang_insert_image_alt}:</td>

+            <td><input name="alt" type="text" id="alt" value="" style="width: 200px"></td>

+          </tr>

+          <tr>

+            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();">

+            </td>

+            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>

+          </tr>

+        </table></td>

+    </tr>

+  </table>

+</form>

+</body>

+</html>

 
-			window.opener.tinyMCE.insertImage(src, alt);
-			top.close();
-		}
-	}
-
-	function init() {
-		var formObj = document.forms[0];
-
-		formObj.src.value = tinyMCE.getWindowArg('src');
-		formObj.alt.value = tinyMCE.getWindowArg('alt');
-		formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
-
-		window.focus();
-	}
-
-	function cancelAction() {
-		top.close();
-	}
-</script>
-</head>
-<body onload="window.focus();init();">
-<form onsubmit="insertImage();return false;">
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
-          <tr>
-            <td colspan="2" class="title">{$lang_insert_image_title}</td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_image_src}:</td>
-            <td><input name="src" type="text" id="src" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_image_alt}:</td>
-            <td><input name="alt" type="text" id="alt" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertImage();">
-            </td>
-            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>
-          </tr>
-        </table></td>
-    </tr>
-  </table>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/default/link.htm
+++ b/tinymce/2/jscripts/tiny_mce/themes/default/link.htm
@@ -1,65 +1,65 @@
-<html>
-<head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
-	function init() {
-		for (var i=0; i<document.forms[0].target.options.length; i++) {
-			var option = document.forms[0].target.options[i];
+<html>

+<head>

+<title>{$lang_insert_link_title}</title>

+<script language="javascript" src="../../tiny_mce_popup.js"></script>

+<script language="javascript">

+	function init() {

+		for (var i=0; i<document.forms[0].target.options.length; i++) {

+			var option = document.forms[0].target.options[i];

+

+			if (option.value == tinyMCE.getWindowArg('target'))

+				option.selected = true;

+		}

+

+		document.forms[0].href.value = tinyMCE.getWindowArg('href');

+		document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 

+

+		window.focus();

+	}

+

+	function insertLink() {

+		if (window.opener) {

+			var href = document.forms[0].href.value;

+			var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;

+

+			window.opener.tinyMCE.insertLink(href, target);

+			top.close();

+		}

+	}

+

+	function cancelAction() {

+		top.close();

+	}

+</script>

+</head>

+<body onload="init();">

+<form onsubmit="insertLink();return false;">

+  <table border="0" cellpadding="0" cellspacing="0" width="100%">

+    <tr>

+      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">

+          <tr>

+            <td colspan="2" class="title">{$lang_insert_link_title}</td>

+          </tr>

+          <tr>

+            <td>{$lang_insert_link_url}:</td>

+            <td><input name="href" type="text" id="href" value="" style="width: 200px"></td>

+          </tr>

+          <tr>

+            <td>{$lang_insert_link_target}:</td>

+            <td><select name="target" style="width: 200px">

+                <option value="_self">{$lang_insert_link_target_same}</option>

+                <option value="_blank">{$lang_insert_link_target_blank}</option>

+            </select></td>

+          </tr>

+          <tr>

+            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();">

+            </td>

+            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>

+          </tr>

+        </table></td>

+    </tr>

+  </table>

+</form>

+</body>

+</html>

 
-			if (option.value == tinyMCE.getWindowArg('target'))
-				option.selected = true;
-		}
-
-		document.forms[0].href.value = tinyMCE.getWindowArg('href');
-		document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
-
-		window.focus();
-	}
-
-	function insertLink() {
-		if (window.opener) {
-			var href = document.forms[0].href.value;
-			var target = document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
-
-			window.opener.tinyMCE.insertLink(href, target);
-			top.close();
-		}
-	}
-
-	function cancelAction() {
-		top.close();
-	}
-</script>
-</head>
-<body onload="init();">
-<form onsubmit="insertLink();return false;">
-  <table border="0" cellpadding="0" cellspacing="0" width="100%">
-    <tr>
-      <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
-          <tr>
-            <td colspan="2" class="title">{$lang_insert_link_title}</td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_link_url}:</td>
-            <td><input name="href" type="text" id="href" value="" style="width: 200px"></td>
-          </tr>
-          <tr>
-            <td>{$lang_insert_link_target}:</td>
-            <td><select name="target" style="width: 200px">
-                <option value="_self">{$lang_insert_link_target_same}</option>
-                <option value="_blank">{$lang_insert_link_target_blank}</option>
-            </select></td>
-          </tr>
-          <tr>
-            <td><input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertLink();">
-            </td>
-            <td align="right"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="cancelAction();"></td>
-          </tr>
-        </table></td>
-    </tr>
-  </table>
-</form>
-</body>
-</html>
-

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/css/editor_content.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/css/editor_content.css
@@ -1,26 +1,26 @@
-body, td, pre {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
+body, td, pre {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+body {

+	background-color: #FFFFFF;

+}

+

+.mceVisualAid {

+	border: 1px dashed #BBBBBB;

+}

+

+/* MSIE specific */

+

+* html body {

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;	

+}

 
-body {
-	background-color: #FFFFFF;
-}
-
-.mceVisualAid {
-	border: 1px dashed #BBBBBB;
-}
-
-/* MSIE specific */
-
-* html body {
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;	
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/css/editor_popup.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/css/editor_popup.css
@@ -1,41 +1,41 @@
-body {
-	background-color: #F0F0EE;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
+body {

+	background-color: #F0F0EE;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+}

+

+input {

+	background: #FFFFFF;

+	border: 1px solid #cccccc;

+}

+

+td, input, select, textarea {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+input, select, textarea {

+	border: 1px solid #808080;

+}

+

+.input_noborder {

+	border: 0;

+}

+

+.title {

+	font-size: 12px;

+	font-weight: bold;

 }
-
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-}
-
-input {
-	background: #FFFFFF;
-	border: 1px solid #cccccc;
-}
-
-td, input, select, textarea {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-input, select, textarea {
-	border: 1px solid #808080;
-}
-
-.input_noborder {
-	border: 0;
-}
-
-.title {
-	font-size: 12px;
-	font-weight: bold;
-}

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/css/editor_ui.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/css/editor_ui.css
@@ -1,126 +1,126 @@
-.mceSeparatorLine {
-	border: 0;
-	padding: 0;
-	margin-left: 4px;
-	margin-right: 2px;
-}
+.mceSeparatorLine {

+	border: 0;

+	padding: 0;

+	margin-left: 4px;

+	margin-right: 2px;

+}

+

+.mceSelectList {

+	font-family: "MS Sans Serif";

+	font-size: 7pt;

+	font-weight: normal;

+	margin-top: 2px;

+}

+

+.mceLabel, .mceLabelDisabled {

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+}

+

+.mceLabel {

+	color: #000000;

+}

+

+.mceLabelDisabled {

+	cursor: text;

+	color: #999999;

+}

+

+.mceEditor {

+	background: #F0F0EE;

+	border: 1px solid #cccccc;

+}

+

+.mceEditorArea {

+	font-family: "MS Sans Serif";

+	background: #FFFFFF;

+}

+

+.mceToolbar {

+	background: #F0F0EE;

+	border-top: 1px solid #cccccc;

+	line-height: 1px;

+	font-size: 1px;

+	padding-bottom: 1px;

+}

+

+.mceEditorIframe {

+	border: 0;

+}

+

+/* Button CSS rules */

+

+a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {

+	width: 20px;

+	height: 20px;

+	cursor: default;

+	margin-top: 1px;

+	margin-left: 1px;

+}

+

+a.mceButtonDisabled img {

+	border: 0 !important;

+}

+

+a.mceButtonNormal img, a.mceButtonSelected img {

+	border: 1px solid #F0F0EE !important;

+}

+

+a.mceButtonSelected img {

+	border: 1px solid #C0C0BB !important;

+}

+

+a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {

+	border: 1px solid #0A246A !important;

+	cursor: default;

+	background-color: #B6BDD2;

+}

+

+a.mceButtonDisabled img {

+	-moz-opacity:0.3;

+	opacity: 0.3;

+	border: 1px solid #F0F0EE !important;

+	cursor: default;

+}

+

+a.mceTiledButton img {

+	background-image: url('../images/buttons.gif');

+	background-repeat: no-repeat;

+}

+

+/* MSIE specific rules */

+

+* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {

+	border: 0px !important;

+	margin-top: 2px;

+	margin-bottom: 1px;

+}

+

+* html a.mceButtonDisabled img {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	border: 0px !important;

+}

+

+* html a.mceButtonDisabled {

+	border: 1px solid #F0F0EE !important;

+}

+

+* html a.mceButtonNormal, * html a.mceButtonSelected {

+	border: 1px solid #F0F0EE;

+	cursor: default;

+}

+

+* html a.mceButtonSelected {

+	border: 1px solid #C0C0BB;

+}

+

+* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {

+	border: 1px solid #0A246A;

+	cursor: default;

+	background-color: #B6BDD2;

+}

+

+* html .mceSelectList {

+	margin-top: 2px;

+}

 
-.mceSelectList {
-	font-family: "MS Sans Serif";
-	font-size: 7pt;
-	font-weight: normal;
-	margin-top: 2px;
-}
-
-.mceLabel, .mceLabelDisabled {
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-}
-
-.mceLabel {
-	color: #000000;
-}
-
-.mceLabelDisabled {
-	cursor: text;
-	color: #999999;
-}
-
-.mceEditor {
-	background: #F0F0EE;
-	border: 1px solid #cccccc;
-}
-
-.mceEditorArea {
-	font-family: "MS Sans Serif";
-	background: #FFFFFF;
-}
-
-.mceToolbar {
-	background: #F0F0EE;
-	border-top: 1px solid #cccccc;
-	line-height: 1px;
-	font-size: 1px;
-	padding-bottom: 1px;
-}
-
-.mceEditorIframe {
-	border: 0;
-}
-
-/* Button CSS rules */
-
-a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {
-	width: 20px;
-	height: 20px;
-	cursor: default;
-	margin-top: 1px;
-	margin-left: 1px;
-}
-
-a.mceButtonDisabled img {
-	border: 0 !important;
-}
-
-a.mceButtonNormal img, a.mceButtonSelected img {
-	border: 1px solid #F0F0EE !important;
-}
-
-a.mceButtonSelected img {
-	border: 1px solid #C0C0BB !important;
-}
-
-a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {
-	border: 1px solid #0A246A !important;
-	cursor: default;
-	background-color: #B6BDD2;
-}
-
-a.mceButtonDisabled img {
-	-moz-opacity:0.3;
-	opacity: 0.3;
-	border: 1px solid #F0F0EE !important;
-	cursor: default;
-}
-
-a.mceTiledButton img {
-	background-image: url('../images/buttons.gif');
-	background-repeat: no-repeat;
-}
-
-/* MSIE specific rules */
-
-* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {
-	border: 0px !important;
-	margin-top: 2px;
-	margin-bottom: 1px;
-}
-
-* html a.mceButtonDisabled img {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	border: 0px !important;
-}
-
-* html a.mceButtonDisabled {
-	border: 1px solid #F0F0EE !important;
-}
-
-* html a.mceButtonNormal, * html a.mceButtonSelected {
-	border: 1px solid #F0F0EE;
-	cursor: default;
-}
-
-* html a.mceButtonSelected {
-	border: 1px solid #C0C0BB;
-}
-
-* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {
-	border: 1px solid #0A246A;
-	cursor: default;
-	background-color: #B6BDD2;
-}
-
-* html .mceSelectList {
-	margin-top: 2px;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/editor_content.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/editor_content.css
@@ -1,28 +1,28 @@
-body {
-	background-color: #FFFFFF;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
-}
+body {

+	background-color: #FFFFFF;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+pre {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+.mceVisualAid {

+	border: 1px dashed #BBBBBB;

+}

 
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-pre {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-.mceVisualAid {
-	border: 1px dashed #BBBBBB;
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/editor_popup.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/editor_popup.css
@@ -1,41 +1,41 @@
-body {
-	background-color: #F0F0EE;
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;
+body {

+	background-color: #F0F0EE;

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+	scrollbar-3dlight-color: #F0F0EE;

+	scrollbar-arrow-color: #676662;

+	scrollbar-base-color: #F0F0EE;

+	scrollbar-darkshadow-color: #DDDDDD;

+	scrollbar-face-color: #E0E0DD;

+	scrollbar-highlight-color: #F0F0EE;

+	scrollbar-shadow-color: #F0F0EE;

+	scrollbar-track-color: #F5F5F5;

+}

+

+td {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 11px;

+}

+

+input {

+	background: #FFFFFF;

+	border: 1px solid #cccccc;

+}

+

+td, input, select, textarea {

+	font-family: Verdana, Arial, Helvetica, sans-serif;

+	font-size: 10px;

+}

+

+input, select, textarea {

+	border: 1px solid #808080;

+}

+

+.input_noborder {

+	border: 0px solid #808080;

+}

+

+.title {

+	font-size: 12px;

+	font-weight: bold;

 }
-
-td {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 11px;
-}
-
-input {
-	background: #FFFFFF;
-	border: 1px solid #cccccc;
-}
-
-td, input, select, textarea {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
-
-input, select, textarea {
-	border: 1px solid #808080;
-}
-
-.input_noborder {
-	border: 0px solid #808080;
-}
-
-.title {
-	font-size: 12px;
-	font-weight: bold;
-}

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/editor_template.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/editor_template.js
@@ -1,1 +1,1 @@
-(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.baseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})();
+var TinyMCE_SimpleTheme={_buttonMap:'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',getEditorTemplate:function(){var html='';html+='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';html+='<tr><td align="center">';html+='<span id="{$editor_id}">IFRAME</span>';html+='</td></tr>';html+='<tr><td class="mceToolbar" align="center" height="1">';html+=tinyMCE.getButtonHTML('bold','lang_bold_desc','{$themeurl}/images/{$lang_bold_img}','Bold');html+=tinyMCE.getButtonHTML('italic','lang_italic_desc','{$themeurl}/images/{$lang_italic_img}','Italic');html+=tinyMCE.getButtonHTML('underline','lang_underline_desc','{$themeurl}/images/{$lang_underline_img}','Underline');html+=tinyMCE.getButtonHTML('strikethrough','lang_striketrough_desc','{$themeurl}/images/strikethrough.gif','Strikethrough');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('undo','lang_undo_desc','{$themeurl}/images/undo.gif','Undo');html+=tinyMCE.getButtonHTML('redo','lang_redo_desc','{$themeurl}/images/redo.gif','Redo');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('cleanup','lang_cleanup_desc','{$themeurl}/images/cleanup.gif','mceCleanup');html+='<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';html+=tinyMCE.getButtonHTML('bullist','lang_bullist_desc','{$themeurl}/images/bullist.gif','InsertUnorderedList');html+=tinyMCE.getButtonHTML('numlist','lang_numlist_desc','{$themeurl}/images/numlist.gif','InsertOrderedList');html+='</td></tr></table>';return{delta_width:0,delta_height:20,html:html}},handleNodeChange:function(editor_id,node){tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');do{switch(node.nodeName.toLowerCase()){case"b":case"strong":tinyMCE.switchClass(editor_id+'_bold','mceButtonSelected');break;case"i":case"em":tinyMCE.switchClass(editor_id+'_italic','mceButtonSelected');break;case"u":tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected');break;case"strike":tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonSelected');break;case"ul":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"ol":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break}}while((node=node.parentNode)!=null)}};tinyMCE.addTheme("simple",TinyMCE_SimpleTheme);tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/editor_template_src.js
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/editor_template_src.js
@@ -1,85 +1,85 @@
-/**
- * $Id: editor_template_src.js 752 2008-03-27 21:51:25Z spocke $
- *
- * This file is meant to showcase how to create a simple theme. The advanced
- * theme is more suitable for production use.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ */

+

+var TinyMCE_SimpleTheme = {

+	// List of button ids in tile map

+	_buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',

+

+	getEditorTemplate : function() {

+		var html = '';

+

+		html += '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';

+		html += '<tr><td align="center">';

+		html += '<span id="{$editor_id}">IFRAME</span>';

+		html += '</td></tr>';

+		html += '<tr><td class="mceToolbar" align="center" height="1">';

+		html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold');

+		html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic');

+		html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline');

+		html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough');

+		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';

+		html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo');

+		html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo');

+		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';

+		html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup');

+		html += '<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';

+		html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList');

+		html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList');

+		html += '</td></tr></table>';

+

+		return {

+			delta_width : 0,

+			delta_height : 20,

+			html : html

+		};

+	},

+

+	handleNodeChange : function(editor_id, node) {

+		// Reset old states

+		tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal');

+		tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal');

+

+		// Handle elements

+		do {

+			switch (node.nodeName.toLowerCase()) {

+				case "b":

+				case "strong":

+					tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected');

+				break;

+

+				case "i":

+				case "em":

+					tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected');

+				break;

+

+				case "u":

+					tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');

+				break;

+

+				case "strike":

+					tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected');

+				break;

+				

+				case "ul":

+					tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');

+				break;

+

+				case "ol":

+					tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');

+				break;

+			}

+		} while ((node = node.parentNode) != null);

+	}

+};

+

+tinyMCE.addTheme("simple", TinyMCE_SimpleTheme);

+tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap);

 
-(function() {
-	var DOM = tinymce.DOM;
-
-	// Tell it to load theme specific language pack(s)
-	tinymce.ThemeManager.requireLangPack('simple');
-
-	tinymce.create('tinymce.themes.SimpleTheme', {
-		init : function(ed, url) {
-			var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;
-
-			t.editor = ed;
-
-			ed.onInit.add(function() {
-				ed.onNodeChange.add(function(ed, cm) {
-					tinymce.each(states, function(c) {
-						cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));
-					});
-				});
-
-				ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css");
-			});
-
-			DOM.loadCSS((s.editor_css ? ed.baseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");
-		},
-
-		renderUI : function(o) {
-			var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;
-
-			n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);
-			n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});
-			n = tb = DOM.add(n, 'tbody');
-
-			// Create iframe container
-			n = DOM.add(tb, 'tr');
-			n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});
-
-			// Create toolbar container
-			n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});
-
-			// Create toolbar
-			tb = t.toolbar = cf.createToolbar("tools1");
-			tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));
-			tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));
-			tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));
-			tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));
-			tb.add(cf.createSeparator());
-			tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));
-			tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));
-			tb.add(cf.createSeparator());
-			tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));
-			tb.add(cf.createSeparator());
-			tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));
-			tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));
-			tb.renderTo(n);
-
-			return {
-				iframeContainer : ic,
-				editorContainer : ed.id + '_container',
-				sizeContainer : sc,
-				deltaHeight : -20
-			};
-		},
-
-		getInfo : function() {
-			return {
-				longname : 'Simple theme',
-				author : 'Moxiecode Systems AB',
-				authorurl : 'http://tinymce.moxiecode.com',
-				version : tinymce.majorVersion + "." + tinymce.minorVersion
-			}
-		}
-	});
-
-	tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);
-})();

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/editor_ui.css
+++ b/tinymce/2/jscripts/tiny_mce/themes/simple/editor_ui.css
@@ -1,100 +1,100 @@
-.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
-	margin-top: 1px;
-	margin-left: 1px;
+.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {

+	margin-top: 1px;

+	margin-left: 1px;

+}

+

+.mceButtonNormal {

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceButtonOver {

+	border: 1px solid #0A246A;

+	cursor: arrow;

+	background-color: #B6BDD2;

+}

+

+.mceButtonDown {

+	cursor: arrow;

+	border: 1px solid #0A246A;

+	background-color: #8592B5;

+}

+

+.mceButtonSelected {

+	border: 1px solid;

+	border-color: #C0C0BB;

+	cursor: arrow;

+}

+

+.mceButtonDisabled {

+	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);

+	-moz-opacity:0.3;

+	opacity: 0.3;

+	border-top: 1px solid;

+	border-left: 1px solid;

+	border-bottom: 1px solid;

+	border-right: 1px solid;

+	border-color: #F0F0EE;

+	cursor: arrow;

+}

+

+.mceSeparator {

+	border-top: 1px solid buttonhighlight;

+	border-left: 1px solid buttonhighlight;

+	border-bottom: 1px solid buttonshadow;

+	border-right: 1px solid buttonshadow;

+	margin-right: 2px;

+	margin-left: 2px;

+}

+

+.mceSeparatorLine {

+	margin:2px;

+	margin-left: 4px;

+	background-color: #F0F0EE;

+	border-top: 1px solid buttonshadow;

+	border-left: 1px solid buttonshadow;

+	border-bottom: 1px solid buttonhighlight;

+	border-right: 1px solid buttonhighlight;

+	width: 0px;

+	height: 15px;

+}

+

+.mceSelectList {

+	font-family: "MS Sans Serif";

+	font-size: 7pt;

+	font-weight: normal;

+	margin-top: 2px;

+}

+

+.mceLabel, .mceLabelDisabled {

+	font-family: "MS Sans Serif";

+	font-size: 9pt;

+}

+

+.mceLabel {

+	color: #000000;

+}

+

+.mceLabelDisabled {

+	cursor: text;

+	color: #999999;

+}

+

+.mceEditor {

+	background: #F0F0EE;

+	border: 1px solid #cccccc;

+}

+

+.mceEditorArea {

+	font-family: "MS Sans Serif";

+	background: #FFFFFF;

+}

+

+.mceToolbar {

+	background: #F0F0EE;

+	border-top: 1px solid #cccccc;

 }
-
-.mceButtonNormal {
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceButtonOver {
-	border: 1px solid #0A246A;
-	cursor: arrow;
-	background-color: #B6BDD2;
-}
-
-.mceButtonDown {
-	cursor: arrow;
-	border: 1px solid #0A246A;
-	background-color: #8592B5;
-}
-
-.mceButtonSelected {
-	border: 1px solid;
-	border-color: #C0C0BB;
-	cursor: arrow;
-}
-
-.mceButtonDisabled {
-	filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-	-moz-opacity:0.3;
-	opacity: 0.3;
-	border-top: 1px solid;
-	border-left: 1px solid;
-	border-bottom: 1px solid;
-	border-right: 1px solid;
-	border-color: #F0F0EE;
-	cursor: arrow;
-}
-
-.mceSeparator {
-	border-top: 1px solid buttonhighlight;
-	border-left: 1px solid buttonhighlight;
-	border-bottom: 1px solid buttonshadow;
-	border-right: 1px solid buttonshadow;
-	margin-right: 2px;
-	margin-left: 2px;
-}
-
-.mceSeparatorLine {
-	margin:2px;
-	margin-left: 4px;
-	background-color: #F0F0EE;
-	border-top: 1px solid buttonshadow;
-	border-left: 1px solid buttonshadow;
-	border-bottom: 1px solid buttonhighlight;
-	border-right: 1px solid buttonhighlight;
-	width: 0px;
-	height: 15px;
-}
-
-.mceSelectList {
-	font-family: "MS Sans Serif";
-	font-size: 7pt;
-	font-weight: normal;
-	margin-top: 2px;
-}
-
-.mceLabel, .mceLabelDisabled {
-	font-family: "MS Sans Serif";
-	font-size: 9pt;
-}
-
-.mceLabel {
-	color: #000000;
-}
-
-.mceLabelDisabled {
-	cursor: text;
-	color: #999999;
-}
-
-.mceEditor {
-	background: #F0F0EE;
-	border: 1px solid #cccccc;
-}
-
-.mceEditorArea {
-	font-family: "MS Sans Serif";
-	background: #FFFFFF;
-}
-
-.mceToolbar {
-	background: #F0F0EE;
-	border-top: 1px solid #cccccc;
-}

 Binary files a/tinymce/2/jscripts/tiny_mce/themes/simple/img/icons.gif and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/themes/simple/langs/en.js
+++ /dev/null
@@ -1,11 +1,1 @@
-tinyMCE.addI18n('en.simple',{
-bold_desc:"Bold (Ctrl+B)",
-italic_desc:"Italic (Ctrl+I)",
-underline_desc:"Underline (Ctrl+U)",
-striketrough_desc:"Strikethrough",
-bullist_desc:"Unordered list",
-numlist_desc:"Ordered list",
-undo_desc:"Undo (Ctrl+Z)",
-redo_desc:"Redo (Ctrl+Y)",
-cleanup_desc:"Cleanup messy code"
-});
+

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/skins/default/content.css
+++ /dev/null
@@ -1,26 +1,1 @@
-body, td, pre {
-	font-family: Verdana, Arial, Helvetica, sans-serif;
-	font-size: 10px;
-}
 
-body {
-	background-color: #FFFFFF;
-}
-
-.mceVisualAid {
-	border: 1px dashed #BBBBBB;
-}
-
-/* MSIE specific */
-
-* html body {
-	scrollbar-3dlight-color: #F0F0EE;
-	scrollbar-arrow-color: #676662;
-	scrollbar-base-color: #F0F0EE;
-	scrollbar-darkshadow-color: #DDDDDD;
-	scrollbar-face-color: #E0E0DD;
-	scrollbar-highlight-color: #F0F0EE;
-	scrollbar-shadow-color: #F0F0EE;
-	scrollbar-track-color: #F5F5F5;	
-}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/skins/default/ui.css
+++ /dev/null
@@ -1,33 +1,1 @@
-/* Reset */
-.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
 
-/* Containers */
-.defaultSimpleSkin {position:relative}
-.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
-.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
-.defaultSimpleSkin .mceToolbar {height:24px;}
-
-/* Layout */
-.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-
-/* Button */
-.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
-.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}
-
-/* Separator */
-.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
-
-/* Theme */
-.defaultSimpleSkin span.mce_bold {background-position:0 0}
-.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
-.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
-.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
-.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
-.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
-.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
-

--- a/tinymce/2/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css
+++ /dev/null
@@ -1,18 +1,1 @@
-body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
 
-body {background: #FFF;}
-.mceVisualAid {border: 1px dashed #BBB;}
-
-/* IE */
-
-* html body {
-scrollbar-3dlight-color: #F0F0EE;
-scrollbar-arrow-color: #676662;
-scrollbar-base-color: #F0F0EE;
-scrollbar-darkshadow-color: #DDDDDD;
-scrollbar-face-color: #E0E0DD;
-scrollbar-highlight-color: #F0F0EE;
-scrollbar-shadow-color: #F0F0EE;
-scrollbar-track-color: #F5F5F5;	
-}
-

 Binary files a/tinymce/2/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png and /dev/null differ
--- a/tinymce/2/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
+++ /dev/null
@@ -1,36 +1,1 @@
-/* Reset */
-.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
 
-/* Containers */
-.o2k7SimpleSkin {position:relative}
-.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}
-.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}
-.o2k7SimpleSkin .mceToolbar {height:26px;}
-
-/* Layout */
-.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }
-.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
-.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}
-.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-
-/* Button */
-.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
-.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}
-.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
-.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}
-.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}
-
-/* Separator */
-.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
-
-/* Theme */
-.o2k7SimpleSkin span.mce_bold {background-position:0 0}
-.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}
-.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}
-.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}
-.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}
-.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}
-.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}
-.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
-.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
-

--- a/tinymce/2/jscripts/tiny_mce/tiny_mce.js
+++ b/tinymce/2/jscripts/tiny_mce/tiny_mce.js
@@ -1,1 +1,1 @@
-var tinymce={majorVersion:'3',minorVersion:'0.9',releaseDate:'2008-06-02',_init:function(){var t=this,d=document,w=window,na=navigator,ua=na.userAgent,i,nl,n,base,p,v;t.isOpera=w.opera&&opera.buildNumber;t.isWebKit=/WebKit/.test(ua);t.isOldWebKit=t.isWebKit&&!w.getSelection().getRangeAt;t.isIE=!t.isWebKit&&!t.isOpera&&(/MSIE/gi).test(ua)&&(/Explorer/gi).test(na.appName);t.isIE6=t.isIE&&/MSIE [56]/.test(ua);t.isGecko=!t.isWebKit&&/Gecko/.test(ua);t.isMac=ua.indexOf('Mac')!=-1;if(w.tinyMCEPreInit){t.suffix=tinyMCEPreInit.suffix;t.baseURL=tinyMCEPreInit.base;t.query=tinyMCEPreInit.query;return;}t.suffix='';nl=d.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(v=nl[i].href){if(/^https?:\/\/[^\/]+$/.test(v))v+='/';base=v?v.match(/.*\//)[0]:'';}}function getBase(n){if(n.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)){if(/_(src|dev)\.js/g.test(n.src))t.suffix='_src';if((p=n.src.indexOf('?'))!=-1)t.query=n.src.substring(p+1);t.baseURL=n.src.substring(0,n.src.lastIndexOf('/'));if(base&&t.baseURL.indexOf('://')==-1)t.baseURL=base+t.baseURL;return t.baseURL;}return null;};nl=d.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}n=d.getElementsByTagName('head')[0];if(n){nl=n.getElementsByTagName('script');for(i=0;i<nl.length;i++){if(getBase(nl[i]))return;}}return;},is:function(o,t){var n=typeof(o);if(!t)return n!='undefined';if(t=='array'&&(o instanceof Array))return true;return n==t;},each:function(o,cb,s){var n,l;if(!o)return 0;s=s||o;if(typeof(o.length)!='undefined'){for(n=0,l=o.length;n<l;n++){if(cb.call(s,o[n],n,o)===false)return 0;}}else{for(n in o){if(o.hasOwnProperty(n)){if(cb.call(s,o[n],n,o)===false)return 0;}}}return 1;},map:function(a,f){var o=[];tinymce.each(a,function(v){o.push(f(v));});return o;},grep:function(a,f){var o=[];tinymce.each(a,function(v){if(!f||f(v))o.push(v);});return o;},inArray:function(a,v){var i,l;if(a){for(i=0,l=a.length;i<l;i++){if(a[i]===v)return i;}}return-1;},extend:function(o,e){var i,a=arguments;for(i=1;i<a.length;i++){e=a[i];tinymce.each(e,function(v,n){if(typeof(v)!=='undefined')o[n]=v;});}return o;},trim:function(s){return(s?''+s:'').replace(/^\s*|\s*$/g,'');},create:function(s,p){var t=this,sp,ns,cn,scn,c,de=0;s=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);cn=s[3].match(/(^|\.)(\w+)$/i)[2];ns=t.createNS(s[3].replace(/\.\w+$/,''));if(ns[cn])return;if(s[2]=='static'){ns[cn]=p;if(this.onCreate)this.onCreate(s[2],s[3],ns[cn]);return;}if(!p[cn]){p[cn]=function(){};de=1;}ns[cn]=p[cn];t.extend(ns[cn].prototype,p);if(s[5]){sp=t.resolve(s[5]).prototype;scn=s[5].match(/\.(\w+)$/i)[1];c=ns[cn];if(de){ns[cn]=function(){return sp[scn].apply(this,arguments);};}else{ns[cn]=function(){this.parent=sp[scn];return c.apply(this,arguments);};}ns[cn].prototype[cn]=ns[cn];t.each(sp,function(f,n){ns[cn].prototype[n]=sp[n];});t.each(p,function(f,n){if(sp[n]){ns[cn].prototype[n]=function(){this.parent=sp[n];return f.apply(this,arguments);};}else{if(n!=cn)ns[cn].prototype[n]=f;}});}t.each(p['static'],function(f,n){ns[cn][n]=f;});if(this.onCreate)this.onCreate(s[2],s[3],ns[cn].prototype);},walk:function(o,f,n,s){s=s||this;if(o){if(n)o=o[n];tinymce.each(o,function(o,i){if(f.call(s,o,i,n)===false)return false;tinymce.walk(o,f,n,s);});}},createNS:function(n,o){var i,v;o=o||window;n=n.split('.');for(i=0;i<n.length;i++){v=n[i];if(!o[v])o[v]={};o=o[v];}return o;},resolve:function(n,o){var i,l;o=o||window;n=n.split('.');for(i=0,l=n.length;i<l;i++){o=o[n[i]];if(!o)break;}return o;},addUnload:function(f,s){var t=this,w=window;f={func:f,scope:s||this};if(!t.unloads){function unload(){var li=t.unloads,o,n;if(li){for(n in li){o=li[n];if(o&&o.func)o.func.call(o.scope,1);}if(w.detachEvent){w.detachEvent('onbeforeunload',fakeUnload);w.detachEvent('onunload',unload);}else if(w.removeEventListener)w.removeEventListener('unload',unload,false);t.unloads=o=li=w=unload=null;if(window.CollectGarbage)window.CollectGarbage();}};function fakeUnload(){var d=document;if(d.readyState=='interactive'){function stop(){d.detachEvent('onstop',stop);unload();d=null;};d.attachEvent('onstop',stop);window.setTimeout(function(){d.detachEvent('onstop',stop);},0);}};if(w.attachEvent){w.attachEvent('onunload',unload);w.attachEvent('onbeforeunload',fakeUnload);}else if(w.addEventListener)w.addEventListener('unload',unload,false);t.unloads=[f];}else t.unloads.push(f);return f;},removeUnload:function(f){var u=this.unloads,r=null;tinymce.each(u,function(o,i){if(o&&o.func==f){u.splice(i,1);r=f;return false;}});return r;},explode:function(s,d){return s?tinymce.map(s.split(d||','),tinymce.trim):s;},_addVer:function(u){var v;if(!this.query)return u;v=(u.indexOf('?')==-1?'?':'&')+this.query;if(u.indexOf('#')==-1)return u+v;return u.replace('#',v+'#');}};window.tinymce=tinymce;tinymce._init();tinymce.create('tinymce.util.Dispatcher',{scope:null,listeners:null,Dispatcher:function(s){this.scope=s||this;this.listeners=[];},add:function(cb,s){this.listeners.push({cb:cb,scope:s||this.scope});return cb;},addToTop:function(cb,s){this.listeners.unshift({cb:cb,scope:s||this.scope});return cb;},remove:function(cb){var l=this.listeners,o=null;tinymce.each(l,function(c,i){if(cb==c.cb){o=cb;l.splice(i,1);return false;}});return o;},dispatch:function(){var s,a=arguments,i,li=this.listeners,c;for(i=0;i<li.length;i++){c=li[i];s=c.cb.apply(c.scope,a);if(s===false)break;}return s;}});(function(){var each=tinymce.each;tinymce.create('tinymce.util.URI',{URI:function(u,s){var t=this,o,a,b;s=t.settings=s||{};if(/^(mailto|news|javascript|about):/i.test(u)||/^\s*#/.test(u)){t.source=u;return;}if(u.indexOf('/')===0&&u.indexOf('//')!==0)u=(s.base_uri?s.base_uri.protocol||'http':'http')+'://mce_host'+u;if(u.indexOf('://')===-1&&u.indexOf('//')!==0)u=(s.base_uri.protocol||'http')+'://mce_host'+t.toAbsPath(s.base_uri.path,u);u=u.replace(/@@/g,'(mce_at)');u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(v,i){var s=u[i];if(s)s=s.replace(/\(mce_at\)/g,'@@');t[v]=s;});if(b=s.base_uri){if(!t.protocol)t.protocol=b.protocol;if(!t.userInfo)t.userInfo=b.userInfo;if(!t.port&&t.host=='mce_host')t.port=b.port;if(!t.host||t.host=='mce_host')t.host=b.host;t.source='';}},setPath:function(p){var t=this;p=/^(.*?)\/?(\w+)?$/.exec(p);t.path=p[0];t.directory=p[1];t.file=p[2];t.source='';t.getURI();},toRelative:function(u){var t=this,o;u=new tinymce.util.URI(u,{base_uri:t});if((u.host!='mce_host'&&t.host!=u.host&&u.host)||t.port!=u.port||t.protocol!=u.protocol)return u.getURI();o=t.toRelPath(t.path,u.path);if(u.query)o+='?'+u.query;if(u.anchor)o+='#'+u.anchor;return o;},toAbsolute:function(u,nh){var u=new tinymce.util.URI(u,{base_uri:this});return u.getURI(this.host==u.host?nh:0);},toRelPath:function(base,path){var items,bp=0,out='',i;base=base.substring(0,base.lastIndexOf('/'));base=base.split('/');items=path.split('/');if(base.length>=items.length){for(i=0;i<base.length;i++){if(i>=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length<items.length){for(i=0;i<items.length;i++){if(i>=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0;i<base.length-(bp-1);i++)out+="../";for(i=bp-1;i<items.length;i++){if(i!=bp-1)out+="/"+items[i];else out+=items[i];}return out;},toAbsPath:function(base,path){var i,nb=0,o=[];base=base.split('/');path=path.split('/');each(base,function(k){if(k)o.push(k);});base=o;for(i=path.length-1,o=[];i>=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i<o.length;i++)v+=(i>0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,w,h;e=t.get(e);p=t.getPos(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{x:p.x,y:p.y,w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i<l;i++)o.push(x[i]);return o;}if(t.elmClassPattern.test(pa)){pl=t.elmClassPattern.exec(pa);x=get(s,pl[1]||'*');c=' '+pl[2]+' ';for(i=0,l=x.length;i<l;i++){n=x[i];if(n.className&&(' '+n.className+' ').indexOf(c)!==-1)o.push(n);}return o;}function collect(n){if(!n.mce_save){n.mce_save=1;o.push(n);}};function collectIE(n){if(!n.getAttribute('mce_save')){n.setAttribute('mce_save','1');o.push(n);}};function find(n,f,r){var i,l,nl=get(r,n);for(i=0,l=nl.length;i<l;i++)f(nl[i]);};each(pa.split(','),function(v,i){v=tinymce.trim(v);if(t.elmPattern.test(v)){each(get(s,v),function(n){collect(n);});return;}if(t.elmClassPattern.test(v)){x=t.elmClassPattern.exec(v);each(get(s,x[1]),function(n){if(t.hasClass(n,x[2]))collect(n);});return;}if(!(cs=t.cache[pa])){cs='x=(function(cf, s) {';pl=v.split(' ');each(pl,function(v){var p=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i.exec(v);p[1]=p[1]||'*';cs+='find("'+p[1]+'", function(n) {';if(p[2])cs+='if (n.id !== "'+p[2]+'") return;';if(p[3]){cs+='var c = " " + n.className + " ";';cs+='if (';c='';each(p[3].split('.'),function(v){if(v)c+=(c?'||':'')+'c.indexOf(" '+v+' ") === -1';});cs+=c+') return;';}});cs+='cf(n);';for(i=pl.length-1;i>=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;if(a){for(k in a){if(a.hasOwnProperty(k)&&!is(a[k],'object'))t.setAttrib(e,k,''+a[k]);}if(a.style&&!is(a.style,'string')){each(a.style,function(v,n){t.setStyle(e,n,v);});}}if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'</'+n+'>';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv="";if(/^(src|href|style|coords)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}v=e.getAttribute(n,2);if(!v){switch(n){case'class':v=e.className;break;default:if(isIE&&n==='name'&&e.nodeName==='A'){v=e.name;break;}v=e.attributes[n];v=v&&is(v.nodeValue)?v.nodeValue:v;}}switch(n){case'style':v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}break;}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0')v='';break;case'hspace':if(v===-1)v='';break;case'tabindex':if(v===32768)v='';break;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v&&v!='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null))+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='<br />'+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='<br />'+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true">&nbsp;</p>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/<p([^>]+)>|<p>/g,'<div$1 mce_tmp="1">');h=h.replace(/<\/p>/g,'</div>');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x<n.childNodes.length;x++)p.appendChild(n.childNodes[x].cloneNode(true));n.swapNode(p);}}}}}else e.innerHTML=h;return h;});},processHTML:function(h){var t=this,s=t.settings;if(!s.process_html)return h;if(tinymce.isGecko){h=h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|<em( [^>]+)>/gi,'<$1i$2>');}else if(isIE)h=h.replace(/&apos;/g,'&#39;');h=h.replace(/<a( )([^>]+)\/>|<a\/>/gi,'<a$1$2></a>');if(s.keep_values){if(h.indexOf('<script')!==-1){h=h.replace(/<script>/g,'<script type="text/javascript">');h=h.replace(/<script(|[^>]+)>(\s*<!--|\/\/\s*<\[CDATA\[)?[\r\n]*/g,'<mce:script$1><!--\n');h=h.replace(/\s*(\/\/\s*-->|\/\/\s*]]>)?<\/script>/g,'\n// --></mce:script>');h=h.replace(/<mce:script(|[^>]+)><!--\n\/\/ --><\/mce:script>/g,'<mce:script$1></mce:script>');}h=h.replace(/<([\w:]+) [^>]*(src|href|style|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;return!e.firstChild?s:e.firstChild.nodeValue;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&amp;';case'"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.doc.getElementById(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');DOM.get("__ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){Event._pageInit();DOM.get("__ie_onload").onreadystatechange=null;}};}else{Event._add(window,'DOMContentLoaded',Event._pageInit,Event);if(isIE||isWebKit){t=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(t);Event._pageInit();}},10);}}}});Event=tinymce.dom.Event;Event._wait();tinymce.addUnload(Event._unload);})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.Element',{Element:function(id,s){var t=this,dom,el;s=s||{};t.id=id;t.dom=dom=s.dom||tinymce.DOM;t.settings=s;if(!tinymce.isIE)el=t.dom.get(t.id);each(['getPos','getRect','getParent','add','setStyle','getStyle','setStyles','setAttrib','setAttribs','getAttrib','addClass','removeClass','hasClass','getOuterHTML','setOuterHTML','remove','show','hide','isHidden','setHTML','get'],function(k){t[k]=function(){var a=arguments,o;if(tinymce.isOpera){a=[id];each(arguments,function(v){a.push(v);});}else Array.prototype.unshift.call(a,el||id);o=dom[k].apply(dom,a);t.update(k);return o;};});},on:function(n,f,s){return tinymce.dom.Event.add(this.id,n,f,s);},getXY:function(){return{x:parseInt(this.getStyle('left')),y:parseInt(this.getStyle('top'))};},getSize:function(){var n=this.dom.get(this.id);return{w:parseInt(this.getStyle('width')||n.clientWidth),h:parseInt(this.getStyle('height')||n.clientHeight)};},moveTo:function(x,y){this.setStyles({left:x,top:y});},moveBy:function(x,y){var p=this.getXY();this.moveTo(p.x+x,p.y+y);},resizeTo:function(w,h){this.setStyles({width:w,height:h});},resizeBy:function(w,h){var s=this.getSize();this.resizeTo(s.w+w,s.h+h);},update:function(k){var t=this,b,dom=t.dom;if(tinymce.isIE6&&t.settings.blocker){k=k||'';if(k.indexOf('get')===0||k.indexOf('has')===0||k.indexOf('is')===0)return;if(k=='remove'){dom.remove(t.blocker);return;}if(!t.blocker){t.blocker=dom.uniqueId();b=dom.add(t.settings.container||dom.getRoot(),'iframe',{id:t.blocker,style:'position:absolute;',frameBorder:0,src:'javascript:""'});dom.setStyle(b,'opacity',0);}else b=dom.get(t.blocker);dom.setStyle(b,'left',t.getStyle('left',1));dom.setStyle(b,'top',t.getStyle('top',1));dom.setStyle(b,'width',t.getStyle('width',1));dom.setStyle(b,'height',t.getStyle('height',1));dom.setStyle(b,'display',t.getStyle('display',1));dom.setStyle(b,'zIndex',parseInt(t.getStyle('zIndex',1)||0)-1);}}});})();(function(){function trimNl(s){return s.replace(/[\n\r]+/g,'');};var is=tinymce.is,isIE=tinymce.isIE,each=tinymce.each;tinymce.create('tinymce.dom.Selection',{Selection:function(dom,win,serializer){var t=this;t.dom=dom;t.win=win;t.serializer=serializer;tinymce.addUnload(t.destroy,t);},getContent:function(s){var t=this,r=t.getRng(),e=t.dom.create("body"),se=t.getSel(),wb,wa,n;s=s||{};wb=wa='';s.get=true;s.format=s.format||'html';if(s.format=='text')return t.isCollapsed()?'':(r.text||(se.toString?se.toString():''));if(r.cloneContents){n=r.cloneContents();if(n)e.appendChild(n);}else if(is(r.item)||is(r.htmlText))e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();if(/^\s/.test(e.innerHTML))wb=' ';if(/\s+$/.test(e.innerHTML))wa=' ';s.getInner=true;return t.isCollapsed()?'':wb+t.serializer.serialize(e,s)+wa;},setContent:function(h,s){var t=this,r=t.getRng(),d=t.win.document;s=s||{format:'html'};s.set=true;h=t.dom.processHTML(h);if(r.insertNode){if(tinymce.isGecko&&h.indexOf('<')==-1){r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h+'<span id="__caret">_</span>'));t.select(t.dom.get('__caret'));t.getRng().deleteContents();return;}try{if(d.queryCommandEnabled('InsertHTML'))return d.execCommand('InsertHTML',false,h);}catch(ex){r.deleteContents();r.insertNode(t.getRng().createContextualFragment(h));}}else{if(r.item){d.execCommand('Delete',false,null);r=t.getRng();}r.pasteHTML(h);}},getStart:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(1);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.firstChild;return e;}else{e=r.startContainer;if(e.nodeName=='BODY')return e.firstChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getEnd:function(){var t=this,r=t.getRng(),e;if(isIE){if(r.item)return r.item(0);r=r.duplicate();r.collapse(0);e=r.parentElement();if(e&&e.nodeName=='BODY')return e.lastChild;return e;}else{e=r.endContainer;if(e.nodeName=='BODY')return e.lastChild;return t.dom.getParent(e,function(n){return n.nodeType==1;});}},getBookmark:function(si){var t=this,r=t.getRng(),tr,sx,sy,vp=t.dom.getViewPort(t.win),e,sp,bp,le,c=-0xFFFFFF,s,ro=t.dom.getRoot(),wb=0,wa=0,nv;sx=vp.x;sy=vp.y;if(si=='simple')return{rng:r,scrollX:sx,scrollY:sy};if(isIE){if(r.item){e=r.item(0);each(t.dom.select(e.nodeName),function(n,i){if(e==n){sp=i;return false;}});return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}tr=t.dom.doc.body.createTextRange();tr.moveToElementText(ro);tr.collapse(true);bp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(true);sp=Math.abs(tr.move('character',c));tr=r.duplicate();tr.collapse(false);le=Math.abs(tr.move('character',c))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy};}e=t.getNode();s=t.getSel();if(!s)return null;if(e&&e.nodeName=='IMG'){return{scrollX:sx,scrollY:sy};}function getPos(r,sn,en){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d;}p+=trimNl(n.nodeValue||'').length;}return null;};if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=getPos(ro,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};trimNl(s.anchorNode.nodeValue||'').replace(/^\s+/,function(a){wb=a.length;});return{start:Math.max(e.start+s.anchorOffset-wb,0),end:Math.max(e.end+s.focusOffset-wb,0),scrollX:sx,scrollY:sy,beg:s.anchorOffset-wb==0};}else{e=getPos(ro,r.startContainer,r.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:Math.max(e.start+r.startOffset-wb,0),end:Math.max(e.end+r.endOffset-wa,0),scrollX:sx,scrollY:sy,beg:r.startOffset-wb==0};}},moveToBookmark:function(b){var t=this,r=t.getRng(),s=t.getSel(),ro=t.dom.getRoot(),sd,nvl,nv;function getPos(r,sp,ep){var w=t.dom.doc.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={},o,v,wa,wb;while((n=w.nextNode())!=null){wa=wb=0;nv=n.nodeValue||'';nvl=trimNl(nv).length;p+=nvl;if(p>=sp&&!d.startNode){o=sp-(p-nvl);if(b.beg&&o>=nvl)continue;d.startNode=n;d.startOffset=o+wb;}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-nvl)+wb;return d;}}return null;};if(!b)return false;t.win.scrollTo(b.scrollX,b.scrollY);if(isIE){if(r=b.rng){try{r.select();}catch(ex){}return true;}t.win.focus();if(b.tag){r=ro.createControlRange();each(t.dom.select(b.tag),function(n,i){if(i==b.index)r.addElement(n);});}else{try{if(b.start<0)return true;r=s.createRange();r.moveToElementText(ro);r.collapse(true);r.moveStart('character',b.start);r.moveEnd('character',b.length);}catch(ex2){return true;}}try{r.select();}catch(ex){}return true;}if(!s)return false;if(b.rng){s.removeAllRanges();s.addRange(b.rng);}else{if(is(b.start)&&is(b.end)){try{sd=getPos(ro,b.start,b.end);if(sd){r=t.dom.doc.createRange();r.setStart(sd.startNode,sd.startOffset);r.setEnd(sd.endNode,sd.endOffset);s.removeAllRanges();s.addRange(r);}if(!tinymce.isOpera)t.win.focus();}catch(ex){}}}},select:function(n,c){var t=this,r=t.getRng(),s=t.getSel(),b,fn,ln,d=t.win.document;function first(n){return n?d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode():null;};function last(n){var c,o,w;if(!n)return null;w=d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(c=w.nextNode())o=c;return o;};if(isIE){try{b=d.body;if(/^(IMG|TABLE)$/.test(n.nodeName)){r=b.createControlRange();r.addElement(n);}else{r=b.createTextRange();r.moveToElementText(n);}r.select();}catch(ex){}}else{if(c){fn=first(n);ln=last(n);if(fn&&ln){r=d.createRange();r.setStart(fn,0);r.setEnd(ln,ln.nodeValue.length);}else r.selectNode(n);}else r.selectNode(n);t.setRng(r);}return n;},isCollapsed:function(){var t=this,r=t.getRng(),s=t.getSel();if(!r||r.item)return false;return!s||r.boundingWidth==0||s.isCollapsed;},collapse:function(b){var t=this,r=t.getRng(),n;if(r.item){n=r.item(0);r=this.win.document.body.createTextRange();r.moveToElementText(n);}r.collapse(!!b);t.setRng(r);},getSel:function(){var t=this,w=this.win;return w.getSelection?w.getSelection():w.document.selection;},getRng:function(){var t=this,s=t.getSel(),r;try{if(s)r=s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():t.win.document.createRange());}catch(ex){}if(!r)r=isIE?t.win.document.body.createTextRange():t.win.document.createRange();return r;},setRng:function(r){var s;if(!isIE){s=this.getSel();if(s){s.removeAllRanges();s.addRange(r);}}else{try{r.select();}catch(ex){}}},setNode:function(n){var t=this;t.setContent(t.dom.getOuterHTML(n));return n;},getNode:function(){var t=this,r=t.getRng(),s=t.getSel(),e;if(!isIE){if(!r)return t.dom.getRoot();e=r.commonAncestorContainer;if(!r.collapsed){if(r.startContainer==r.endContainer||(tinymce.isWebKit&&r.startContainer==r.endContainer.parentNode)){if(r.startOffset-r.endOffset<2||tinymce.isWebKit){if(r.startContainer.hasChildNodes())e=r.startContainer.childNodes[r.startOffset];}}}return t.dom.getParent(e,function(n){return n.nodeType==1;});}return r.item?r.item(0):r.parentElement();},destroy:function(s){var t=this;t.win=null;if(!s)tinymce.removeUnload(t.destroy);}});})();(function(){tinymce.create('tinymce.dom.XMLWriter',{node:null,XMLWriter:function(s){function getXML(){var i=document.implementation;if(!i||!i.createDocument){try{return new ActiveXObject('MSXML2.DOMDocument');}catch(ex){}try{return new ActiveXObject('Microsoft.XmlDom');}catch(ex){}}else return i.createDocument('','',null);};this.doc=getXML();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset();},reset:function(){var t=this,d=t.doc;if(d.firstChild)d.removeChild(d.firstChild);t.node=d.appendChild(d.createElement("html"));},writeStartElement:function(n){var t=this;t.node=t.node.appendChild(t.doc.createElement(n));},writeAttribute:function(n,v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.setAttribute(n,v);},writeEndElement:function(){this.node=this.node.parentNode;},writeFullEndElement:function(){var t=this,n=t.node;n.appendChild(t.doc.createTextNode(""));t.node=n.parentNode;},writeText:function(v){if(this.valid)v=v.replace(/>/g,'%MCGT%');this.node.appendChild(this.doc.createTextNode(v));},writeCDATA:function(v){this.node.appendChild(this.doc.createCDATA(v));},writeComment:function(v){this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g,' ')));},getContent:function(){var h;h=this.doc.xml||new XMLSerializer().serializeToString(this.doc);h=h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,'');h=h.replace(/ ?\/>/g,' />');if(this.valid)h=h.replace(/\%MCGT%/g,'&gt;');return h;}});})();(function(){tinymce.create('tinymce.dom.StringWriter',{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(s){this.settings=tinymce.extend({indent_char:' ',indentation:1},s);this.reset();},reset:function(){this.indent='';this.str="";this.tags=[];this.count=0;},writeStartElement:function(n){this._writeAttributesEnd();this.writeRaw('<'+n);this.tags.push(n);this.inAttr=true;this.count++;this.elementCount=this.count;},writeAttribute:function(n,v){var t=this;t.writeRaw(" "+t.encode(n)+'="'+t.encode(v)+'"');},writeEndElement:function(){var n;if(this.tags.length>0){n=this.tags.pop();if(this._writeAttributesEnd(1))this.writeRaw('</'+n+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw('</'+this.tags.pop()+'>');if(this.settings.indentation>0)this.writeRaw('\n');}},writeText:function(v){this._writeAttributesEnd();this.writeRaw(this.encode(v));this.count++;},writeCDATA:function(v){this._writeAttributesEnd();this.writeRaw('<![CDATA['+v+']]>');this.count++;},writeComment:function(v){this._writeAttributesEnd();this.writeRaw('<!-- '+v+'-->');this.count++;},writeRaw:function(v){this.str+=v;},encode:function(s){return s.replace(/[<>&"]/g,function(v){switch(v){case'<':return'&lt;';case'>':return'&gt;';case'&':return'&amp;';case'"':return'&quot;';}return v;});},getContent:function(){return this.str;},_writeAttributesEnd:function(s){if(!this.inAttr)return;this.inAttr=false;if(s&&this.elementCount==this.count){this.writeRaw(' />');return false;}this.writeRaw('>');return true;}});})();(function(){var extend=tinymce.extend,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher,isIE=tinymce.isIE,isGecko=tinymce.isGecko;function getIEAtts(n){var o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;};function wildcardToRE(s){return s.replace(/([?+*])/g,'.$1');};tinymce.create('tinymce.dom.Serializer',{Serializer:function(s){var t=this;t.key=0;t.onPreProcess=new Dispatcher(t);t.onPostProcess=new Dispatcher(t);if(tinymce.relaxedDomain&&tinymce.isGecko){t.writer=new tinymce.dom.StringWriter();}else{try{t.writer=new tinymce.dom.XMLWriter();}catch(ex){t.writer=new tinymce.dom.StringWriter();}}t.settings=s=extend({dom:tinymce.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/(br|hr|input|meta|img|link|param)/,entity_encoding:'named',entities:'160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',valid_elements:'*[*]',extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:0,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:'simple',indent_char:'\t',indent_levels:1,remove_linebreaks:1},s);t.dom=s.dom;if(s.fix_list_elements){t.onPreProcess.add(function(se,o){var nl,x,a=['ol','ul'],i,n,p,r=/^(OL|UL)$/,np;function prevNode(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;};for(x=0;x<a.length;x++){nl=t.dom.select(a[x],o.node);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=prevNode(n,'LI');if(!np){np=t.dom.create('li');np.innerHTML='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}});}if(s.fix_table_elements){t.onPreProcess.add(function(se,o){each(t.dom.select('table',o.node),function(e){var pa=t.dom.getParent(e,'H1,H2,H3,H4,H5,H6,P'),pa2,n,tm,pl=[],i,ns;if(pa){pa2=pa.cloneNode(false);pl.push(e);for(n=e;n=n.parentNode;){pl.push(n);if(n==pa)break;}tm=pa2;for(i=pl.length-1;i>=0;i--){if(i==pl.length-1){while(ns=pl[i-1].nextSibling)tm.appendChild(ns.parentNode.removeChild(ns));}else{n=pl[i].cloneNode(false);if(i!=0){while(ns=pl[i-1].nextSibling)n.appendChild(ns.parentNode.removeChild(ns));}tm=tm.appendChild(n);}}e=t.dom.insertAfter(e.parentNode.removeChild(e),pa);t.dom.insertAfter(e,pa);t.dom.insertAfter(pa2,e);}});});}},setEntities:function(s){var t=this,a,i,l={},re='',v;if(t.entityLookup)return;a=s.split(',');for(i=0;i<a.length;i+=2){v=a[i];if(v==34||v==38||v==60||v==62)continue;l[String.fromCharCode(a[i])]=a[i+1];v=parseInt(a[i]).toString(16);re+='\\u'+'0000'.substring(v.length)+v;}if(!re){t.settings.entity_encoding='raw';return;}t.entitiesRE=new RegExp('['+re+']','g');t.entityLookup=l;},setValidChildRules:function(s){this.childRules=null;this.addValidChildRules(s);},addValidChildRules:function(s){var t=this,inst,intr,bloc;if(!s)return;inst='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';intr='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';bloc='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';each(s.split(','),function(s){var p=s.split(/\[|\]/),re;s='';each(p[1].split('|'),function(v){if(s)s+='|';switch(v){case'%itrans':v=intr;break;case'%itrans_na':v=intr.substring(2);break;case'%istrict':v=inst;break;case'%istrict_na':v=inst.substring(2);break;case'%btrans':v=bloc;break;case'%bstrict':v=bloc;break;}s+=v;});re=new RegExp('^('+s.toLowerCase()+')$','i');each(p[0].split('/'),function(s){t.childRules=t.childRules||{};t.childRules[s]=re;});});s='';each(t.childRules,function(v,k){if(s)s+='|';s+=k;});t.parentElementsRE=new RegExp('^('+s.toLowerCase()+')$','i');},setRules:function(s){var t=this;t._setup();t.rules={};t.wildRules=[];t.validElements={};return t.addRules(s);},addRules:function(s){var t=this,dr;if(!s)return;t._setup();each(s.split(','),function(s){var p=s.split(/\[|\]/),tn=p[0].split('/'),ra,at,wat,va=[];if(dr)at=tinymce.extend([],dr.attribs);if(p.length>1){each(p[1].split('|'),function(s){var ar={},i;at=at||[];s=s.replace(/::/g,'~');s=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);s[2]=s[2].replace(/~/g,':');if(s[1]=='!'){ra=ra||[];ra.push(s[2]);}if(s[1]=='-'){for(i=0;i<at.length;i++){if(at[i].name==s[2]){at.splice(i,1);return;}}}switch(s[3]){case'=':ar.defaultVal=s[4]||'';break;case':':ar.forcedVal=s[4];break;case'<':ar.validVals=s[4].split('?');break;}if(/[*.?]/.test(s[2])){wat=wat||[];ar.nameRE=new RegExp('^'+wildcardToRE(s[2])+'$');wat.push(ar);}else{ar.name=s[2];at.push(ar);}va.push(s[2]);});}each(tn,function(s,i){var pr=s.charAt(0),x=1,ru={};if(dr){if(dr.noEmpty)ru.noEmpty=dr.noEmpty;if(dr.fullEnd)ru.fullEnd=dr.fullEnd;if(dr.padd)ru.padd=dr.padd;}switch(pr){case'-':ru.noEmpty=true;break;case'+':ru.fullEnd=true;break;case'#':ru.padd=true;break;default:x=0;}tn[i]=s=s.substring(x);t.validElements[s]=1;if(/[*.?]/.test(tn[0])){ru.nameRE=new RegExp('^'+wildcardToRE(tn[0])+'$');t.wildRules=t.wildRules||{};t.wildRules.push(ru);}else{ru.name=tn[0];if(tn[0]=='@')dr=ru;t.rules[s]=ru;}ru.attribs=at;if(ra)ru.requiredAttribs=ra;if(wat){s='';each(va,function(v){if(s)s+='|';s+='('+wildcardToRE(v)+')';});ru.validAttribsRE=new RegExp('^'+s.toLowerCase()+'$');ru.wildAttribs=wat;}});});s='';each(t.validElements,function(v,k){if(s)s+='|';if(k!='@')s+=k;});t.validElementsRE=new RegExp('^('+wildcardToRE(s.toLowerCase())+')$');},findRule:function(n){var t=this,rl=t.rules,i,r;t._setup();r=rl[n];if(r)return r;rl=t.wildRules;for(i=0;i<rl.length;i++){if(rl[i].nameRE.test(n))return rl[i];}return null;},findAttribRule:function(ru,n){var i,wa=ru.wildAttribs;for(i=0;i<wa.length;i++){if(wa[i].nameRE.test(n))return wa[i];}return null;},serialize:function(n,o){var h,t=this;t._setup();o=o||{};o.format=o.format||'html';t.processObj=o;n=n.cloneNode(true);t.key=''+(parseInt(t.key)+1);if(!o.no_events){o.node=n;t.onPreProcess.dispatch(t,o);}t.writer.reset();t._serializeNode(n,o.getInner);o.content=t.writer.getContent();if(!o.no_events)t.onPostProcess.dispatch(t,o);t._postProcess(o);o.node=null;return tinymce.trim(o.content);},_postProcess:function(o){var t=this,s=t.settings,h=o.content,sc=[],p;if(o.format=='html'){p=t._protect({content:h,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1}]});h=p.content;if(s.entity_encoding!=='raw')h=t._encode(h);if(!o.set){h=h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,s.entity_encoding=='numeric'?'<p$1>&#160;</p>':'<p$1>&nbsp;</p>');if(s.remove_linebreaks){h=h.replace(/\r?\n|\r/g,' ');h=h.replace(/(<[^>]+>)\s+/g,'$1 ');h=h.replace(/\s+(<\/[^>]+>)/g,' $1');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,'<$1 $2>');h=h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,'<$1>');h=h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,'</$1>');}if(s.apply_source_formatting&&s.indent_mode=='simple'){h=h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,'\n<$1$2$3>\n');h=h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,'\n<$1$2>');h=h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,'</$1>\n');h=h.replace(/\n\n/g,'\n');}}h=t._unprotect(h,p);if(s.entity_encoding=='raw')h=h.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,'<p$1>\u00a0</p>');}o.content=h;},_serializeNode:function(n,inn){var t=this,s=t.settings,w=t.writer,hc,el,cn,i,l,a,at,no,v,nn,ru,ar,iv;if(!s.node_filter||s.node_filter(n)){switch(n.nodeType){case 1:if(n.hasAttribute?n.hasAttribute('mce_bogus'):n.getAttribute('mce_bogus'))return;iv=false;hc=n.hasChildNodes();nn=n.getAttribute('mce_name')||n.nodeName.toLowerCase();if(isIE){if(n.scopeName!=='HTML'&&n.scopeName!=='html')nn=n.scopeName+':'+nn;}if(nn.indexOf('mce:')===0)nn=nn.substring(4);if(!t.validElementsRE.test(nn)||(t.invalidElementsRE&&t.invalidElementsRE.test(nn))||inn){iv=true;break;}if(isIE){if(s.fix_content_duplication){if(n.mce_serialized==t.key)return;n.mce_serialized=t.key;}if(nn.charAt(0)=='/')nn=nn.substring(1);}else if(isGecko){if(n.nodeName==='BR'&&n.getAttribute('type')=='_moz')return;}if(t.childRules){if(t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(nn)){iv=true;break;}}t.elementName=nn;}ru=t.findRule(nn);nn=ru.name||nn;if((!hc&&ru.noEmpty)||(isIE&&!nn)){iv=true;break;}if(ru.requiredAttribs){a=ru.requiredAttribs;for(i=a.length-1;i>=0;i--){if(this.dom.getAttrib(n,a[i])!=='')break;}if(i==-1){iv=true;break;}}w.writeStartElement(nn);if(ru.attribs){for(i=0,at=ru.attribs,l=at.length;i<l;i++){a=at[i];v=t._getAttrib(n,a);if(v!==null)w.writeAttribute(a.name,v);}}if(ru.validAttribsRE){at=isIE?getIEAtts(n):n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified){a=no.nodeName.toLowerCase();if(s.invalid_attrs.test(a)||!ru.validAttribsRE.test(a))continue;ar=t.findAttribRule(ru,a);v=t._getAttrib(n,ar,a);if(v!==null)w.writeAttribute(a,v);}}}if(!hc&&ru.padd)w.writeText('\u00a0');break;case 3:if(t.childRules&&t.parentElementsRE.test(t.elementName)){if(!t.childRules[t.elementName].test(n.nodeName))return;}return w.writeText(n.nodeValue);case 4:return w.writeCDATA(n.nodeValue);case 8:return w.writeComment(n.nodeValue);}}else if(n.nodeType==1)hc=n.hasChildNodes();if(hc){cn=n.firstChild;while(cn){t._serializeNode(cn);t.elementName=nn;cn=cn.nextSibling;}}if(!iv){if(hc||!s.closed.test(nn))w.writeFullEndElement();else w.writeEndElement();}},_protect:function(o){var t=this;o.items=o.items||[];function enc(s){return s.replace(/[\r\n\\]/g,function(c){if(c==='\n')return'\\n';else if(c==='\\')return'\\\\';return'\\r';});};function dec(s){return s.replace(/\\[\\rn]/g,function(c){if(c==='\\n')return'\n';else if(c==='\\\\')return'\\';return'\r';});};each(o.patterns,function(p){o.content=dec(enc(o.content).replace(p.pattern,function(x,a,b,c){b=dec(b);if(p.encode)b=t._encode(b);o.items.push(b);return a+'<!--mce:'+(o.items.length-1)+'-->'+c;}));});return o;},_unprotect:function(h,o){h=h.replace(/\<!--mce:([0-9]+)--\>/g,function(a,b){return o.items[parseInt(b)];});o.items=[];return h;},_encode:function(h){var t=this,s=t.settings,l;if(s.entity_encoding!=='raw'){if(s.entity_encoding.indexOf('named')!=-1){t.setEntities(s.entities);l=t.entityLookup;h=h.replace(t.entitiesRE,function(a){var v;if(v=l[a])a='&'+v+';';return a;});}if(s.entity_encoding.indexOf('numeric')!=-1){h=h.replace(/[\u007E-\uFFFF]/g,function(a){return'&#'+a.charCodeAt(0)+';';});}}return h;},_setup:function(){var t=this,s=this.settings;if(t.done)return;t.done=1;t.setRules(s.valid_elements);t.addRules(s.extended_valid_elements);t.addValidChildRules(s.valid_child_elements);if(s.invalid_elements)t.invalidElementsRE=new RegExp('^('+wildcardToRE(s.invalid_elements.replace(/,/g,'|').toLowerCase())+')$');if(s.attrib_value_filter)t.attribValueFilter=s.attribValueFilter;},_getAttrib:function(n,a,na){var i,v;na=na||a.name;if(a.forcedVal&&(v=a.forcedVal)){if(v==='{$uid}')return this.dom.uniqueId();return v;}v=this.dom.getAttrib(n,na);switch(na){case'rowspan':case'colspan':if(v=='1')v='';break;}if(this.attribValueFilter)v=this.attribValueFilter(na,v,n);if(a.validVals){for(i=a.validVals.length-1;i>=0;i--){if(v==a.validVals[i])break;}if(i==-1)return null;}if(v===''&&typeof(a.defaultVal)!='undefined'){v=a.defaultVal;if(v==='{$uid}')return this.dom.uniqueId();return v;}else{if(na=='class'&&this.processObj.get)v=v.replace(/\s?mceItem\w+\s?/g,'');}if(v==='')return null;return v;}});})();(function(){var each=tinymce.each;tinymce.create('tinymce.dom.ScriptLoader',{ScriptLoader:function(s){this.settings=s||{};this.queue=[];this.lookup={};},isDone:function(u){return this.lookup[u]?this.lookup[u].state==2:0;},markDone:function(u){this.lookup[u]={state:2,url:u};},add:function(u,cb,s,pr){var t=this,lo=t.lookup,o;if(o=lo[u]){if(cb&&o.state==2)cb.call(s||this);return o;}o={state:0,url:u,func:cb,scope:s||this};if(pr)t.queue.unshift(o);else t.queue.push(o);lo[u]=o;return o;},load:function(u,cb,s){var t=this,o;if(o=t.lookup[u]){if(cb&&o.state==2)cb.call(s||t);return o;}function loadScript(u){if(tinymce.dom.Event.domLoaded||t.settings.strict_mode){tinymce.util.XHR.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success:function(co){t.eval(co);}});}else document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"></script>');};if(!tinymce.is(u,'string')){each(u,function(u){loadScript(u);});if(cb)cb.call(s||t);}else{loadScript(u);if(cb)cb.call(s||t);}},loadQueue:function(cb,s){var t=this;if(!t.queueLoading){t.queueLoading=1;t.queueCallbacks=[];t.loadScripts(t.queue,function(){t.queueLoading=0;if(cb)cb.call(s||t);each(t.queueCallbacks,function(o){o.func.call(o.scope);});});}else if(cb)t.queueCallbacks.push({func:cb,scope:s||t});},eval:function(co){var w=window;if(!w.execScript){try{eval.call(w,co);}catch(ex){eval(co,w);}}else w.execScript(co);},loadScripts:function(sc,cb,s){var t=this,lo=t.lookup;function done(o){o.state=2;if(o.func)o.func.call(o.scope||t);};function allDone(){var l;l=sc.length;each(sc,function(o){o=lo[o.url];if(o.state===2){done(o);l--;}else load(o);});if(l===0&&cb){cb.call(s||t);cb=0;}};function load(o){if(o.state>0)return;o.state=1;tinymce.util.XHR.send({url:o.url,error:t.settings.error,success:function(co){t.eval(co);done(o);allDone();}});};each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o);}else o=lo[u];if(o.state>0)return;if(!tinymce.dom.Event.domLoaded&&!t.settings.strict_mode){var ix,ol='';if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone();});if(tinymce.isIE)ol=' onreadystatechange="';else ol=' onload="';ol+='tinymce.dom.ScriptLoader._onLoad(this,\''+u+'\','+ix+');"';}document.write('<script type="text/javascript" src="'+tinymce._addVer(u)+'"'+ol+'></script>');if(!o.func)done(o);}else load(o);});allDone();},'static':{_addOnLoad:function(f){var t=this;t._funcs=t._funcs||[];t._funcs.push(f);return t._funcs.length-1;},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyState=='complete')this._funcs[ix].call(this);}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader();})();(function(){var DOM=tinymce.DOM,is=tinymce.is;tinymce.create('tinymce.ui.Control',{Control:function(id,s){this.id=id;this.settings=s=s||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix='';this.scope=s.scope||this;this.disabled=0;this.active=0;},setDisabled:function(s){var e;if(s!=this.disabled){e=DOM.get(this.id);if(e&&this.settings.unavailable_prefix){if(s){this.prevTitle=e.title;e.title=this.settings.unavailable_prefix+": "+e.title;}else e.title=this.prevTitle;}this.setState('Disabled',s);this.setState('Enabled',!s);this.disabled=s;}},isDisabled:function(){return this.disabled;},setActive:function(s){if(s!=this.active){this.setState('Active',s);this.active=s;}},isActive:function(){return this.active;},setState:function(c,s){var n=DOM.get(this.id);c=this.classPrefix+c;if(s)DOM.addClass(n,c);else DOM.removeClass(n,c);},isRendered:function(){return this.rendered;},renderHTML:function(){},renderTo:function(n){DOM.setHTML(n,this.renderHTML());},postRender:function(){var t=this,b;if(is(t.disabled)){b=t.disabled;t.disabled=-1;t.setDisabled(b);}if(is(t.active)){b=t.active;t.active=-1;t.setActive(b);}},remove:function(){DOM.remove(this.id);this.destroy();},destroy:function(){tinymce.dom.Event.clear(this.id);}});})();tinymce.create('tinymce.ui.Container:tinymce.ui.Control',{Container:function(id,s){this.parent(id,s);this.controls=[];this.lookup={};},add:function(c){this.lookup[c.id]=c;this.controls.push(c);return c;},get:function(n){return this.lookup[n];}});tinymce.create('tinymce.ui.Separator:tinymce.ui.Control',{Separator:function(id,s){this.parent(id,s);this.classPrefix='mceSeparator';},renderHTML:function(){return tinymce.DOM.createHTML('span',{'class':this.classPrefix});}});(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control',{MenuItem:function(id,s){this.parent(id,s);this.classPrefix='mceMenuItem';},setSelected:function(s){this.setState('Selected',s);this.selected=s;},isSelected:function(){return this.selected;},postRender:function(){var t=this;t.parent();if(is(t.selected))t.setSelected(t.selected);}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,walk=tinymce.walk;tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem',{Menu:function(id,s){var t=this;t.parent(id,s);t.items={};t.collapsed=false;t.menuCount=0;t.onAddItem=new tinymce.util.Dispatcher(this);},expand:function(d){var t=this;if(d){walk(t,function(o){if(o.expand)o.expand();},'items',t);}t.collapsed=false;},collapse:function(d){var t=this;if(d){walk(t,function(o){if(o.collapse)o.collapse();},'items',t);}t.collapsed=true;},isCollapsed:function(){return this.collapsed;},add:function(o){if(!o.settings)o=new tinymce.ui.MenuItem(o.id||DOM.uniqueId(),o);this.onAddItem.dispatch(this,o);return this.items[o.id]=o;},addSeparator:function(){return this.add({separator:true});},addMenu:function(o){if(!o.collapse)o=this.createMenu(o);this.menuCount++;return this.add(o);},hasMenus:function(){return this.menuCount!==0;},remove:function(o){delete this.items[o.id];},removeAll:function(){var t=this;walk(t,function(o){if(o.removeAll)o.removeAll();else o.remove();o.destroy();},'items',t);t.items={};},createMenu:function(o){var m=new tinymce.ui.Menu(o.id||DOM.uniqueId(),o);m.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return m;}});})();(function(){var is=tinymce.is,DOM=tinymce.DOM,each=tinymce.each,Event=tinymce.dom.Event,Element=tinymce.dom.Element;tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu',{DropMenu:function(id,s){s=s||{};s.container=s.container||DOM.doc.body;s.offset_x=s.offset_x||0;s.offset_y=s.offset_y||0;s.vp_offset_x=s.vp_offset_x||0;s.vp_offset_y=s.vp_offset_y||0;if(is(s.icons)&&!s.icons)s['class']+=' mceNoIcons';this.parent(id,s);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix='mceMenu';},createMenu:function(s){var t=this,cs=t.settings,m;s.container=s.container||cs.container;s.parent=t;s.constrain=s.constrain||cs.constrain;s['class']=s['class']||cs['class'];s.vp_offset_x=s.vp_offset_x||cs.vp_offset_x;s.vp_offset_y=s.vp_offset_y||cs.vp_offset_y;m=new tinymce.ui.DropMenu(s.id||DOM.uniqueId(),s);m.onAddItem.add(t.onAddItem.dispatch,t.onAddItem);return m;},update:function(){var t=this,s=t.settings,tb=DOM.get('menu_'+t.id+'_tbl'),co=DOM.get('menu_'+t.id+'_co'),tw,th;tw=s.max_width?Math.min(tb.clientWidth,s.max_width):tb.clientWidth;th=s.max_height?Math.min(tb.clientHeight,s.max_height):tb.clientHeight;if(!DOM.boxModel)t.element.setStyles({width:tw+2,height:th+2});else t.element.setStyles({width:tw,height:th});if(s.max_width)DOM.setStyle(co,'width',tw);if(s.max_height){DOM.setStyle(co,'height',th);if(tb.clientHeight<s.max_height)DOM.setStyle(co,'overflow','hidden');}},showMenu:function(x,y,px){var t=this,s=t.settings,co,vp=DOM.getViewPort(),w,h,mx,my,ot=2,dm,tb,cp=t.classPrefix;t.collapse(1);if(t.isMenuVisible)return;if(!t.rendered){co=DOM.add(t.settings.container,t.renderNode());each(t.items,function(o){o.postRender();});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});}else co=DOM.get('menu_'+t.id);if(!tinymce.isOpera)DOM.setStyles(co,{left:-0xFFFF,top:-0xFFFF});DOM.show(co);t.update();x+=s.offset_x||0;y+=s.offset_y||0;vp.w-=4;vp.h-=4;if(s.constrain){w=co.clientWidth-ot;h=co.clientHeight-ot;mx=vp.x+vp.w;my=vp.y+vp.h;if((x+s.vp_offset_x+w)>mx)x=px?px-w:Math.max(0,(mx-s.vp_offset_x)-w);if((y+s.vp_offset_y+h)>my)y=Math.max(0,(my-s.vp_offset_y)-h);}DOM.setStyles(co,{left:x,top:y});t.element.update();t.isMenuVisible=1;t.mouseClickFunc=Event.add(co,'click',function(e){var m;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))&&!DOM.hasClass(e,cp+'ItemSub')){m=t.items[e.id];if(m.isDisabled())return;dm=t;while(dm){if(dm.hideMenu)dm.hideMenu();dm=dm.settings.parent;}if(m.settings.onclick)m.settings.onclick(e);return Event.cancel(e);}});if(t.hasMenus()){t.mouseOverFunc=Event.add(co,'mouseover',function(e){var m,r,mi;e=e.target;if(e&&(e=DOM.getParent(e,'TR'))){m=t.items[e.id];if(t.lastMenu)t.lastMenu.collapse(1);if(m.isDisabled())return;if(e&&DOM.hasClass(e,cp+'ItemSub')){r=DOM.getRect(e);m.showMenu((r.x+r.w-ot),r.y-ot,r.x);t.lastMenu=m;DOM.addClass(DOM.get(m.id).firstChild,cp+'ItemActive');}}});}t.onShowMenu.dispatch(t);if(s.keyboard_focus){Event.add(co,'keydown',t._keyHandler,t);DOM.select('a','menu_'+t.id)[0].focus();t._focusIdx=0;}},hideMenu:function(c){var t=this,co=DOM.get('menu_'+t.id),e;if(!t.isMenuVisible)return;Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);Event.remove(co,'keydown',t._keyHandler);DOM.hide(co);t.isMenuVisible=0;if(!c)t.collapse(1);if(t.element)t.element.hide();if(e=DOM.get(t.id))DOM.removeClass(e.firstChild,t.classPrefix+'ItemActive');t.onHideMenu.dispatch(t);},add:function(o){var t=this,co;o=t.parent(o);if(t.isRendered&&(co=DOM.get('menu_'+t.id)))t._add(DOM.select('tbody',co)[0],o);return o;},collapse:function(d){this.parent(d);this.hideMenu(1);},remove:function(o){DOM.remove(o.id);this.destroy();return this.parent(o);},destroy:function(){var t=this,co=DOM.get('menu_'+t.id);Event.remove(co,'mouseover',t.mouseOverFunc);Event.remove(co,'click',t.mouseClickFunc);if(t.element)t.element.remove();DOM.remove(co);},renderNode:function(){var t=this,s=t.settings,n,tb,co,w;w=DOM.create('div',{id:'menu_'+t.id,'class':s['class'],'style':'position:absolute;left:0;top:0;z-index:200000'});co=DOM.add(w,'div',{id:'menu_'+t.id+'_co','class':t.classPrefix+(s['class']?' '+s['class']:'')});t.element=new Element('menu_'+t.id,{blocker:1,container:s.container});if(s.menu_line)DOM.add(co,'span',{'class':t.classPrefix+'Line'});n=DOM.add(co,'table',{id:'menu_'+t.id+'_tbl',border:0,cellPadding:0,cellSpacing:0});tb=DOM.add(n,'tbody');each(t.items,function(o){t._add(tb,o);});t.rendered=true;return w;},_keyHandler:function(e){var t=this,kc=e.keyCode;function focus(d){var i=t._focusIdx+d,e=DOM.select('a','menu_'+t.id)[i];if(e){t._focusIdx=i;e.focus();}};switch(kc){case 38:focus(-1);return;case 40:focus(1);return;case 13:return;case 27:return this.hideMenu();}},_add:function(tb,o){var n,s=o.settings,a,ro,it,cp=this.classPrefix;if(s.separator){ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'ItemSeparator'});DOM.add(ro,'td',{'class':cp+'ItemSeparator'});if(n=ro.previousSibling)DOM.addClass(n,'mceLast');return;}n=ro=DOM.add(tb,'tr',{id:o.id,'class':cp+'Item '+cp+'ItemEnabled'});n=it=DOM.add(n,'td');n=a=DOM.add(n,'a',{href:'javascript:;',onclick:"return false;",onmousedown:'return false;'});DOM.addClass(it,s['class']);DOM.add(n,'span',{'class':'mceIcon'+(s.icon?' mce_'+s.icon:'')});n=DOM.add(n,s.element||'span',{'class':'mceText',title:o.settings.title},o.settings.title);if(o.settings.style)DOM.setAttrib(n,'style',o.settings.style);if(tb.childNodes.length==1)DOM.addClass(ro,'mceFirst');if((n=ro.previousSibling)&&DOM.hasClass(n,cp+'ItemSeparator'))DOM.addClass(ro,'mceFirst');if(o.collapse)DOM.addClass(ro,cp+'ItemSub');if(n=ro.previousSibling)DOM.removeClass(n,'mceLast');DOM.addClass(ro,'mceLast');}});})();(function(){var DOM=tinymce.DOM;tinymce.create('tinymce.ui.Button:tinymce.ui.Control',{Button:function(id,s){this.parent(id,s);this.classPrefix='mceButton';},renderHTML:function(){var cp=this.classPrefix,s=this.settings,h,l;l=DOM.encode(s.label||'');h='<a id="'+this.id+'" href="javascript:;" class="'+cp+' '+cp+'Enabled '+s['class']+(l?' '+cp+'Labeled':'')+'" onmousedown="return false;" onclick="return false;" title="'+DOM.encode(s.title)+'">';if(s.image)h+='<img class="mceIcon" src="'+s.image+'" />'+l+'</a>';else h+='<span class="mceIcon '+s['class']+'"></span>'+(l?'<span class="'+cp+'Label">'+l+'</span>':'')+'</a>';return h;},postRender:function(){var t=this,s=t.settings;tinymce.dom.Event.add(t.id,'click',function(e){if(!t.isDisabled())return s.onclick.call(s.scope,e);});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control',{ListBox:function(id,s){var t=this;t.parent(id,s);t.items=[];t.onChange=new Dispatcher(t);t.onPostRender=new Dispatcher(t);t.onAdd=new Dispatcher(t);t.onRenderMenu=new tinymce.util.Dispatcher(this);t.classPrefix='mceListBox';},select:function(v){var t=this,e,fv;if(v!=t.selectedValue){e=DOM.get(t.id+'_text');t.selectedValue=v;each(t.items,function(o){if(o.value==v){DOM.setHTML(e,DOM.encode(o.title));fv=1;return false;}});if(!fv){DOM.setHTML(e,DOM.encode(t.settings.title));DOM.addClass(e,'mceTitle');e=0;return;}else DOM.removeClass(e,'mceTitle');}e=0;},add:function(n,v,o){var t=this;o=o||{};o=tinymce.extend(o,{title:n,value:v});t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return this.items.length;},renderHTML:function(){var h='',t=this,s=t.settings,cp=t.classPrefix;h='<table id="'+t.id+'" cellpadding="0" cellspacing="0" class="'+cp+' '+cp+'Enabled'+(s['class']?(' '+s['class']):'')+'"><tbody><tr>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_text',href:'javascript:;','class':'mceText',onclick:"return false;",onmousedown:'return false;'},DOM.encode(t.settings.title))+'</td>';h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',tabindex:-1,href:'javascript:;','class':'mceOpen',onclick:"return false;",onmousedown:'return false;'},'<span></span>')+'</td>';h+='</tr></tbody></table>';return h;},showMenu:function(){var t=this,p1,p2,e=DOM.get(this.id),m;if(t.isDisabled()||t.items.length==0)return;if(t.menu&&t.menu.isMenuVisible)return t.hideMenu();if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}p1=DOM.getPos(this.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.keyboard_focus=!tinymce.isOpera;if(t.oldID)m.items[t.oldID].setSelected(0);each(t.items,function(o){if(o.value===t.selectedValue){m.items[o.id].setSelected(1);t.oldID=o.id;}});m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);DOM.addClass(t.id,t.classPrefix+'Selected');},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&(e.target.id==t.id+'_text'||e.target.id==t.id+'_open'))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){DOM.removeClass(t.id,t.classPrefix+'Selected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':t.classPrefix+'Menu mceNoIcons',max_width:150,max_height:150});m.onHideMenu.add(t.hideMenu,t);m.add({title:t.settings.title,'class':'mceMenuItemTitle'}).setDisabled(1);each(t.items,function(o){o.id=DOM.uniqueId();o.onclick=function(){if(t.settings.onselect(o.value)!==false)t.select(o.value);};m.add(o);});t.onRenderMenu.dispatch(t,m);t.menu=m;},postRender:function(){var t=this,cp=t.classPrefix;Event.add(t.id,'click',t.showMenu,t);Event.add(t.id+'_text','focus',function(e){if(!t._focused){t.keyDownHandler=Event.add(t.id+'_text','keydown',function(e){var idx=-1,v,kc=e.keyCode;each(t.items,function(v,i){if(t.selectedValue==v.value)idx=i;});if(kc==38)v=t.items[idx-1];else if(kc==40)v=t.items[idx+1];else if(kc==13){v=t.selectedValue;t.selectedValue=null;t.settings.onselect(v);return Event.cancel(e);}if(v){t.hideMenu();t.select(v.value);}});}t._focused=1;});Event.add(t.id+'_text','blur',function(){Event.remove(t.id+'_text','keydown',t.keyDownHandler);t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.addClass(t.id,cp+'Hover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,cp+'Disabled'))DOM.removeClass(t.id,cp+'Hover');});}t.onPostRender.dispatch(t,DOM.get(t.id));},destroy:function(){this.parent();Event.clear(this.id+'_text');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,Dispatcher=tinymce.util.Dispatcher;tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox',{NativeListBox:function(id,s){this.parent(id,s);this.classPrefix='mceNativeListBox';},setDisabled:function(s){DOM.get(this.id).disabled=s;},isDisabled:function(){return DOM.get(this.id).disabled;},select:function(v){var e=DOM.get(this.id),ol=e.options;v=''+(v||'');e.selectedIndex=0;each(ol,function(o,i){if(o.value==v){e.selectedIndex=i;return false;}});},add:function(n,v,a){var o,t=this;a=a||{};a.value=v;if(t.isRendered())DOM.add(DOM.get(this.id),'option',a,n);o={title:n,value:v,attribs:a};t.items.push(o);t.onAdd.dispatch(t,o);},getLength:function(){return DOM.get(this.id).options.length-1;},renderHTML:function(){var h,t=this;h=DOM.createHTML('option',{value:''},'-- '+t.settings.title+' --');each(t.items,function(it){h+=DOM.createHTML('option',{value:it.value},it.title);});h=DOM.createHTML('select',{id:t.id,'class':'mceNativeListBox'},h);return h;},postRender:function(){var t=this,ch;t.rendered=true;function onChange(e){var v=e.target.options[e.target.selectedIndex].value;t.onChange.dispatch(t,v);if(t.settings.onselect)t.settings.onselect(v);};Event.add(t.id,'change',onChange);Event.add(t.id,'keydown',function(e){var bf;Event.remove(t.id,'change',ch);bf=Event.add(t.id,'blur',function(){Event.add(t.id,'change',onChange);Event.remove(t.id,'blur',bf);});if(e.keyCode==13||e.keyCode==32){onChange(e);return Event.cancel(e);}});t.onPostRender.dispatch(t,DOM.get(t.id));}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button',{MenuButton:function(id,s){this.parent(id,s);this.onRenderMenu=new tinymce.util.Dispatcher(this);s.menu_container=s.menu_container||DOM.doc.body;},showMenu:function(){var t=this,p1,p2,e=DOM.get(t.id),m;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();p1=DOM.getPos(t.settings.menu_container);p2=DOM.getPos(e);m=t.menu;m.settings.offset_x=p2.x;m.settings.offset_y=p2.y;m.settings.vp_offset_x=p2.x;m.settings.vp_offset_y=p2.y;m.settings.keyboard_focus=t._focused;m.showMenu(0,e.clientHeight);Event.add(DOM.doc,'mousedown',t.hideMenu,t);t.setState('Selected',1);t.isMenuVisible=1;},renderMenu:function(){var t=this,m;m=t.settings.control_manager.createDropMenu(t.id+'_menu',{menu_line:1,'class':this.classPrefix+'Menu',icons:t.settings.icons});m.onHideMenu.add(t.hideMenu,t);t.onRenderMenu.dispatch(t,m);t.menu=m;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id||e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceMenu');})){t.setState('Selected',0);Event.remove(DOM.doc,'mousedown',t.hideMenu,t);if(t.menu)t.menu.hideMenu();}t.isMenuVisible=0;},postRender:function(){var t=this,s=t.settings;Event.add(t.id,'click',function(){if(!t.isDisabled()){if(s.onclick)s.onclick(t.value);t.showMenu();}});}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each;tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton',{SplitButton:function(id,s){this.parent(id,s);this.classPrefix='mceSplitButton';},renderHTML:function(){var h,t=this,s=t.settings,h1;h='<tbody><tr>';if(s.image)h1=DOM.createHTML('img ',{src:s.image,'class':'mceAction '+s['class']});else h1=DOM.createHTML('span',{'class':'mceAction '+s['class']},'');h+='<td>'+DOM.createHTML('a',{id:t.id+'_action',href:'javascript:;','class':'mceAction '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h1=DOM.createHTML('span',{'class':'mceOpen '+s['class']});h+='<td>'+DOM.createHTML('a',{id:t.id+'_open',href:'javascript:;','class':'mceOpen '+s['class'],onclick:"return false;",onmousedown:'return false;',title:s.title},h1)+'</td>';h+='</tr></tbody>';return DOM.createHTML('table',{id:t.id,'class':'mceSplitButton mceSplitButtonEnabled '+s['class'],cellpadding:'0',cellspacing:'0',onmousedown:'return false;',title:s.title},h);},postRender:function(){var t=this,s=t.settings;if(s.onclick){Event.add(t.id+'_action','click',function(){if(!t.isDisabled())s.onclick(t.value);});}Event.add(t.id+'_open','click',t.showMenu,t);Event.add(t.id+'_open','focus',function(){t._focused=1;});Event.add(t.id+'_open','blur',function(){t._focused=0;});if(tinymce.isIE6||!DOM.boxModel){Event.add(t.id,'mouseover',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.addClass(t.id,'mceSplitButtonHover');});Event.add(t.id,'mouseout',function(){if(!DOM.hasClass(t.id,'mceSplitButtonDisabled'))DOM.removeClass(t.id,'mceSplitButtonHover');});}},destroy:function(){this.parent();Event.clear(this.id+'_action');Event.clear(this.id+'_open');}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,is=tinymce.is,each=tinymce.each;tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton',{ColorSplitButton:function(id,s){var t=this;t.parent(id,s);t.settings=s=tinymce.extend({colors:'000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',grid_width:8,default_color:'#888888'},t.settings);t.onShowMenu=new tinymce.util.Dispatcher(t);t.onHideMenu=new tinymce.util.Dispatcher(t);t.value=s.default_color;},showMenu:function(){var t=this,r,p,e,p2;if(t.isDisabled())return;if(!t.isMenuRendered){t.renderMenu();t.isMenuRendered=true;}if(t.isMenuVisible)return t.hideMenu();e=DOM.get(t.id);DOM.show(t.id+'_menu');DOM.addClass(e,'mceSplitButtonSelected');p2=DOM.getPos(e);DOM.setStyles(t.id+'_menu',{left:p2.x,top:p2.y+e.clientHeight,zIndex:200000});e=0;Event.add(DOM.doc,'mousedown',t.hideMenu,t);if(t._focused){t._keyHandler=Event.add(t.id+'_menu','keydown',function(e){if(e.keyCode==27)t.hideMenu();});DOM.select('a',t.id+'_menu')[0].focus();}t.onShowMenu.dispatch(t);t.isMenuVisible=1;},hideMenu:function(e){var t=this;if(e&&e.type=="mousedown"&&DOM.getParent(e.target,function(e){return e.id===t.id+'_open';}))return;if(!e||!DOM.getParent(e.target,function(n){return DOM.hasClass(n,'mceSplitButtonMenu');})){DOM.removeClass(t.id,'mceSplitButtonSelected');Event.remove(DOM.doc,'mousedown',t.hideMenu,t);Event.remove(t.id+'_menu','keydown',t._keyHandler);DOM.hide(t.id+'_menu');}t.onHideMenu.dispatch(t);t.isMenuVisible=0;},renderMenu:function(){var t=this,m,i=0,s=t.settings,n,tb,tr,w;w=DOM.add(s.menu_container,'div',{id:t.id+'_menu','class':s['menu_class']+' '+s['class'],style:'position:absolute;left:0;top:-1000px;'});m=DOM.add(w,'div',{'class':s['class']+' mceSplitButtonMenu'});DOM.add(m,'span',{'class':'mceMenuLine'});n=DOM.add(m,'table',{'class':'mceColorSplitMenu'});tb=DOM.add(n,'tbody');i=0;each(is(s.colors,'array')?s.colors:s.colors.split(','),function(c){c=c.replace(/^#/,'');if(!i--){tr=DOM.add(tb,'tr');i=s.grid_width-1;}n=DOM.add(tr,'td');n=DOM.add(n,'a',{href:'javascript:;',style:{backgroundColor:'#'+c},mce_color:'#'+c});});if(s.more_colors_func){n=DOM.add(tb,'tr');n=DOM.add(n,'td',{colspan:s.grid_width,'class':'mceMoreColors'});n=DOM.add(n,'a',{id:t.id+'_more',href:'javascript:;',onclick:'return false;','class':'mceMoreColors'},s.more_colors_title);Event.add(n,'click',function(e){s.more_colors_func.call(s.more_colors_scope||this);return Event.cancel(e);});}DOM.addClass(m,'mceColorSplitMenu');Event.add(t.id+'_menu','click',function(e){var c;e=e.target;if(e.nodeName=='A'&&(c=e.getAttribute('mce_color')))t.setColor(c);return Event.cancel(e);});return w;},setColor:function(c){var t=this;DOM.setStyle(t.id+'_preview','backgroundColor',c);t.value=c;t.hideMenu();t.settings.onselect(c);},postRender:function(){var t=this,id=t.id;t.parent();DOM.add(id+'_action','div',{id:id+'_preview','class':'mceColorPreview'});},destroy:function(){this.parent();Event.clear(this.id+'_menu');Event.clear(this.id+'_more');DOM.remove(this.id+'_menu');}});})();tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container',{renderHTML:function(){var t=this,h='',c,co,dom=tinymce.DOM,s=t.settings,i,pr,nx,cl;cl=t.controls;for(i=0;i<cl.length;i++){co=cl[i];pr=cl[i-1];nx=cl[i+1];if(i===0){c='mceToolbarStart';if(co.Button)c+=' mceToolbarStartButton';else if(co.SplitButton)c+=' mceToolbarStartSplitButton';else if(co.ListBox)c+=' mceToolbarStartListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));}if(pr&&co.ListBox){if(pr.Button||pr.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarEnd'},dom.createHTML('span',null,'<!-- IE -->'));}if(dom.stdMode)h+='<td style="position: relative">'+co.renderHTML()+'</td>';else h+='<td>'+co.renderHTML()+'</td>';if(nx&&co.ListBox){if(nx.Button||nx.SplitButton)h+=dom.createHTML('td',{'class':'mceToolbarStart'},dom.createHTML('span',null,'<!-- IE -->'));}}c='mceToolbarEnd';if(co.Button)c+=' mceToolbarEndButton';else if(co.SplitButton)c+=' mceToolbarEndSplitButton';else if(co.ListBox)c+=' mceToolbarEndListBox';h+=dom.createHTML('td',{'class':c},dom.createHTML('span',null,'<!-- IE -->'));return dom.createHTML('table',{id:t.id,'class':'mceToolbar'+(s['class']?' '+s['class']:''),cellpadding:'0',cellspacing:'0',align:t.settings.align||''},'<tbody><tr>'+h+'</tr></tbody>');}});(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each;tinymce.create('tinymce.AddOnManager',{items:[],urls:{},lookup:{},onAdd:new Dispatcher(this),get:function(n){return this.lookup[n];},requireLangPack:function(n){var u,s;if(tinymce.EditorManager.settings){u=this.urls[n]+'/langs/'+tinymce.EditorManager.settings.language+'.js';s=tinymce.EditorManager.settings;if(s){if(!tinymce.dom.Event.domLoaded&&!s.strict_mode)tinymce.ScriptLoader.load(u);else tinymce.ScriptLoader.add(u);}}},add:function(id,o){this.items.push(o);this.lookup[id]=o;this.onAdd.dispatch(this,id,o);return o;},load:function(n,u,cb,s){var t=this;if(t.urls[n])return;if(u.indexOf('/')!=0&&u.indexOf('://')==-1)u=tinymce.baseURL+'/'+u;t.urls[n]=u.substring(0,u.lastIndexOf('/'));tinymce.ScriptLoader.add(u,cb,s);}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager();}());(function(){var each=tinymce.each,extend=tinymce.extend,DOM=tinymce.DOM,Event=tinymce.dom.Event,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,explode=tinymce.explode;tinymce.create('static tinymce.EditorManager',{editors:{},i18n:{},activeEditor:null,preInit:function(){var t=this,lo=window.location;tinymce.documentBaseURL=lo.href.replace(/[\?#].*$/,'').replace(/[\/\\][^\/]+$/,'');if(!/[\/\\]$/.test(tinymce.documentBaseURL))tinymce.documentBaseURL+='/';tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(tinymce.EditorManager.baseURI.host!=lo.hostname&&lo.hostname)document.domain=tinymce.relaxedDomain=lo.hostname.replace(/.*\.(.+\..+)$/,'$1');t.onBeforeUnload=new tinymce.util.Dispatcher(t);Event.add(window,'beforeunload',function(e){t.onBeforeUnload.dispatch(t,e);});},init:function(s){var t=this,pl,sl=tinymce.ScriptLoader,c,e;function execCallback(se,n,s){var f=se[n];if(!f)return;if(tinymce.is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);}return f.apply(s||this,Array.prototype.slice.call(arguments,2));};s=extend({theme:"simple",language:"en",strict_loading_mode:document.contentType=='application/xhtml+xml'},s);t.settings=s;if(!Event.domLoaded&&!s.strict_loading_mode){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme&&s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');if(s.plugins){pl=explode(s.plugins);if(tinymce.inArray(pl,'compat2x')!=-1)PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');each(pl,function(v){if(v&&v.charAt(0)!='-'&&!PluginManager.urls[v]){if(!tinymce.isWebKit&&v=='safari')return;PluginManager.load(v,'plugins/'+v+'/editor_plugin'+tinymce.suffix+'.js');}});}sl.loadQueue();}Event.add(document,'init',function(){var l,co;execCallback(s,'onpageload');if(s.browsers){l=false;each(explode(s.browsers),function(v){switch(v){case'ie':case'msie':if(tinymce.isIE)l=true;break;case'gecko':if(tinymce.isGecko)l=true;break;case'safari':case'webkit':if(tinymce.isWebKit)l=true;break;case'opera':if(tinymce.isOpera)l=true;break;}});if(!l)return;}switch(s.mode){case"exact":l=s.elements||'';if(l.length>0){each(explode(l),function(v){if(DOM.get(v))new tinymce.Editor(v,s).render(1);else{c=0;each(document.forms,function(f){each(f.elements,function(e){if(e.name===v){v='mce_editor_'+c;DOM.setAttrib(e,'id',v);new tinymce.Editor(v,s).render(1);}});});}});}break;case"textareas":case"specific_textareas":function hasClass(n,c){return c.constructor===RegExp?c.test(n.className):DOM.hasClass(n,c);};each(DOM.select('textarea'),function(v){if(s.editor_deselector&&hasClass(v,s.editor_deselector))return;if(!s.editor_selector||hasClass(v,s.editor_selector)){e=DOM.get(v.name);if(!v.id&&!e)v.id=v.name;if(!v.id||t.get(v.id))v.id=DOM.uniqueId();new tinymce.Editor(v.id,s).render(1);}});break;}if(s.oninit){l=co=0;each(t.editors,function(ed){co++;if(!ed.initialized){ed.onInit.add(function(){l++;if(l==co)execCallback(s,'oninit');});}else l++;if(l==co)execCallback(s,'oninit');});}});},get:function(id){return this.editors[id];},getInstanceById:function(id){return this.get(id);},add:function(e){this.editors[e.id]=e;this._setActive(e);return e;},remove:function(e){var t=this;if(!t.editors[e.id])return null;delete t.editors[e.id];if(t.activeEditor==e){each(t.editors,function(e){t._setActive(e);return false;});}e.destroy();return e;},execCommand:function(c,u,v){var t=this,ed=t.get(v),w;switch(c){case"mceFocus":ed.focus();return true;case"mceAddEditor":case"mceAddControl":if(!t.get(v))new tinymce.Editor(v,t.settings).render();return true;case"mceAddFrameControl":w=v.window;w.tinyMCE=tinyMCE;w.tinymce=tinymce;tinymce.DOM.doc=w.document;tinymce.DOM.win=w;ed=new tinymce.Editor(v.element_id,v);ed.render();if(tinymce.isIE){function clr(){ed.destroy();w.detachEvent('onunload',clr);w=w.tinyMCE=w.tinymce=null;};w.attachEvent('onunload',clr);}v.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":ed.remove();return true;case'mceToggleEditor':if(!ed){t.execCommand('mceAddControl',0,v);return true;}if(ed.isHidden())ed.show();else ed.hide();return true;}if(t.activeEditor)return t.activeEditor.execCommand(c,u,v);return false;},execInstanceCommand:function(id,c,u,v){var ed=this.get(id);if(ed)return ed.execCommand(c,u,v);return false;},triggerSave:function(){each(this.editors,function(e){e.save();});},addI18n:function(p,o){var lo,i18n=this.i18n;if(!tinymce.is(p,'string')){each(p,function(o,lc){each(o,function(o,g){each(o,function(o,k){if(g==='common')i18n[lc+'.'+k]=o;else i18n[lc+'.'+g+'.'+k]=o;});});});}else{each(o,function(o,k){i18n[p+'.'+k]=o;});}},_setActive:function(e){this.selectedInstance=this.activeEditor=e;}});tinymce.EditorManager.preInit();})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,Dispatcher=tinymce.util.Dispatcher;var each=tinymce.each,isGecko=tinymce.isGecko,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit;var is=tinymce.is,ThemeManager=tinymce.ThemeManager,PluginManager=tinymce.PluginManager,EditorManager=tinymce.EditorManager;var inArray=tinymce.inArray,grep=tinymce.grep,explode=tinymce.explode;tinymce.create('tinymce.Editor',{Editor:function(id,s){var t=this;t.id=t.editorId=id;t.execCommands={};t.queryStateCommands={};t.queryValueCommands={};t.plugins={};each(['onPreInit','onBeforeRenderUI','onPostRender','onInit','onRemove','onActivate','onDeactivate','onClick','onEvent','onMouseUp','onMouseDown','onDblClick','onKeyDown','onKeyUp','onKeyPress','onContextMenu','onSubmit','onReset','onPaste','onPreProcess','onPostProcess','onBeforeSetContent','onBeforeGetContent','onSetContent','onGetContent','onLoadContent','onSaveContent','onNodeChange','onChange','onBeforeExecCommand','onExecCommand','onUndo','onRedo','onVisualAid','onSetProgressState'],function(e){t[e]=new Dispatcher(t);});t.settings=s=extend({id:id,language:'en',docs_language:'en',theme:'simple',skin:'default',delta_width:0,delta_height:0,popup_css:'',plugins:'',document_base_url:tinymce.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',visual_table_class:'mceItemTable',visual:1,inline_styles:true,convert_fonts_to_spans:true,font_size_style_values:'xx-small,x-small,small,medium,large,x-large,xx-large',apply_source_formatting:1,directionality:'ltr',forced_root_block:'p',valid_elements:'@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:'30px'},s);t.documentBaseURI=new tinymce.util.URI(s.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});t.baseURI=EditorManager.baseURI;t.execCallback('setup',t);},render:function(nst){var t=this,s=t.settings,id=t.id,sl=tinymce.ScriptLoader;if(!Event.domLoaded){Event.add(document,'init',function(){t.render();});return;}if(!nst){s.strict_loading_mode=1;tinyMCE.settings=s;}if(!t.getElement())return;if(s.strict_loading_mode){sl.settings.strict_mode=s.strict_loading_mode;tinymce.DOM.settings.strict=1;}if(!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&s.hidden_input&&DOM.getParent(id,'form'))DOM.insertAfter(DOM.create('input',{type:'hidden',name:id}),id);t.windowManager=new tinymce.WindowManager(t);if(s.encoding=='xml'){t.onGetContent.add(function(ed,o){if(o.save)o.content=DOM.encode(o.content);});}if(s.add_form_submit_trigger){t.onSubmit.addToTop(function(){if(t.initialized){t.save();t.isNotDirty=1;}});}if(s.add_unload_trigger&&!s.ask){t._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(t.initialized&&!t.destroyed&&!t.isHidden())t.save({format:'raw',no_events:true});});}tinymce.addUnload(t.destroy,t);if(s.submit_patch){t.onBeforeRenderUI.add(function(){var n=t.getElement().form;if(!n)return;if(n._mceOldSubmit)return;if(!n.submit.nodeType&&!n.submit.length){t.formElement=n;n._mceOldSubmit=n.submit;n.submit=function(){EditorManager.triggerSave();t.isNotDirty=1;return this._mceOldSubmit(this);};}n=null;});}function loadScripts(){if(s.language)sl.add(tinymce.baseURL+'/langs/'+s.language+'.js');if(s.theme.charAt(0)!='-'&&!ThemeManager.urls[s.theme])ThemeManager.load(s.theme,'themes/'+s.theme+'/editor_template'+tinymce.suffix+'.js');each(explode(s.plugins),function(p){if(p&&p.charAt(0)!='-'&&!PluginManager.urls[p]){if(!isWebKit&&p=='safari')return;PluginManager.load(p,'plugins/'+p+'/editor_plugin'+tinymce.suffix+'.js');}});sl.loadQueue(function(){if(s.ask){function ask(){window.setTimeout(function(){Event.remove(t.id,'focus',ask);t.windowManager.confirm(t.getLang('edit_confirm'),function(s){if(s)t.init();});},0);};Event.add(t.id,'focus',ask);return;}if(!t.removed)t.init();});};if(s.plugins.indexOf('compat2x')!=-1){PluginManager.load('compat2x','plugins/compat2x/editor_plugin'+tinymce.suffix+'.js');sl.loadQueue(loadScripts);}else loadScripts();},init:function(){var n,t=this,s=t.settings,w,h,e=t.getElement(),o,ti,u,bi,bc,re;EditorManager.add(t);s.theme=s.theme.replace(/-/,'');o=ThemeManager.get(s.theme);t.theme=new o();if(t.theme.init&&s.init_theme)t.theme.init(t,ThemeManager.urls[s.theme]||tinymce.documentBaseURL.replace(/\/$/,''));each(explode(s.plugins.replace(/\-/g,'')),function(p){var c=PluginManager.get(p),u=PluginManager.urls[p]||tinymce.documentBaseURL.replace(/\/$/,''),po;if(c){po=new c(t,u);t.plugins[p]=po;if(po.init)po.init(t,u);}});if(s.popup_css)s.popup_css=t.documentBaseURI.toAbsolute(s.popup_css);else s.popup_css=t.baseURI.toAbsolute("themes/"+s.theme+"/skins/"+s.skin+"/dialog.css");if(s.popup_css_add)s.popup_css+=','+t.documentBaseURI.toAbsolute(s.popup_css_add);t.controlManager=new tinymce.ControlManager(t);t.undoManager=new tinymce.UndoManager(t);t.undoManager.onAdd.add(function(um,l){if(!l.initial)return t.onChange.dispatch(t,l,um);});t.undoManager.onUndo.add(function(um,l){return t.onUndo.dispatch(t,l,um);});t.undoManager.onRedo.add(function(um,l){return t.onRedo.dispatch(t,l,um);});if(s.custom_undo_redo){t.onExecCommand.add(function(ed,cmd,ui,val,a){if(cmd!='Undo'&&cmd!='Redo'&&cmd!='mceRepaint'&&(!a||!a.skip_undo))t.undoManager.add();});}t.onExecCommand.add(function(ed,c){if(!/^(FontName|FontSize)$/.test(c))t.nodeChanged();});if(isGecko){function repaint(a,o){if(!o||!o.initial)t.execCommand('mceRepaint');};t.onUndo.add(repaint);t.onRedo.add(repaint);t.onSetContent.add(repaint);}t.onBeforeRenderUI.dispatch(t,t.controlManager);if(s.render_ui){w=s.width||e.style.width||e.offsetWidth;h=s.height||e.style.height||e.offsetHeight;t.orgDisplay=e.style.display;re=/^[0-9\.]+(|px)$/i;if(re.test(''+w))w=Math.max(parseInt(w)+(o.deltaWidth||0),100);if(re.test(''+h))h=Math.max(parseInt(h)+(o.deltaHeight||0),100);o=t.theme.renderUI({targetNode:e,width:w,height:h,deltaWidth:s.delta_width,deltaHeight:s.delta_height});t.editorContainer=o.editorContainer;}DOM.setStyles(o.sizeContainer||o.editorContainer,{width:w,height:h});h=(o.iframeHeight||h)+((h+'').indexOf('%')==-1?(o.deltaHeight||0):'');if(h<100)h=100;t.iframeHTML=s.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+t.documentBaseURI.getURI()+'"></base>';t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(tinymce.relaxedDomain)t.iframeHTML+='<script type="text/javascript">document.domain = "'+tinymce.relaxedDomain+'";</script>';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='</head><body id="'+bi+'" class="mceContentBody '+bc+'"></body></html>';if(tinymce.relaxedDomain){if(isIE)u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('</('+v+')>','g'),'</'+n+'>');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'<br />');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*<pre.*?>/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='<pre class="mceItemHidden">'+o.content+'</pre>';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(<p>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,'');});}if(isGecko){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce)t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language,i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[this.settings.language+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;},save:function(o){var t=this,e=t.getElement(),h,f;if(!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'<br mce_bogus="1" />');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.keyCode==46||e.keyCode==8||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i<el.length;i++){if(el[i].type!='hidden')return el[i];}}else{for(i=x-1;i>=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'<h'+i+'>']);t.addShortcut('ctrl+7','',['FormatBlock',false,'<p>']);t.addShortcut('ctrl+8','',['FormatBlock',false,'<div>']);t.addShortcut('ctrl+9','',['FormatBlock',false,'<address>']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(o.ctrl!=e.ctrlKey&&(!tinymce.isMac||o.ctrl==e.metaKey))return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function convertToFonts(no){var n,f,nl,x,i,v,st;if(tinymce.isWebKit||!s.inline_styles)return;nl=t.dom.select('span',no);for(x=nl.length-1;x>=0;x--){n=nl[x];f=dom.create('font',{color:dom.toHex(dom.getStyle(n,'color')),face:dom.getStyle(n,'fontFamily'),style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});st=f.style;if(st.color||st.fontFamily){st.color=st.fontFamily='';dom.setAttrib(f,'mce_style','');}if(sl){i=inArray(sl,dom.getStyle(n,'fontSize'));if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));}}else if(cl){i=inArray(cl,dom.getAttrib(n,'class'));v=dom.getStyle(n,'fontSize');if(i==-1&&v.indexOf('pt')>0)i=inArray(fz,parseInt(v));if(i==-1)i=inArray(fzn,v);if(i!=-1){dom.setAttrib(f,'size',''+(i+1||1));f.style.fontSize='';}}if(f.color||f.face||f.size){f.style.fontFamily='';dom.setAttrib(f,'mce_style','');dom.replace(f,n,1);}f=n=null;}};t.onSetContent.add(function(ed,o){convertToFonts(ed.getBody());});t.onPreProcess.add(function(ed,o){var n,sp,nl,x;if(!s.inline_styles)return;if(o.get){nl=t.dom.select('font',o.node);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}}});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'</'+d[d.length-1].tag+'>';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='</'+d[i].tag+'>';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else ed.getDoc().execCommand('FontName',false,v);},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fz=tinymce.explode(s.font_size_style_values),fzc=tinymce.explode(s.font_size_classes),h,bm;each(ed.dom.select('font'),function(e){e.style.fontSize='';});ed.getDoc().execCommand('FontSize',false,v);if(s.inline_styles){each(ed.dom.select('font'),function(e){if(!e.size||e.parentNode.nodeName=='FONT'&&e.size==e.parentNode.size){if(!bm)bm=ed.selection.getBookmark();ed.dom.remove(e,1);return;}if(v=e.size){if(fzc&&fzc.length>0)ed.dom.setAttrib(e,'class',fzc[parseInt(v)-1]);else ed.dom.setStyle(e,'fontSize',fz[parseInt(v)-1]);}});}ed.selection.moveToBookmark(bm);},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(isOpera||isWebKit){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('<hr />');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(e=t.getSelectedElement())set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'<p>'):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}else return!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE');return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList();},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),dom.isBlock);eb=dom.getParent(s.getEnd(),dom.isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),dom.isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),dom.isBlock);eb=dom.getParent(en||s.getEnd(),dom.isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(dom.isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i<t.data.length-1;i++)t.data[i]=t.data[i+1];t.data.length--;t.index=t.data.length;}}if(s.custom_undo_redo_restore_selection&&!l.initial)l.bookmark=b=l.bookmark||ed.selection.getBookmark();if(t.index<t.data.length)t.index++;if(t.data.length===0&&!l.initial)return null;t.data.length=t.index+1;t.data[t.index++]=l;if(l.initial)t.index=0;if(t.data.length==2&&t.data[0].initial)t.data[0].bookmark=b;t.onAdd.dispatch(t,l);ed.isNotDirty=0;return l;},undo:function(){var t=this,ed=t.editor,l=l,i;if(t.typing){t.add();t.typing=0;}if(t.index>0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index<t.data.length-1){l=t.data[++t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onRedo.dispatch(t,l);}return l;},clear:function(){var t=this;t.data=[];t.index=0;t.typing=0;t.add({initial:true});},hasUndo:function(){return this.index!=0||this.typing;},hasRedo:function(){return this.index<this.data.length-1;}});(function(){var Event,isIE,isGecko,isOpera,each,extend;Event=tinymce.dom.Event;isIE=tinymce.isIE;isGecko=tinymce.isGecko;isOpera=tinymce.isOpera;each=tinymce.each;extend=tinymce.extend;tinymce.create('tinymce.ForceBlocks',{ForceBlocks:function(ed){var t=this,s=ed.settings,elm;t.editor=ed;t.dom=ed.dom;elm=(s.forced_root_block||'p').toLowerCase();s.element=elm.toUpperCase();ed.onPreInit.add(t.setup,t);t.reOpera=new RegExp('(\\u00a0|&#160;|&nbsp;)<\/'+elm+'>','gi');t.rePadd=new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp('<p( )([^>]+)>(&nbsp;|&#160;)<\\\/p>|<p>(&nbsp;|&#160;)<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*<br \\/>\\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'</'+elm+'>');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0</'+elm+'>');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2><br /></'+elm+'>');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2><br /></'+elm+'>');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0</'+elm+'>');o.content=o.content.replace(t.reTrailBr,'</'+elm+'>');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('<br id="__" /> ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i;if(e&&e.keyCode==13)return true;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'<br />');aft=ed.dom.add(sn,se.element,null,'<br />');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='<br />';if(isEmpty(aft))aft.innerHTML=isOpera?'&nbsp;':'<br />';if(isOpera){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(aft):aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(y<vp.y||y+ch>vp.y+vp.h){ed.getWin().scrollTo(0,y<vp.y?y:y-vp.h+ch);}return false;},backspaceDelete:function(e,bs){var t=this,ed=t.editor,b=ed.getBody(),n,se=ed.selection,r=se.getRng(),sc=r.startContainer,n,w,tn;if(sc&&ed.dom.isBlock(sc)&&!/^(TD|TH)$/.test(sc.nodeName)&&bs){if(sc.childNodes.length==0||(sc.childNodes.length==1&&sc.firstChild.nodeName=='BR')){n=sc;while((n=n.previousSibling)&&!ed.dom.isBlock(n));if(n){if(sc!=b.firstChild){w=ed.dom.doc.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false);while(tn=w.nextNode())n=tn;r=ed.getDoc().createRange();r.setStart(n,n.nodeValue?n.nodeValue.length:0);r.setEnd(n,n.nodeValue?n.nodeValue.length:0);se.setRng(r);ed.dom.remove(sc);}return Event.cancel(e);}}}function handler(e){e=e.target;if(e&&e.parentNode&&e.nodeName=='BR'&&(n=t.getParentBlock(e))){Event.remove(b,'DOMNodeInserted',handler);if(e.previousSibling||e.nextSibling)ed.dom.remove(e);}};Event._add(b,'DOMNodeInserted',handler);window.setTimeout(function(){Event._remove(b,'DOMNodeInserted',handler);},1);}});})();(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,each=tinymce.each,extend=tinymce.extend;tinymce.create('tinymce.ControlManager',{ControlManager:function(ed,s){var t=this,i;s=s||{};t.editor=ed;t.controls={};t.onAdd=new tinymce.util.Dispatcher(t);t.onPostRender=new tinymce.util.Dispatcher(t);t.prefix=s.prefix||ed.id+'_';t._cls={};t.onPostRender.add(function(){each(t.controls,function(c){c.postRender();});});},get:function(id){return this.controls[this.prefix+id]||this.controls[id];},setActive:function(id,s){var c=null;if(c=this.get(id))c.setActive(s);return c;},setDisabled:function(id,s){var c=null;if(c=this.get(id))c.setDisabled(s);return c;},add:function(c){var t=this;if(c){t.controls[c.id]=c;t.onAdd.dispatch(c,t);}return c;},createControl:function(n){var c,t=this,ed=t.editor;each(ed.plugins,function(p){if(p.createControl){c=p.createControl(n,t);if(c)return false;}});switch(n){case"|":case"separator":return t.createSeparator();}if(!c&&ed.buttons&&(c=ed.buttons[n]))return t.createButton(n,c);return t.add(c);},createDropMenu:function(id,s,cc){var t=this,ed=t.editor,c,bm,v,cls;s=extend({'class':'mceDropDown',constrain:ed.settings.constrain_menus},s);s['class']=s['class']+' '+ed.getParam('skin')+'Skin';if(v=ed.getParam('skin_variant'))s['class']+=' '+ed.getParam('skin')+'Skin'+v.substring(0,1).toUpperCase()+v.substring(1);id=t.prefix+id;cls=cc||t._cls.dropmenu||tinymce.ui.DropMenu;c=t.controls[id]=new cls(id,s);c.onAddItem.add(function(c,o){var s=o.settings;s.title=ed.getLang(s.title,s.title);if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,s.value);};}});ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createListBox:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;if(ed.settings.use_native_selects)c=new tinymce.ui.NativeListBox(id,s);else{cls=cc||t._cls.listbox||tinymce.ui.ListBox;c=new cls(id,s);}t.controls[id]=c;if(tinymce.isWebKit){c.onPostRender.add(function(c,n){Event.add(n,'mousedown',function(){ed.bookmark=ed.selection.getBookmark('simple');});Event.add(n,'focus',function(){ed.selection.moveToBookmark(ed.bookmark);ed.bookmark=null;});});}if(c.hideMenu)ed.onMouseDown.add(c.hideMenu,c);return t.add(c);},createButton:function(id,s,cc){var t=this,ed=t.editor,o,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.label=ed.translate(s.label);s.scope=s.scope||ed;if(!s.onclick&&!s.menu_button){s.onclick=function(){ed.execCommand(s.cmd,s.ui||false,s.value);};}s=extend({title:s.title,'class':'mce_'+id,unavailable_prefix:ed.getLang('unavailable',''),scope:s.scope,control_manager:t},s);id=t.prefix+id;if(s.menu_button){cls=cc||t._cls.menubutton||tinymce.ui.MenuButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);}else{cls=t._cls.button||tinymce.ui.Button;c=new cls(id,s);}return t.add(c);},createMenuButton:function(id,s){s=s||{};s.menu_button=1;return this.createButton(id,s);},createSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,scope:s.scope,control_manager:t},s);id=t.prefix+id;cls=cc||t._cls.splitbutton||tinymce.ui.SplitButton;c=t.add(new cls(id,s));ed.onMouseDown.add(c.hideMenu,c);return c;},createColorSplitButton:function(id,s,cc){var t=this,ed=t.editor,cmd,c,cls,bm;if(t.get(id))return null;s.title=ed.translate(s.title);s.scope=s.scope||ed;if(!s.onclick){s.onclick=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}if(!s.onselect){s.onselect=function(v){ed.execCommand(s.cmd,s.ui||false,v||s.value);};}s=extend({title:s.title,'class':'mce_'+id,'menu_class':ed.getParam('skin')+'Skin',scope:s.scope,more_colors_title:ed.getLang('more_colors')},s);id=t.prefix+id;cls=cc||t._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;c=new cls(id,s);ed.onMouseDown.add(c.hideMenu,c);ed.onRemove.add(function(){c.destroy();});if(tinymce.isIE){c.onShowMenu.add(function(){bm=ed.selection.getBookmark(1);});c.onHideMenu.add(function(){if(bm)ed.selection.moveToBookmark(bm);});}return t.add(c);},createToolbar:function(id,s,cc){var c,t=this,cls;id=t.prefix+id;cls=cc||t._cls.toolbar||tinymce.ui.Toolbar;c=new cls(id,s);if(t.get(id))return null;return t.add(c);},createSeparator:function(cc){var cls=cc||this._cls.separator||tinymce.ui.Separator;return new cls();},setControlType:function(n,c){return this._cls[n.toLowerCase()]=c;},destroy:function(){each(this.controls,function(c){c.destroy();});this.controls=null;}});})();(function(){var Dispatcher=tinymce.util.Dispatcher,each=tinymce.each,isIE=tinymce.isIE,isOpera=tinymce.isOpera;tinymce.create('tinymce.WindowManager',{WindowManager:function(ed){var t=this;t.editor=ed;t.onOpen=new Dispatcher(t);t.onClose=new Dispatcher(t);t.params={};t.features={};},open:function(s,p){var t=this,f='',x,y,mo=t.editor.settings.dialog_type=='modal',w,sw,sh,vp=tinymce.DOM.getViewPort(),u;s=s||{};p=p||{};sw=isOpera?vp.w:screen.width;sh=isOpera?vp.h:screen.height;s.name=s.name||'mc_'+new Date().getTime();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240);s.resizable=true;s.left=s.left||parseInt(sw/ 2.0) - (s.width /2.0);s.top=s.top||parseInt(sh/ 2.0) - (s.height /2.0);p.inline=false;p.mce_width=s.width;p.mce_height=s.height;p.mce_auto_focus=s.auto_focus;if(mo){if(isIE){s.center=true;s.help=false;s.dialogWidth=s.width+'px';s.dialogHeight=s.height+'px';s.scroll=s.scrollbars||false;}}each(s,function(v,k){if(tinymce.is(v,'boolean'))v=v?'yes':'no';if(!/^(name|url)$/.test(k)){if(isIE&&mo)f+=(f?';':'')+k+':'+v;else f+=(f?',':'')+k+'='+v;}});t.features=s;t.params=p;t.onOpen.dispatch(t,s,p);u=s.url||s.file;if(tinymce.relaxedDomain)u+=(u.indexOf('?')==-1?'?':'&')+'mce_rdomain='+tinymce.relaxedDomain;u=tinymce._addVer(u);try{if(isIE&&mo){w=1;window.showModalDialog(u,window,f);}else w=window.open(u,s.name,f);}catch(ex){}if(!w)alert(t.editor.getLang('popup_blocked'));},close:function(w){w.close();this.onClose.dispatch(this);},createInstance:function(cl,a,b,c,d,e){var f=tinymce.resolve(cl);return new f(a,b,c,d,e);},confirm:function(t,cb,s){cb.call(s||this,confirm(this._decode(this.editor.getLang(t,t))));},alert:function(tx,cb,s){var t=this;alert(t._decode(t.editor.getLang(tx,tx)));if(cb)cb.call(s||t);},_decode:function(s){return tinymce.DOM.decode(s).replace(/\\n/g,'\n');}});}());
+function TinyMCE_Engine(){var ua;this.majorVersion="2";this.minorVersion="1.2";this.releaseDate="2007-08-21";this.instances=[];this.switchClassCache=[];this.windowArgs=[];this.loadedFiles=[];this.pendingFiles=[];this.loadingIndex=0;this.configs=[];this.currentConfig=0;this.eventHandlers=[];this.log=[];this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;this.settings=[];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.isMSIE7=this.isMSIE&&(ua.indexOf('MSIE 7')!=-1);this.isGecko=ua.indexOf('Gecko')!=-1;this.isSafari=ua.indexOf('Safari')!=-1;this.isOpera=window['opera']&&opera.buildNumber?true:false;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=[];this.themes=[];this.menus=[];this.loadedPlugins=[];this.buttonMap=[];this.isLoaded=false;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false}this.isIE=this.isMSIE;this.isRealIE=this.isMSIE&&!this.isOpera;this.idCounter=0};TinyMCE_Engine.prototype={init:function(settings){var theme,nl,baseHREF="",i,cssPath,entities,h,p,src,elements=[],head;if(this.isMSIE5_0)return;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){head=document.getElementsByTagName('head')[0];if(head){for(i=0,nl=head.getElementsByTagName('script');i<nl.length;i++)elements.push(nl[i])}for(i=0,nl=document.getElementsByTagName('script');i<nl.length;i++)elements.push(nl[i]);nl=document.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(nl[i].href)baseHREF=nl[i].href}for(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)){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':'';if(baseHREF!==''&&src.indexOf('://')==-1)tinyMCE.baseURL=baseHREF+src;else 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],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");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("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("custom_undo_redo_global",false);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",true);this._def("fix_table_elements",false);this._def("strict_loading_mode",document.contentType=='application/xhtml+xml');this._def("hidden_tab_class",'');this._def("display_tab_class",'');this._def("gecko_spellcheck",false);this._def("hide_selects_on_submit",true);this._def("forced_root_block",false);this._def("remove_trailing_nbsp",false);this._def("save_on_tinymce_forms",false);if(this.isMSIE&&!this.isOpera)this.settings.strict_loading_mode=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;baseHREF=tinyMCE.settings.document_base_url;h=document.location.href;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.inlineStrict='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';this.inlineTransitional='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';this.blockElms='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';this.blockRegExp=new RegExp("^("+this.blockElms+")$","i");this.posKeyCodes=[13,45,36,35,33,34,37,38,39,40];this.uniqueURL='javascript:void(091039730);';this.uniqueTag='<div id="mceTMPElement" style="display: none">TMP</div>';this.callbacks=['onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup','removeInstance'];this.settings.theme_href=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isIE||tinyMCE.isOpera)this.settings.force_br_newlines=false;if(tinyMCE.getParam("popups_css",false)){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)){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{if(this.settings.editor_css!=='')this.settings.editor_css=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css"}if(this.configs.length==0){if(typeof(TinyMCECompressed)=="undefined"){tinyMCE.addEvent(window,"DOMContentLoaded",TinyMCE_Engine.prototype.onLoad);if(tinyMCE.isRealIE){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);p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){if(p[i].charAt(0)!='-')this.loadScript(tinyMCE.baseURL+'/plugins/'+p[i]+'/editor_plugin'+tinyMCE.srcMode+'.js')}}if(tinyMCE.getParam('entity_encoding')=='named'){settings.cleanup_entities=[];entities=tinyMCE.getParam('entities','',true,',');for(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;this.loadNextScript();if(this.isIE&&!this.isOpera){try{document.execCommand('BackgroundImageCache',false,true)}catch(e){}}this.xmlEncodeRe=new RegExp('[<>&"]','g')},_addUnloadEvents:function(){var st=tinyMCE.settings.add_unload_trigger;if(tinyMCE.isIE){if(st){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.unloadHandler)}}else{if(st)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;this.loadNextScript()},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;this.loadNextScript()},addMenu:function(n,m){this.menus[n]=m},hasMenu:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},loadScript:function(url){var i;for(i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return}if(tinyMCE.settings.strict_loading_mode)this.pendingFiles[this.pendingFiles.length]=url;else document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url},loadNextScript:function(){var d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loadingIndex<this.pendingFiles.length){se=d.createElementNS('http://www.w3.org/1999/xhtml','script');se.setAttribute('language','javascript');se.setAttribute('type','text/javascript');se.setAttribute('src',this.pendingFiles[this.loadingIndex++]);d.getElementsByTagName("head")[0].appendChild(se)}else this.loadingIndex=-1;},loadCSS:function(url){var ar=url.replace(/\s+/,'').split(',');var lflen=0,csslen=0,skip=false;var x=0,i=0,nl,le;for(x=0,csslen=ar.length;x<csslen;x++){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){if(tinyMCE.settings.strict_loading_mode){nl=document.getElementsByTagName("head");le=document.createElement('link');le.setAttribute('href',ar[x]);le.setAttribute('rel','stylesheet');le.setAttribute('type','text/css');nl[0].appendChild(le)}else 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.isIE?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,n,inst,doc;formElement=document.getElementById(form_element_name);for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isIE)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)},removeInstance:function(ti){var t=[],n,i;for(n in tinyMCE.instances){i=tinyMCE.instances[n];if(tinyMCE.isInstance(i)&&ti!=i)t[n]=i}tinyMCE.instances=t;n=[];t=tinyMCE.undoLevels;for(i=0;i<t.length;i++){if(t[i]!=ti)n.push(t[i])}tinyMCE.undoLevels=n;tinyMCE.undoIndex=n.length;tinyMCE.dispatchCallback(ti,'remove_instance_callback','removeInstance',ti);return ti},removeMCEControl:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),h,re,ot,tn,n;if(inst){inst.switchSettings();editor_id=inst.editorId;h=tinyMCE.getContent(editor_id);this.removeInstance(inst);tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;for(n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;tinyMCE.selectedInstance=tinyMCE.instances[n];break}re=document.getElementById(editor_id+"_parent");ot=inst.oldTargetElement;tn=ot.nodeName.toLowerCase();if(tn=="textarea"||tn=="input"){re.parentNode.removeChild(re);ot.style.display="inline";ot.value=h}else{ot.innerHTML=h;ot.style.display='block';re.parentNode.insertBefore(ot,re);re.parentNode.removeChild(re)}}},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),r;if(inst){r=inst.selection.getRng();if(typeof(focus)=="undefined")focus=true;if(focus&&(!r||!r.item))inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();inst.select();tinyMCE.execCommand(command,user_interface,value);if(tinyMCE.isIE&&window.event!=null)tinyMCE.cancelEvent(window.event)}},execCommand:function(command,user_interface,value){var inst=tinyMCE.selectedInstance,n,pe,te;user_interface=user_interface?user_interface:false;value=value?value:null;if(inst)inst.switchSettings();switch(command){case"Undo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex>0){tinyMCE.nextUndoRedoAction='Undo';inst=this.undoLevels[--this.undoIndex];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Undo')}}else inst.execCommand('Undo');return true;case"Redo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex<=this.undoLevels.length-1){tinyMCE.nextUndoRedoAction='Redo';inst=this.undoLevels[this.undoIndex++];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Redo')}}else inst.execCommand('Redo');return true;case'mceFocus':inst=tinyMCE.getInstanceById(value);if(inst)inst.getWin().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"mceToggleEditor":inst=tinyMCE.getInstanceById(value);if(inst){pe=document.getElementById(inst.editorId+'_parent');te=inst.oldTargetElement;if(typeof(inst.enabled)=='undefined')inst.enabled=true;inst.enabled=!inst.enabled;if(!inst.enabled){pe.style.display='none';if(te.nodeName=='TEXTAREA'||te.nodeName=='INPUT')te.value=inst.getHTML();else te.innerHTML=inst.getHTML();te.style.display=inst.oldTargetDisplay;tinyMCE.dispatchCallback(inst,'hide_instance_callback','hideInstance',inst)}else{pe.style.display='block';te.style.display='none';if(te.nodeName=='TEXTAREA'||te.nodeName=='INPUT')inst.setHTML(te.value);else inst.setHTML(te.innerHTML);inst.useCSS=false;tinyMCE.dispatchCallback(inst,'show_instance_callback','showInstance',inst)}}else tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceResetDesignMode":if(tinyMCE.isGecko){for(n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="off";tinyMCE.instances[n].getDoc().designMode="on";tinyMCE.instances[n].useCSS=false}catch(e){}}}return}if(inst){inst.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=(isNaN(aw)||aw<0)?300:aw;aw=aw+"px"}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=(isNaN(ah)||ah<0)?240:ah;ah=ah+"px"}iframe.setAttribute("id",id);iframe.setAttribute("name",id);iframe.setAttribute("class","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");iframe.className='mceEditorIframe';if(tinyMCE.settings.auto_resize)iframe.setAttribute("scrolling","no");if(tinyMCE.isRealIE)iframe.setAttribute("src",this.settings.default_document);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.settings.strict_loading_mode)iframe.style.marginBottom='-5px';if(tinyMCE.isRealIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isRealIE)return win.frames[id];else return iframe},setupContent:function(editor_id){var inst=tinyMCE.instances[editor_id],i,doc=inst.getDoc(),head=doc.getElementsByTagName('head').item(0);var content=inst.startContent,contentElement,body;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/&lt;/g,'<');content=content.replace(/&gt;/g,'>');content=content.replace(/&quot;/g,'"');content=content.replace(/&amp;/g,'&')}tinyMCE.selectedInstance=inst;inst.switchSettings();if(!tinyMCE.isIE&&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||!doc.body){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')}for(i=1;i<=6;i++)inst.addShortcut('ctrl',''+i,'','FormatBlock',false,'<h'+i+'>');inst.addShortcut('ctrl','7','','FormatBlock',false,'<p>');inst.addShortcut('ctrl','8','','FormatBlock',false,'<div>');inst.addShortcut('ctrl','9','','FormatBlock',false,'<address>');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.getBody().setAttribute('id','mceSpanFonts');if(tinyMCE.settings.nowrap)doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings.directionality;doc.editorId=editor_id;if(!tinyMCE.isIE)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.isIE){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;");body=inst.getBody();body.editorId=editor_id}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isIE){contentElement=inst.getDoc().createElement("body");doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.settings.cleanup_on_startup)tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else tinyMCE.setInnerHTML(inst.getBody(),content);tinyMCE.convertAllRelativeURLs(inst.getBody())}else{if(tinyMCE.settings.cleanup_on_startup){tinyMCE._setHTML(inst.getDoc(),content);try{tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,inst.contentDocument,this.settings,inst.getBody()))}catch(e){}}else tinyMCE._setHTML(inst.getDoc(),content)}tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings.visual,inst);tinyMCE.dispatchCallback(inst,'setupcontent_callback','setupContent',editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isIE)tinyMCE.addEventHandlers(inst);if(tinyMCE.isIE){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)}}inst.select();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('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}if(tinyMCE.isGecko)inst.getBody().spellcheck=tinyMCE.getParam("gecko_spellcheck");tinyMCE._removeInternal(inst.getBody());inst.select();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('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}},removeTinyMCEFormElements:function(form_obj){var i,elementId;if(!tinyMCE.getParam('hide_selects_on_submit'))return;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(i=0;i<form_obj.elements.length;i++){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,i,elm,keys;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);if(tinyMCE.isRealIE){var ife=tinyMCE.selectedInstance.iframeElement;if(ife.style.height.indexOf('%')!=-1){ife._oldHeight=ife.style.height;ife.style.height=ife.clientHeight}}window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();",1);return;case"submit":tinyMCE.formSubmit(tinyMCE.isMSIE?window.event.srcElement:e.target);return;case"reset":var formObj=tinyMCE.isIE?window.event.srcElement:e.target;for(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.instances[e.target.editorId].select()}else{if(e.target.ownerDocument.editorId)tinyMCE.instances[e.target.ownerDocument.editorId].select()}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if((tinyMCE.isGecko||tinyMCE.isOpera||tinyMCE.isSafari)&&tinyMCE.settings.force_p_newlines&&e.keyCode==13&&!e.shiftKey){if(TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance,e)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if((tinyMCE.isGecko&&!tinyMCE.isSafari)&&tinyMCE.settings.force_p_newlines&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if(tinyMCE.isIE&&tinyMCE.settings.force_br_newlines&&e.keyCode==13){if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();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;case"keyup":case"keydown":tinyMCE.hideMenus();tinyMCE.hasMouseMoved=false;if(inst&&inst.handleShortcut(e))return false;inst._fixRootBlocks();if(inst.settings.remove_trailing_nbsp)inst._fixTrailingNbsp();if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();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;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.isIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isIE&&e.type=="keyup"&&e.keyCode==13){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="&nbsp;&nbsp;";else elm.innerHTML="&nbsp;"}}}keys=tinyMCE.posKeyCodes;var posKey=false;for(i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break}}if(tinyMCE.isIE&&tinyMCE.settings.custom_undo_redo){keys=[8,46];for(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(tinyMCE.isGecko){if(!posKey&&e.type=="keyup"&&!e.ctrlKey||(e.ctrlKey&&(e.keyCode==86||e.keyCode==88)))tinyMCE.execCommand("mceStartTyping")}else{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.isIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case"mousedown":case"mouseup":case"click":case"dblclick":case"focus":tinyMCE.hideMenus();if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();tinyMCE.selectedInstance.isFocused=true}var targetBody=tinyMCE.getParentElement(e.target,"html");for(var instanceName in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody().parentNode==targetBody){inst.select();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&&(e.type=="mouseup"||e.type=="dblclick"))tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark=tinyMCE.selectedInstance.selection.getBookmark();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.instances[e.target.editorId].select();return false}},getButtonHTML:function(id,lang,img,cmd,ui,val){var h='',m,x,io='';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.isRealIE)io='onmouseover="tinyMCE.lastHover = this;"';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||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;" '+io+' class="mceTiledButton mceButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="background-position: '+x+'px 0" alt="{$'+lang+'}" title="{$'+lang+'}" />';h+='</a>'}else{h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceButtonNormal" target="_self">';h+='<img src="'+img+'" alt="{$'+lang+'}" title="{$'+lang+'}" />';h+='</a>'}return h},getMenuButtonHTML:function(id,lang,img,mcmd,cmd,ui,val){var h='',m,x;mcmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+mcmd+'\');';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.isIE||tinyMCE.isOpera)&&(m=tinyMCE.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: '+x+'px 0" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}else{if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" dir="ltr" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';h+='<img src="'+img+'" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}return h},_menuButtonEvent:function(e,o){if(o.className=='mceMenuButtonFocus')return;if(e=='over')o.className=o.className+' mceMenuHover';else o.className=o.className.replace(/\s.*$/,'')},addButtonMap:function(m){var i,a=m.replace(/\s+/,'').split(',');for(i=0;i<a.length;i++)this.buttonMap[a[i]]=i},formSubmit:function(f,p){var n,inst,found=false;if(f.form)f=f.form;if(tinyMCE.getParam('save_on_tinymce_forms')){for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.formElement){if(f==inst.formElement.form){found=true;inst.isNotDirty=true}}}}else found=true;if(found){tinyMCE.removeTinyMCEFormElements(f);tinyMCE.triggerSave()}if(f.mceOldSubmit&&p)f.mceOldSubmit()},submitPatch:function(){tinyMCE.formSubmit(this,true)},onLoad:function(){var r,i,c,mode,trigger,elements,element,settings,elementId,elm;var selector,deselector,elementRefAr,form;if(tinyMCE.settings.strict_loading_mode&&this.loadingIndex!=-1){window.setTimeout('tinyMCE.onLoad();',1);return}if(tinyMCE.isRealIE&&window.event.type=="readystatechange"&&document.readyState!="complete")return true;if(tinyMCE.isLoaded)return true;tinyMCE.isLoaded=true;if(tinyMCE.isRealIE&&document.body&&window.location.href!=window.top.location.href){r=document.body.createTextRange();r.collapse(true);r.select()}tinyMCE.dispatchCallback(null,'onpageload','onPageLoad');for(c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];selector=tinyMCE.getParam("editor_selector");deselector=tinyMCE.getParam("editor_deselector");elementRefAr=[];if(document.forms&&tinyMCE.settings.add_form_submit_trigger&&!tinyMCE.submitTriggers){for(i=0;i<document.forms.length;i++){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){}}}}mode=tinyMCE.settings.mode;switch(mode){case"exact":elements=tinyMCE.getParam('elements','',true,',');for(i=0;i<elements.length;i++){element=tinyMCE._getElementById(elements[i]);trigger=element?element.getAttribute(tinyMCE.settings.textarea_trigger):"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(element,"class")))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])}break;case"specific_textareas":case"textareas":elements=document.getElementsByTagName("textarea");for(i=0;i<elements.length;i++){elm=elements.item(i);trigger=elm.getAttribute(tinyMCE.settings.textarea_trigger);if(selector!==''&&!new RegExp('\\b'+selector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if(selector!=='')trigger=selector!==''?"true":"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm}break}for(i=0;i<elementRefAr.length;i++){element=elementRefAr[i];elementId=element.name?element.name:element.id;if(tinyMCE.settings.ask||tinyMCE.settings.convert_on_click){if(tinyMCE.isGecko){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{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()},100)}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 i,outArray,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);outArray=[];for(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.firstChild?s:e.firstChild.nodeValue},addToLang:function(prefix,ar){var k;for(k in ar){if(typeof(ar[k])=='function')continue;tinyMCELang[(k.indexOf('lang_')==-1?'lang_':'')+(prefix!==''?(prefix+"_"):'')+k]=ar[k]}this.loadNextScript()},triggerNodeChange:function(focus,setup_content){var elm,inst,editorId,undoIndex=-1,undoLevels=-1,doc,anySelection=false,st;if(tinyMCE.selectedInstance){inst=tinyMCE.selectedInstance;elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();editorId=inst.editorId;st=inst.selection.getSelectedText();if(tinyMCE.settings.auto_resize)inst.resizeToContent();if(setup_content&&tinyMCE.isGecko&&inst.isHidden())elm=inst.getBody();inst.switchSettings();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(st&&st.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,customCleanup;customCleanup=tinyMCE.settings.cleanup_callback;if(customCleanup!='')content=tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback,window)(type,content,inst);po=tinyMCE.themes[tinyMCE.settings.theme];if(po&&po.cleanup)content=po.cleanup(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){var b=tinyMCE.baseURL+'/plugins/'+name;if(this.plugins[name])b=this.plugins[name].baseURL;tinyMCE.loadScript(b+'/langs/'+tinyMCE.settings.language+'.js')},applyTemplate:function(h,ag){return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}','gi'),function(m,s){if(s.indexOf('lang_')==0&&tinyMCELang[s])return tinyMCELang[s];if(ag&&ag[s])return ag[s];if(tinyMCE.settings[s])return tinyMCE.settings[s];if(m=='themeurl')return tinyMCE.themeURL;return m})},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,name,win,modal,features;args=!args?{}:args;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.isIE)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(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);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.isRealIE)&&resizable!='yes'&&tinyMCE.settings.dialog_type=="modal"){height+=10;features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features)}else{modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template.close_previous!="no")try{tinyMCE.lastWindow.close()}catch(ex){}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;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 i,classNames,ar,className,aidClass=tinyMCE.settings.visual_table_class;if(typeof(state)=="undefined")state=tinyMCE.settings.visual;classNames=[];ar=class_name.split(' ');for(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;className="";for(i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i]}return className},handleVisualAid:function(el,deep,state,inst,skip_dispatch){var i,x,y,tableElement,anchorName,oldW,oldH,bo,cn;if(!el)return;if(!skip_dispatch)tinyMCE.dispatchCallback(inst,'handle_visual_aid_callback','handleVisualAid',el,deep,state,inst);tableElement=null;switch(el.nodeName){case"TABLE":oldW=el.style.width;oldH=el.style.height;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(y=0;y<el.rows.length;y++){for(x=0;x<el.rows[y].cells.length;x++){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":anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!==''&&state){el.title=anchorName;tinyMCE.addCSSClass(el,'mceItemAnchor')}else if(anchorName!==''&&!state)el.className='';break}if(deep&&el.hasChildNodes()){for(i=0;i<el.childNodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,inst,true)}},fixGeckoBaseHREFBug:function(m,e,h){var xsrc,xhref;if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," mce_tsrc=");h=h.replace(/\shref=/gi," mce_thref=");return h}else{if(!new RegExp('(src|href)=','g').test(h))return h;tinyMCE.selectElements(e,'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK',function(n){xsrc=tinyMCE.getAttrib(n,"mce_tsrc");xhref=tinyMCE.getAttrib(n,"mce_thref");if(xsrc!==''){try{n.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,xsrc)}catch(e){}n.removeAttribute("mce_tsrc")}if(xhref!==''){try{n.href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,xhref)}catch(e){}n.removeAttribute("mce_thref")}return false});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){var i,html,paras,node;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.isIE&&tinyMCE.settings.fix_content_duplication){paras=doc.getElementsByTagName("P");for(i=0;i<paras.length;i++){node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML}}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],n;if(!inst){for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.formTargetElementId==editor_id)return inst}}else return inst;return null},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 i,c,x,rule,styles,rules,csses,selectorText,inst=tinyMCE.getInstanceById(editor_id);var cssClass,addClass,p;if(!inst)inst=tinyMCE.selectedInstance;if(!inst)return[];if(!doc)doc=inst.getDoc();if(inst&&inst.cssClasses.length>0)return inst.cssClasses;if(!doc)return;styles=doc.styleSheets;if(styles&&styles.length>0){for(x=0;x<styles.length;x++){csses=null;try{csses=tinyMCE.isIE?doc.styleSheets(x).rules:styles[x].cssRules}catch(e){}if(!csses)return[];for(i=0;i<csses.length;i++){selectorText=csses[i].selectorText;if(selectorText){rules=selectorText.split(',');for(c=0;c<rules.length;c++){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){cssClass=rule.substring(rule.indexOf('.')+1);addClass=true;for(p=0;p<inst.cssClasses.length&&addClass;p++){if(inst.cssClasses[p]==cssClass)addClass=false}if(addClass)inst.cssClasses[inst.cssClasses.length]=cssClass}}}}}}return inst.cssClasses},regexpReplace:function(in_str,reg_exp,replace_str,opts){var re;if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';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,rtl=tinyMCE.getLang('lang_dir')=='rtl';l=tinyMCE.plugins;for(n in l){o=l[n];if(o.getControlHTML&&(v=o.getControlHTML(c))!==''){if(rtl)return'<span dir="rtl">'+tinyMCE.replaceVar(v,"pluginurl",o.baseURL)+'</span>';return tinyMCE.replaceVar(v,"pluginurl",o.baseURL)}}o=tinyMCE.themes[tinyMCE.settings.theme];if(o.getControlHTML&&(v=o.getControlHTML(c))!==''){if(rtl)return'<span dir="rtl">'+v+'</span>';return v}return''},evalFunc:function(f,idx,a,o){o=!o?window:o;f=typeof(f)=='function'?f:o[f];return f.apply(o,Array.prototype.slice.call(a,idx))},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(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(n,3,a,o))==s&&m>0)return true}}l=tinyMCE.themes;for(on in l){o=l[on];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}return false},resolveDots:function(s,o){var i;if(typeof(s)=='string'){for(i=0,s=s.split('.');i<s.length;i++)o=o[s[i]]}else o=s;return o},xmlEncode:function(s){return s?(''+s).replace(this.xmlEncodeRe,function(c,b){switch(c){case'&':return'&amp;';case'"':return'&quot;';case'<':return'&lt;';case'>':return'&gt;'}return c}):s},add:function(c,m){var n;for(n in m){if(m.hasOwnProperty(n))c.prototype[n]=m[n]}},extend:function(p,np){var o={},n;o.parent=p;for(n in p){if(p.hasOwnProperty(n))o[n]=p[n]}for(n in np){if(np.hasOwnProperty(n))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}}};var TinyMCE=TinyMCE_Engine;var tinyMCE=new TinyMCE_Engine();var tinyMCELang={};function TinyMCE_Control(settings){var t,i,tos,fu,p,x,fn,fu,pn,s=settings;this.undoRedoLevel=true;this.isTinyMCE_Control=true;this.enabled=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=[];this.hasMouseMoved=false;this.foreColor=this.backColor="#999999";this.data={};this.cssClasses=[];this.cleanup.init({valid_elements:s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,entities:s.entities,entity_encoding:s.entity_encoding,debug:s.cleanup_debug,indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans});t=this.settings.theme;if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;tos={};for(i=0;i<fn.length;i++){if((fu=window['TinyMCE_'+t+"_"+fn[i]]))tos[fn[i]]=fu}tinyMCE.addTheme(t,tos)}this.plugins=[];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;tos={};for(x=0;x<fn.length;x++){if((fu=window['TinyMCE_'+pn+"_"+fn[x]]))tos[fn[x]]=fu}tinyMCE.addPlugin(pn,tos)}this.plugins[this.plugins.length]=pn}}};TinyMCE_Control.prototype={selection:null,settings:null,cleanup:null,getData:function(na){var o=this.data[na];if(!o)o=this.data[na]={};return o},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(){var s,b,ex;if(tinyMCE.isRealIE)return;try{s=this.selection;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}},select:function(){var oldInst=tinyMCE.selectedInstance;if(oldInst!=this){if(oldInst)oldInst.execCommand('mceEndTyping');tinyMCE.dispatchCallback(this,'select_instance_callback','selectInstance',this,oldInst);tinyMCE.selectedInstance=this}},getBody:function(){return this.contentBody?this.contentBody:this.getDoc().body},getDoc:function(){return this.contentWindow.document},getWin:function(){return this.contentWindow},getContainerWin:function(){return this.containerWindow?this.containerWindow:window},getViewPort:function(){return tinyMCE.getViewPort(this.getWin())},getParentNode:function(n,f){return tinyMCE.getParentNode(n,f,this.getBody())},getParentElement:function(n,na,f){return tinyMCE.getParentElement(n,na,f,this.getBody())},getParentBlockElement:function(n){return tinyMCE.getParentBlockElement(n,this.getBody())},resizeToContent:function(){var d=this.getDoc(),b=d.body,de=d.documentElement;this.iframeElement.style.height=(tinyMCE.isRealIE)?b.scrollHeight:de.offsetHeight+'px'},addShortcut:function(m,k,d,cmd,ui,va){var n=typeof(k)=="number",ie=tinyMCE.isIE,c,sc,i,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,o;if(!e.altKey&&!e.ctrlKey)return false;s=this.shortcuts;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.isIE&&this.isHidden()&&tinyMCE.getParam('auto_reset_designmode'))eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}')},isHidden:function(){var s;if(tinyMCE.isIE)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0)},isDirty:function(){return tinyMCE.trim(this.startContent)!=tinyMCE.trim(this.getBody().innerHTML)&&!this.isNotDirty},_mergeElements:function(scmd,pa,ch,override){var st,stc,className,n;if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return}st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));className=tinyMCE.getAttrib(pa,"class");className=tinyMCE.getAttrib(ch,"class");if(override){for(n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n]}}else{for(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")},_fixRootBlocks:function(){var rb,b,ne,be,nx,bm;rb=tinyMCE.getParam('forced_root_block');if(!rb)return;b=this.getBody();ne=b.firstChild;while(ne){nx=ne.nextSibling;if((ne.nodeType==3&&ne.nodeValue.replace(/\s+/g,'')!='')||(ne.nodeType==1&&!tinyMCE.blockRegExp.test(ne.nodeName))){if(!bm)bm=this.selection.getBookmark();if(!be){be=this.getDoc().createElement(rb);be.appendChild(ne.cloneNode(true));b.replaceChild(be,ne)}else{be.appendChild(ne.cloneNode(true));b.removeChild(ne)}}else be=null;ne=nx}if(bm)this.selection.moveToBookmark(bm)},_fixTrailingNbsp:function(){var s=this.selection,e=s.getFocusElement(),bm,v;if(e&&tinyMCE.blockRegExp.test(e.nodeName)&&e.firstChild){v=e.firstChild.nodeValue;if(v&&v.length>1&&/(^\u00a0|\u00a0$)/.test(v)){e.firstChild.nodeValue=v.replace(/(^\u00a0|\u00a0$)/,'');s.selectNode(e.firstChild,true,false,false);}}},_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 i,x,z,align,img,div,doc=this.getDoc(),win=this.getWin(),focusElm=this.getFocusElement();if(!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command))this.undoBookmark=null;if(!tinyMCE.isIE&&!this.useCSS){this._setUseCSS(false);this.useCSS=true}this.contentDocument=doc;if(!/mceStartTyping|mceEndTyping/.test(command)){if(tinyMCE.execCommandCallback(this,'execcommand_callback','execCommand',this.editorId,this.getBody(),command,user_interface,value))return}if(focusElm&&focusElm.nodeName=="IMG"){align=focusElm.getAttribute('align');img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case"JustifyLeft":if(align=='left'){img.setAttribute('align','');img.removeAttribute('align')}else img.setAttribute('align','left');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.setAttribute('align','');img.removeAttribute('align');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{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.setAttribute('align','');img.removeAttribute('align')}else img.setAttribute('align','right');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"JustifyLeft":case"JustifyCenter":case"JustifyFull":case"JustifyRight":var el=tinyMCE.getParentNode(focusElm,function(n){return tinyMCE.getAttrib(n,'align')});if(el){el.setAttribute('align','');el.removeAttribute('align')}else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();return true;case"unlink":if(tinyMCE.isGecko&&this.getSel().isCollapsed){focusElm=tinyMCE.getParentElement(focusElm,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getDoc().execCommand(command,user_interface,value);tinyMCE.isGecko&&this.getSel().collapseToEnd();tinyMCE.triggerNodeChange();return true;case"InsertUnorderedList":case"InsertOrderedList":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"Strikethrough":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(!this.cleanup.isValid(value))return true;if(tinyMCE.isGecko&&new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/gi,'');if(tinyMCE.isIE&&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.isIE){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(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"mceSetStyleInfo":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.isIE){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|img','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,[],1);for(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(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(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,[],1);for(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(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(i=nodes.length-1;i>=0;i--){var elm=nodes[i],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(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":value=value==null?this.foreColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.foreColor=value;this.getDoc().execCommand('forecolor',false,value);break;case"HiliteColor":value=value==null?this.backColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.backColor=value;if(tinyMCE.isGecko||tinyMCE.isOpera){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);if(this.getBody().nodeName=='BODY')tinyMCE._setHTML(doc,value);else this.getBody().innerHTML=value;tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,doc,this.settings,this.getBody(),false,false,false,true));tinyMCE.convertAllRelativeURLs(this.getBody());tinyMCE._removeInternal(this.getBody());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this._addBogusBR();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._addBogusBR();this.repaint();this.selection.moveToBookmark(b);tinyMCE.triggerNodeChange();break;case"mceReplaceContent":if(!value)value='';this.getWin().focus();var selectedText="";if(tinyMCE.isIE){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)}this._addBogusBR();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("mceSetStyleInfo",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.getBody().scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getBody().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;if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1&&!value.match(/(&#38;|&#160;|&#60;|&#62;)/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.isIE){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{value=doc.createTextNode(tinyMCE.entityDecode(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(),tmpRng=null;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.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange();break;case"mceStartTyping":if(tinyMCE.settings.custom_undo_redo&&this.undoRedo.typingUndoIndex==-1){this.undoRedo.typingUndoIndex=this.undoRedo.undoIndex;tinyMCE.typingUndoIndex=tinyMCE.undoIndex;this.execCommand('mceAddUndoLevel')}break;case"mceEndTyping":if(tinyMCE.settings.custom_undo_redo&&this.undoRedo.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.undoRedo.typingUndoIndex=-1}tinyMCE.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.isIE){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":case"removeformat":var text=this.selection.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return}if(tinyMCE.isIE){try{var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null)}catch(e){}this.execCommand("mceSetStyleInfo",false,{command:"removeformat"})}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("mceSetStyleInfo",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)},_addBogusBR:function(){var b=this.getBody();if(tinyMCE.isGecko&&!b.hasChildNodes())b.innerHTML='<br _moz_editor_bogus_node="TRUE" />'},_onAdd:function(replace_element,form_element_name,target_document){var hc,th,tos,editorTemplate,targetDoc,deltaWidth,deltaHeight,html,rng,fragment;var dynamicIFrame,tElm,doc,parentElm;th=this.settings.theme;tos=tinyMCE.themes[th];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(tos.getEditorTemplate)editorTemplate=tos.getEditorTemplate(this.settings,this.editorId);deltaWidth=editorTemplate.delta_width?editorTemplate.delta_width:0;deltaHeight=editorTemplate.delta_height?editorTemplate.delta_height:0;html='<span id="'+this.editorId+'_parent" class="mceEditorContainer">'+editorTemplate.html;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);if(!this.settings.default_document)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;this.settings.width_style=""+this.settings.width;this.settings.height_style=""+this.settings.height;if((""+this.settings.width).indexOf('%')!=-1)this.settings.area_width="100%";else this.settings.width_style+='px';if((""+this.settings.height).indexOf('%')!=-1)this.settings.area_height="100%";else this.settings.height_style+='px';if((""+replace_element.style.width).indexOf('%')!=-1){this.settings.width=replace_element.style.width;this.settings.area_width="100%";this.settings.width_style="100%"}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings.height=replace_element.style.height;this.settings.area_height="100%";this.settings.height_style="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;hc='<input type="hidden" id="'+form_element_name+'" name="'+form_element_name+'" />';this.oldTargetDisplay=tinyMCE.getStyle(this.oldTargetElement,'display','inline');this.oldTargetElement.style.display="none";html+='</span>';if(tinyMCE.isGecko)html=hc+html;else html+=hc;if(tinyMCE.isGecko){rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}else{html+='</span>';this.oldTargetElement=replace_element;this.oldTargetDisplay=tinyMCE.getStyle(this.oldTargetElement,'display','inline');this.oldTargetElement.style.display="none";if(tinyMCE.isGecko){rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}dynamicIFrame=false;tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isIE){if(tElm&&(tElm.nodeName=="SPAN"||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"}doc=this.contentDocument;if(dynamicIFrame){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.isIE)window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\""+this.editorId+"\"]);",1);parentElm=this.targetDoc.getElementById(this.editorId+'_parent');this.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;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)}},getHTML:function(r){var h,d=this.getDoc(),b=this.getBody();if(r)return b.innerHTML;h=tinyMCE._cleanupHTML(this,d,this.settings,b,false,true,false,true);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(d);return h},setHTML:function(h){this.execCommand('mceSetContent',false,h);this.repaint()},getFocusElement:function(){return this.selection.getFocusElement()},getSel:function(){return this.selection.getSel()},getRng:function(){return this.selection.getRng()},triggerSave:function(skip_cleanup,skip_callback){var e,nl=[],i,s,content,htm;if(!this.enabled)return;this.switchSettings();s=tinyMCE.settings;if(tinyMCE.isRealIE){e=this.iframeElement;do{if(e.style&&e.style.display=='none'){e.style.display='block';nl[nl.length]={elm:e,type:'style'}}if(e.style&&s.hidden_tab_class.length>0&&e.className.indexOf(s.hidden_tab_class)!=-1){e.className=s.display_tab_class;nl[nl.length]={elm:e,type:'class'}}}while((e=e.parentNode)!=null)}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);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!=='')content=tinyMCE.resolveDots(tinyMCE.settings.save_callback,window)(this.formTargetElementId,htm,this.getBody());if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"&#40;","(","gi");htm=tinyMCE.regexpReplace(htm,"&#41;",")","gi");htm=tinyMCE.regexpReplace(htm,"&#59;",";","gi");htm=tinyMCE.regexpReplace(htm,"&#34;","&quot;","gi");htm=tinyMCE.regexpReplace(htm,"&#94;","^","gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSafari&&this.formElement)this.formElement.innerText=htm;for(i=0;i<nl.length;i++){if(nl[i].type=='style')nl[i].elm.style.display='none';else nl[i].elm.className=s.hidden_tab_class}}};tinyMCE.add(TinyMCE_Engine,{cleanupHTMLCode:function(s){s=s.replace(new RegExp('<p \\/>','gi'),'<p>&nbsp;</p>');s=s.replace(new RegExp('<p>\\s*<\\/p>','gi'),'<p>&nbsp;</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.isIE)s=s.replace(new RegExp('<p><hr \\/><\\/p>','gi'),"<hr>");if(tinyMCE.isIE)s=s.replace(/<!(\s*)\/>/g,'');return s},parseStyle:function(str){var ar=[],st,i,re,pa;if(str==null)return ar;st=str.split(';');tinyMCE.clearArray(ar);for(i=0;i<st.length;i++){if(st[i]=='')continue;re=new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1]}return ar},compressStyle:function(ar,pr,sf,res){var box=[],i,a;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(i=0;i<box.length;i++){if(box[i]==null)return;if(i&&box[i]!=box[i-1])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},serializeStyle:function(ar){var str="",key,val,m;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(key in ar){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')){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);val=val.replace(/\"/g,'\'');if(val!="url('')")str+=key.toLowerCase()+": "+val+"; "}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str},convertRGBToHex:function(s,k){var re,rgb;if(s.toLowerCase().indexOf('rgb')!=-1){re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");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},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},convertSpansToFonts:function(doc){var s,i,size,fSize,x,fFace,fColor,sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');s=tinyMCE.selectElements(doc,'span,font');for(i=0;i<s.length;i++){size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();fSize=0;for(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=''}fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!==''){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily=''}fColor=s[i].style.color;if(fColor!=null&&fColor!==''){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color=''}}},convertFontsToSpans:function(doc){var fsClasses,s,i,fSize,fFace,fColor,sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!=='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else fsClasses=null;s=tinyMCE.selectElements(doc,'span,font');for(i=0;i<s.length;i++){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')}}},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])}}},getContent:function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.getInstanceById(editor_id).select();if(tinyMCE.selectedInstance)return tinyMCE.selectedInstance.getHTML();return null},_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='&nbsp;';np.appendChild(n);p.insertBefore(np,p.firstChild)}else np.appendChild(n)}}}},_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,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)}}},_cleanupHTML:function(inst,doc,config,elm,visual,on_save,on_submit,inn){var h,d,t1,t2,t3,t4,t5,c,s,nb;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();inst._fixRootBlocks();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=[];c.sourceIndex=-1;if(s.cleanup_serializer=="xml")h=c.serializeNodeAsXML(elm,inn);else h=c.serializeNodeAsHTML(elm,inn);if(d)t3=new Date().getTime();nb=tinyMCE.getParam('entity_encoding')=='numeric'?'&#160;':'&nbsp;';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>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g,'<hr />');h=h.replace(/<td>\s*<br \/>\s*<\/td>/g,'<td>'+nb+'</td>');h=h.replace(/<p>\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<br \/>$/,'');h=h.replace(/<br \/><\/p>/g,'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(new RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1>'+nb+'</p>');if(/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/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(/<br \/>\s*<\/li>/g,'</li>');h=h.replace(/&nbsp;\s*<\/(dd|dt)>/g,'</$1>');h=h.replace(/<o:p _moz-userdefined="" \/>/g,'');h=h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,'<td$1>'+nb+'</td>')}if(s.force_br_newlines)h=h.replace(/<p>(&nbsp;|&#160;)<\/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.isIE=(navigator.appName=="Microsoft Internet Explorer");this.rules=tinyMCE.clearArray([]);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([]);this.vElementsRe='';this.closeElementsRe=/^(IMG|BR|HR|LINK|META|BASE|INPUT|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','<(\\/?)(',')([^>]*)>');this.serializedNodes=[];this.serializationId=0;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"?"&nbsp;":"&#160;";this.idCount=0;this.xmlEncodeRe=new RegExp('[\u007F-\uFFFF<>&"]','g')},addRuleStr:function(s){var r=this.parseRuleStr(s),n;for(n in r){if(r[n])this.rules[n]=r[n]}this.vElements=tinyMCE.clearArray([]);for(n in this.rules){if(this.rules[n])this.vElements[this.vElements.length]=this.rules[n].tag}this.vElementsRe=this._arrayToRe(this.vElements,'')},isValid:function(n){if(!this.rulesDone)this._setupRules();if(!n)return true;n=n.replace(/[^a-z0-9]+/gi,'').toUpperCase();return!tinyMCE.getParam('cleanup')||this.vElementsRe.test(n)},addChildRemoveRuleStr:function(s){var x,y,p,i,t,tn,ta,cl,r;if(!s)return;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];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="^(";cl=this.split(/\|/,p[1]);for(i=0;i<cl.length;i++){if(cl[i]=='%istrict')r+=tinyMCE.inlineStrict;else if(cl[i]=='%itrans')r+=tinyMCE.inlineTransitional;else if(cl[i]=='%istrict_na')r+=tinyMCE.inlineStrict.substring(2);else if(cl[i]=='%itrans_na')r+=tinyMCE.inlineTransitional.substring(2);else if(cl[i]=='%btrans')r+=tinyMCE.blockElms;else if(cl[i]=='%strict')r+=tinyMCE.blockStrict;else r+=(cl[i].charAt(0)!='#'?cl[i].toUpperCase():cl[i]);r+=(i!=cl.length-1?'|':'')}r+=')$';if(this.childRules==null)this.childRules=tinyMCE.clearArray([]);this.childRules[tn[y]]=new RegExp(r);if(p.length>1)this.childRules[tn[y]].wrapTag=p[2]}}},parseRuleStr:function(s){var ta,p,r,a,i,x,px,t,tn,y,av,or=tinyMCE.clearArray([]),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];if(t.charAt(0)=='!'){a[i]=t=t.substring(1);if(!r.reqAttribsRe)r.reqAttribsRe='\\s+('+t;else r.reqAttribsRe+='|'+t}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([]);r.forceAttribs[t.toLowerCase()]=av[0].substring(1)}else if(av[0].charAt(0)=='='){if(!r.defaultAttribs)r.defaultAttribs=tinyMCE.clearArray([]);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([]);r.validAttribValues[t.toLowerCase()]=this._arrayToRe(this.split('?',av[0].substring(1)),'i')}}r.vAttribsRe+=''+t.toLowerCase()+(i!=a.length-1?'|':'');a[i]=t.toLowerCase()}if(r.reqAttribsRe)r.reqAttribsRe=new RegExp(r.reqAttribsRe+')=\"','g');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([]);r.vAttribsReIsWild=false}or[r.tag]=r}}return or},serializeNodeAsXML:function(n){var s,b;if(!this.xmlDoc){if(this.isIE){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.isIE)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(tinyMCE.isRealIE&&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,inn){var en,no,h='',i,l,t,st,r,cn,va=false,f=false,at,hc,cr,nn;if(!this.rulesDone)this._setupRules();if(tinyMCE.isRealIE&&this._isDuplicate(n))return'';if(n.parentNode&&this.childRules!=null){cr=this.childRules[n.parentNode.nodeName];if(typeof(cr)!="undefined"&&!cr.test(n.nodeName)){st=true;t=null}}switch(n.nodeType){case 1:hc=n.hasChildNodes();if(st)break;nn=n.nodeName;if(tinyMCE.isRealIE){if(n.nodeName.indexOf('/')!=-1)break;if(n.scopeName&&n.scopeName!='HTML')nn=n.scopeName.toUpperCase()+':'+nn.toUpperCase()}else if(tinyMCE.isOpera&&nn.indexOf(':')>0)nn=nn.toUpperCase();if(this.settings.convert_fonts_to_spans){if(this.settings.on_save&&nn=='FONT')nn='SPAN';if(!this.settings.on_save&&nn=='SPAN')nn='FONT'}if(this.vElementsRe.test(nn)&&(!this.iveRe||!this.iveRe.test(nn))&&!inn){va=true;r=this.rules[nn];if(!r){at=this.rules;for(no in at){if(at[no]&&at[no].validRe.test(nn)){r=at[no];break}}}en=r.isWild?nn.toLowerCase():r.oTagName;f=r.fill;if(r.removeEmpty&&!hc)return"";t='<'+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))t+=this._serializeAttribute(n,r,no.nodeName)}}else{for(i=r.vAttribs.length-1;i>-1;i--)t+=this._serializeAttribute(n,r,r.vAttribs[i])}if(!this.settings.on_save){at=this.mceAttribs;for(no in at){if(at[no])t+=this._serializeAttribute(n,r,at[no])}}if(r.reqAttribsRe&&!t.match(r.reqAttribsRe))t=null;if(t!=null&&this.closeElementsRe.test(nn))return t+' />';if(t!=null)h+=t+'>';if(this.isIE&&this.codeElementsRe.test(nn))h+=n.innerHTML}break;case 3:if(st)break;if(n.parentNode&&this.codeElementsRe.test(n.parentNode.nodeName))return this.isIE?'':n.nodeValue;return this.xmlEncode(n.nodeValue);case 8:if(st)break;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(t!=null&&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&&/^(src|href|longdesc)$/.test(an))av=this._urlConverter(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){if(an.indexOf('on')!=0)av=this.xmlEncode(av,1);return" "+an+"="+'"'+av+'"'}return""},formatHTML:function(h){var s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi,function(a,b,c){c=c.replace(/<br\s*\/>/gi,'\n');return'<pre'+b+'>'+c+'</pre>'});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 cl=this,re=this.xmlEncodeRe;if(!this.entitiesDone)this._setupEntities();switch(this.settings.entity_encoding){case"raw":return tinyMCE.xmlEncode(s);case"named":return s.replace(re,function(c){var b=cl.entities[c.charCodeAt(0)];return b?'&'+b+';':c});case"numeric":return s.replace(re,function(c){return'&#'+c.charCodeAt(0)+';'})}return s},split:function(re,s){var i,l,o=[],c=s.split(re);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){var v,ex,nn;if(typeof(d)=="undefined")d="";if(!e||e.nodeType!=1)return d;try{v=e.getAttribute(n,0)}catch(ex){v=e.getAttribute(n,2)}if(n=="class"&&!v)v=e.className;if(this.isIE){if(n=="http-equiv")v=e.httpEquiv;nn=e.nodeName;if(nn=="FORM"&&n=="enctype"&&v=="application/x-www-form-urlencoded")v="";if(nn=="INPUT"&&n=="size"&&v=="20")v="";if(nn=="INPUT"&&n=="maxlength"&&v=="2147483647")v="";if(n=="width"||n=="height")v=e.getAttribute(n,2)}if(n=='style'&&v){if(!tinyMCE.isOpera)v=e.style.cssText;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')){if(!this.urlConverter)this.urlConverter=eval(tinyMCE.settings.urlconverter_callback);return this.urlConverter(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(s.entity_encoding=="named"){n=tinyMCE.clearArray([]);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;this.addRuleStr(s.valid_elements);this.addRuleStr(s.extended_valid_elements);this.addChildRemoveRuleStr(s.valid_child_elements);this.rulesDone=true},_isDuplicate:function(n){var i,l,sn;if(!this.settings.fix_content_duplication)return false;if(tinyMCE.isRealIE&&n.nodeType==1){if(n.mce_serialized==this.serializationId)return true;n.setAttribute('mce_serialized',this.serializationId)}else{sn=this.serializedNodes;for(i=0,l=sn.length;i<l;i++){if(sn[i]==n)return true}sn.push(n)}return false}};tinyMCE.add(TinyMCE_Engine,{createTagHTML:function(tn,a,h){var o='',f=tinyMCE.xmlEncode,n;o='<'+tn;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)o+=' '+f(n)+'="'+f(''+a[n])+'"'}}o+=!h?' />':'>'+h+'</'+tn+'>';return o},createTag:function(d,tn,a,h){var o=d.createElement(tn),n;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)tinyMCE.setAttrib(o,n,a[n])}}if(h)o.innerHTML=h;return o},getElementByAttributeValue:function(n,e,a,v){return(n=this.getElementsByAttributeValue(n,e,a,v)).length==0?null:n[0]},getElementsByAttributeValue:function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=[];for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i]}return o},isBlockElement:function(n){return n!=null&&n.nodeType==1&&this.blockRegExp.test(n.nodeName)},getParentBlockElement:function(n,r){return this.getParentNode(n,function(n){return tinyMCE.isBlockElement(n)},r);return null},insertAfter:function(n,r){if(r.nextSibling)r.parentNode.insertBefore(n,r.nextSibling);else r.parentNode.appendChild(n)},setInnerHTML:function(e,h){var i,nl,n;if(tinyMCE.isGecko){h=h.replace(/<embed([^>]*)>/gi,'<tmpembed$1>');h=h.replace(/<em([^>]*)>/gi,'<i$1>');h=h.replace(/<tmpembed([^>]*)>/gi,'<embed$1>');h=h.replace(/<strong([^>]*)>/gi,'<b$1>');h=h.replace(/<\/strong>/gi,'</b>');h=h.replace(/<\/em>/gi,'</i>')}if(tinyMCE.isRealIE){h=h.replace(/\s\/>/g,'>');h=h.replace(/<p([^>]*)>\u00A0?<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1 mce_keep="true">&nbsp;</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)}},getOuterHTML:function(e){var d;if(tinyMCE.isIE)return e.outerHTML;d=e.ownerDocument.createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML},setOuterHTML:function(e,h,d){var d=typeof(d)=="undefined"?e.ownerDocument:d,i,nl,t;if(tinyMCE.isIE&&e.nodeType==1)e.outerHTML=h;else{t=d.createElement("body");t.innerHTML=h;for(i=0,nl=t.childNodes;i<nl.length;i++)e.parentNode.insertBefore(nl[i].cloneNode(true),e);e.parentNode.removeChild(e)}},_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},getNodeTree:function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn)},na?na:[])},getParentElement:function(n,na,f,r){var re=na?new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$'):0,v;if(f&&typeof(f)=='string')return this.getParentElement(n,na,function(no){return tinyMCE.getAttrib(no,f)!==''});return this.getParentNode(n,function(n){return((n.nodeType==1&&!re)||(re&&re.test(n.nodeName)))&&(!f||f(n))},r)},getParentNode:function(n,f,r){while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode}return null},getAttrib:function(elm,name,dv){var v;if(typeof(dv)=="undefined")dv="";if(!elm||elm.nodeType!=1)return dv;try{v=elm.getAttribute(name,0)}catch(ex){v=elm.getAttribute(name,2)}if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko){if(name=="src"&&elm.src!=null&&elm.src!=='')v=elm.src;if(name=="href"&&elm.href!=null&&elm.href!=='')v=elm.href}else if(tinyMCE.isIE){switch(name){case"http-equiv":v=elm.httpEquiv;break;case"width":case"height":v=elm.getAttribute(name,2);break}}if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!=='')?v:dv},setAttrib:function(el,name,va,fix){if(typeof(va)=="number"&&va!=null)va=""+va;if(fix){if(va==null)va="";va=va.replace(/[^0-9%]/g,'')}if(name=="style")el.style.cssText=va;if(name=="class")el.className=va;if(va!=null&&va!==''&&va!=-1)el.setAttribute(name,va);else el.removeAttribute(name)},setStyleAttrib:function(e,n,v){e.style[n]=v;if(tinyMCE.isIE&&v==null||v==''){v=tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));e.style.cssText=v;e.setAttribute("style",v)}},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}},getAbsPosition:function(n,cn){var l=0,t=0;while(n&&n!=cn){l+=n.offsetLeft;t+=n.offsetTop;n=n.offsetParent}return{absLeft:l,absTop:t}},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},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},selectElements:function(n,na,f){var i,a=[],nl,x;for(x=0,na=na.split(',');x<na.length;x++)for(i=0,nl=n.getElementsByTagName(na[x]);i<nl.length;i++)(!f||f(nl[i]))&&a.push(nl[i]);return a},selectNodes:function(n,f,a){var i;if(!a)a=[];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},addCSSClass:function(e,c,b){var o=this.removeCSSClass(e,c);return e.className=b?c+(o!==''?(' '+o):''):(o!==''?(o+' '):'')+c},removeCSSClass:function(e,c){c=e.className.replace(new RegExp("(^|\\s+)"+c+"(\\s+|$)"),' ');return e.className=c!=' '?c:''},hasCSSClass:function(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className)},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)}},getViewPort:function(w){var d=w.document,m=d.compatMode=='CSS1Compat',b=d.body,de=d.documentElement;return{left:w.pageXOffset||(m?de.scrollLeft:b.scrollLeft),top:w.pageYOffset||(m?de.scrollTop:b.scrollTop),width:w.innerWidth||(m?de.clientWidth:b.clientWidth),height:w.innerHeight||(m?de.clientHeight:b.clientHeight)}},getStyle:function(n,na,d){if(!n)return false;if(tinyMCE.isGecko&&n.ownerDocument.defaultView){try{return n.ownerDocument.defaultView.getComputedStyle(n,null).getPropertyValue(na)}catch(n){return null}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase()});if(n.currentStyle)return n.currentStyle[na];return false}});tinyMCE.add(TinyMCE_Engine,{parseURL:function(url_str){var urlParts=[],i,pos,lastPos,chr;if(url_str){pos=url_str.indexOf('://');if(pos!=-1){urlParts.protocol=url_str.substring(0,pos);lastPos=pos+3}for(i=lastPos;i<url_str.length;i++){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},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},convertAbsoluteURLToRelativeURL:function(base_url,url_to_relative){var baseURL=this.parseURL(base_url),targetURL=this.parseURL(url_to_relative);var i,strTok1,strTok2,breakPoint=0,outPath="",forceSlash=false;var fileName,pos;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(i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(strTok1.length<strTok2.length){for(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(i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(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;fileName=baseURL.path;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)},convertRelativeToAbsoluteURL:function(base_url,relative_url){var baseURL=this.parseURL(base_url),baseURLParts,relURLParts,newRelURLParts,numBack,relURL=this.parseURL(relative_url),i;var len,absPath,start,end,newBaseURLParts;if(relative_url==''||relative_url.indexOf('://')!=-1||/^(mailto:|javascript:|#|\/)/.test(relative_url))return relative_url;baseURLParts=baseURL.path.split('/');relURLParts=relURL.path.split('/');newBaseURLParts=[];for(i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i]}baseURLParts=newBaseURLParts.reverse();newRelURLParts=[];numBack=0;for(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();len=baseURLParts.length-numBack;absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');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)},convertURL:function(url,node,on_save){var dl=document.location,start,portPart,urlParts,baseUrlParts,tmpUrlParts,curl;var prot=dl.protocol,host=dl.hostname,port=dl.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||/^[ \t\r\n\+]*[#\?]/.test(url))return url;if(!tinyMCE.isIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings.base_href+url;if(on_save&&tinyMCE.getParam('relative_urls')){curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,url);if(curl.charAt(0)=='/')curl=tinyMCE.settings.document_base_prefix+curl;urlParts=tinyMCE.parseURL(curl);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')){urlParts=tinyMCE.parseURL(url);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')){start="";portPart="";if(port!=='')portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1)}return url},convertAllRelativeURLs:function(body){var i,elms,src,href,mhref,msrc;elms=body.getElementsByTagName("img");for(i=0;i<elms.length;i++){src=tinyMCE.getAttrib(elms[i],'src');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)}}elms=body.getElementsByTagName("a");for(i=0;i<elms.length;i++){href=tinyMCE.getAttrib(elms[i],'href');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)}}}});tinyMCE.add(TinyMCE_Engine,{clearArray:function(a){var n;for(n in a)a[n]=null;return a},explode:function(d,s){var ar=s.split(d),oar=[],i;for(i=0;i<ar.length;i++){if(ar[i]!=='')oar[oar.length]=ar[i]}return oar}});tinyMCE.add(TinyMCE_Engine,{_setEventsEnabled:function(node,state){var evs,x,y,elms,i,event;var events=['onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];evs=tinyMCE.settings.event_elements.split(',');for(y=0;y<evs.length;y++){elms=node.getElementsByTagName(evs[y]);for(i=0;i<elms.length;i++){event="";for(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)}}}}},_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;inst.select();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){}},findEvent:function(e){var n,inst;if(e)return e;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(tinyMCE.isInstance(inst)&&inst.getWin().event)return inst.getWin().event}return null},unloadHandler:function(){tinyMCE.triggerSave(true,true)},addEventHandlers:function(inst){this.setEventHandlers(inst,1)},setEventHandlers:function(inst,s){var doc=inst.getDoc(),ie,ot,i,f=s?tinyMCE.addEvent:tinyMCE.removeEvent;ie=['keypress','keyup','keydown','click','mouseup','mousedown','controlselect','dblclick'];ot=['keypress','keyup','keydown','click','mouseup','mousedown','focus','blur','dragdrop'];inst.switchSettings();if(tinyMCE.isIE){for(i=0;i<ie.length;i++)f(doc,ie[i],TinyMCE_Engine.prototype._eventPatch)}else{for(i=0;i<ot.length;i++)f(doc,ot[i],tinyMCE.handleEvent);try{doc.designMode="On"}catch(e){}}},onMouseMove:function(){var inst,lh;if(tinyMCE.lastHover){lh=tinyMCE.lastHover;if(lh.className.indexOf('mceMenu')!=-1)tinyMCE._menuButtonEvent('out',lh);else lh.className=lh.className;tinyMCE.lastHover=null}if(!tinyMCE.hasMouseMoved){inst=tinyMCE.selectedInstance;if(inst.isFocused){inst.undoBookmark=inst.selection.getBookmark();tinyMCE.hasMouseMoved=true}}},cancelEvent:function(e){if(!e)return false;if(tinyMCE.isIE){e.returnValue=false;e.cancelBubble=true}else{e.preventDefault();e.stopPropagation&&e.stopPropagation()}return false},addEvent:function(o,n,h){if(n!='unload'){function clean(){var ex;try{tinyMCE.removeEvent(o,n,h);tinyMCE.removeEvent(window,'unload',clean);o=n=h=null}catch(ex){}}tinyMCE.addEvent(window,'unload',clean)}if(o.attachEvent)o.attachEvent("on"+n,h);else o.addEventListener(n,h,false)},removeEvent:function(o,n,h){if(o.detachEvent)o.detachEvent("on"+n,h);else o.removeEventListener(n,h,false)},addSelectAccessibility:function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w}return false},accessibleEventHandler:function(e){var elm,win=this._win;e=tinyMCE.isIE?win.event:e;elm=tinyMCE.isIE?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},_resetIframeHeight:function(){var ife;if(tinyMCE.isRealIE){ife=tinyMCE.selectedInstance.iframeElement;if(ife._oldHeight){ife.style.height=ife._oldHeight;ife.height=ife._oldHeight}}}});function TinyMCE_Selection(inst){this.instance=inst};TinyMCE_Selection.prototype={getSelectedHTML:function(){var inst=this.instance,e,r=this.getRng(),h;if(!r)return null;e=document.createElement("body");if(r.cloneContents)e.appendChild(r.cloneContents());else if(typeof(r.item)!='undefined'||typeof(r.htmlText)!='undefined')e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();h=tinyMCE._cleanupHTML(inst,inst.contentDocument,inst.settings,e,e,false,true,false);return h},getSelectedText:function(){var inst=this.instance,d,r,s,t;if(tinyMCE.isIE){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 inst=this.instance,rng=this.getRng(),doc=inst.getDoc(),b=inst.getBody();var trng,sx,sy,xx=-999999999,vp=inst.getViewPort();var sp,le,s,e,nl,i,si,ei,w;sx=vp.left;sy=vp.top;if(simple)return{rng:rng,scrollX:sx,scrollY:sy};if(tinyMCE.isRealIE){if(rng.item){e=rng.item(0);nl=b.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=doc.body.createTextRange();trng.moveToElementText(inst.getBody());trng.collapse(true);bp=Math.abs(trng.move('character',xx));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-bp,length:le,scrollX:sx,scrollY:sy}}}else{s=this.getSel();e=this.getFocusElement();if(!s)return null;if(e&&e.nodeName=='IMG'){return{start:-1,end:-1,index:sp,scrollX:sx,scrollY:sy}}if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=this._getPosText(b,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+s.anchorOffset,end:e.end+s.focusOffset,scrollX:sx,scrollY:sy}}else{e=this._getPosText(b,rng.startContainer,rng.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+rng.startOffset,end:e.end+rng.endOffset,scrollX:sx,scrollY:sy}}}return null},moveToBookmark:function(bookmark){var inst=this.instance,rng,nl,i,ex,b=inst.getBody(),sd;var doc=inst.getDoc(),win=inst.getWin(),sel=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari&&bookmark.rng){sel.setBaseAndExtent(bookmark.rng.startContainer,bookmark.rng.startOffset,bookmark.rng.endContainer,bookmark.rng.endOffset);return true}if(tinyMCE.isRealIE){if(bookmark.rng){try{bookmark.rng.select()}catch(ex){}return true}win.focus();if(bookmark.tag){rng=b.createControlRange();nl=b.getElementsByTagName(bookmark.tag);if(nl.length>bookmark.index){try{rng.addElement(nl[bookmark.index])}catch(ex){}}}else{try{if(bookmark.start<0)return true;rng=inst.getSel().createRange();rng.moveToElementText(inst.getBody());rng.collapse(true);rng.moveStart('character',bookmark.start);rng.moveEnd('character',bookmark.length)}catch(ex){return true}}rng.select();win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}if(tinyMCE.isGecko||tinyMCE.isOpera){if(!sel)return false;if(bookmark.rng){sel.removeAllRanges();sel.addRange(bookmark.rng)}if(bookmark.start!=-1&&bookmark.end!=-1){try{sd=this._getTextPos(b,bookmark.start,bookmark.end);rng=doc.createRange();rng.setStart(sd.startNode,sd.startOffset);rng.setEnd(sd.endNode,sd.endOffset);sel.removeAllRanges();sel.addRange(rng);if(!tinyMCE.isOpera)win.focus()}catch(ex){}}win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}return false},_getPosText:function(r,sn,en){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d}p+=n.nodeValue?n.nodeValue.length:0}return null},_getTextPos:function(r,sp,ep){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){p+=n.nodeValue?n.nodeValue.length:0;if(p>=sp&&!d.startNode){d.startNode=n;d.startOffset=sp-(p-n.nodeValue.length)}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-n.nodeValue.length);return d}}return null},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(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRealIE){rng=inst.getDoc().body.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,[],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,w=inst.getWin(),vp=inst.getViewPort(),pos=tinyMCE.getAbsPosition(node),cvp,p,cwin;if(pos.absLeft<vp.left||pos.absLeft>vp.left+vp.width||pos.absTop<vp.top||pos.absTop>vp.top+(vp.height-25))w.scrollTo(pos.absLeft,pos.absTop-vp.height+25);if(inst.settings.auto_resize){cwin=inst.getContainerWin();cvp=tinyMCE.getViewPort(cwin);p=this.getAbsPosition(node);if(p.absLeft<cvp.left||p.absLeft>cvp.left+cvp.width||p.absTop<cvp.top||p.absTop>cvp.top+cvp.height)cwin.scrollTo(p.absLeft,p.absTop-cvp.height+25)}},getAbsPosition:function(n){var pos=tinyMCE.getAbsPosition(n),ipos=tinyMCE.getAbsPosition(this.instance.iframeElement);return{absLeft:ipos.absLeft+pos.absLeft,absTop:ipos.absTop+pos.absTop}},getSel:function(){var inst=this.instance;if(tinyMCE.isRealIE)return inst.getDoc().selection;return inst.contentWindow.getSelection()},getRng:function(){var s=this.getSel();if(s==null)return null;if(tinyMCE.isRealIE)return s.createRange();if(tinyMCE.isSafari&&!s.getRangeAt)return''+window.getSelection();if(s.rangeCount>0)return s.getRangeAt(0);return null},isCollapsed:function(){var r=this.getRng();if(r.item)return false;return r.boundingWidth==0||this.getSel().isCollapsed},collapse:function(b){var r=this.getRng(),s=this.getSel();if(r.select){r.collapse(b);r.select()}else{if(b)s.collapseToStart();else s.collapseToEnd()}},getFocusElement:function(){var inst=this.instance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.selection.createRange();elm=rng.item?rng.item(0):rng.parentElement()}else{if(!tinyMCE.isSafari&&inst.isHidden())return inst.getBody();sel=this.getSel();rng=this.getRng();if(!sel||!rng)return null;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}};function TinyMCE_UndoRedo(inst){this.instance=inst;this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true};TinyMCE_UndoRedo.prototype={add:function(l){var b,customUndoLevels,newHTML,inst=this.instance,i,ul,ur;if(l){this.undoLevels[this.undoLevels.length]=l;return true}if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;if(tinyMCE.typingUndoIndex!=-1)tinyMCE.undoIndex=tinyMCE.typingUndoIndex}newHTML=tinyMCE.trim(inst.getBody().innerHTML);if(this.undoLevels[this.undoIndex]&&newHTML!=this.undoLevels[this.undoIndex].content){inst.isNotDirty=false;tinyMCE.dispatchCallback(inst,'onchange_callback','onChange',inst);customUndoLevels=tinyMCE.settings.custom_undo_redo_levels;if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(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};ul=tinyMCE.undoLevels;for(i=tinyMCE.undoIndex+1;i<ul.length;i++){ur=ul[i].undoRedo;if(ur.undoIndex==ur.undoLevels.length-1)ur.undoIndex--;ur.undoLevels.length--}tinyMCE.undoLevels[tinyMCE.undoIndex++]=inst;tinyMCE.undoLevels.length=tinyMCE.undoIndex;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()}};var TinyMCE_ForceParagraphs={_insertPara:function(inst,e){var doc=inst.getDoc(),sel=inst.getSel(),body=inst.getBody(),win=inst.contentWindow,rng=sel.getRangeAt(0);var rootElm=doc.documentElement,blockName="P",startNode,endNode,startBlock,endBlock;var rngBefore,rngAfter,direct,startNode,startOffset,endNode,endOffset,b=tinyMCE.isOpera?inst.selection.getBookmark():null;var paraBefore,paraAfter,startChop,endChop,contents,i;function isEmpty(para){var nodes;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;nodes=tinyMCE.getNodeTree(para,[],3);for(i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false}return true}rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;startNode=direct?sel.anchorNode:sel.focusNode;startOffset=direct?sel.anchorOffset:sel.focusOffset;endNode=direct?sel.focusNode:sel.anchorNode;endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="HTML"?doc.body:startNode;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;startBlock=inst.getParentBlockElement(startNode);endBlock=inst.getParentBlockElement(endNode);if(startBlock&&(startBlock.nodeName=='CAPTION'||/absolute|relative|static/gi.test(startBlock.style.position)))startBlock=null;if(endBlock&&(endBlock.nodeName=='CAPTION'||/absolute|relative|static/gi.test(endBlock.style.position)))endBlock=null;if(startBlock!=null){blockName=startBlock.nodeName;if(/(TD|TABLE|TH|CAPTION)/.test(blockName)||(blockName=="DIV"&&/left|right/gi.test(startBlock.style.cssFloat)))blockName="P"}if(tinyMCE.getParentElement(startBlock,"OL,UL",null,body)!=null)return false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");startChop=startNode;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();if(!tinyMCE.isSafari)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);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="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();if(tinyMCE.isOpera){paraBefore.normalize();rngBefore.insertNode(paraBefore);paraAfter.normalize();rngBefore.insertNode(paraAfter)}else{paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore)}}else{body.innerHTML="<"+blockName+">&nbsp;</"+blockName+"><"+blockName+">&nbsp;</"+blockName+">";paraAfter=body.childNodes[1]}inst.selection.moveToBookmark(b);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);contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML="&nbsp;";if(isEmpty(paraAfter))paraAfter.innerHTML="&nbsp;";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();if(tinyMCE.isOpera){rng.insertNode(paraBefore);rng.insertNode(paraAfter)}else{rng.insertNode(paraAfter);rng.insertNode(paraBefore)}paraAfter.normalize();paraBefore.normalize();inst.selection.moveToBookmark(b);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"&&sn.parentNode.nodeName!="BODY"){nv=sn.nodeValue;if(nv!=null&&r.startOffset==nv.length)sn.nextSibling.parentNode.removeChild(sn.nextSibling)}if(inst.settings.auto_resize)inst.resizeToContent();return s}};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),e=this.getElement(),x,y;var w=parseInt(re.offsetWidth),h=parseInt(re.offsetHeight);var ew=parseInt(e.offsetWidth),eh=parseInt(e.offsetHeight);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(){var el=this.getElement();if(el){el.style.display='block';this.updateBlocker()}},hide:function(){var el=this.getElement();if(el){el.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.getElementById(this.id+"_blocker");if(!b){b=d.createElement("iframe");b.setAttribute('id',this.id+"_blocker");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,h){var d=this.doc,e=d.createElement(n);e.setAttribute('id',this.id);if(c)e.className=c;if(!p)p=d.body;if(h)e.innerHTML=h;p.appendChild(e);return this.element=e},exists:function(){return this.doc.getElementById(this.id)!=null},parseInt:function(s){if(s==null||s=='')return 0;return parseInt(s)},remove:function(){var e=this.getElement(),b=this.getBlocker();if(e)e.parentNode.removeChild(e);if(b)b.parentNode.removeChild(b)}};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=[];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=[]},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="'+tinyMCE.xmlEncode(m[i].js)+'" onmousedown="'+tinyMCE.xmlEncode(m[i].js)+';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><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}});tinyMCE.add(TinyMCE_Engine,{debug:function(){var m="",a,i,l=tinyMCE.log.length;for(i=0,a=this.debug.arguments;i<a.length;i++){m+=a[i];if(i<a.length-1)m+=', '}if(l<1000)tinyMCE.log[l]="[debug] "+m}});

--- /dev/null
+++ b/tinymce/2/jscripts/tiny_mce/tiny_mce_dev.js
@@ -1,1 +1,41 @@
+/**

+ * $Id$

+ *

+ * @author Moxiecode


+ *

+ * This file should only be used while developing TinyMCE 

+ * tiny_mce.js or tiny_mce_src.js should be used in a production environment.

+ * This file loads the js files from classes instead of a merged copy.

+ */

+

+function getTinyMCEBaseURL() {

+	var i, nl = document.getElementsByTagName('script');

+

+	for (i=0; i<nl.length; i++) {

+		if (nl[i].src && nl[i].src.indexOf("tiny_mce_dev.js") != -1)

+			return nl[i].src.substring(0, nl[i].src.lastIndexOf('/'));

+	}

+}

+

+function include(u) {

+	document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEBaseURL + '/' + u + '"></script>');

+}

+

+// Load all classes

+var tinyMCEBaseURL = getTinyMCEBaseURL();

+

+include('classes/TinyMCE_Engine.class.js');

+include('classes/TinyMCE_Control.class.js');

+include('classes/TinyMCE_Selection.class.js');

+include('classes/TinyMCE_UndoRedo.class.js');

+include('classes/TinyMCE_Cleanup.class.js');

+include('classes/TinyMCE_DOMUtils.class.js');

+include('classes/TinyMCE_URL.class.js');

+include('classes/TinyMCE_Array.class.js');

+include('classes/TinyMCE_Event.class.js');

+include('classes/TinyMCE_ForceParagraphs.class.js');

+include('classes/TinyMCE_Layer.class.js');

+include('classes/TinyMCE_Menu.class.js');

+include('classes/TinyMCE_Debug.class.js');

 

--- a/tinymce/2/jscripts/tiny_mce/tiny_mce_gzip.js
+++ /dev/null
@@ -1,186 +1,1 @@
-var tinyMCE_GZ = {
-	settings : {
-		themes : '',
-		plugins : '',
-		languages : '',
-		disk_cache : true,
-		page_name : 'tiny_mce_gzip.php',
-		debug : false,
-		suffix : ''
-	},
 
-	init : function(s, cb, sc) {
-		var t = this, n, i, nl = document.getElementsByTagName('script');
-
-		for (n in s)
-			t.settings[n] = s[n];
-
-		s = t.settings;
-
-		for (i=0; i<nl.length; i++) {
-			n = nl[i];
-
-			if (n.src && n.src.indexOf('tiny_mce') != -1)
-				t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
-		}
-
-		if (!t.coreLoaded)
-			t.loadScripts(1, s.themes, s.plugins, s.languages, cb, sc);
-	},
-
-	loadScripts : function(co, th, pl, la, cb, sc) {
-		var t = this, x, w = window, q, c = 0, ti, s = t.settings;
-
-		function get(s) {
-			x = 0;
-
-			try {
-				x = new ActiveXObject(s);
-			} catch (s) {
-			}
-
-			return x;
-		};
-
-		// Build query string
-		q = 'js=true&diskcache=' + (s.disk_cache ? 'true' : 'false') + '&core=' + (co ? 'true' : 'false') + '&suffix=' + escape(s.suffix) + '&themes=' + escape(th) + '&plugins=' + escape(pl) + '&languages=' + escape(la);
-
-		if (co)
-			t.coreLoaded = 1;
-
-		// Send request
-		x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Msxml2.XMLHTTP') || get('Microsoft.XMLHTTP');
-		x.overrideMimeType && x.overrideMimeType('text/javascript');
-		x.open('GET', t.baseURL + '/' + s.page_name + '?' + q, !!cb);
-//		x.setRequestHeader('Content-Type', 'text/javascript');
-		x.send('');
-
-		// Handle asyncronous loading
-		if (cb) {
-			// Wait for response
-			ti = w.setInterval(function() {
-				if (x.readyState == 4 || c++ > 10000) {
-					w.clearInterval(ti);
-
-					if (c < 10000 && x.status == 200) {
-						t.loaded = 1;
-						t.eval(x.responseText);
-						tinymce.dom.Event.domLoaded = true;
-						cb.call(sc || t, x);
-					}
-
-					ti = x = null;
-				}
-			}, 10);
-		} else
-			t.eval(x.responseText);
-	},
-
-	start : function() {
-		var t = this, each = tinymce.each, s = t.settings, sl, ln = s.languages.split(',');
-
-		tinymce.suffix = s.suffix;
-
-		// Extend script loader
-		tinymce.create('tinymce.compressor.ScriptLoader:tinymce.dom.ScriptLoader', {
-			loadScripts : function(sc, cb, s) {
-				var ti = this, th = [], pl = [], la = [];
-
-				each(sc, function(o) {
-					var u = o.url;
-
-					if ((!ti.lookup[u] || ti.lookup[u].state != 2) && u.indexOf(t.baseURL) === 0) {
-						// Collect theme
-						if (u.indexOf('editor_template') != -1) {
-							th.push(/\/themes\/([^\/]+)/.exec(u)[1]);
-							load(u, 1);
-						}
-
-						// Collect plugin
-						if (u.indexOf('editor_plugin') != -1) {
-							pl.push(/\/plugins\/([^\/]+)/.exec(u)[1]);
-							load(u, 1);
-						}
-
-						// Collect language
-						if (u.indexOf('/langs/') != -1) {
-							la.push(/\/langs\/([^.]+)/.exec(u)[1]);
-							load(u, 1);
-						}
-					}
-				});
-
-				if (th.length + pl.length + la.length > 0) {
-					if (sl.settings.strict_mode) {
-						// Async
-						t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
-						return;
-					} else
-						t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
-				}
-
-				return ti.parent(sc, cb, s);
-			}
-		});
-
-		sl = tinymce.ScriptLoader = new tinymce.compressor.ScriptLoader();
-
-		function load(u, sp) {
-			var o;
-
-			if (!sp)
-				u = t.baseURL + u;
-
-			o = {url : u, state : 2};
-			sl.queue.push(o);
-			sl.lookup[o.url] = o;
-		};
-
-		// Add core languages
-		each (ln, function(c) {
-			if (c)
-				load('/langs/' + c + '.js');
-		});
-
-		// Add themes with languages
-		each(s.themes.split(','), function(n) {
-			if (n) {
-				load('/themes/' + n + '/editor_template' + s.suffix + '.js');
-
-				each (ln, function(c) {
-					if (c)
-						load('/themes/' + n + '/langs/' + c + '.js');
-				});
-			}
-		});
-
-		// Add plugins with languages
-		each(s.plugins.split(','), function(n) {
-			if (n) {
-				load('/plugins/' + n + '/editor_plugin' + s.suffix + '.js');
-
-				each (ln, function(c) {
-					if (c)
-						load('/plugins/' + n + '/langs/' + c + '.js');
-				});
-			}
-		});
-	},
-
-	end : function() {
-	},
-
-	eval : function(co) {
-		var w = window;
-
-		// Evaluate script
-		if (!w.execScript) {
-			if (/Gecko/.test(navigator.userAgent))
-				eval(co, w); // Firefox 3.0
-			else
-				eval.call(w, co);
-		} else
-			w.execScript(co); // IE
-	}
-};
-

--- a/tinymce/2/jscripts/tiny_mce/tiny_mce_gzip.php
+++ b/tinymce/2/jscripts/tiny_mce/tiny_mce_gzip.php
@@ -1,183 +1,89 @@
-<?php
-/**
- * $Id: tiny_mce_gzip.php 315 2007-10-25 14:03:43Z spocke $
- *
- * @author Moxiecode

- *
- * This file compresses the TinyMCE JavaScript using GZip and
- * enables the browser to do two requests instead of one for each .js file.
- * Notice: This script defaults the button_tile_map option to true for extra performance.
- */
+<?php

+	/**

+	 * $RCSfile: tiny_mce_gzip.php,v $

+	 * $Revision: 1.1 $

+	 * $Date: 2005/06/14 18:55:34 $

+	 *

+	 * @author Moxiecode


+	 *

+	 * This file compresses the TinyMCE JavaScript using GZip and

+	 * enables the browser to do two requests instead of one for each .js file.

+	 * Notice: This script defaults the button_tile_map option to true for extra performance.

+	 *

+	 * Todo:

+	 *  - Add local file cache for the GZip:ed version.

+	 */

+

+	// General options

+	$suffix = "";							// Set to "_src" to use source version

+	$expiresOffset = 3600 * 24 * 10;		// 10 days util client cache expires

+

+	// Get data to load

+	$theme = isset($_REQUEST['theme']) ? $_REQUEST['theme'] : "";

+	$language = isset($_REQUEST['language']) ? $_REQUEST['language'] : "";

+	$plugins = isset($_REQUEST['plugins']) ? $_REQUEST['plugins'] : "";

+

+	// GZip compress and cache it for 10 days

+	ob_start ("ob_gzhandler");

+	header("Content-type: text/javascript; charset: UTF-8");

+	header("Cache-Control: must-revalidate");

+	header("Expires: " . gmdate("D, d M Y H:i:s", time() + $expiresOffset) . " GMT");

+

+	if ($theme) {

+		// Write main script and patch some things

+		echo file_get_contents(realpath("tiny_mce" . $suffix . ".js"));

+		echo 'TinyMCE.prototype.loadScript = function() {};';

+		echo "tinyMCE.init(TinyMCECompressed_settings);";

+

+		// Load theme, language pack and theme language packs

+		echo file_get_contents(realpath("themes/" . $theme . "/editor_template" . $suffix . ".js"));

+		echo file_get_contents(realpath("themes/" . $theme . "/langs/" . $language . ".js"));

+		echo file_get_contents(realpath("langs/" . $language . ".js"));

+

+		// Load all plugins and their language packs

+		$plugins = explode(",", $plugins);

+		foreach ($plugins as $plugin) {

+			$pluginFile = realpath("plugins/" . $plugin . "/editor_plugin" . $suffix . ".js");

+			$languageFile = realpath("plugins/" . $plugin . "/langs/" . $language . ".js");

+

+			if ($pluginFile)

+				echo file_get_contents($pluginFile);

+

+			if ($languageFile)

+				echo file_get_contents($languageFile);

+		}

+

+		die;

+	}

+?>

+

+var TinyMCECompressed_settings = null;

+

+function TinyMCECompressed() {

+}

+

+TinyMCECompressed.prototype.init = function(settings) {

+	var elements = document.getElementsByTagName('script');

+	var scriptURL = "";

+

+	for (var i=0; i<elements.length; i++) {

+		if (elements[i].src && elements[i].src.indexOf("tiny_mce_gzip.php") != -1) {

+			scriptURL = elements[i].src;

+			break;

+		}

+	}

+

+	settings["theme"] = typeof(settings["theme"]) != "undefined" ? settings["theme"] : "default";

+	settings["plugins"] = typeof(settings["plugins"]) != "undefined" ? settings["plugins"] : "";

+	settings["language"] = typeof(settings["language"]) != "undefined" ? settings["language"] : "en";

+	settings["button_tile_map"] = typeof(settings["button_tile_map"]) != "undefined" ? settings["button_tile_map"] : true;

+

+	scriptURL += "?theme=" + escape(settings["theme"]) + "&language=" + escape(settings["language"]) + "&plugins=" + escape(settings["plugins"]);

+	document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + scriptURL + '"></script>');

+

+	TinyMCECompressed_settings = settings;

+}

+

+var tinyMCE = new TinyMCECompressed();

 
-	// Set the error reporting to minimal.
-	@error_reporting(E_ERROR | E_WARNING | E_PARSE);
-
-	// Get input
-	$plugins = explode(',', getParam("plugins", ""));
-	$languages = explode(',', getParam("languages", ""));
-	$themes = explode(',', getParam("themes", ""));
-	$diskCache = getParam("diskcache", "") == "true";
-	$isJS = getParam("js", "") == "true";
-	$compress = getParam("compress", "true") == "true";
-	$core = getParam("core", "true") == "true";
-	$suffix = getParam("suffix", "_src") == "_src" ? "_src" : "";
-	$cachePath = realpath("."); // Cache path, this is where the .gz files will be stored
-	$expiresOffset = 3600 * 24 * 10; // Cache for 10 days in browser cache
-	$content = "";
-	$encodings = array();
-	$supportsGzip = false;
-	$enc = "";
-	$cacheKey = "";
-
-	// Custom extra javascripts to pack
-	$custom = array(/*
-		"some custom .js file",
-		"some custom .js file"
-	*/);
-
-	// Headers
-	header("Content-type: text/javascript");
-	header("Vary: Accept-Encoding");  // Handle proxies
-	header("Expires: " . gmdate("D, d M Y H:i:s", time() + $expiresOffset) . " GMT");
-
-	// Is called directly then auto init with default settings
-	if (!$isJS) {
-		echo getFileContents("tiny_mce_gzip.js");
-		echo "tinyMCE_GZ.init({});";
-		die();
-	}
-
-	// Setup cache info
-	if ($diskCache) {
-		if (!$cachePath)
-			die("alert('Real path failed.');");
-
-		$cacheKey = getParam("plugins", "") . getParam("languages", "") . getParam("themes", "") . $suffix;
-
-		foreach ($custom as $file)
-			$cacheKey .= $file;
-
-		$cacheKey = md5($cacheKey);
-
-		if ($compress)
-			$cacheFile = $cachePath . "/tiny_mce_" . $cacheKey . ".gz";
-		else
-			$cacheFile = $cachePath . "/tiny_mce_" . $cacheKey . ".js";
-	}
-
-	// Check if it supports gzip
-	if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
-		$encodings = explode(',', strtolower(preg_replace("/\s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING'])));
-
-	if ((in_array('gzip', $encodings) || in_array('x-gzip', $encodings) || isset($_SERVER['---------------'])) && function_exists('ob_gzhandler') && !ini_get('zlib.output_compression')) {
-		$enc = in_array('x-gzip', $encodings) ? "x-gzip" : "gzip";
-		$supportsGzip = true;
-	}
-
-	// Use cached file disk cache
-	if ($diskCache && $supportsGzip && file_exists($cacheFile)) {
-		if ($compress)
-			header("Content-Encoding: " . $enc);
-
-		echo getFileContents($cacheFile);
-		die();
-	}
-
-	// Add core
-	if ($core == "true") {
-		$content .= getFileContents("tiny_mce" . $suffix . ".js");
-
-		// Patch loading functions
-		$content .= "tinyMCE_GZ.start();";
-	}
-
-	// Add core languages
-	foreach ($languages as $lang)
-		$content .= getFileContents("langs/" . $lang . ".js");
-
-	// Add themes
-	foreach ($themes as $theme) {
-		$content .= getFileContents( "themes/" . $theme . "/editor_template" . $suffix . ".js");
-
-		foreach ($languages as $lang)
-			$content .= getFileContents("themes/" . $theme . "/langs/" . $lang . ".js");
-	}
-
-	// Add plugins
-	foreach ($plugins as $plugin) {
-		$content .= getFileContents("plugins/" . $plugin . "/editor_plugin" . $suffix . ".js");
-
-		foreach ($languages as $lang)
-			$content .= getFileContents("plugins/" . $plugin . "/langs/" . $lang . ".js");
-	}
-
-	// Add custom files
-	foreach ($custom as $file)
-		$content .= getFileContents($file);
-
-	// Restore loading functions
-	if ($core == "true")
-		$content .= "tinyMCE_GZ.end();";
-
-	// Generate GZIP'd content
-	if ($supportsGzip) {
-		if ($compress) {
-			header("Content-Encoding: " . $enc);
-			$cacheData = gzencode($content, 9, FORCE_GZIP);
-		} else
-			$cacheData = $content;
-
-		// Write gz file
-		if ($diskCache && $cacheKey != "")
-			putFileContents($cacheFile, $cacheData);
-
-		// Stream to client
-		echo $cacheData;
-	} else {
-		// Stream uncompressed content
-		echo $content;
-	}
-
-	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-	function getParam($name, $def = false) {
-		if (!isset($_GET[$name]))
-			return $def;
-
-		return preg_replace("/[^0-9a-z\-_,]+/i", "", $_GET[$name]); // Remove anything but 0-9,a-z,-_
-	}
-
-	function getFileContents($path) {
-		$path = realpath($path);
-
-		if (!$path || !@is_file($path))
-			return "";
-
-		if (function_exists("file_get_contents"))
-			return @file_get_contents($path);
-
-		$content = "";
-		$fp = @fopen($path, "r");
-		if (!$fp)
-			return "";
-
-		while (!feof($fp))
-			$content .= fgets($fp);
-
-		fclose($fp);
-
-		return $content;
-	}
-
-	function putFileContents($path, $content) {
-		if (function_exists("file_put_contents"))
-			return @file_put_contents($path, $content);
-
-		$fp = @fopen($path, "wb");
-		if ($fp) {
-			fwrite($fp, $content);
-			fclose($fp);
-		}
-	}
-?>

--- a/tinymce/2/jscripts/tiny_mce/tiny_mce_popup.js
+++ b/tinymce/2/jscripts/tiny_mce/tiny_mce_popup.js
@@ -1,276 +1,295 @@
-// Some global instances
-var tinymce = null, tinyMCEPopup, tinyMCE;
+// Some global instances, this will be filled later

+var tinyMCE = null, tinyMCELang = null;

+

+function TinyMCE_Popup() {

+};

+

+TinyMCE_Popup.prototype = {

+	findWin : function(w) {

+		var c;

+

+		// Check parents

+		c = w;

+		while (c && (c = c.parent) != null) {

+			if (typeof(c.tinyMCE) != "undefined")

+				return c;

+		}

+

+		// Check openers

+		c = w;

+		while (c && (c = c.opener) != null) {

+			if (typeof(c.tinyMCE) != "undefined")

+				return c;

+		}

+

+		// Try top

+		if (typeof(top.tinyMCE) != "undefined")

+			return top;

+

+		return null;

+	},

+

+	init : function() {

+		var win = window.opener ? window.opener : window.dialogArguments, c;

+		var inst, re, title, divElm;

+

+		if (!win)

+			win = this.findWin(window);

+

+		if (!win) {

+			alert("tinyMCE object reference not found from popup.");

+			return;

+		}

+

+		window.opener = win;

+		this.windowOpener = win;

+		this.onLoadEval = "";

+

+		// Setup parent references

+		tinyMCE = win.tinyMCE;

+		tinyMCELang = win.tinyMCELang;

+

+		inst = tinyMCE.selectedInstance;

+		this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;

+		this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);

+

+		if (this.isWindow)

+			window.focus();

+

+		// Store selection

+		if (this.storeSelection)

+			inst.selectionBookmark = inst.selection.getBookmark(true);

+

+		// Setup dir

+		if (tinyMCELang.lang_dir)

+			document.dir = tinyMCELang.lang_dir;

+

+		// Setup title

+		re = new RegExp('{|\\\$|}', 'g');

+		title = document.title.replace(re, "");

+		if (typeof(tinyMCELang[title]) != "undefined") {

+			divElm = document.createElement("div");

+			divElm.innerHTML = tinyMCELang[title];

+			document.title = divElm.innerHTML;

+

+			if (typeof(tinyMCE.setWindowTitle) != 'undefined')

+				tinyMCE.setWindowTitle(window, divElm.innerHTML);

+		}

+

+		// Output Popup CSS class

+		document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');

+

+		if (tinyMCE.getParam("popups_css_add")) {

+			c = tinyMCE.getParam("popups_css_add");

+

+			// Is relative

+			if (c.indexOf('://') == -1 && c.charAt(0) != '/')

+				c = tinyMCE.documentBasePath + "/" + c;

+

+			document.write('<link href="' + c + '" rel="stylesheet" type="text/css">');

+		}

+

+		tinyMCE.addEvent(window, "load", this.onLoad);

+	},

+

+	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';

+

+		// Execute real onload (Opera fix)

+		if (tinyMCEPopup.onLoadEval !== '')

+			eval(tinyMCEPopup.onLoadEval);

+	},

+

+	executeOnLoad : function(str) {

+		if (tinyMCE.isOpera)

+			this.onLoadEval = str;

+		else

+			eval(str);

+	},

+

+	resizeToInnerSize : function() {

+		var i, doc, body, oldMargin, wrapper, iframe, nodes, dx, dy;

+

+		// Netscape 7.1 workaround

+		if (this.isWindow && tinyMCE.isNS71) {

+			window.resizeBy(0, 10);

+			return;

+		}

+

+		if (this.isWindow) {

+			doc = document;

+			body = doc.body;

+

+			if (body.style.display == 'none')

+				body.style.display = 'block';

+

+			// Remove margin

+			oldMargin = body.style.margin;

+			body.style.margin = '0';

+

+			// Create wrapper

+			wrapper = doc.createElement("div");

+			wrapper.id = 'mcBodyWrapper';

+			wrapper.style.display = 'none';

+			wrapper.style.margin = '0';

+

+			// Wrap body elements

+			nodes = doc.body.childNodes;

+			for (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]);

+			}

+

+			// Add wrapper

+			doc.body.appendChild(wrapper);

+

+			// Create iframe

+			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';

+

+			// Add iframe

+			doc.body.appendChild(iframe);

+

+			// Measure iframe

+			iframe = document.getElementById('mcWinIframe');

+			dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;

+			dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;

+

+			// Resize window

+			// tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);

+			window.resizeBy(dx, dy);

+

+			// Hide iframe and show wrapper

+			body.style.margin = oldMargin;

+			iframe.style.display = 'none';

+			wrapper.style.display = 'block';

+		}

+	},

+

+	resizeToContent : function() {

+		var isMSIE = (navigator.appName == "Microsoft Internet Explorer");

+		var isOpera = (navigator.userAgent.indexOf("Opera") != -1);

+		var elm, width, height, x, y, dx, dy;

+

+		if (isOpera)

+			return;

+

+		if (isMSIE) {

+			try { window.resizeTo(10, 10); } catch (e) {}

+

+			elm = document.body;

+			width = elm.offsetWidth;

+			height = elm.offsetHeight;

+			dx = (elm.scrollWidth - width) + 4;

+			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);

+				x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);

+				y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);

+				window.moveTo(x, y);

+			}

+		}

+	},

+

+	getWindowArg : function(name, default_value) {

+		return tinyMCE.getWindowArg(name, default_value);

+	},

+

+	restoreSelection : function() {

+		var inst;

+

+		if (this.storeSelection) {

+			inst = tinyMCE.selectedInstance;

+

+			inst.getWin().focus();

+

+			if (inst.selectionBookmark)

+				inst.selection.moveToBookmark(inst.selectionBookmark);

+		}

+	},

+

+	execCommand : function(command, user_interface, value) {

+		var inst = tinyMCE.selectedInstance;

+

+		this.restoreSelection();

+		inst.execCommand(command, user_interface, value);

+

+		// Store selection

+		if (this.storeSelection)

+			inst.selectionBookmark = inst.selection.getBookmark(true);

+	},

+

+	close : function() {

+		tinyMCE.closeWindow(window);

+	},

+

+	pickColor : function(e, element_id) {

+		tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {

+			element_id : element_id,

+			document : document,

+			window : window,

+			store_selection : false

+		});

+	},

+

+	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);

+

+		// Call to external callback

+		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);");

+	},

+

+	importClass : function(c) {

+		var n;

+

+		window[c] = function() {};

+

+		for (n in window.opener[c].prototype)

+			window[c].prototype[n] = window.opener[c].prototype[n];

+

+		window[c].constructor = window.opener[c].constructor;

+	}

+

+	};

+

+// Setup global instance

+var tinyMCEPopup = new TinyMCE_Popup();

+

+tinyMCEPopup.init();

 
-tinyMCEPopup = {
-	init : function() {
-		var t = this, w, ti, li, q, i, it;
-
-		li = ('' + document.location.search).replace(/^\?/, '').split('&');
-		q = {};
-		for (i=0; i<li.length; i++) {
-			it = li[i].split('=');
-			q[unescape(it[0])] = unescape(it[1]);
-		}
-
-		if (q.mce_rdomain)
-			document.domain = q.mce_rdomain;
-
-		// Find window & API
-		w = t.getWin();
-		tinymce = w.tinymce;
-		tinyMCE = w.tinyMCE;
-		t.editor = tinymce.EditorManager.activeEditor;
-		t.params = t.editor.windowManager.params;
-
-		// Setup local DOM
-		t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
-		t.dom.loadCSS(t.editor.settings.popup_css);
-
-		// Setup on init listeners
-		t.listeners = [];
-		t.onInit = {
-			add : function(f, s) {
-				t.listeners.push({func : f, scope : s});
-			}
-		};
-
-		t.isWindow = !t.getWindowArg('mce_inline');
-		t.id = t.getWindowArg('mce_window_id');
-		t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
-	},
-
-	getWin : function() {
-		return window.dialogArguments || opener || parent || top;
-	},
-
-	getWindowArg : function(n, dv) {
-		var v = this.params[n];
-
-		return tinymce.is(v) ? v : dv;
-	},
-
-	getParam : function(n, dv) {
-		return this.editor.getParam(n, dv);
-	},
-
-	getLang : function(n, dv) {
-		return this.editor.getLang(n, dv);
-	},
-
-	execCommand : function(cmd, ui, val, a) {
-		a = a || {};
-		a.skip_focus = 1;
-
-		this.restoreSelection();
-		return this.editor.execCommand(cmd, ui, val, a);
-	},
-
-	resizeToInnerSize : function() {
-		var t = this, n, b = document.body, vp = t.dom.getViewPort(window), dw, dh;
-
-		dw = t.getWindowArg('mce_width') - vp.w;
-		dh = t.getWindowArg('mce_height') - vp.h;
-
-		if (t.isWindow)
-			window.resizeBy(dw, dh);
-		else
-			t.editor.windowManager.resizeBy(dw, dh, t.id);
-	},
-
-	executeOnLoad : function(s) {
-		this.onInit.add(function() {
-			eval(s);
-		});
-	},
-
-	storeSelection : function() {
-		this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');
-	},
-
-	restoreSelection : function() {
-		var t = tinyMCEPopup;
-
-		if (!t.isWindow && tinymce.isIE)
-			t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
-	},
-
-	requireLangPack : function() {
-		var u = this.getWindowArg('plugin_url') || this.getWindowArg('theme_url');
-
-		if (u && this.editor.settings.language) {
-			u += '/langs/' + this.editor.settings.language + '_dlg.js';
-
-			if (!tinymce.ScriptLoader.isDone(u)) {
-				document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
-				tinymce.ScriptLoader.markDone(u);
-			}
-		}
-	},
-
-	pickColor : function(e, element_id) {
-		this.execCommand('mceColorPicker', true, {
-			color : document.getElementById(element_id).value,
-			func : function(c) {
-				document.getElementById(element_id).value = c;
-
-				try {
-					document.getElementById(element_id).onchange();
-				} catch (ex) {
-					// Try fire event, ignore errors
-				}
-			}
-		});
-	},
-
-	openBrowser : function(element_id, type, option) {
-		tinyMCEPopup.restoreSelection();
-		this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
-	},
-
-	close : function() {
-		var t = this;
-
-		// To avoid domain relaxing issue in Opera
-		function close() {
-			t.editor.windowManager.close(window);
-			tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
-		};
-
-		if (tinymce.isOpera)
-			t.getWin().setTimeout(close, 0);
-		else
-			close();
-	},
-
-	// Internal functions	
-
-	_restoreSelection : function() {
-		var e = window.event.srcElement;
-
-		if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
-			tinyMCEPopup.restoreSelection();
-	},
-
-/*	_restoreSelection : function() {
-		var e = window.event.srcElement;
-
-		// If user focus a non text input or textarea
-		if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
-			tinyMCEPopup.restoreSelection();
-	},*/
-
-	_onDOMLoaded : function() {
-		var t = this, ti = document.title, bm, h;
-
-		// Translate page
-		h = document.body.innerHTML;
-
-		// Replace a=x with a="x" in IE
-		if (tinymce.isIE)
-			h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"')
-
-		document.dir = t.editor.getParam('directionality','');
-		document.body.innerHTML = t.editor.translate(h);
-		document.title = ti = t.editor.translate(ti);
-		document.body.style.display = '';
-
-		// Restore selection in IE when focus is placed on a non textarea or input element of the type text
-		if (tinymce.isIE)
-			document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
-
-		t.restoreSelection();
-		t.resizeToInnerSize();
-
-		// Set inline title
-		if (!t.isWindow)
-			t.editor.windowManager.setTitle(window, ti);
-		else
-			window.focus();
-
-		if (!tinymce.isIE && !t.isWindow) {
-			tinymce.dom.Event._add(document, 'focus', function() {
-				t.editor.windowManager.focus(t.id)
-			});
-		}
-
-		// Patch for accessibility
-		tinymce.each(t.dom.select('select'), function(e) {
-			e.onkeydown = tinyMCEPopup._accessHandler;
-		});
-
-		// Call onInit
-		// Init must be called before focus so the selection won't get lost by the focus call
-		tinymce.each(t.listeners, function(o) {
-			o.func.call(o.scope, t.editor);
-		});
-
-		// Move focus to window
-		if (t.getWindowArg('mce_auto_focus', true)) {
-			window.focus();
-
-			// Focus element with mceFocus class
-			tinymce.each(document.forms, function(f) {
-				tinymce.each(f.elements, function(e) {
-					if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
-						e.focus();
-						return false; // Break loop
-					}
-				});
-			});
-		}
-
-		document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
-	},
-
-	_accessHandler : function(e) {
-		e = e || window.event;
-
-		if (e.keyCode == 13 || e.keyCode == 32) {
-			e = e.target || e.srcElement;
-
-			if (e.onchange)
-				e.onchange();
-
-			return tinymce.dom.Event.cancel(e);
-		}
-	},
-
-	_closeWinKeyHandler : function(e) {
-		e = e || window.event;
-
-		if (e.keyCode == 27)
-			tinyMCEPopup.close();
-	},
-
-	_wait : function() {
-		var t = this, ti;
-
-		if (tinymce.isIE && document.location.protocol != 'https:') {
-			// Fake DOMContentLoaded on IE
-			document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');
-			document.getElementById("__ie_onload").onreadystatechange = function() {
-				if (this.readyState == "complete") {
-					t._onDOMLoaded();
-					document.getElementById("__ie_onload").onreadystatechange = null; // Prevent leak
-				}
-			};
-		} else {
-			if (tinymce.isIE || tinymce.isWebKit) {
-				ti = setInterval(function() {
-					if (/loaded|complete/.test(document.readyState)) {
-						clearInterval(ti);
-						t._onDOMLoaded();
-					}
-				}, 10);
-			} else {
-				window.addEventListener('DOMContentLoaded', function() {
-					t._onDOMLoaded();
-				}, false);
-			}
-		}
-	}
-};
-
-tinyMCEPopup.init();
-tinyMCEPopup._wait(); // Wait for DOM Content Loaded
-

--- a/tinymce/2/jscripts/tiny_mce/tiny_mce_src.js
+++ b/tinymce/2/jscripts/tiny_mce/tiny_mce_src.js
@@ -1,10605 +1,7613 @@
+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */

+

+function TinyMCE_Engine() {

+	var ua;

+

+	this.majorVersion = "2";

+	this.minorVersion = "1.2";

+	this.releaseDate = "2007-08-21";

+

+	this.instances = [];

+	this.switchClassCache = [];

+	this.windowArgs = [];

+	this.loadedFiles = [];

+	this.pendingFiles = [];

+	this.loadingIndex = 0;

+	this.configs = [];

+	this.currentConfig = 0;

+	this.eventHandlers = [];

+	this.log = [];

+	this.undoLevels = [];

+	this.undoIndex = 0;

+	this.typingUndoIndex = -1;

+	this.settings = [];

+

+	// Browser check

+	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.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);

+	this.isGecko = ua.indexOf('Gecko') != -1; // Will also be true on Safari

+	this.isSafari = ua.indexOf('Safari') != -1;

+	this.isOpera = window['opera'] && opera.buildNumber ? true : false;

+	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 = [];

+	this.themes = [];

+	this.menus = [];

+	this.loadedPlugins = [];

+	this.buttonMap = [];

+	this.isLoaded = false;

+

+	// Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those

+	if (this.isOpera) {

+		this.isMSIE = true;

+		this.isGecko = false;

+		this.isSafari =  false;

+	}

+

+	this.isIE = this.isMSIE;

+	this.isRealIE = this.isMSIE && !this.isOpera;

+

+	// TinyMCE editor id instance counter

+	this.idCounter = 0;

+};

+

+TinyMCE_Engine.prototype = {

+	init : function(settings) {

+		var theme, nl, baseHREF = "", i, cssPath, entities, h, p, src, elements = [], head;

+

+		// IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry.

+		if (this.isMSIE5_0)

+			return;

+

+		this.settings = settings;

+

+		// Check if valid browser has execcommand support

+		if (typeof(document.execCommand) == 'undefined')

+			return;

+

+		// Get script base path

+		if (!tinyMCE.baseURL) {

+			// Search through head

+			head = document.getElementsByTagName('head')[0];

+

+			if (head) {

+				for (i=0, nl = head.getElementsByTagName('script'); i<nl.length; i++)

+					elements.push(nl[i]);

+			}

+

+			// Search through rest of document

+			for (i=0, nl = document.getElementsByTagName('script'); i<nl.length; i++)

+				elements.push(nl[i]);

+

+			// If base element found, add that infront of baseURL

+			nl = document.getElementsByTagName('base');

+			for (i=0; i<nl.length; i++) {

+				if (nl[i].href)

+					baseHREF = nl[i].href;

+			}

+

+			for (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)) {

+					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' : '';

+

+					// Force it absolute if page has a base href

+					if (baseHREF !== '' && src.indexOf('://') == -1)

+						tinyMCE.baseURL = baseHREF + src;

+					else

+						tinyMCE.baseURL = src;

+

+					break;

+				}

+			}

+		}

+

+		// Get document base path

+		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 not HTTP absolute

+		if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) != '/') {

+			// If site absolute

+			tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;

+		}

+

+		// Set default values on settings

+		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],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");

+		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("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("custom_undo_redo_global", false);

+		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", true);

+		this._def("fix_table_elements", false);

+		this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml');

+		this._def("hidden_tab_class", '');

+		this._def("display_tab_class", '');

+		this._def("gecko_spellcheck", false);

+		this._def("hide_selects_on_submit", true);

+		this._def("forced_root_block", false);

+		this._def("remove_trailing_nbsp", false);

+		this._def("save_on_tinymce_forms", false);

+

+		// Force strict loading mode to false on non Gecko browsers

+		if (this.isMSIE && !this.isOpera)

+			this.settings.strict_loading_mode = false;

+

+		// Browser check IE

+		if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1)

+			return;

+

+		// Browser check Gecko

+		if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1)

+			return;

+

+		// Browser check Safari

+		if (this.isSafari && this.settings.browsers.indexOf('safari') == -1)

+			return;

+

+		// Browser check Opera

+		if (this.isOpera && this.settings.browsers.indexOf('opera') == -1)

+			return;

+

+		// If not super absolute make it so

+		baseHREF = tinyMCE.settings.document_base_url;

+		h = document.location.href;

+		p = h.indexOf('://');

+		if (p > 0 && document.location.protocol != "file:") {

+			p = h.indexOf('/', p + 3);

+			h = h.substring(0, p);

+

+			if (baseHREF.indexOf('://') == -1)

+				baseHREF = h + baseHREF;

+

+			tinyMCE.settings.document_base_url = baseHREF;

+			tinyMCE.settings.document_base_prefix = h;

+		}

+

+		// Trim away query part

+		if (baseHREF.indexOf('?') != -1)

+			baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));

+

+		this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";

+

+		theme = this.settings.theme;

+		this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';

+		this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';

+		this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';

+		this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i");

+		this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40];

+		this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL

+		this.uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>';

+		this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance'];

+

+		// Theme url

+		this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme;

+

+		if (!tinyMCE.isIE || tinyMCE.isOpera)

+			this.settings.force_br_newlines = false;

+

+		if (tinyMCE.getParam("popups_css", false)) {

+			cssPath = tinyMCE.getParam("popups_css", "");

+

+			// Is relative

+			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')

+				this.settings.popups_css = this.documentBasePath + "/" + cssPath;

+			else

+				this.settings.popups_css = cssPath;

+		} else

+			this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css";

+

+		if (tinyMCE.getParam("editor_css", false)) {

+			cssPath = tinyMCE.getParam("editor_css", "");

+

+			// Is relative

+			if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')

+				this.settings.editor_css = this.documentBasePath + "/" + cssPath;

+			else

+				this.settings.editor_css = cssPath;

+		} else {

+			if (this.settings.editor_css !== '')

+				this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";

+		}

+

+		// Only do this once

+		if (this.configs.length == 0) {

+			if (typeof(TinyMCECompressed) == "undefined") {

+				tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad);

+

+				if (tinyMCE.isRealIE) {

+					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);

+

+		// Add plugins

+		p = tinyMCE.getParam('plugins', '', true, ',');

+		if (p.length > 0) {

+			for (i=0; i<p.length; i++) {

+				if (p[i].charAt(0) != '-')

+					this.loadScript(tinyMCE.baseURL + '/plugins/' + p[i] + '/editor_plugin' + tinyMCE.srcMode + '.js');

+			}

+		}

+

+		// Setup entities

+		if (tinyMCE.getParam('entity_encoding') == 'named') {

+			settings.cleanup_entities = [];

+			entities = tinyMCE.getParam('entities', '', true, ',');

+			for (i=0; i<entities.length; i+=2)

+				settings.cleanup_entities['c' + entities[i]] = entities[i+1];

+		}

+

+		// Save away this config

+		settings.index = this.configs.length;

+		this.configs[this.configs.length] = settings;

+

+		// Start loading first one in chain

+		this.loadNextScript();

+

+		// Force flicker free CSS backgrounds in IE

+		if (this.isIE && !this.isOpera) {

+			try {

+				document.execCommand('BackgroundImageCache', false, true);

+			} catch (e) {

+				// Ignore

+			}

+		}

+

+		// Setup XML encoding regexps

+		this.xmlEncodeRe = new RegExp('[<>&"]', 'g');

+	},

+

+	_addUnloadEvents : function() {

+		var st = tinyMCE.settings.add_unload_trigger;

+

+		if (tinyMCE.isIE) {

+			if (st) {

+				tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler);

+				tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler);

+			}

+		} else {

+			if (st)

+				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];

+

+		// Use the previous plugin object base URL used when loading external plugins

+		p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n;

+		this.plugins[n] = p;

+

+		this.loadNextScript();

+	},

+

+	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;

+

+		this.loadNextScript();

+	},

+

+	addMenu : function(n, m) {

+		this.menus[n] = m;

+	},

+

+	hasMenu : function(n) {

+		return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null;

+	},

+

+	loadScript : function(url) {

+		var i;

+

+		for (i=0; i<this.loadedFiles.length; i++) {

+			if (this.loadedFiles[i] == url)

+				return;

+		}

+

+		if (tinyMCE.settings.strict_loading_mode)

+			this.pendingFiles[this.pendingFiles.length] = url;

+		else

+			document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></script>');

+

+		this.loadedFiles[this.loadedFiles.length] = url;

+	},

+

+	loadNextScript : function() {

+		var d = document, se;

+

+		if (!tinyMCE.settings.strict_loading_mode)

+			return;

+

+		if (this.loadingIndex < this.pendingFiles.length) {

+			se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script');

+			se.setAttribute('language', 'javascript');

+			se.setAttribute('type', 'text/javascript');

+			se.setAttribute('src', this.pendingFiles[this.loadingIndex++]);

+

+			d.getElementsByTagName("head")[0].appendChild(se);

+		} else

+			this.loadingIndex = -1; // Done with loading

+	},

+

+	loadCSS : function(url) {

+		var ar = url.replace(/\s+/, '').split(',');

+		var lflen = 0, csslen = 0, skip = false;

+		var x = 0, i = 0, nl, le;

+

+		for (x = 0,csslen = ar.length; x<csslen; x++) {

+			if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0) {

+				/* Make sure it doesn't exist. */

+				for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {

+					if (this.loadedFiles[i] == ar[x]) {

+						skip = true;

+						break;

+					}

+				}

+

+				if (!skip) {

+					if (tinyMCE.settings.strict_loading_mode) {

+						nl = document.getElementsByTagName("head");

+

+						le = document.createElement('link');

+						le.setAttribute('href', ar[x]);

+						le.setAttribute('rel', 'stylesheet');

+						le.setAttribute('type', 'text/css');

+

+						nl[0].appendChild(le);			

+					} else

+						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) {

+				// Is relative, make absolute

+				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.isIE ? 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, n, inst, doc;

+

+		// Find MCE instance linked to given form element and copy it's value

+		formElement = document.getElementById(form_element_name);

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (!tinyMCE.isInstance(inst))

+				continue;

+

+			inst.switchSettings();

+

+			if (inst.formElement == formElement) {

+				doc = inst.getDoc();

+

+				tinyMCE._setHTML(doc, inst.formElement.value);

+

+				if (!tinyMCE.isIE)

+					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);

+	},

+

+	removeInstance : function(ti) {

+		var t = [], n, i;

+

+		// Remove from instances

+		for (n in tinyMCE.instances) {

+			i = tinyMCE.instances[n];

+

+			if (tinyMCE.isInstance(i) && ti != i)

+					t[n] = i;

+		}

+

+		tinyMCE.instances = t;

+

+		// Remove from global undo/redo

+		n = [];

+		t = tinyMCE.undoLevels;

+

+		for (i=0; i<t.length; i++) {

+			if (t[i] != ti)

+				n.push(t[i]);

+		}

+

+		tinyMCE.undoLevels = n;

+		tinyMCE.undoIndex = n.length;

+

+		// Dispatch remove instance call

+		tinyMCE.dispatchCallback(ti, 'remove_instance_callback', 'removeInstance', ti);

+

+		return ti;

+	},

+

+	removeMCEControl : function(editor_id) {

+		var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn, n;

+

+		if (inst) {

+			inst.switchSettings();

+

+			editor_id = inst.editorId;

+			h = tinyMCE.getContent(editor_id);

+

+			this.removeInstance(inst);

+

+			tinyMCE.selectedElement = null;

+			tinyMCE.selectedInstance = null;

+

+			tinyMCE.selectedElement = null;

+			tinyMCE.selectedInstance = null;

+

+			// Try finding an instance

+			for (n in tinyMCE.instances) {

+				if (!tinyMCE.isInstance(tinyMCE.instances[n]))

+					continue;

+

+				tinyMCE.selectedInstance = tinyMCE.instances[n];

+				break;

+			}

+

+			// Remove element

+			re = document.getElementById(editor_id + "_parent");

+			ot = inst.oldTargetElement;

+			tn = ot.nodeName.toLowerCase();

+

+			if (tn == "textarea" || tn == "input") {

+				re.parentNode.removeChild(re);

+				ot.style.display = "inline";

+				ot.value = h;

+			} else {

+				ot.innerHTML = h;

+				ot.style.display = 'block';

+				re.parentNode.insertBefore(ot, re);

+				re.parentNode.removeChild(re);

+			}

+		}

+	},

+

+	triggerSave : function(skip_cleanup, skip_callback) {

+		var inst, n;

+

+		// Default to false

+		if (typeof(skip_cleanup) == "undefined")

+			skip_cleanup = false;

+

+		// Default to false

+		if (typeof(skip_callback) == "undefined")

+			skip_callback = false;

+

+		// Cleanup and set all form fields

+		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), r;

+

+		if (inst) {

+			r = inst.selection.getRng();

+

+			if (typeof(focus) == "undefined")

+				focus = true;

+

+			// IE bug lost focus on images in absolute divs Bug #1534575

+			if (focus && (!r || !r.item))

+				inst.contentWindow.focus();

+

+			// Reset design mode if lost

+			inst.autoResetDesignMode();

+

+			this.selectedElement = inst.getFocusElement();

+			inst.select();

+			tinyMCE.execCommand(command, user_interface, value);

+

+			// Cancel event so it doesn't call onbeforeonunlaod

+			if (tinyMCE.isIE && window.event != null)

+				tinyMCE.cancelEvent(window.event);

+		}

+	},

+

+	execCommand : function(command, user_interface, value) {

+		var inst = tinyMCE.selectedInstance, n, pe, te;

+

+		// Default input

+		user_interface = user_interface ? user_interface : false;

+		value = value ? value : null;

+

+		if (inst)

+			inst.switchSettings();

+

+		switch (command) {

+			case "Undo":

+				if (this.getParam('custom_undo_redo_global')) {

+					if (this.undoIndex > 0) {

+						tinyMCE.nextUndoRedoAction = 'Undo';

+						inst = this.undoLevels[--this.undoIndex];

+						inst.select();

+

+						if (!tinyMCE.nextUndoRedoInstanceId)

+							inst.execCommand('Undo');

+					}

+				} else

+					inst.execCommand('Undo');

+				return true;

+

+			case "Redo":

+				if (this.getParam('custom_undo_redo_global')) {

+					if (this.undoIndex <= this.undoLevels.length - 1) {

+						tinyMCE.nextUndoRedoAction = 'Redo';

+						inst = this.undoLevels[this.undoIndex++];

+						inst.select();

+

+						if (!tinyMCE.nextUndoRedoInstanceId)

+							inst.execCommand('Redo');

+					}

+				} else

+					inst.execCommand('Redo');

+

+				return true;

+

+			case 'mceFocus':

+				inst = tinyMCE.getInstanceById(value);

+

+				if (inst)

+					inst.getWin().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 "mceToggleEditor":

+				inst = tinyMCE.getInstanceById(value);

+

+				if (inst) {

+					pe = document.getElementById(inst.editorId + '_parent');

+					te = inst.oldTargetElement;

+

+					if (typeof(inst.enabled) == 'undefined')

+						inst.enabled = true;

+

+					inst.enabled = !inst.enabled;

+

+					if (!inst.enabled) {

+						pe.style.display = 'none';

+

+						if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')

+							te.value = inst.getHTML();

+						else

+							te.innerHTML = inst.getHTML();

+

+						te.style.display = inst.oldTargetDisplay;

+						tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst);

+					} else {

+						pe.style.display = 'block';

+						te.style.display = 'none';

+

+						if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT')

+							inst.setHTML(te.value);

+						else

+							inst.setHTML(te.innerHTML);

+

+						inst.useCSS = false;

+						tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst);

+					}

+				} else

+					tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);

+

+				return;

+

+			case "mceResetDesignMode":

+				// Resets the designmode state of the editors in Gecko

+				if (tinyMCE.isGecko) {

+					for (n in tinyMCE.instances) {

+						if (!tinyMCE.isInstance(tinyMCE.instances[n]))

+							continue;

+

+						try {

+							tinyMCE.instances[n].getDoc().designMode = "off";

+							tinyMCE.instances[n].getDoc().designMode = "on";

+							tinyMCE.instances[n].useCSS = false;

+						} catch (e) {

+							// Ignore any errors

+						}

+					}

+				}

+

+				return;

+		}

+

+		if (inst) {

+			inst.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 = (isNaN(aw) || aw < 0) ? 300 : aw;

+			aw = aw + "px";

+		}

+

+		if (ah.indexOf('%') == -1) {

+			ah = parseInt(ah);

+			ah = (isNaN(ah) || ah < 0) ? 240 : ah;

+			ah = ah + "px";

+		}

+

+		iframe.setAttribute("id", id);

+		iframe.setAttribute("name", id);

+		iframe.setAttribute("class", "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");

+		iframe.className = 'mceEditorIframe';

+

+		if (tinyMCE.settings.auto_resize)

+			iframe.setAttribute("scrolling", "no");

+

+		// Must have a src element in MSIE HTTPs breaks aswell as absoute URLs

+		if (tinyMCE.isRealIE)

+			iframe.setAttribute("src", this.settings.default_document);

+

+		iframe.style.width = aw;

+		iframe.style.height = ah;

+

+		// Ugly hack for Gecko problem in strict mode

+		if (tinyMCE.settings.strict_loading_mode)

+			iframe.style.marginBottom = '-5px';

+

+		// MSIE 5.0 issue

+		if (tinyMCE.isRealIE)

+			replace_element.outerHTML = iframe.outerHTML;

+		else

+			replace_element.parentNode.replaceChild(iframe, replace_element);

+

+		if (tinyMCE.isRealIE)

+			return win.frames[id];

+		else

+			return iframe;

+	},

+

+	setupContent : function(editor_id) {

+		var inst = tinyMCE.instances[editor_id], i, doc = inst.getDoc(), head = doc.getElementsByTagName('head').item(0);

+		var content = inst.startContent, contentElement, body;

+

+		// HTML values get XML encoded in strict mode

+		if (tinyMCE.settings.strict_loading_mode) {

+			content = content.replace(/&lt;/g, '<');

+			content = content.replace(/&gt;/g, '>');

+			content = content.replace(/&quot;/g, '"');

+			content = content.replace(/&amp;/g, '&');

+		}

+

+		tinyMCE.selectedInstance = inst;

+		inst.switchSettings();

+

+		// Not loaded correctly hit it again, Mozilla bug #997860

+		if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {

+			// This part will remove the designMode status

+			// Failes first time in Firefox 1.5b2 on Mac

+			try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {}

+			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000);

+			return;

+		}

+

+		// Wait for it to load

+		if (!head || !doc.body) {

+			window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10);

+			return;

+		}

+

+		// Import theme specific content CSS the user specific

+		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);

+

+		// Setup keyboard shortcuts

+		if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) {

+			inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo');

+			inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo');

+		}

+

+		// BlockFormat shortcuts keys

+		for (i=1; i<=6; i++)

+			inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, '<h' + i + '>');

+

+		inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '<p>');

+		inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '<div>');

+		inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '<address>');

+

+		// Add default shortcuts for gecko

+		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');

+		}

+

+		// Setup span styles

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			inst.getBody().setAttribute('id', 'mceSpanFonts');

+

+		if (tinyMCE.settings.nowrap)

+			doc.body.style.whiteSpace = "nowrap";

+

+		doc.body.dir = this.settings.directionality;

+		doc.editorId = editor_id;

+

+		// Add on document element in Mozilla

+		if (!tinyMCE.isIE)

+			doc.documentElement.editorId = editor_id;

+

+		inst.setBaseHREF(tinyMCE.settings.base_href);

+

+		// Replace new line characters to BRs

+		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");

+		}

+

+		// Open closed anchors

+	//	content = content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');

+

+		// Call custom cleanup code

+		content = tinyMCE.storeAwayURLs(content);

+		content = tinyMCE._customCleanup(inst, "insert_to_editor", content);

+

+		if (tinyMCE.isIE) {

+			// Ugly!!!

+			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;");

+

+			body = inst.getBody();

+			body.editorId = editor_id;

+		}

+

+		content = tinyMCE.cleanupHTMLCode(content);

+

+		// Fix for bug #958637

+		if (!tinyMCE.isIE) {

+			contentElement = inst.getDoc().createElement("body");

+			doc = inst.getDoc();

+

+			contentElement.innerHTML = content;

+

+			if (tinyMCE.settings.cleanup_on_startup)

+				tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement));

+			else

+				tinyMCE.setInnerHTML(inst.getBody(), content);

+

+			tinyMCE.convertAllRelativeURLs(inst.getBody());

+		} else {

+			if (tinyMCE.settings.cleanup_on_startup) {

+				tinyMCE._setHTML(inst.getDoc(), content);

+

+				// Produces permission denied error in MSIE 5.5

+				try {

+					tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));

+				} catch(e) {

+					// Ignore

+				}

+			} else

+				tinyMCE._setHTML(inst.getDoc(), content);

+		}

+

+		// Fix for bug #957681

+		//inst.getDoc().designMode = inst.getDoc().designMode;

+

+		tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings.visual, inst);

+		tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc());

+

+		// Re-add design mode on mozilla

+		if (!tinyMCE.isIE)

+			tinyMCE.addEventHandlers(inst);

+

+		// Add blur handler

+		if (tinyMCE.isIE) {

+			tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch);

+			tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953

+

+			// Workaround for drag drop/copy paste base href bug

+			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);

+			}

+		}

+

+		// Trigger node change, this call locks buttons for tables and so forth

+		inst.select();

+		tinyMCE.selectedElement = inst.contentWindow.document.body;

+

+		// Call custom DOM cleanup

+		tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody());

+		tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody());

+		tinyMCE._setEventsEnabled(inst.getBody(), false);

+		tinyMCE.cleanupAnchors(inst.getDoc());

+

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			tinyMCE.convertSpansToFonts(inst.getDoc());

+

+		inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);

+		inst.undoRedo.add({ content : inst.startContent });

+

+		// Cleanup any mess left from storyAwayURLs

+		if (tinyMCE.isGecko) {

+			// Remove mce_src from textnodes and comments

+			tinyMCE.selectNodes(inst.getBody(), function(n) {

+				if (n.nodeType == 3 || n.nodeType == 8)

+					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");

+

+				return false;

+			});

+		}

+

+		// Remove Gecko spellchecking

+		if (tinyMCE.isGecko)

+			inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck");

+

+		// Cleanup any mess left from storyAwayURLs

+		tinyMCE._removeInternal(inst.getBody());

+

+		inst.select();

+		tinyMCE.triggerNodeChange(false, true);

+	},

+

+	storeAwayURLs : function(s) {

+		// Remove all mce_src, mce_href and replace them with new ones

+		// s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');

+		// s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), '');

+

+		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) {

+			// Remove mce_src from textnodes and comments

+			tinyMCE.selectNodes(n, function(n) {

+				if (n.nodeType == 3 || n.nodeType == 8)

+					n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");

+

+				return false;

+			});

+		}

+	},

+

+	removeTinyMCEFormElements : function(form_obj) {

+		var i, elementId;

+

+		// Skip form element removal

+		if (!tinyMCE.getParam('hide_selects_on_submit'))

+			return;

+

+		// Check if form is valid

+		if (typeof(form_obj) == "undefined" || form_obj == null)

+			return;

+

+		// If not a form, find the form

+		if (form_obj.nodeName != "FORM") {

+			if (form_obj.form)

+				form_obj = form_obj.form;

+			else

+				form_obj = tinyMCE.getParentElement(form_obj, "form");

+		}

+

+		// Still nothing

+		if (form_obj == null)

+			return;

+

+		// Disable all UI form elements that TinyMCE created

+		for (i=0; i<form_obj.elements.length; i++) {

+			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, i, elm, keys;

+

+		// Remove odd, error

+		if (typeof(tinyMCE) == "undefined")

+			return true;

+

+		//tinyMCE.debug(e.type + " " + e.target.nodeName + " " + (e.relatedTarget ? e.relatedTarget.nodeName : ""));

+

+		if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback', 'handleEvent', e))

+			return false;

+

+		switch (e.type) {

+			case "beforedeactivate": // Was added due to bug #1439953

+			case "blur":

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.execCommand('mceEndTyping');

+

+				tinyMCE.hideMenus();

+

+				return;

+

+			// Workaround for drag drop/copy paste base href bug

+			case "drop":

+			case "beforepaste":

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.setBaseHREF(null);

+

+				// Fixes odd MSIE bug where drag/droping elements in a iframe with height 100% breaks

+				// This logic forces the width/height to be in pixels while the user is drag/dropping

+				if (tinyMCE.isRealIE) {

+					var ife = tinyMCE.selectedInstance.iframeElement;

+

+					/*if (ife.style.width.indexOf('%') != -1) {

+						ife._oldWidth = ife.width.height;

+						ife.style.width = ife.clientWidth;

+					}*/

+

+					if (ife.style.height.indexOf('%') != -1) {

+						ife._oldHeight = ife.style.height;

+						ife.style.height = ife.clientHeight;

+					}

+				}

+

+				window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings.base_href);tinyMCE._resetIframeHeight();", 1);

+				return;

+

+			case "submit":

+				tinyMCE.formSubmit(tinyMCE.isMSIE ? window.event.srcElement : e.target);

+				return;

+

+			case "reset":

+				var formObj = tinyMCE.isIE ? window.event.srcElement : e.target;

+

+				for (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.instances[e.target.editorId].select();

+				} else {

+					if (e.target.ownerDocument.editorId)

+						tinyMCE.instances[e.target.ownerDocument.editorId].select();

+				}

+

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.switchSettings();

+

+				// Insert P element

+				if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && e.keyCode == 13 && !e.shiftKey) {

+					// Insert P element instead of BR

+					if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {

+						// Cancel event

+						tinyMCE.execCommand("mceAddUndoLevel");

+						return tinyMCE.cancelEvent(e);

+					}

+				}

+

+				// Handle backspace

+				if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {

+					// Insert P element instead of BR

+					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {

+						// Cancel event

+						tinyMCE.execCommand("mceAddUndoLevel");

+						return tinyMCE.cancelEvent(e);

+					}

+				}

+

+				// Return key pressed

+				if (tinyMCE.isIE && tinyMCE.settings.force_br_newlines && e.keyCode == 13) {

+					if (e.target.editorId)

+						tinyMCE.instances[e.target.editorId].select();

+

+					if (tinyMCE.selectedInstance) {

+						var sel = tinyMCE.selectedInstance.getDoc().selection;

+						var rng = sel.createRange();

+

+						if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)

+							return false;

+

+						// Cancel event

+						e.returnValue = false;

+						e.cancelBubble = true;

+

+						// Insert BR element

+						rng.pasteHTML("<br />");

+						rng.collapse(false);

+						rng.select();

+

+						tinyMCE.execCommand("mceAddUndoLevel");

+						tinyMCE.triggerNodeChange(false);

+						return false;

+					}

+				}

+

+				// Backspace or delete

+				if (e.keyCode == 8 || e.keyCode == 46) {

+					tinyMCE.selectedElement = e.target;

+					tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a");

+					tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img");

+					tinyMCE.triggerNodeChange(false);

+				}

+

+				return false;

+

+			case "keyup":

+			case "keydown":

+				tinyMCE.hideMenus();

+				tinyMCE.hasMouseMoved = false;

+

+				if (inst && inst.handleShortcut(e))

+					return false;

+

+				inst._fixRootBlocks();

+

+				if (inst.settings.remove_trailing_nbsp)

+					inst._fixTrailingNbsp();

+

+				if (e.target.editorId)

+					tinyMCE.instances[e.target.editorId].select();

+

+				if (tinyMCE.selectedInstance)

+					tinyMCE.selectedInstance.switchSettings();

+

+				inst = tinyMCE.selectedInstance;

+

+				// Handle backspace

+				if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {

+					// Insert P element instead of BR

+					if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {

+						// Cancel event

+						tinyMCE.execCommand("mceAddUndoLevel");

+						e.preventDefault();

+						return false;

+					}

+				}

+

+				tinyMCE.selectedElement = null;

+				tinyMCE.selectedNode = null;

+				elm = tinyMCE.selectedInstance.getFocusElement();

+				tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");

+				tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");

+				tinyMCE.selectedElement = elm;

+

+				// Update visualaids on tabs

+				if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9)

+					tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance);

+

+				// Fix empty elements on return/enter, check where enter occured

+				if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)

+					tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();

+

+				// Fix empty elements on return/enter

+				if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) {

+					elm = tinyMCE.enterKeyElement;

+					if (elm) {

+						var re = new RegExp('^HR|IMG|BR$','g'); // Skip these

+						var dre = new RegExp('^H[1-6]$','g'); // Add double on these

+

+						if (!elm.hasChildNodes() && !re.test(elm.nodeName)) {

+							if (dre.test(elm.nodeName))

+								elm.innerHTML = "&nbsp;&nbsp;";

+							else

+								elm.innerHTML = "&nbsp;";

+						}

+					}

+				}

+

+				// Check if it's a position key

+				keys = tinyMCE.posKeyCodes;

+				var posKey = false;

+				for (i=0; i<keys.length; i++) {

+					if (keys[i] == e.keyCode) {

+						posKey = true;

+						break;

+					}

+				}

+

+				// MSIE custom key handling

+				if (tinyMCE.isIE && tinyMCE.settings.custom_undo_redo) {

+					keys = [8, 46]; // Backspace,Delete

+

+					for (i=0; i<keys.length; i++) {

+						if (keys[i] == e.keyCode) {

+							if (e.type == "keyup")

+								tinyMCE.triggerNodeChange(false);

+						}

+					}

+				}

+

+				// If Ctrl key

+				if (e.keyCode == 17)

+					return true;

+

+				// Handle Undo/Redo when typing content

+

+				if (tinyMCE.isGecko) {

+					// Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)

+					if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))

+						tinyMCE.execCommand("mceStartTyping");

+				} else {

+					// IE seems to be working better with this setting

+					if (!posKey && e.type == "keyup")

+						tinyMCE.execCommand("mceStartTyping");

+				}

+

+				// Store undo bookmark

+				if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)

+					inst.undoBookmark = inst.selection.getBookmark();

+

+				// End typing (position key) or some Ctrl event

+				if (e.type == "keyup" && (posKey || e.ctrlKey))

+					tinyMCE.execCommand("mceEndTyping");

+

+				if (posKey && e.type == "keyup")

+					tinyMCE.triggerNodeChange(false);

+

+				if (tinyMCE.isIE && e.ctrlKey)

+					window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);

+			break;

+

+			case "mousedown":

+			case "mouseup":

+			case "click":

+			case "dblclick":

+			case "focus":

+				tinyMCE.hideMenus();

+

+				if (tinyMCE.selectedInstance) {

+					tinyMCE.selectedInstance.switchSettings();

+					tinyMCE.selectedInstance.isFocused = true;

+				}

+

+				// Check instance event trigged on

+				var targetBody = tinyMCE.getParentElement(e.target, "html");

+				for (var instanceName in tinyMCE.instances) {

+					if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))

+						continue;

+

+					inst = tinyMCE.instances[instanceName];

+

+					// Reset design mode if lost (on everything just in case)

+					inst.autoResetDesignMode();

+

+					// Use HTML element since users might click outside of body element

+					if (inst.getBody().parentNode == targetBody) {

+						inst.select();

+						tinyMCE.selectedElement = e.target;

+						tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");

+						tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");

+						break;

+					}

+				}

+

+				// Add first bookmark location

+				if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick"))

+					tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();

+

+				// Reset selected node

+				if (e.type != "focus")

+					tinyMCE.selectedNode = null;

+

+				tinyMCE.triggerNodeChange(false);

+				tinyMCE.execCommand("mceEndTyping");

+

+				if (e.type == "mouseup")

+					tinyMCE.execCommand("mceAddUndoLevel");

+

+				// Just in case

+				if (!tinyMCE.selectedInstance && e.target.editorId)

+					tinyMCE.instances[e.target.editorId].select();

+

+				return false;

+		}

+	},

+

+	getButtonHTML : function(id, lang, img, cmd, ui, val) {

+		var h = '', m, x, io = '';

+

+		cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';

+

+		if (typeof(ui) != "undefined" && ui != null)

+			cmd += ',' + ui;

+

+		if (typeof(val) != "undefined" && val != null)

+			cmd += ",'" + val + "'";

+

+		cmd += ');';

+

+		// Patch for IE7 bug with hover out not restoring correctly

+		if (tinyMCE.isRealIE)

+			io = 'onmouseover="tinyMCE.lastHover = this;"';

+

+		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled

+		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {

+			// Tiled button

+			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;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">';

+			h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" alt="{$'+lang+'}" title="{$' + lang + '}" />';

+			h += '</a>';

+		} else {

+			// Normal button

+			h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">';

+			h += '<img src="' + img + '" alt="{$'+lang+'}" title="{$' + lang + '}" />';

+			h += '</a>';

+		}

+

+		return h;

+	},

+

+	getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) {

+		var h = '', m, x;

+

+		mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');';

+		cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';

+

+		if (typeof(ui) != "undefined" && ui != null)

+			cmd += ',' + ui;

+

+		if (typeof(val) != "undefined" && val != null)

+			cmd += ",'" + val + "'";

+

+		cmd += ');';

+

+		// Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled

+		if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {

+			x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);

+

+			if (tinyMCE.isRealIE)

+				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';

+			else

+				h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';

+

+			h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';

+			h += '<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: ' + x + 'px 0" title="{$' + lang + '}" /></a>';

+			h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';

+			h += '</a></span>';

+		} else {

+			if (tinyMCE.isRealIE)

+				h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';

+			else

+				h += '<span id="{$editor_id}_' + id + '" dir="ltr" class="mceMenuButton">';

+

+			h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';

+			h += '<img src="' + img + '" title="{$' + lang + '}" /></a>';

+			h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';

+			h += '</a></span>';

+		}

+

+		return h;

+	},

+

+	_menuButtonEvent : function(e, o) {

+		if (o.className == 'mceMenuButtonFocus')

+			return;

+

+		if (e == 'over')

+			o.className = o.className + ' mceMenuHover';

+		else

+			o.className = o.className.replace(/\s.*$/, '');

+	},

+

+	addButtonMap : function(m) {

+		var i, a = m.replace(/\s+/, '').split(',');

+

+		for (i=0; i<a.length; i++)

+			this.buttonMap[a[i]] = i;

+	},

+

+	formSubmit : function(f, p) {

+		var n, inst, found = false;

+

+		if (f.form)

+			f = f.form;

+

+		// Is it a form that has a TinyMCE instance

+		if (tinyMCE.getParam('save_on_tinymce_forms')) {

+			for (n in tinyMCE.instances) {

+				inst = tinyMCE.instances[n];

+

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				if (inst.formElement) {

+					if (f == inst.formElement.form) {

+						found = true;

+						inst.isNotDirty = true;

+					}

+				}

+			}

+		} else

+			found  = true;

+

+		// Is valid

+		if (found) {

+			tinyMCE.removeTinyMCEFormElements(f);

+			tinyMCE.triggerSave();

+		}

+

+		// Is it patched

+		if (f.mceOldSubmit && p)

+			f.mceOldSubmit();

+	},

+

+	submitPatch : function() {

+		tinyMCE.formSubmit(this, true);

+	},

+

+	onLoad : function() {

+		var r, i, c, mode, trigger, elements, element, settings, elementId, elm;

+		var selector, deselector, elementRefAr, form;

+

+		// Wait for everything to be loaded first

+		if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {

+			window.setTimeout('tinyMCE.onLoad();', 1);

+			return;

+		}

+

+		if (tinyMCE.isRealIE && window.event.type == "readystatechange" && document.readyState != "complete")

+			return true;

+

+		if (tinyMCE.isLoaded)

+			return true;

+

+		tinyMCE.isLoaded = true;

+

+		// IE produces JS error if TinyMCE is placed in a frame

+		// It seems to have something to do with the selection not beeing

+		// correctly initialized in IE so this hack solves the problem

+		if (tinyMCE.isRealIE && document.body && window.location.href != window.top.location.href) {

+			r = document.body.createTextRange();

+			r.collapse(true);

+			r.select();

+		}

+

+		tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');

+

+		for (c=0; c<tinyMCE.configs.length; c++) {

+			tinyMCE.settings = tinyMCE.configs[c];

+

+			selector = tinyMCE.getParam("editor_selector");

+			deselector = tinyMCE.getParam("editor_deselector");

+			elementRefAr = [];

+

+			// Add submit triggers

+			if (document.forms && tinyMCE.settings.add_form_submit_trigger && !tinyMCE.submitTriggers) {

+				for (i=0; i<document.forms.length; i++) {

+					form = document.forms[i];

+

+					tinyMCE.addEvent(form, "submit", TinyMCE_Engine.prototype.handleEvent);

+					tinyMCE.addEvent(form, "reset", TinyMCE_Engine.prototype.handleEvent);

+					tinyMCE.submitTriggers = true; // Do it only once

+

+					// Patch the form.submit function

+					if (tinyMCE.settings.submit_patch) {

+						try {

+							form.mceOldSubmit = form.submit;

+							form.submit = TinyMCE_Engine.prototype.submitPatch;

+						} catch (e) {

+							// Do nothing

+						}

+					}

+				}

+			}

+

+			// Add editor instances based on mode

+			mode = tinyMCE.settings.mode;

+			switch (mode) {

+				case "exact":

+					elements = tinyMCE.getParam('elements', '', true, ',');

+

+					for (i=0; i<elements.length; i++) {

+						element = tinyMCE._getElementById(elements[i]);

+						trigger = element ? element.getAttribute(tinyMCE.settings.textarea_trigger) : "";

+

+						if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(element, "class")))

+							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]);

+					}

+				break;

+

+				case "specific_textareas":

+				case "textareas":

+					elements = document.getElementsByTagName("textarea");

+

+					for (i=0; i<elements.length; i++) {

+						elm = elements.item(i);

+						trigger = elm.getAttribute(tinyMCE.settings.textarea_trigger);

+

+						if (selector !== '' && !new RegExp('\\b' + selector + '\\b').test(tinyMCE.getAttrib(elm, "class")))

+							continue;

+

+						if (selector !== '')

+							trigger = selector !== '' ? "true" : "";

+

+						if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(elm, "class")))

+							continue;

+

+						if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))

+							elementRefAr[elementRefAr.length] = elm;

+					}

+				break;

+			}

+

+			for (i=0; i<elementRefAr.length; i++) {

+				element = elementRefAr[i];

+				elementId = element.name ? element.name : element.id;

+

+				if (tinyMCE.settings.ask || tinyMCE.settings.convert_on_click) {

+					// Focus breaks in Mozilla

+					if (tinyMCE.isGecko) {

+						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);});

+						// tinyMCE.addEvent(element, "mouseover", function (e) {window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);}, 10);});

+					} else {

+						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); });

+						// tinyMCE.addEvent(element, "mouseenter", function () { TinyMCE_Engine.prototype.confirmAdd(null, settings); });

+					}

+				} else

+					tinyMCE.addMCEControl(element, elementId);

+			}

+

+			// Handle auto focus

+			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();

+				}, 100);

+			}

+

+			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 i, outArray, value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];

+

+		// Fix bool values

+		if (value == "true" || value == "false")

+			return (value == "true");

+

+		if (strip_whitespace)

+			value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");

+

+		if (typeof(split_chr) != "undefined" && split_chr != null) {

+			value = value.split(split_chr);

+			outArray = [];

+

+			for (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.firstChild ? s : e.firstChild.nodeValue;

+	},

+

+	addToLang : function(prefix, ar) {

+		var k;

+

+		for (k in ar) {

+			if (typeof(ar[k]) == 'function')

+				continue;

+

+			tinyMCELang[(k.indexOf('lang_') == -1 ? 'lang_' : '') + (prefix !== '' ? (prefix + "_") : '') + k] = ar[k];

+		}

+

+		this.loadNextScript();

+	},

+

+	triggerNodeChange : function(focus, setup_content) {

+		var elm, inst, editorId, undoIndex = -1, undoLevels = -1, doc, anySelection = false, st;

+

+		if (tinyMCE.selectedInstance) {

+			inst = tinyMCE.selectedInstance;

+			elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();

+

+/*			if (elm == inst.lastTriggerEl)

+				return;

+

+			inst.lastTriggerEl = elm;*/

+

+			editorId = inst.editorId;

+			st = inst.selection.getSelectedText();

+

+			if (tinyMCE.settings.auto_resize)

+				inst.resizeToContent();

+

+			if (setup_content && tinyMCE.isGecko && inst.isHidden())

+				elm = inst.getBody();

+

+			inst.switchSettings();

+

+			if (tinyMCE.selectedElement)

+				anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (st && st.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, customCleanup;

+

+		// Call custom cleanup

+		customCleanup = tinyMCE.settings.cleanup_callback;

+		if (customCleanup != '')

+			content = tinyMCE.resolveDots(tinyMCE.settings.cleanup_callback, window)(type, content, inst);

+

+		// Trigger theme cleanup

+		po = tinyMCE.themes[tinyMCE.settings.theme];

+		if (po && po.cleanup)

+			content = po.cleanup(type, content, inst);

+

+		// Trigger plugin cleanups

+		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) {

+		var b = tinyMCE.baseURL + '/plugins/' + name;

+

+		if (this.plugins[name])

+			b = this.plugins[name].baseURL;

+

+		tinyMCE.loadScript(b + '/langs/' + tinyMCE.settings.language +  '.js');

+	},

+

+	applyTemplate : function(h, ag) {

+		return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}', 'gi'), function(m, s) {

+			if (s.indexOf('lang_') == 0 && tinyMCELang[s])

+				return tinyMCELang[s];

+

+			if (ag && ag[s])

+				return ag[s];

+

+			if (tinyMCE.settings[s])

+				return tinyMCE.settings[s];

+

+			if (m == 'themeurl')

+				return tinyMCE.themeURL;

+

+			return m;

+		});

+	},

+

+	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, name, win, modal, features;

+

+		args = !args ? {} : args;

+

+		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;

+

+		// Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!

+		if (tinyMCE.isIE)

+			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;

+

+		// Replace all args as variables in URL

+		for (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);

+

+			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.isRealIE) && resizable != 'yes' && tinyMCE.settings.dialog_type == "modal") {

+				height += 10;

+

+				features = "resizable:" + resizable + ";scroll:" + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:" + width + "px;dialogHeight:" + height + "px;";

+

+				window.showModalDialog(url, window, features);

+			} else {

+				modal = (resizable == "yes") ? "no" : "yes";

+

+				if (tinyMCE.isGecko && tinyMCE.isMac)

+					modal = "no";

+

+				if (template.close_previous != "no")

+					try {tinyMCE.lastWindow.close();} catch (ex) {}

+

+				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;

+

+				try {

+					win.resizeTo(width, height);

+				} catch(e) {

+					// Ignore

+				}

+

+				// Make it bigger if statusbar is forced

+				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 i, classNames, ar, className, aidClass = tinyMCE.settings.visual_table_class;

+

+		if (typeof(state) == "undefined")

+			state = tinyMCE.settings.visual;

+

+		// Split

+		classNames = [];

+		ar = class_name.split(' ');

+		for (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;

+

+		// Glue

+		className = "";

+		for (i=0; i<classNames.length; i++) {

+			if (i > 0)

+				className += " ";

+

+			className += classNames[i];

+		}

+

+		return className;

+	},

+

+	handleVisualAid : function(el, deep, state, inst, skip_dispatch) {

+		var i, x, y, tableElement, anchorName, oldW, oldH, bo, cn;

+

+		if (!el)

+			return;

+

+		if (!skip_dispatch)

+			tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst);

+

+		tableElement = null;

+

+		switch (el.nodeName) {

+			case "TABLE":

+				oldW = el.style.width;

+				oldH = el.style.height;

+				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 (y=0; y<el.rows.length; y++) {

+					for (x=0; x<el.rows[y].cells.length; x++) {

+						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":

+				anchorName = tinyMCE.getAttrib(el, "name");

+

+				if (anchorName !== '' && state) {

+					el.title = anchorName;

+					tinyMCE.addCSSClass(el, 'mceItemAnchor');

+				} else if (anchorName !== '' && !state)

+					el.className = '';

+

+				break;

+		}

+

+		if (deep && el.hasChildNodes()) {

+			for (i=0; i<el.childNodes.length; i++)

+				tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);

+		}

+	},

+

+	fixGeckoBaseHREFBug : function(m, e, h) {

+		var xsrc, xhref;

+

+		if (tinyMCE.isGecko) {

+			if (m == 1) {

+				h = h.replace(/\ssrc=/gi, " mce_tsrc=");

+				h = h.replace(/\shref=/gi, " mce_thref=");

+

+				return h;

+			} else {

+				// Why bother if there is no src or href broken

+				if (!new RegExp('(src|href)=', 'g').test(h))

+					return h;

+

+				// Restore src and href that gets messed up by Gecko

+				tinyMCE.selectElements(e, 'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK', function (n) {

+					xsrc = tinyMCE.getAttrib(n, "mce_tsrc");

+					xhref = tinyMCE.getAttrib(n, "mce_thref");

+

+					if (xsrc !== '') {

+						try {

+							n.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xsrc);

+						} catch (e) {

+							// Ignore, Firefox cast exception if local file wasn't found

+						}

+

+						n.removeAttribute("mce_tsrc");

+					}

+

+					if (xhref !== '') {

+						try {

+							n.href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, xhref);

+						} catch (e) {

+							// Ignore, Firefox cast exception if local file wasn't found

+						}

+

+						n.removeAttribute("mce_thref");

+					}

+

+					return false;

+				});

+

+				// Restore text/comment nodes

+				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) {

+		var i, html, paras, node;

+

+		// Force closed anchors open

+		//html_content = html_content.replace(new RegExp('<a(.*?)/>', 'gi'), '<a$1></a>');

+

+		html_content = tinyMCE.cleanupHTMLCode(html_content);

+

+		// Try innerHTML if it fails use pasteHTML in MSIE

+		try {

+			tinyMCE.setInnerHTML(doc.body, html_content);

+		} catch (e) {

+			if (this.isMSIE)

+				doc.body.createTextRange().pasteHTML(html_content);

+		}

+

+		// Content duplication bug fix

+		if (tinyMCE.isIE && tinyMCE.settings.fix_content_duplication) {

+			// Remove P elements in P elements

+			paras = doc.getElementsByTagName("P");

+			for (i=0; i<paras.length; i++) {

+				node = paras[i];

+

+				while ((node = node.parentNode) != null) {

+					if (node.nodeName == "P")

+						node.outerHTML = node.innerHTML;

+				}

+			}

+

+			// Content duplication bug fix (Seems to be word crap)

+			html = doc.body.innerHTML;

+

+			// Always set the htmlText output

+			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], n;

+

+		if (!inst) {

+			for (n in tinyMCE.instances) {

+				inst = tinyMCE.instances[n];

+

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				if (inst.formTargetElementId == editor_id)

+					return inst;

+			}

+		} else

+			return inst;

+

+		return null;

+	},

+

+	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 i, c, x, rule, styles, rules, csses, selectorText, inst = tinyMCE.getInstanceById(editor_id);

+		var cssClass, addClass, p;

+

+		if (!inst)

+			inst = tinyMCE.selectedInstance;

+

+		if (!inst)

+			return [];

+

+		if (!doc)

+			doc = inst.getDoc();

+

+		// Is cached, use that

+		if (inst && inst.cssClasses.length > 0)

+			return inst.cssClasses;

+

+		if (!doc)

+			return;

+

+		styles = doc.styleSheets;

+

+		if (styles && styles.length > 0) {

+			for (x=0; x<styles.length; x++) {

+				csses = null;

+

+				try {

+					csses = tinyMCE.isIE ? doc.styleSheets(x).rules : styles[x].cssRules;

+				} catch(e) {

+					// Just ignore any errors I know this is ugly!!

+				}

+	

+				if (!csses)

+					return [];

+

+				for (i=0; i<csses.length; i++) {

+					selectorText = csses[i].selectorText;

+

+					// Can be multiple rules per selector

+					if (selectorText) {

+						rules = selectorText.split(',');

+						for (c=0; c<rules.length; c++) {

+							rule = rules[c];

+

+							// Strip spaces between selectors

+							while (rule.indexOf(' ') == 0)

+								rule = rule.substring(1);

+

+							// Invalid rule

+							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;

+

+							// Is class rule

+							if (rule.indexOf('.') != -1) {

+								cssClass = rule.substring(rule.indexOf('.') + 1);

+								addClass = true;

+

+								for (p=0; p<inst.cssClasses.length && addClass; p++) {

+									if (inst.cssClasses[p] == cssClass)

+										addClass = false;

+								}

+

+								if (addClass)

+									inst.cssClasses[inst.cssClasses.length] = cssClass;

+							}

+						}

+					}

+				}

+			}

+		}

+

+		return inst.cssClasses;

+	},

+

+	regexpReplace : function(in_str, reg_exp, replace_str, opts) {

+		var re;

+

+		if (in_str == null)

+			return in_str;

+

+		if (typeof(opts) == "undefined")

+			opts = 'g';

+

+		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, ''); // Remove event blocker

+

+		return s;

+	},

+

+	getControlHTML : function(c) {

+		var i, l, n, o, v, rtl = tinyMCE.getLang('lang_dir') == 'rtl';

+

+		l = tinyMCE.plugins;

+		for (n in l) {

+			o = l[n];

+

+			if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {

+				if (rtl)

+					return '<span dir="rtl">' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + '</span>';

+

+				return tinyMCE.replaceVar(v, "pluginurl", o.baseURL);

+			}

+		}

+

+		o = tinyMCE.themes[tinyMCE.settings.theme];

+		if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') {

+			if (rtl)

+				return '<span dir="rtl">' + v + '</span>';

+

+			return v;

+		}

+

+		return '';

+	},

+

+	evalFunc : function(f, idx, a, o) {

+		o = !o ? window : o;

+		f = typeof(f) == 'function' ? f : o[f];

+

+		return f.apply(o, Array.prototype.slice.call(a, idx));

+	},

+

+	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(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(n, 3, a, o)) == s && m > 0)

+					return true;

+			}

+		}

+

+		l = tinyMCE.themes;

+		for (on in l) {

+			o = l[on];

+

+			if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)

+				return true;

+		}

+

+		return false;

+	},

+

+	resolveDots : function(s, o) {

+		var i;

+

+		if (typeof(s) == 'string') {

+			for (i=0, s=s.split('.'); i<s.length; i++)

+				o = o[s[i]];

+		} else

+			o = s;

+

+		return o;

+	},

+

+	xmlEncode : function(s) {

+		return s ? ('' + s).replace(this.xmlEncodeRe, function (c, b) {

+			switch (c) {

+				case '&':

+					return '&amp;';

+

+				case '"':

+					return '&quot;';

+

+				case '<':

+					return '&lt;';

+

+				case '>':

+					return '&gt;';

+			}

+

+			return c;

+		}) : s;

+	},

+

+	add : function(c, m) {

+		var n;

+

+		for (n in m) {

+			if (m.hasOwnProperty(n))

+				c.prototype[n] = m[n];

+		}

+	},

+

+	extend : function(p, np) {

+		var o = {}, n;

+

+		o.parent = p;

+

+		for (n in p) {

+			if (p.hasOwnProperty(n))

+				o[n] = p[n];

+		}

+

+		for (n in np) {

+			if (np.hasOwnProperty(n))

+				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;

+		}

+	}

+

+	};

+

+// Global instances

+var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors

+var tinyMCE = new TinyMCE_Engine();

+var tinyMCELang = {};

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */

+

+function TinyMCE_Control(settings) {

+	var t, i, tos, fu, p, x, fn, fu, pn, s = settings;

+

+	this.undoRedoLevel = true;

+	this.isTinyMCE_Control = true;

+

+	// Default settings

+	this.enabled = 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 = [];

+	this.hasMouseMoved = false;

+	this.foreColor = this.backColor = "#999999";

+	this.data = {};

+	this.cssClasses = [];

+

+	this.cleanup.init({

+		valid_elements : s.valid_elements,

+		extended_valid_elements : s.extended_valid_elements,

+		valid_child_elements : s.valid_child_elements,

+		entities : s.entities,

+		entity_encoding : s.entity_encoding,

+		debug : s.cleanup_debug,

+		indent : s.apply_source_formatting,

+		invalid_elements : s.invalid_elements,

+		verify_html : s.verify_html,

+		fix_content_duplication : s.fix_content_duplication,

+		convert_fonts_to_spans : s.convert_fonts_to_spans

+	});

+

+	// Wrap old theme

+	t = this.settings.theme;

+	if (!tinyMCE.hasTheme(t)) {

+		fn = tinyMCE.callbacks;

+		tos = {};

+

+		for (i=0; i<fn.length; i++) {

+			if ((fu = window['TinyMCE_' + t + "_" + fn[i]]))

+				tos[fn[i]] = fu;

+		}

+

+		tinyMCE.addTheme(t, tos);

+	}

+

+	// Wrap old plugins

+	this.plugins = [];

+	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;

+				tos = {};

+

+				for (x=0; x<fn.length; x++) {

+					if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))

+						tos[fn[x]] = fu;

+				}

+

+				tinyMCE.addPlugin(pn, tos);

+			}

+

+			this.plugins[this.plugins.length] = pn; 

+		}

+	}

+};

+

+TinyMCE_Control.prototype = {

+	selection : null,

+

+	settings : null,

+

+	cleanup : null,

+

+	getData : function(na) {

+		var o = this.data[na];

+

+		if (!o)

+			o = this.data[na] = {};

+

+		return o;

+	},

+

+	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() {

+		var s, b, ex;

+

+		if (tinyMCE.isRealIE)

+			return;

+

+		try {

+			s = this.selection;

+			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) {

+			// Ignore

+		}

+	},

+

+	switchSettings : function() {

+		if (tinyMCE.configs.length > 1 && tinyMCE.currentConfig != this.settings.index) {

+			tinyMCE.settings = this.settings;

+			tinyMCE.currentConfig = this.settings.index;

+		}

+	},

+

+	select : function() {

+		var oldInst = tinyMCE.selectedInstance;

+

+		if (oldInst != this) {

+			if (oldInst)

+				oldInst.execCommand('mceEndTyping');

+

+			tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst);

+			tinyMCE.selectedInstance = this;

+		}

+	},

+

+	getBody : function() {

+		return this.contentBody ? this.contentBody : this.getDoc().body;

+	},

+

+	getDoc : function() {

+//		return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ?

+		return this.contentWindow.document;

+	},

+

+	getWin : function() {

+		return this.contentWindow;

+	},

+

+	getContainerWin : function() {

+		return this.containerWindow ? this.containerWindow : window;

+	},

+

+	getViewPort : function() {

+		return tinyMCE.getViewPort(this.getWin());

+	},

+

+	getParentNode : function(n, f) {

+		return tinyMCE.getParentNode(n, f, this.getBody());

+	},

+

+	getParentElement : function(n, na, f) {

+		return tinyMCE.getParentElement(n, na, f, this.getBody());

+	},

+

+	getParentBlockElement : function(n) {

+		return tinyMCE.getParentBlockElement(n, this.getBody());

+	},

+

+	resizeToContent : function() {

+		var d = this.getDoc(), b = d.body, de = d.documentElement;

+

+		this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px';

+	},

+

+	addShortcut : function(m, k, d, cmd, ui, va) {

+		var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, 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, o;

+

+		// Normal key press, then ignore it

+		if (!e.altKey && !e.ctrlKey)

+			return false;

+

+		s = this.shortcuts;

+

+		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() {

+		// Add fix for tab/style.display none/block problems in Gecko

+		if (!tinyMCE.isIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))

+			eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}');

+	},

+

+	isHidden : function() {

+		var s;

+

+		if (tinyMCE.isIE)

+			return false;

+

+		s = this.getSel();

+

+		// Weird, wheres that cursor selection?

+		return (!s || !s.rangeCount || s.rangeCount == 0);

+	},

+

+	isDirty : function() {

+		// Is content modified and not in a submit procedure

+		return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML) && !this.isNotDirty;

+	},

+

+	_mergeElements : function(scmd, pa, ch, override) {

+		var st, stc, className, n;

+

+		if (scmd == "removeformat") {

+			pa.className = "";

+			pa.style.cssText = "";

+			ch.className = "";

+			ch.style.cssText = "";

+			return;

+		}

+

+		st = tinyMCE.parseStyle(tinyMCE.getAttrib(pa, "style"));

+		stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style"));

+		className = tinyMCE.getAttrib(pa, "class");

+

+		// Removed class adding due to bug #1478272

+		className = tinyMCE.getAttrib(ch, "class");

+

+		if (override) {

+			for (n in st) {

+				if (typeof(st[n]) == 'function')

+					continue;

+

+				stc[n] = st[n];

+			}

+		} else {

+			for (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");

+	},

+

+	_fixRootBlocks : function() {

+		var rb, b, ne, be, nx, bm;

+

+		rb = tinyMCE.getParam('forced_root_block');

+		if (!rb)

+			return;

+

+		b = this.getBody();

+		ne = b.firstChild;

+

+		while (ne) {

+			nx = ne.nextSibling;

+

+			// If text node or inline element wrap it in a block element

+			if ((ne.nodeType == 3 && ne.nodeValue.replace(/\s+/g, '') != '') || (ne.nodeType == 1 && !tinyMCE.blockRegExp.test(ne.nodeName))) {

+				if (!bm)

+					bm = this.selection.getBookmark();

+

+				if (!be) {

+					be = this.getDoc().createElement(rb);

+					be.appendChild(ne.cloneNode(true));

+					b.replaceChild(be, ne);

+				} else {

+					be.appendChild(ne.cloneNode(true));

+					b.removeChild(ne);

+				}

+			} else

+				be = null;

+

+			ne = nx;

+		}

+

+		if (bm)

+			this.selection.moveToBookmark(bm);

+	},

+

+	_fixTrailingNbsp : function() {

+		var s = this.selection, e = s.getFocusElement(), bm, v;

+

+		if (e && tinyMCE.blockRegExp.test(e.nodeName) && e.firstChild) {

+			v = e.firstChild.nodeValue;

+

+			if (v && v.length > 1 && /(^\u00a0|\u00a0$)/.test(v)) {

+				e.firstChild.nodeValue = v.replace(/(^\u00a0|\u00a0$)/, '');

+				s.selectNode(e.firstChild, true, false, false); // Select and collapse

+			}

+		}

+	},

+

+	_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 i, x, z, align, img, div, doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();

+

+		// Is not a undo specific command

+		if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command))

+			this.undoBookmark = null;

+

+		// Mozilla issue

+		if (!tinyMCE.isIE && !this.useCSS) {

+			this._setUseCSS(false);

+			this.useCSS = true;

+		}

+

+		//debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value);

+		this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks

+

+		// Don't dispatch key commands

+		if (!/mceStartTyping|mceEndTyping/.test(command)) {

+			if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value))

+				return;

+		}

+

+		// Fix align on images

+		if (focusElm && focusElm.nodeName == "IMG") {

+			align = focusElm.getAttribute('align');

+			img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm;

+

+			switch (command) {

+				case "JustifyLeft":

+					if (align == 'left') {

+						img.setAttribute('align', ''); // Needed for IE

+						img.removeAttribute('align');

+					} else

+						img.setAttribute('align', 'left');

+

+					// Remove the div

+					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.setAttribute('align', ''); // Needed for IE

+					img.removeAttribute('align');

+

+					// Is centered

+					div = tinyMCE.getParentElement(focusElm, "div");

+					if (div && div.style.textAlign == "center") {

+						// Remove div

+						if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode)

+							div.parentNode.replaceChild(img, div);

+					} else {

+						// Add div

+						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.setAttribute('align', ''); // Needed for IE

+						img.removeAttribute('align');

+					} else

+						img.setAttribute('align', 'right');

+

+					// Remove the div

+					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 "JustifyLeft":

+			case "JustifyCenter":

+			case "JustifyFull":

+			case "JustifyRight":

+				var el = tinyMCE.getParentNode(focusElm, function(n) {return tinyMCE.getAttrib(n, 'align');});

+

+				if (el) {

+					el.setAttribute('align', ''); // Needed for IE

+					el.removeAttribute('align');

+				} else

+					this.getDoc().execCommand(command, user_interface, value);

+

+				tinyMCE.triggerNodeChange();

+

+				return true;

+

+			case "unlink":

+				// Unlink if caret is inside link

+				if (tinyMCE.isGecko && this.getSel().isCollapsed) {

+					focusElm = tinyMCE.getParentElement(focusElm, 'A');

+

+					if (focusElm)

+						this.selection.selectNode(focusElm, false);

+				}

+

+				this.getDoc().execCommand(command, user_interface, value);

+

+				tinyMCE.isGecko && this.getSel().collapseToEnd();

+

+				tinyMCE.triggerNodeChange();

+

+				return true;

+

+			case "InsertUnorderedList":

+			case "InsertOrderedList":

+				this.getDoc().execCommand(command, user_interface, value);

+				tinyMCE.triggerNodeChange();

+				break;

+

+			case "Strikethrough":

+				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 (!this.cleanup.isValid(value))

+						return true;

+

+					if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value))

+						value = value.replace(/[^a-z]/gi, '');

+

+					if (tinyMCE.isIE && 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.isIE) {

+					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 (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 "mceSetStyleInfo":

+			case "SetStyleInfo":

+				var rng = this.getRng();

+				var sel = this.getSel();

+				var scmd = value.command;

+				var sname = value.name;

+				var svalue = value.value == null ? '' : value.value;

+				//var svalue = value['value'] == null ? '' : value['value'];

+				var wrapper = value.wrapper ? value.wrapper : "span";

+				var parentElm = null;

+				var invalidRe = new RegExp("^BODY|HTML$", "g");

+				var invalidParentsRe = tinyMCE.settings.merge_styles_invalid_parents !== '' ? new RegExp(tinyMCE.settings.merge_styles_invalid_parents, "gi") : null;

+

+				// Whole element selected check

+				if (tinyMCE.isIE) {

+					// Control range

+					if (rng.item)

+						parentElm = rng.item(0);

+					else {

+						var pelm = rng.parentElement();

+						var prng = doc.selection.createRange();

+						prng.moveToElementText(pelm);

+

+						if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) {

+							if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName))

+								parentElm = pelm;

+						}

+					}

+				} else {

+					var felm = this.getFocusElement();

+					if (sel.isCollapsed || (new RegExp('td|tr|tbody|table|img', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode))

+						parentElm = felm;

+				}

+

+				// Whole element selected

+				if (parentElm && !invalidRe.test(parentElm.nodeName)) {

+					if (scmd == "setstyle")

+						tinyMCE.setStyleAttrib(parentElm, sname, svalue);

+

+					if (scmd == "setattrib")

+						tinyMCE.setAttrib(parentElm, sname, svalue);

+

+					if (scmd == "removeformat") {

+						parentElm.style.cssText = '';

+						tinyMCE.setAttrib(parentElm, 'class', '');

+					}

+

+					// Remove style/attribs from all children

+					var ch = tinyMCE.getNodeTree(parentElm, [], 1);

+					for (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); // Bug in FF when running in fullscreen

+					doc.execCommand("FontName", false, "#mce_temp_font#");

+					var elementArray = tinyMCE.getElementsByAttributeValue(this.getBody(), "font", "face", "#mce_temp_font#");

+

+					// Change them all

+					for (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 (i=0; i<elm.childNodes.length; i++)

+									spanElm.appendChild(elm.childNodes[i].cloneNode(true));

+							}

+

+							spanElm.setAttribute("mce_new", "true");

+							elm.parentNode.replaceChild(spanElm, elm);

+

+							// Remove style/attribs from all children

+							var ch = tinyMCE.getNodeTree(spanElm, [], 1);

+							for (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', '');

+								}

+							}

+						}

+					}

+				}

+

+				// Cleaup wrappers

+				var nodes = doc.getElementsByTagName(wrapper);

+				for (i=nodes.length-1; i>=0; i--) {

+					var elm = nodes[i];

+					var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true";

+

+					elm.removeAttribute("mce_new");

+

+					// Is only child a element

+					if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) {

+						//tinyMCE.debug("merge1" + isNew);

+						this._mergeElements(scmd, elm, elm.childNodes[0], isNew);

+						continue;

+					}

+

+					// Is I the only child

+					if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) {

+						//tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName);

+						if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName))

+							this._mergeElements(scmd, elm.parentNode, elm, false);

+					}

+				}

+

+				// Remove empty wrappers

+				var nodes = doc.getElementsByTagName(wrapper);

+				for (i=nodes.length-1; i>=0; i--) {

+					var elm = nodes[i], isEmpty = true;

+

+					// Check if it has any attribs

+					var tmp = doc.createElement("body");

+					tmp.appendChild(elm.cloneNode(false));

+

+					// Is empty span, remove it

+					tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), '');

+					//tinyMCE.debug(tmp.innerHTML);

+					if (new RegExp('<span>', 'gi').test(tmp.innerHTML)) {

+						for (x=0; x<elm.childNodes.length; x++) {

+							if (elm.parentNode != null)

+								elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true), elm);

+						}

+

+						elm.parentNode.removeChild(elm);

+					}

+				}

+

+				// Re add the visual aids

+				if (scmd == "removeformat")

+					tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);

+

+				tinyMCE.triggerNodeChange();

+

+				break;

+

+			case "FontName":

+				if (value == null) {

+					var s = this.getSel();

+

+					// Find font and select it

+					if (tinyMCE.isGecko && s.isCollapsed) {

+						var f = tinyMCE.getParentElement(this.getFocusElement(), "font");

+

+						if (f != null)

+							this.selection.selectNode(f, false);

+					}

+

+					// Remove format

+					this.getDoc().execCommand("RemoveFormat", false, null);

+

+					// Collapse range if font was found

+					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":

+				value = value == null ? this.foreColor : value;

+				value = tinyMCE.trim(value);

+				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;

+

+				this.foreColor = value;

+				this.getDoc().execCommand('forecolor', false, value);

+				break;

+

+			case "HiliteColor":

+				value = value == null ? this.backColor : value;

+				value = tinyMCE.trim(value);

+				value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;

+				this.backColor = value;

+

+				if (tinyMCE.isGecko || tinyMCE.isOpera) {

+					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;

+

+				// Try executing command

+				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.');

+

+				// Alert error in gecko if command failed

+				if (tinyMCE.isGecko && cmdFailed) {

+					// Confirm more info

+					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 = "";

+

+				// Call custom cleanup code

+				value = tinyMCE.storeAwayURLs(value);

+				value = tinyMCE._customCleanup(this, "insert_to_editor", value);

+

+				if (this.getBody().nodeName == 'BODY')

+					tinyMCE._setHTML(doc, value);

+				else

+					this.getBody().innerHTML = value;

+

+				tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings, this.getBody(), false, false, false, true));

+				tinyMCE.convertAllRelativeURLs(this.getBody());

+

+				// Cleanup any mess left from storyAwayURLs

+				tinyMCE._removeInternal(this.getBody());

+

+				// When editing always use fonts internaly

+				if (tinyMCE.getParam("convert_fonts_to_spans"))

+					tinyMCE.convertSpansToFonts(doc);

+

+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);

+				tinyMCE._setEventsEnabled(this.getBody(), false);

+				this._addBogusBR();

+

+				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);

+

+				// When editing always use fonts internaly

+				if (tinyMCE.getParam("convert_fonts_to_spans"))

+					tinyMCE.convertSpansToFonts(doc);

+

+				tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);

+				tinyMCE._setEventsEnabled(this.getBody(), false);

+				this._addBogusBR();

+				this.repaint();

+				this.selection.moveToBookmark(b);

+				tinyMCE.triggerNodeChange();

+			break;

+

+			case "mceReplaceContent":

+				// Force empty string

+				if (!value)

+					value = '';

+

+				this.getWin().focus();

+

+				var selectedText = "";

+

+				if (tinyMCE.isIE) {

+					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);

+				}

+

+				this._addBogusBR();

+				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("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value});

+			break;

+

+			case "mceInsertRawHTML":

+				var key = 'tiny_mce_marker';

+

+				this.execCommand('mceBeginUndoLevel');

+

+				// Insert marker key

+				this.execCommand('mceInsertContent', false, key);

+

+				// Store away scroll pos

+				var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft;

+				var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop;

+

+				// Find marker and replace with RAW HTML

+				var html = this.getBody().innerHTML;

+				if ((pos = html.indexOf(key)) != -1)

+					tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length));

+

+				// Restore scoll pos

+				this.contentWindow.scrollTo(scrollX, scrollY);

+

+				this.execCommand('mceEndUndoLevel');

+

+				break;

+

+			case "mceInsertContent":

+				// Force empty string

+				if (!value)

+					value = '';

+

+				var insertHTMLFailed = false;

+

+				// Removed since it produced problems in IE

+				// this.getWin().focus();

+

+				if (tinyMCE.isGecko || tinyMCE.isOpera) {

+					try {

+						// Is plain text or HTML, &amp;, &nbsp; etc will be encoded wrong in FF

+						if (value.indexOf('<') == -1 && !value.match(/(&#38;|&#160;|&#60;|&#62;)/g)) {

+							var r = this.getRng();

+							var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value));

+							var s = this.getSel();

+							var r2 = r.cloneRange();

+

+							// Insert text at cursor position

+							s.removeAllRanges();

+							r.deleteContents();

+							r.insertNode(n);

+

+							// Move the cursor to the end of text

+							r2.selectNode(n);

+							r2.collapse(false);

+							s.removeAllRanges();

+							s.addRange(r2);

+						} else {

+							value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value);

+							this.getDoc().execCommand('inserthtml', false, value);

+							tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);

+						}

+					} catch (ex) {

+						insertHTMLFailed = true;

+					}

+

+					if (!insertHTMLFailed) {

+						tinyMCE.triggerNodeChange();

+						return;

+					}

+				}

+

+				if (!tinyMCE.isIE) {

+					var isHTML = value.indexOf('<') != -1;

+					var sel = this.getSel();

+					var rng = this.getRng();

+

+					if (isHTML) {

+						if (tinyMCE.isSafari) {

+							var tmpRng = this.getDoc().createRange();

+

+							tmpRng.setStart(this.getBody(), 0);

+							tmpRng.setEnd(this.getBody(), 0);

+

+							value = tmpRng.createContextualFragment(value);

+						} else

+							value = rng.createContextualFragment(value);

+					} else {

+						// Setup text node

+						value = doc.createTextNode(tinyMCE.entityDecode(value));

+					}

+

+					// Insert plain text in Safari

+					if (tinyMCE.isSafari && !isHTML) {

+						this.execCommand('InsertText', false, value.nodeValue);

+						tinyMCE.triggerNodeChange();

+						return true;

+					} else if (tinyMCE.isSafari && isHTML) {

+						rng.deleteContents();

+						rng.insertNode(value);

+						tinyMCE.triggerNodeChange();

+						return true;

+					}

+

+					rng.deleteContents();

+

+					// If target node is text do special treatment, (Mozilla 1.3 fix)

+					if (rng.startContainer.nodeType == 3) {

+						var node = rng.startContainer.splitText(rng.startOffset);

+						node.parentNode.insertBefore(value, node); 

+					} else

+						rng.insertNode(value);

+

+					if (!isHTML) {

+						// Removes weird selection trails

+						sel.selectAllChildren(doc.body);

+						sel.removeAllRanges();

+

+						// Move cursor to end of content

+						var rng = doc.createRange();

+

+						rng.selectNode(value);

+						rng.collapse(false);

+

+						sel.addRange(rng);

+					} else

+						rng.collapse(false);

+

+					tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);

+				} else {

+					var rng = doc.selection.createRange(), tmpRng = null;

+					var c = value.indexOf('<!--') != -1;

+

+					// Fix comment bug, add tag before comments

+					if (c)

+						value = tinyMCE.uniqueTag + value;

+

+					//	tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)

+

+					if (rng.item)

+						rng.item(0).outerHTML = value;

+					else

+						rng.pasteHTML(value);

+

+					//if (tmpRng)

+					//	tmpRng.select(); // Restore range  (Fixes Undo bookmark bug in IE)

+

+					// Remove unique tag

+					if (c) {

+						var e = this.getDoc().getElementById('mceTMPElement');

+						e.parentNode.removeChild(e);

+					}

+				}

+

+				tinyMCE.execCommand("mceAddUndoLevel");

+				tinyMCE.triggerNodeChange();

+			break;

+

+			case "mceStartTyping":

+				if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex == -1) {

+					this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;

+					tinyMCE.typingUndoIndex = tinyMCE.undoIndex;

+					this.execCommand('mceAddUndoLevel');

+				}

+				break;

+

+			case "mceEndTyping":

+				if (tinyMCE.settings.custom_undo_redo && this.undoRedo.typingUndoIndex != -1) {

+					this.execCommand('mceAddUndoLevel');

+					this.undoRedo.typingUndoIndex = -1;

+				}

+

+				tinyMCE.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.isIE) {

+					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":

+			case "removeformat":

+				var text = this.selection.getSelectedText();

+

+				if (tinyMCE.isOpera) {

+					this.getDoc().execCommand("RemoveFormat", false, null);

+					return;

+				}

+

+				if (tinyMCE.isIE) {

+					try {

+						var rng = doc.selection.createRange();

+						rng.execCommand("RemoveFormat", false, null);

+					} catch (e) {

+						// Do nothing

+					}

+

+					this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});

+				} else {

+					this.getDoc().execCommand(command, user_interface, value);

+

+					this.execCommand("mceSetStyleInfo", false, {command : "removeformat"});

+				}

+

+				// Remove class

+				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();

+		}

+

+		// Add undo level after modification

+		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);

+	},

+

+	_addBogusBR : function() {

+		var b = this.getBody();

+

+		if (tinyMCE.isGecko && !b.hasChildNodes())

+			b.innerHTML = '<br _moz_editor_bogus_node="TRUE" />';

+	},

+

+	_onAdd : function(replace_element, form_element_name, target_document) {

+		var hc, th, tos, editorTemplate, targetDoc, deltaWidth, deltaHeight, html, rng, fragment;

+		var dynamicIFrame, tElm, doc, parentElm;

+

+		th = this.settings.theme;

+		tos = tinyMCE.themes[th];

+

+		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 (tos.getEditorTemplate)

+			editorTemplate = tos.getEditorTemplate(this.settings, this.editorId);

+

+		deltaWidth = editorTemplate.delta_width ? editorTemplate.delta_width : 0;

+		deltaHeight = editorTemplate.delta_height ? editorTemplate.delta_height : 0;

+		html = '<span id="' + this.editorId + '_parent" class="mceEditorContainer">' + editorTemplate.html;

+

+		html = tinyMCE.replaceVar(html, "editor_id", this.editorId);

+

+		if (!this.settings.default_document)

+			this.settings.default_document = tinyMCE.baseURL + "/blank.htm";

+

+		this.settings.old_width = this.settings.width;

+		this.settings.old_height = this.settings.height;

+

+		// Set default width, height

+		if (this.settings.width == -1)

+			this.settings.width = replace_element.offsetWidth;

+

+		if (this.settings.height == -1)

+			this.settings.height = replace_element.offsetHeight;

+

+		// Try the style width

+		if (this.settings.width == 0)

+			this.settings.width = replace_element.style.width;

+

+		// Try the style height

+		if (this.settings.height == 0)

+			this.settings.height = replace_element.style.height; 

+

+		// If no width/height then default to 320x240, better than nothing

+		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;

+		this.settings.width_style = "" + this.settings.width;

+		this.settings.height_style = "" + this.settings.height;

+

+		// Special % handling

+		if (("" + this.settings.width).indexOf('%') != -1)

+			this.settings.area_width = "100%";

+		else

+			this.settings.width_style += 'px';

+

+		if (("" + this.settings.height).indexOf('%') != -1)

+			this.settings.area_height = "100%";

+		else

+			this.settings.height_style += 'px';

+

+		if (("" + replace_element.style.width).indexOf('%') != -1) {

+			this.settings.width = replace_element.style.width;

+			this.settings.area_width = "100%";

+			this.settings.width_style = "100%";

+		}

+

+		if (("" + replace_element.style.height).indexOf('%') != -1) {

+			this.settings.height = replace_element.style.height;

+			this.settings.area_height = "100%";

+			this.settings.height_style = "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;

+

+		// Get replace_element contents

+		if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName == "INPUT")

+			this.startContent = replace_element.value;

+		else

+			this.startContent = replace_element.innerHTML;

+

+		// If not text area or input

+		if (replace_element.nodeName != "TEXTAREA" && replace_element.nodeName != "INPUT") {

+			this.oldTargetElement = replace_element;

+

+			// Debug mode

+			hc = '<input type="hidden" id="' + form_element_name + '" name="' + form_element_name + '" />';

+			this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');

+			this.oldTargetElement.style.display = "none";

+

+			html += '</span>';

+

+			if (tinyMCE.isGecko)

+				html = hc + html;

+			else

+				html += hc;

+

+			// Output HTML and set editable

+			if (tinyMCE.isGecko) {

+				rng = replace_element.ownerDocument.createRange();

+				rng.setStartBefore(replace_element);

+

+				fragment = rng.createContextualFragment(html);

+				tinyMCE.insertAfter(fragment, replace_element);

+			} else

+				replace_element.insertAdjacentHTML("beforeBegin", html);

+		} else {

+			html += '</span>';

+

+			// Just hide the textarea element

+			this.oldTargetElement = replace_element;

+

+			this.oldTargetDisplay = tinyMCE.getStyle(this.oldTargetElement, 'display', 'inline');

+			this.oldTargetElement.style.display = "none";

+

+			// Output HTML and set editable

+			if (tinyMCE.isGecko) {

+				rng = replace_element.ownerDocument.createRange();

+				rng.setStartBefore(replace_element);

+

+				fragment = rng.createContextualFragment(html);

+				tinyMCE.insertAfter(fragment, replace_element);

+			} else

+				replace_element.insertAdjacentHTML("beforeBegin", html);

+		}

+

+		// Setup iframe

+		dynamicIFrame = false;

+		tElm = targetDoc.getElementById(this.editorId);

+

+		if (!tinyMCE.isIE) {

+			// Node case is preserved in XML strict mode

+			if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName == "span")) {

+				tElm = tinyMCE._createIFrame(tElm, targetDoc);

+				dynamicIFrame = true;

+			}

+

+			this.targetElement = tElm;

+			this.iframeElement = tElm;

+			this.contentDocument = tElm.contentDocument;

+			this.contentWindow = tElm.contentWindow;

+

+			//this.getDoc().designMode = "on";

+		} 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";

+		}

+

+		// Setup base HTML

+		doc = this.contentDocument;

+		if (dynamicIFrame) {

+			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) {

+				// Failed Mozilla 1.3

+				this.getDoc().location.href = tinyMCE.baseURL + "/blank.htm";

+			}

+		}

+

+		// This timeout is needed in MSIE 5.5 for some odd reason

+		// it seems that the document.frames isn't initialized yet?

+		if (tinyMCE.isIE)

+			window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" + this.editorId + "\"]);", 1);

+

+		// Setup element references

+		parentElm = this.targetDoc.getElementById(this.editorId + '_parent');

+		this.formElement = tinyMCE.isGecko ? parentElm.previousSibling : parentElm.nextSibling;

+

+		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);

+		}

+	},

+

+	getHTML : function(r) {

+		var h, d = this.getDoc(), b = this.getBody();

+

+		if (r)

+			return b.innerHTML;

+

+		h = tinyMCE._cleanupHTML(this, d, this.settings, b, false, true, false, true);

+

+		if (tinyMCE.getParam("convert_fonts_to_spans"))

+			tinyMCE.convertSpansToFonts(d);

+

+		return h;

+	},

+

+	setHTML : function(h) {

+		this.execCommand('mceSetContent', false, h);

+		this.repaint();

+	},

+

+	getFocusElement : function() {

+		return this.selection.getFocusElement();

+	},

+

+	getSel : function() {

+		return this.selection.getSel();

+	},

+

+	getRng : function() {

+		return this.selection.getRng();

+	},

+

+	triggerSave : function(skip_cleanup, skip_callback) {

+		var e, nl = [], i, s, content, htm;

+

+		if (!this.enabled)

+			return;

+

+		this.switchSettings();

+		s = tinyMCE.settings;

+

+		// Force hidden tabs visible while serializing

+		if (tinyMCE.isRealIE) {

+			e = this.iframeElement;

+

+			do {

+				if (e.style && e.style.display == 'none') {

+					e.style.display = 'block';

+					nl[nl.length] = {elm : e, type : 'style'};

+				}

+

+				if (e.style && s.hidden_tab_class.length > 0 && e.className.indexOf(s.hidden_tab_class) != -1) {

+					e.className = s.display_tab_class;

+					nl[nl.length] = {elm : e, type : 'class'};

+				}

+			} while ((e = e.parentNode) != null)

+		}

+

+		tinyMCE.settings.preformatted = false;

+

+		// Default to false

+		if (typeof(skip_cleanup) == "undefined")

+			skip_cleanup = false;

+

+		// Default to false

+		if (typeof(skip_callback) == "undefined")

+			skip_callback = false;

+

+		tinyMCE._setHTML(this.getDoc(), this.getBody().innerHTML);

+

+		// Remove visual aids when cleanup is disabled

+		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);

+		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 !== '')

+			content = tinyMCE.resolveDots(tinyMCE.settings.save_callback, window)(this.formTargetElementId,htm,this.getBody());

+

+		// Use callback content if available

+		if ((typeof(content) != "undefined") && content != null)

+			htm = content;

+

+		// Replace some weird entities (Bug: #1056343)

+		htm = tinyMCE.regexpReplace(htm, "&#40;", "(", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#41;", ")", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#59;", ";", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#34;", "&quot;", "gi");

+		htm = tinyMCE.regexpReplace(htm, "&#94;", "^", "gi");

+

+		if (this.formElement)

+			this.formElement.value = htm;

+

+		if (tinyMCE.isSafari && this.formElement)

+			this.formElement.innerText = htm;

+

+		// Hide them again (tabs in MSIE)

+		for (i=0; i<nl.length; i++) {

+			if (nl[i].type == 'style')

+				nl[i].elm.style.display = 'none';

+			else

+				nl[i].elm.className = s.hidden_tab_class;

+		}

+	}

+

+	};

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js */

+

+tinyMCE.add(TinyMCE_Engine, {

+	cleanupHTMLCode : function(s) {

+		s = s.replace(new RegExp('<p \\/>', 'gi'), '<p>&nbsp;</p>');

+		s = s.replace(new RegExp('<p>\\s*<\\/p>', 'gi'), '<p>&nbsp;</p>');

+

+		// Fix close BR elements

+		s = s.replace(new RegExp('<br>\\s*<\\/br>', 'gi'), '<br />');

+

+		// Open closed tags like <b/> to <b></b>

+		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>');

+

+		// Remove trailing space <b > to <b>

+		s = s.replace(new RegExp('\\s+></', 'gi'), '></');

+

+		// Close tags <img></img> to <img/>

+		s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>', 'gi'), '<$1$2 />');

+

+		// Weird MSIE bug, <p><hr /></p> breaks runtime?

+		if (tinyMCE.isIE)

+			s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'), "<hr>");

+

+		// Weird tags will make IE error #bug: 1538495

+		if (tinyMCE.isIE)

+			s = s.replace(/<!(\s*)\/>/g, '');

+

+		// Convert relative anchors to absolute URLs ex: #something to file.htm#something

+		// Removed: Since local document anchors should never be forced absolute example edit.php?id=something

+		//if (tinyMCE.getParam('convert_urls'))

+		//	s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings.document_base_url + "#");

+

+		return s;

+	},

+

+	parseStyle : function(str) {

+		var ar = [], st, i, re, pa;

+

+		if (str == null)

+			return ar;

+

+		st = str.split(';');

+

+		tinyMCE.clearArray(ar);

+

+		for (i=0; i<st.length; i++) {

+			if (st[i] == '')

+				continue;

+

+			re = new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');

+			pa = st[i].replace(re, '$1||$2').split('||');

+	//tinyMCE.debug(str, pa[0] + "=" + pa[1], st[i].replace(re, '$1||$2'));

+			if (pa.length == 2)

+				ar[pa[0].toLowerCase()] = pa[1];

+		}

+

+		return ar;

+	},

+

+	compressStyle : function(ar, pr, sf, res) {

+		var box = [], i, a;

+

+		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 (i=0; i<box.length; i++) {

+			if (box[i] == null)

+				return;

+

+			if (i && box[i] != box[i-1])

+				return;

+		}

+

+		// They are all the same

+		ar[res] = box[0];

+		ar[pr + '-top' + sf] = null;

+		ar[pr + '-left' + sf] = null;

+		ar[pr + '-right' + sf] = null;

+		ar[pr + '-bottom' + sf] = null;

+	},

+

+	serializeStyle : function(ar) {

+		var str = "", key, val, m;

+

+		// Compress box

+		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 (key in ar) {

+			val = ar[key];

+

+			if (typeof(val) == 'function')

+				continue;

+

+			if (key.indexOf('mso-') == 0)

+				continue;

+

+			if (val != null && val !== '') {

+				val = '' + val; // Force string

+

+				// Fix style URL

+				val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)", 'gi'), "url('$1')");

+

+				// Convert URL

+				if (val.indexOf('url(') != -1 && tinyMCE.getParam('convert_urls')) {

+					m = new RegExp("url\\('(.*?)'\\)").exec(val);

+

+					if (m.length > 1)

+						val = "url('" + eval(tinyMCE.getParam('urlconverter_callback') + "(m[1], null, true);") + "')";

+				}

+

+				// Force HEX colors

+				if (tinyMCE.getParam("force_hex_style_colors"))

+					val = tinyMCE.convertRGBToHex(val, true);

+

+				val = val.replace(/\"/g, '\'');

+

+				if (val != "url('')")

+					str += key.toLowerCase() + ": " + val + "; ";

+			}

+		}

+

+		if (new RegExp('; $').test(str))

+			str = str.substring(0, str.length - 2);

+

+		return str;

+	},

+

+	convertRGBToHex : function(s, k) {

+		var re, rgb;

+

+		if (s.toLowerCase().indexOf('rgb') != -1) {

+			re = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");

+			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;

+	},

+

+	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;

+	},

+

+	convertSpansToFonts : function(doc) {

+		var s, i, size, fSize, x, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');

+

+		s = tinyMCE.selectElements(doc, 'span,font');

+		for (i=0; i<s.length; i++) {

+			size = tinyMCE.trim(s[i].style.fontSize).toLowerCase();

+			fSize = 0;

+

+			for (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 = '';

+			}

+

+			fFace = s[i].style.fontFamily;

+			if (fFace != null && fFace !== '') {

+				tinyMCE.setAttrib(s[i], 'face', fFace);

+				s[i].style.fontFamily = '';

+			}

+

+			fColor = s[i].style.color;

+			if (fColor != null && fColor !== '') {

+				tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor));

+				s[i].style.color = '';

+			}

+		}

+	},

+

+	convertFontsToSpans : function(doc) {

+		var fsClasses, s, i, fSize, fFace, fColor, sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/, '').split(',');

+

+		fsClasses = tinyMCE.getParam('font_size_classes');

+		if (fsClasses !== '')

+			fsClasses = fsClasses.replace(/\s+/, '').split(',');

+		else

+			fsClasses = null;

+

+		s = tinyMCE.selectElements(doc, 'span,font');

+		for (i=0; i<s.length; i++) {

+			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');

+			}

+		}

+	},

+

+	cleanupAnchors : function(doc) {

+		var i, cn, x, an = doc.getElementsByTagName("a");

+

+		// Loops backwards due to bug #1467987

+		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]);

+			}

+		}

+	},

+

+	getContent : function(editor_id) {

+		if (typeof(editor_id) != "undefined")

+			 tinyMCE.getInstanceById(editor_id).select();

+

+		if (tinyMCE.selectedInstance)

+			return tinyMCE.selectedInstance.getHTML();

+

+		return null;

+	},

+

+	_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 = '&nbsp;';

+						np.appendChild(n);

+						p.insertBefore(np, p.firstChild);

+					} else

+						np.appendChild(n);

+				}

+			}

+		}

+	},

+

+	_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,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);

+			}

+		}

+	},

+

+	_cleanupHTML : function(inst, doc, config, elm, visual, on_save, on_submit, inn) {

+		var h, d, t1, t2, t3, t4, t5, c, s, nb;

+

+		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();

+

+		inst._fixRootBlocks();

+

+		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);

+

+		// Call custom cleanup code

+		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++; // Unique ID needed for the content duplication bug

+		c.serializedNodes = [];

+		c.sourceIndex = -1;

+

+		if (s.cleanup_serializer == "xml")

+			h = c.serializeNodeAsXML(elm, inn);

+		else

+			h = c.serializeNodeAsHTML(elm, inn);

+

+		if (d)

+			t3 = new Date().getTime();

+

+		// Post processing

+		nb = tinyMCE.getParam('entity_encoding') == 'numeric' ? '&#160;' : '&nbsp;';

+		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>(&nbsp;|&#160;)<\/p><hr \/><p>(&nbsp;|&#160;)<\/p>/g, '<hr />');

+		h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb + '</td>');

+		h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko

+		h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P tags for Gecko

+		h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*(&nbsp;|&#160;)\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(/<p>\s*(&nbsp;|&#160;)\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(/<p>\s*<br \/>\s*&nbsp;\s*<\/p>/g, '<p>' + nb + '</p>');

+		h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'), '$1');

+		h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb + '</p>');

+

+		// Clean body

+		if (/^\s*(<br \/>|<p>&nbsp;<\/p>|<p>&#160;<\/p>|<p><\/p>)\s*$/.test(h))

+			h = '';

+

+		// If preformatted

+		if (s.preformatted) {

+			h = h.replace(/^<pre>/, '');

+			h = h.replace(/<\/pre>$/, '');

+			h = '<pre>' + h + '</pre>';

+		}

+

+		// Gecko specific processing

+		if (tinyMCE.isGecko) {

+			// Makes no sence but FF generates it!!

+			h = h.replace(/<br \/>\s*<\/li>/g, '</li>');

+			h = h.replace(/&nbsp;\s*<\/(dd|dt)>/g, '</$1>');

+			h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');

+			h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1>' + nb + '</td>');

+		}

+

+		if (s.force_br_newlines)

+			h = h.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<br />');

+

+		// Call custom cleanup code

+		h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" : "insert_to_editor", h);

+

+		// Remove internal classes

+		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 encoding (not recommended option)

+		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.isIE = (navigator.appName == "Microsoft Internet Explorer");

+	this.rules = tinyMCE.clearArray([]);

+

+	// Default config

+	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([]);

+	this.vElementsRe = '';

+	this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|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];

+

+		// Setup code formating

+		s = this.settings;

+

+		// Setup regexps

+		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', '<(\\/?)(', ')([^>]*)>');

+		this.serializedNodes = [];

+		this.serializationId = 0;

+

+		if (s.invalid_elements !== '')

+			this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','), 'g', '^(', ')$');

+		else

+			this.iveRe = null;

+

+		// Setup separator

+		st = '';

+		for (i=0; i<s.indent_levels; i++)

+			st += s.indent_char;

+

+		this.inStr = st;

+

+		// If verify_html if false force *[*]

+		if (!s.verify_html) {

+			s.valid_elements = '*[*]';

+			s.extended_valid_elements = '';

+		}

+

+		this.fillStr = s.entity_encoding == "named" ? "&nbsp;" : "&#160;";

+		this.idCount = 0;

+		this.xmlEncodeRe = new RegExp('[\u007F-\uFFFF<>&"]', 'g');

+	},

+

+	addRuleStr : function(s) {

+		var r = this.parseRuleStr(s), n;

+

+		for (n in r) {

+			if (r[n])

+				this.rules[n] = r[n];

+		}

+

+		this.vElements = tinyMCE.clearArray([]);

+

+		for (n in this.rules) {

+			if (this.rules[n])

+				this.vElements[this.vElements.length] = this.rules[n].tag;

+		}

+

+		this.vElementsRe = this._arrayToRe(this.vElements, '');

+	},

+

+	isValid : function(n) {

+		if (!this.rulesDone)

+			this._setupRules(); // Will initialize cleanup rules

+

+		// Empty is true since it removes formatting

+		if (!n)

+			return true;

+

+		// Clean the name up a bit

+		n = n.replace(/[^a-z0-9]+/gi, '').toUpperCase();

+

+		return !tinyMCE.getParam('cleanup') || this.vElementsRe.test(n);

+	},

+

+	addChildRemoveRuleStr : function(s) {

+		var x, y, p, i, t, tn, ta, cl, r;

+

+		if (!s)

+			return;

+

+		ta = s.split(',');

+		for (x=0; x<ta.length; x++) {

+			s = ta[x];

+

+			// Split tag/children

+			p = this.split(/\[|\]/, s);

+			if (p == null || p.length < 1)

+				t = s.toUpperCase();

+			else

+				t = p[0].toUpperCase();

+

+			// Handle all tag names

+			tn = this.split('/', t);

+			for (y=0; y<tn.length; y++) {

+				r = "^(";

+

+				// Build regex

+				cl = this.split(/\|/, p[1]);

+				for (i=0; i<cl.length; i++) {

+					if (cl[i] == '%istrict')

+						r += tinyMCE.inlineStrict;

+					else if (cl[i] == '%itrans')

+						r += tinyMCE.inlineTransitional;

+					else if (cl[i] == '%istrict_na')

+						r += tinyMCE.inlineStrict.substring(2);

+					else if (cl[i] == '%itrans_na')

+						r += tinyMCE.inlineTransitional.substring(2);

+					else if (cl[i] == '%btrans')

+						r += tinyMCE.blockElms;

+					else if (cl[i] == '%strict')

+						r += tinyMCE.blockStrict;

+					else

+						r += (cl[i].charAt(0) != '#' ? cl[i].toUpperCase() : cl[i]);

+

+					r += (i != cl.length - 1 ? '|' : '');

+				}

+

+				r += ')$';

+

+				if (this.childRules == null)

+					this.childRules = tinyMCE.clearArray([]);

+

+				this.childRules[tn[y]] = new RegExp(r);

+

+				if (p.length > 1)

+					this.childRules[tn[y]].wrapTag = p[2];

+			}

+		}

+	},

+

+	parseRuleStr : function(s) {

+		var ta, p, r, a, i, x, px, t, tn, y, av, or = tinyMCE.clearArray([]), 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;

+

+			// Split tag/attrs

+			p = this.split(/\[|\]/, s);

+			if (p == null || p.length < 1)

+				t = s.toUpperCase();

+			else

+				t = p[0].toUpperCase();

+

+			// Handle all tag names

+			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;

+

+				// Handle prefixes

+				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 + '$'));

+

+				// Setup valid attributes

+				if (p.length > 1) {

+					r.vAttribsRe = '^(';

+					a = this.split(/\|/, p[1]);

+

+					for (i=0; i<a.length; i++) {

+						t = a[i];

+

+						if (t.charAt(0) == '!') {

+							a[i] = t = t.substring(1);

+

+							if (!r.reqAttribsRe)

+								r.reqAttribsRe = '\\s+(' + t;

+							else

+								r.reqAttribsRe += '|' + t;

+						}

+

+						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([]);

+

+								r.forceAttribs[t.toLowerCase()] = av[0].substring(1);

+							} else if (av[0].charAt(0) == '=') {

+								if (!r.defaultAttribs)

+									r.defaultAttribs = tinyMCE.clearArray([]);

+

+								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([]);

+

+								r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?', av[0].substring(1)), 'i');

+							}

+						}

+

+						r.vAttribsRe += '' + t.toLowerCase() + (i != a.length - 1 ? '|' : '');

+

+						a[i] = t.toLowerCase();

+					}

+

+					if (r.reqAttribsRe)

+						r.reqAttribsRe = new RegExp(r.reqAttribsRe + ')=\"', 'g');

+

+					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();

+

+					//tinyMCE.debug(r.tag, r.oTagName, r.vAttribsRe, r.vAttribsReWC);

+				} else {

+					r.vAttribsRe = '';

+					r.vAttribs = tinyMCE.clearArray([]);

+					r.vAttribsReIsWild = false;

+				}

+

+				or[r.tag] = r;

+			}

+		}

+

+		return or;

+	},

+

+	serializeNodeAsXML : function(n) {

+		var s, b;

+

+		if (!this.xmlDoc) {

+			if (this.isIE) {

+				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.isIE)

+			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 (tinyMCE.isRealIE && this._isDuplicate(n))

+			return;

+

+		xd = this.xmlDoc;

+

+		switch (n.nodeType) {

+			case 1: // Element

+				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: // Text

+				xn.appendChild(xd.createTextNode(n.nodeValue));

+				return;

+

+			case 8: // Comment

+				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, inn) {

+		var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr, nn;

+

+		if (!this.rulesDone)

+			this._setupRules(); // Will initialize cleanup rules

+

+		if (tinyMCE.isRealIE && this._isDuplicate(n))

+			return '';

+

+		// Skip non valid child elements

+		if (n.parentNode && this.childRules != null) {

+			cr = this.childRules[n.parentNode.nodeName];

+

+			if (typeof(cr) != "undefined" && !cr.test(n.nodeName)) {

+				st = true;

+				t = null;

+			}

+		}

+

+		switch (n.nodeType) {

+			case 1: // Element

+				hc = n.hasChildNodes();

+

+				if (st)

+					break;

+

+				nn = n.nodeName;

+

+				if (tinyMCE.isRealIE) {

+					// MSIE sometimes produces <//tag>

+					if (n.nodeName.indexOf('/') != -1)

+						break;

+

+					// MSIE has it's NS in a separate attrib

+					if (n.scopeName && n.scopeName != 'HTML')

+						nn = n.scopeName.toUpperCase() + ':' + nn.toUpperCase();

+				} else if (tinyMCE.isOpera && nn.indexOf(':') > 0)

+					nn = nn.toUpperCase();

+

+				// Convert fonts to spans

+				if (this.settings.convert_fonts_to_spans) {

+					// On get content FONT -> SPAN

+					if (this.settings.on_save && nn == 'FONT')

+						nn = 'SPAN';

+

+					// On insert content SPAN -> FONT

+					if (!this.settings.on_save && nn == 'SPAN')

+						nn = 'FONT';

+				}

+

+				if (this.vElementsRe.test(nn) && (!this.iveRe || !this.iveRe.test(nn)) && !inn) {

+					va = true;

+

+					r = this.rules[nn];

+					if (!r) {

+						at = this.rules;

+						for (no in at) {

+							if (at[no] && at[no].validRe.test(nn)) {

+								r = at[no];

+								break;

+							}

+						}

+					}

+

+					en = r.isWild ? nn.toLowerCase() : r.oTagName;

+					f = r.fill;

+

+					if (r.removeEmpty && !hc)

+						return "";

+

+					t = '<' + en;

+

+					if (r.vAttribsReIsWild) {

+						// Serialize wildcard attributes

+						at = n.attributes;

+						for (i=at.length-1; i>-1; i--) {

+							no = at[i];

+							if (no.specified && r.vAttribsRe.test(no.nodeName))

+								t += this._serializeAttribute(n, r, no.nodeName);

+						}

+					} else {

+						// Serialize specific attributes

+						for (i=r.vAttribs.length-1; i>-1; i--)

+							t += this._serializeAttribute(n, r, r.vAttribs[i]);

+					}

+

+					// Serialize mce_ atts

+					if (!this.settings.on_save) {

+						at = this.mceAttribs;

+

+						for (no in at) {

+							if (at[no])

+								t += this._serializeAttribute(n, r, at[no]);

+						}

+					}

+

+					// Check for required attribs

+					if (r.reqAttribsRe && !t.match(r.reqAttribsRe))

+						t = null;

+

+					// Close these

+					if (t != null && this.closeElementsRe.test(nn))

+						return t + ' />';

+

+					if (t != null)

+						h += t + '>';

+

+					if (this.isIE && this.codeElementsRe.test(nn))

+						h += n.innerHTML;

+				}

+			break;

+

+			case 3: // Text

+				if (st)

+					break;

+

+				if (n.parentNode && this.codeElementsRe.test(n.parentNode.nodeName))

+					return this.isIE ? '' : n.nodeValue;

+

+				return this.xmlEncode(n.nodeValue);

+

+			case 8: // Comment

+				if (st)

+					break;

+

+				return "<!--" + this._trimComment(n.nodeValue) + "-->";

+		}

+

+		if (hc) {

+			cn = n.childNodes;

+

+			for (i=0, l=cn.length; i<l; i++)

+				h += this.serializeNodeAsHTML(cn[i]);

+		}

+

+		// Fill empty nodes

+		if (f && !hc)

+			h += this.fillStr;

+

+		// End element

+		if (t != null && 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 && /^(src|href|longdesc)$/.test(an))

+			av = this._urlConverter(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) {

+			if (an.indexOf('on') != 0)

+				av = this.xmlEncode(av, 1);

+

+			return " " + an + "=" + '"' + av + '"';

+		}

+

+		return "";

+	},

+

+	formatHTML : function(h) {

+		var s = this.settings, p = '', i = 0, li = 0, o = '', l;

+

+		// Replace BR in pre elements to \n

+		h = h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {

+			c = c.replace(/<br\s*\/>/gi, '\n');

+			return '<pre' + b + '>' + c + '</pre>';

+		});

+

+		h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :)

+		h = '\n' + h;

+		h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting

+		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';

+

+		//tinyMCE.debug(h);

+

+		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;

+		}

+

+		//tinyMCE.debug(h);

+

+		return o;

+	},

+

+	xmlEncode : function(s) {

+		var cl = this, re = this.xmlEncodeRe;

+

+		if (!this.entitiesDone)

+			this._setupEntities(); // Will intialize lookup table

+

+		switch (this.settings.entity_encoding) {

+			case "raw":

+				return tinyMCE.xmlEncode(s);

+

+			case "named":

+				return s.replace(re, function (c) {

+					var b = cl.entities[c.charCodeAt(0)];

+

+					return b ? '&' + b + ';' : c;

+				});

+

+			case "numeric":

+				return s.replace(re, function (c) {

+					return '&#' + c.charCodeAt(0) + ';';

+				});

+		}

+

+		return s;

+	},

+

+	split : function(re, s) {

+		var i, l, o = [], c = s.split(re);

+

+		for (i=0, l=c.length; i<l; i++) {

+			if (c[i] !== '')

+				o[i] = c[i];

+		}

+

+		return o;

+	},

+

+	_trimComment : function(s) {

+		// Remove mce_src, mce_href

+		s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");

+		s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");

+

+		return s;

+	},

+

+	_getAttrib : function(e, n, d) {

+		var v, ex, nn;

+

+		if (typeof(d) == "undefined")

+			d = "";

+

+		if (!e || e.nodeType != 1)

+			return d;

+

+		try {

+			v = e.getAttribute(n, 0);

+		} catch (ex) {

+			// IE 7 may cast exception on invalid attributes

+			v = e.getAttribute(n, 2);

+		}

+

+		if (n == "class" && !v)

+			v = e.className;

+

+		if (this.isIE) {

+			if (n == "http-equiv")

+				v = e.httpEquiv;

+

+			nn = e.nodeName;

+

+			// Skip the default values that IE returns

+			if (nn == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded")

+				v = "";

+

+			if (nn == "INPUT" && n == "size" && v == "20")

+				v = "";

+

+			if (nn == "INPUT" && n == "maxlength" && v == "2147483647")

+				v = "";

+

+			// Images

+			if (n == "width" || n == "height")

+				v = e.getAttribute(n, 2);

+		}

+

+		if (n == 'style' && v) {

+			if (!tinyMCE.isOpera)

+				v = e.style.cssText;

+

+			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')) {

+			if (!this.urlConverter)

+				this.urlConverter = eval(tinyMCE.settings.urlconverter_callback);

+

+			return this.urlConverter(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;

+

+		// Setup entities

+		if (s.entity_encoding == "named") {

+			n = tinyMCE.clearArray([]);

+			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;

+

+		// Setup default rule

+		this.addRuleStr(s.valid_elements);

+		this.addRuleStr(s.extended_valid_elements);

+		this.addChildRemoveRuleStr(s.valid_child_elements);

+

+		this.rulesDone = true;

+	},

+

+	_isDuplicate : function(n) {

+		var i, l, sn;

+

+		if (!this.settings.fix_content_duplication)

+			return false;

+

+		if (tinyMCE.isRealIE && n.nodeType == 1) {

+			// Mark elements

+			if (n.mce_serialized == this.serializationId)

+				return true;

+

+			n.setAttribute('mce_serialized', this.serializationId);

+		} else {

+			sn = this.serializedNodes;

+

+			// Search lookup table for text nodes  and comments

+			for (i=0, l = sn.length; i<l; i++) {

+				if (sn[i] == n)

+					return true;

+			}

+

+			sn.push(n);

+		}

+

+		return false;

+	}

+

+	};

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_DOMUtils.class.js */

+

+tinyMCE.add(TinyMCE_Engine, {

+	createTagHTML : function(tn, a, h) {

+		var o = '', f = tinyMCE.xmlEncode, n;

+

+		o = '<' + tn;

+

+		if (a) {

+			for (n in a) {

+				if (typeof(a[n]) != 'function' && a[n] != null)

+					o += ' ' + f(n) + '="' + f('' + a[n]) + '"';

+			}

+		}

+

+		o += !h ? ' />' : '>' + h + '</' + tn + '>';

+

+		return o;

+	},

+

+	createTag : function(d, tn, a, h) {

+		var o = d.createElement(tn), n;

+

+		if (a) {

+			for (n in a) {

+				if (typeof(a[n]) != 'function' && a[n] != null)

+					tinyMCE.setAttrib(o, n, a[n]);

+			}

+		}

+

+		if (h)

+			o.innerHTML = h;

+

+		return o;

+	},

+

+	getElementByAttributeValue : function(n, e, a, v) {

+		return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0];

+	},

+

+	getElementsByAttributeValue : function(n, e, a, v) {

+		var i, nl = n.getElementsByTagName(e), o = [];

+

+		for (i=0; i<nl.length; i++) {

+			if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)

+				o[o.length] = nl[i];

+		}

+

+		return o;

+	},

+

+	isBlockElement : function(n) {

+		return n != null && n.nodeType == 1 && this.blockRegExp.test(n.nodeName);

+	},

+

+	getParentBlockElement : function(n, r) {

+		return this.getParentNode(n, function(n) {

+			return tinyMCE.isBlockElement(n);

+		}, r);

+

+		return null;

+	},

+

+	insertAfter : function(n, r){

+		if (r.nextSibling)

+			r.parentNode.insertBefore(n, r.nextSibling);

+		else

+			r.parentNode.appendChild(n);

+	},

+

+	setInnerHTML : function(e, h) {

+		var i, nl, n;

+

+		// Convert all strong/em to b/i in Gecko

+		if (tinyMCE.isGecko) {

+			h = h.replace(/<embed([^>]*)>/gi, '<tmpembed$1>');

+			h = h.replace(/<em([^>]*)>/gi, '<i$1>');

+			h = h.replace(/<tmpembed([^>]*)>/gi, '<embed$1>');

+			h = h.replace(/<strong([^>]*)>/gi, '<b$1>');

+			h = h.replace(/<\/strong>/gi, '</b>');

+			h = h.replace(/<\/em>/gi, '</i>');

+		}

+

+		if (tinyMCE.isRealIE) {

+			// Since MSIE handles invalid HTML better that valid XHTML we

+			// need to make some things invalid. <hr /> gets converted to <hr>.

+			h = h.replace(/\s\/>/g, '>');

+

+			// Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones

+			h = h.replace(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs

+			h = h.replace(/<p([^>]*)>\s*&nbsp;\s*<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs

+			h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1 mce_keep="true">&nbsp;</p>'); // Keep empty paragraphs

+

+			// Remove first comment

+			e.innerHTML = tinyMCE.uniqueTag + h;

+			e.firstChild.removeNode(true);

+

+			// Remove weird auto generated empty paragraphs unless it's supposed to be there

+			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);

+		}

+	},

+

+	getOuterHTML : function(e) {

+		var d;

+

+		if (tinyMCE.isIE)

+			return e.outerHTML;

+

+		d = e.ownerDocument.createElement("body");

+		d.appendChild(e.cloneNode(true));

+

+		return d.innerHTML;

+	},

+

+	setOuterHTML : function(e, h, d) {

+		var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;

+

+		if (tinyMCE.isIE && e.nodeType == 1)

+			e.outerHTML = h;

+		else {

+			t = d.createElement("body");

+			t.innerHTML = h;

+

+			for (i=0, nl=t.childNodes; i<nl.length; i++)

+				e.parentNode.insertBefore(nl[i].cloneNode(true), e);

+

+			e.parentNode.removeChild(e);

+		}

+	},

+

+	_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;

+	},

+

+	getNodeTree : function(n, na, t, nn) {

+		return this.selectNodes(n, function(n) {

+			return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);

+		}, na ? na : []);

+	},

+

+	getParentElement : function(n, na, f, r) {

+		var re = na ? new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$') : 0, v;

+

+		// Compatiblity with old scripts where f param was a attribute string

+		if (f && typeof(f) == 'string')

+			return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) !== '';});

+

+		return this.getParentNode(n, function(n) {

+			return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName))) && (!f || f(n));

+		}, r);

+	},

+

+	getParentNode : function(n, f, r) {

+		while (n) {

+			if (n == r)

+				return null;

+

+			if (f(n))

+				return n;

+

+			n = n.parentNode;

+		}

+

+		return null;

+	},

+

+	getAttrib : function(elm, name, dv) {

+		var v;

+

+		if (typeof(dv) == "undefined")

+			dv = "";

+

+		// Not a element

+		if (!elm || elm.nodeType != 1)

+			return dv;

+

+		try {

+			v = elm.getAttribute(name, 0);

+		} catch (ex) {

+			// IE 7 may cast exception on invalid attributes

+			v = elm.getAttribute(name, 2);

+		}

+

+		// Try className for class attrib

+		if (name == "class" && !v)

+			v = elm.className;

+

+		// Workaround for a issue with Firefox 1.5rc2+

+		if (tinyMCE.isGecko) {

+			if (name == "src" && elm.src != null && elm.src !== '')

+				v = elm.src;

+

+			// Workaround for a issue with Firefox 1.5rc2+

+			if (name == "href" && elm.href != null && elm.href !== '')

+				v = elm.href;

+		} else if (tinyMCE.isIE) {

+			switch (name) {

+				case "http-equiv":

+					v = elm.httpEquiv;

+					break;

+

+				case "width":

+				case "height":

+					v = elm.getAttribute(name, 2);

+					break;

+			}

+		}

+

+		if (name == "style" && !tinyMCE.isOpera)

+			v = elm.style.cssText;

+

+		return (v && v !== '') ? v : dv;

+	},

+

+	setAttrib : function(el, name, va, fix) {

+		if (typeof(va) == "number" && va != null)

+			va = "" + va;

+

+		if (fix) {

+			if (va == null)

+				va = "";

+

+			va = va.replace(/[^0-9%]/g, '');

+		}

+

+		if (name == "style")

+			el.style.cssText = va;

+

+		if (name == "class")

+			el.className = va;

+

+		if (va != null && va !== '' && va != -1)

+			el.setAttribute(name, va);

+		else

+			el.removeAttribute(name);

+	},

+

+	setStyleAttrib : function(e, n, v) {

+		e.style[n] = v;

+

+		// Style attrib deleted in IE

+		if (tinyMCE.isIE && v == null || v == '') {

+			v = tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));

+			e.style.cssText = v;

+			e.setAttribute("style", v);

+		}

+	},

+

+	switchClass : function(ei, c) {

+		var e;

+

+		if (tinyMCE.switchClassCache[ei])

+			e = tinyMCE.switchClassCache[ei];

+		else

+			e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);

+

+		if (e) {

+			// Keep tile mode

+			if (tinyMCE.settings.button_tile_map && e.className && e.className.indexOf('mceTiledButton') == 0)

+				c = 'mceTiledButton ' + c;

+

+			e.className = c;

+		}

+	},

+

+	getAbsPosition : function(n, cn) {

+		var l = 0, t = 0;

+

+		while (n && n != cn) {

+			l += n.offsetLeft;

+			t += n.offsetTop;

+			n = n.offsetParent;

+		}

+

+		return {absLeft : l, absTop : t};

+	},

+

+	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;

+	},

+

+	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;

+	},

+

+	selectElements : function(n, na, f) {

+		var i, a = [], nl, x;

+

+		for (x=0, na = na.split(','); x<na.length; x++)

+			for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)

+				(!f || f(nl[i])) && a.push(nl[i]);

+

+		return a;

+	},

+

+	selectNodes : function(n, f, a) {

+		var i;

+

+		if (!a)

+			a = [];

+

+		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;

+	},

+

+	addCSSClass : function(e, c, b) {

+		var o = this.removeCSSClass(e, c);

+		return e.className = b ? c + (o !== '' ? (' ' + o) : '') : (o !== '' ? (o + ' ') : '') + c;

+	},

+

+	removeCSSClass : function(e, c) {

+		c = e.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');

+		return e.className = c != ' ' ? c : '';

+	},

+

+	hasCSSClass : function(n, c) {

+		return new RegExp('\\b' + c + '\\b', 'g').test(n.className);

+	},

+

+	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);

+		}

+	},

+

+	getViewPort : function(w) {

+		var d = w.document, m = d.compatMode == 'CSS1Compat', b = d.body, de = d.documentElement;

+

+		return {

+			left : w.pageXOffset || (m ? de.scrollLeft : b.scrollLeft),

+			top : w.pageYOffset || (m ? de.scrollTop : b.scrollTop),

+			width : w.innerWidth || (m ? de.clientWidth : b.clientWidth),

+			height : w.innerHeight || (m ? de.clientHeight : b.clientHeight)

+		};

+	},

+

+	getStyle : function(n, na, d) {

+		if (!n)

+			return false;

+

+		// Gecko

+		if (tinyMCE.isGecko && n.ownerDocument.defaultView) {

+			try {

+				return n.ownerDocument.defaultView.getComputedStyle(n, null).getPropertyValue(na);

+			} catch (n) {

+				// Old safari might fail

+				return null;

+			}

+		}

+

+		// Camelcase it, if needed

+		na = na.replace(/-(\D)/g, function(a, b){

+			return b.toUpperCase();

+		});

+

+		// IE & Opera

+		if (n.currentStyle)

+			return n.currentStyle[na];

+

+		return false;

+	}

+

+	});

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_URL.class.js */

+

+tinyMCE.add(TinyMCE_Engine, {

+	parseURL : function(url_str) {

+		var urlParts = [], i, pos, lastPos, chr;

+

+		if (url_str) {

+			// Parse protocol part

+			pos = url_str.indexOf('://');

+			if (pos != -1) {

+				urlParts.protocol = url_str.substring(0, pos);

+				lastPos = pos + 3;

+			}

+

+			// Find port or path start

+			for (i=lastPos; i<url_str.length; i++) {

+				chr = url_str.charAt(i);

+

+				if (chr == ':')

+					break;

+

+				if (chr == '/')

+					break;

+			}

+			pos = i;

+

+			// Get host

+			urlParts.host = url_str.substring(lastPos, pos);

+

+			// Get port

+			urlParts.port = "";

+			lastPos = pos;

+			if (url_str.charAt(pos) == ':') {

+				pos = url_str.indexOf('/', lastPos);

+				urlParts.port = url_str.substring(lastPos+1, pos);

+			}

+

+			// Get path

+			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);

+

+			// Get query

+			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);

+			}

+

+			// Get anchor

+			lastPos = pos;

+			if (url_str.charAt(pos) == '#') {

+				pos = url_str.length;

+				urlParts.anchor = url_str.substring(lastPos+1, pos);

+			}

+		}

+

+		return urlParts;

+	},

+

+	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;

+	},

+

+	convertAbsoluteURLToRelativeURL : function(base_url, url_to_relative) {

+		var baseURL = this.parseURL(base_url), targetURL = this.parseURL(url_to_relative);

+		var i, strTok1, strTok2, breakPoint = 0, outPath = "", forceSlash = false;

+		var fileName, pos;

+

+		if (targetURL.path == '')

+			targetURL.path = "/";

+		else

+			forceSlash = true;

+

+		// Crop away last path part

+		base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/'));

+		strTok1 = base_url.split('/');

+		strTok2 = targetURL.path.split('/');

+

+		if (strTok1.length >= strTok2.length) {

+			for (i=0; i<strTok1.length; i++) {

+				if (i >= strTok2.length || strTok1[i] != strTok2[i]) {

+					breakPoint = i + 1;

+					break;

+				}

+			}

+		}

+

+		if (strTok1.length < strTok2.length) {

+			for (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 (i=0; i<(strTok1.length-(breakPoint-1)); i++)

+			outPath += "../";

+

+		for (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;

+

+		// Remove document prefix from local anchors

+		fileName = baseURL.path;

+

+		if ((pos = fileName.lastIndexOf('/')) != -1)

+			fileName = fileName.substring(pos + 1);

+

+		// Is local anchor

+		if (fileName == targetURL.path && targetURL.anchor !== '')

+			targetURL.path = "";

+

+		// If empty and not local anchor force filename or slash

+		if (targetURL.path == '' && !targetURL.anchor)

+			targetURL.path = fileName !== '' ? fileName : "/";

+

+		return this.serializeURL(targetURL);

+	},

+

+	convertRelativeToAbsoluteURL : function(base_url, relative_url) {

+		var baseURL = this.parseURL(base_url), baseURLParts, relURLParts, newRelURLParts, numBack, relURL = this.parseURL(relative_url), i;

+		var len, absPath, start, end, newBaseURLParts;

+

+		if (relative_url == '' || relative_url.indexOf('://') != -1 || /^(mailto:|javascript:|#|\/)/.test(relative_url))

+			return relative_url;

+

+		// Split parts

+		baseURLParts = baseURL.path.split('/');

+		relURLParts = relURL.path.split('/');

+

+		// Remove empty chunks

+		newBaseURLParts = [];

+		for (i=baseURLParts.length-1; i>=0; i--) {

+			if (baseURLParts[i].length == 0)

+				continue;

+

+			newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];

+		}

+		baseURLParts = newBaseURLParts.reverse();

+

+		// Merge relURLParts chunks

+		newRelURLParts = [];

+		numBack = 0;

+		for (i=relURLParts.length-1; i>=0; i--) {

+			if (relURLParts[i].length == 0 || relURLParts[i] == ".")

+				continue;

+

+			if (relURLParts[i] == '..') {

+				numBack++;

+				continue;

+			}

+

+			if (numBack > 0) {

+				numBack--;

+				continue;

+			}

+

+			newRelURLParts[newRelURLParts.length] = relURLParts[i];

+		}

+

+		relURLParts = newRelURLParts.reverse();

+

+		// Remove end from absolute path

+		len = baseURLParts.length-numBack;

+		absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/');

+		start = "";

+		end = "";

+

+		// Build output URL

+		relURL.protocol = baseURL.protocol;

+		relURL.host = baseURL.host;

+		relURL.port = baseURL.port;

+

+		// Re-add trailing slash if it's removed

+		if (relURL.path.charAt(relURL.path.length-1) == "/")

+			absPath += "/";

+

+		relURL.path = absPath;

+

+		return this.serializeURL(relURL);

+	},

+

+	convertURL : function(url, node, on_save) {

+		var dl = document.location, start, portPart, urlParts, baseUrlParts, tmpUrlParts, curl;

+		var prot = dl.protocol, host = dl.hostname, port = dl.port;

+

+		// Pass through file protocol

+		if (prot == "file:")

+			return url;

+

+		// Something is wrong, remove weirdness

+		url = tinyMCE.regexpReplace(url, '(http|https):///', '/');

+

+		// Mailto link or anchor (Pass through)

+		if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || /^[ \t\r\n\+]*[#\?]/.test(url))

+			return url;

+

+		// Fix relative/Mozilla

+		if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')

+			return tinyMCE.settings.base_href + url;

+

+		// Handle relative URLs

+		if (on_save && tinyMCE.getParam('relative_urls')) {

+			curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);

+			if (curl.charAt(0) == '/')

+				curl = tinyMCE.settings.document_base_prefix + curl;

+

+			urlParts = tinyMCE.parseURL(curl);

+			tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings.document_base_url);

+

+			// Force relative

+			if (urlParts.host == tmpUrlParts.host && (urlParts.port == tmpUrlParts.port))

+				return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url, curl);

+		}

+

+		// Handle absolute URLs

+		if (!tinyMCE.getParam('relative_urls')) {

+			urlParts = tinyMCE.parseURL(url);

+			baseUrlParts = tinyMCE.parseURL(tinyMCE.settings.base_href);

+

+			// Force absolute URLs from relative URLs

+			url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url);

+

+			// If anchor and path is the same page

+			if (urlParts.anchor && urlParts.path == baseUrlParts.path)

+				return "#" + urlParts.anchor;

+		}

+

+		// Remove current domain

+		if (tinyMCE.getParam('remove_script_host')) {

+			start = "";

+			portPart = "";

+

+			if (port !== '')

+				portPart = ":" + port;

+

+			start = prot + "//" + host + portPart + "/";

+

+			if (url.indexOf(start) == 0)

+				url = url.substring(start.length-1);

+		}

+

+		return url;

+	},

+

+	convertAllRelativeURLs : function(body) {

+		var i, elms, src, href, mhref, msrc;

+

+		// Convert all image URL:s to absolute URL

+		elms = body.getElementsByTagName("img");

+		for (i=0; i<elms.length; i++) {

+			src = tinyMCE.getAttrib(elms[i], 'src');

+

+			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);

+			}

+		}

+

+		// Convert all link URL:s to absolute URL

+		elms = body.getElementsByTagName("a");

+		for (i=0; i<elms.length; i++) {

+			href = tinyMCE.getAttrib(elms[i], 'href');

+

+			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);

+			}

+		}

+	}

+

+	});

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Array.class.js */

+

+tinyMCE.add(TinyMCE_Engine, {

+	clearArray : function(a) {

+		var n;

+

+		for (n in a)

+			a[n] = null;

+

+		return a;

+	},

+

+	explode : function(d, s) {

+		var ar = s.split(d), oar = [], i;

+

+		for (i = 0; i<ar.length; i++) {

+			if (ar[i] !== '')

+				oar[oar.length] = ar[i];

+		}

+

+		return oar;

+	}

+});

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Event.class.js */

+

+tinyMCE.add(TinyMCE_Engine, {

+	_setEventsEnabled : function(node, state) {

+		var evs, x, y, elms, i, event;

+		var events = ['onfocus','onblur','onclick','ondblclick',

+					'onmousedown','onmouseup','onmouseover','onmousemove',

+					'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];

+

+		evs = tinyMCE.settings.event_elements.split(',');

+		for (y=0; y<evs.length; y++){

+			elms = node.getElementsByTagName(evs[y]);

+			for (i=0; i<elms.length; i++) {

+				event = "";

+

+				for (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);

+					}

+				}

+			}

+		}

+	},

+

+	_eventPatch : function(editor_id) {

+		var n, inst, win, e;

+

+		// Remove odd, error

+		if (typeof(tinyMCE) == "undefined")

+			return true;

+

+		try {

+			// Try selected instance first

+			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;

+				}

+			}

+

+			// Search for it

+			for (n in tinyMCE.instances) {

+				inst = tinyMCE.instances[n];

+

+				if (!tinyMCE.isInstance(inst))

+					continue;

+

+				inst.select();

+				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) {

+			// Ignore error if iframe is pointing to external URL

+		}

+	},

+

+	findEvent : function(e) {

+		var n, inst;

+

+		if (e)

+			return e;

+

+		for (n in tinyMCE.instances) {

+			inst = tinyMCE.instances[n];

+

+			if (tinyMCE.isInstance(inst) && inst.getWin().event)

+				return inst.getWin().event;

+		}

+

+		return null;

+	},

+

+	unloadHandler : function() {

+		tinyMCE.triggerSave(true, true);

+	},

+

+	addEventHandlers : function(inst) {

+		this.setEventHandlers(inst, 1);

+	},

+

+	setEventHandlers : function(inst, s) {

+		var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;

+

+		ie = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'controlselect', 'dblclick'];

+		ot = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'focus', 'blur', 'dragdrop'];

+

+		inst.switchSettings();

+

+		if (tinyMCE.isIE) {

+			for (i=0; i<ie.length; i++)

+				f(doc, ie[i], TinyMCE_Engine.prototype._eventPatch);

+		} else {

+			for (i=0; i<ot.length; i++)

+				f(doc, ot[i], tinyMCE.handleEvent);

+

+			// Force designmode

+			try {

+				doc.designMode = "On";

+			} catch (e) {

+				// Ignore

+			}

+		}

+	},

+

+	onMouseMove : function() {

+		var inst, lh;

+

+		// Fix for IE7 bug where it's not restoring hover on anchors correctly

+		if (tinyMCE.lastHover) {

+			lh = tinyMCE.lastHover;

+

+			// Call out on menus and refresh class on normal buttons

+			if (lh.className.indexOf('mceMenu') != -1)

+				tinyMCE._menuButtonEvent('out', lh);

+			else

+				lh.className = lh.className;

+

+			tinyMCE.lastHover = null;

+		}

+

+		if (!tinyMCE.hasMouseMoved) {

+			inst = tinyMCE.selectedInstance;

+

+			// Workaround for bug #1437457 (Odd MSIE bug)

+			if (inst.isFocused) {

+				inst.undoBookmark = inst.selection.getBookmark();

+				tinyMCE.hasMouseMoved = true;

+			}

+		}

+

+	//	tinyMCE.cancelEvent(inst.getWin().event);

+	//	return false;

+	},

+

+	cancelEvent : function(e) {

+		if (!e)

+			return false;

+

+		if (tinyMCE.isIE) {

+			e.returnValue = false;

+			e.cancelBubble = true;

+		} else {

+			e.preventDefault();

+			e.stopPropagation && e.stopPropagation();

+		}

+

+		return false;

+	},

+

+	addEvent : function(o, n, h) {

+		// Add cleanup for all non unload events

+		if (n != 'unload') {

+			function clean() {

+				var ex;

+

+				try {

+					tinyMCE.removeEvent(o, n, h);

+					tinyMCE.removeEvent(window, 'unload', clean);

+					o = n = h = null;

+				} catch (ex) {

+					// IE may produce access denied exception on unload

+				}

+			}

+

+			// Add memory cleaner

+			tinyMCE.addEvent(window, 'unload', clean);

+		}

+

+		if (o.attachEvent)

+			o.attachEvent("on" + n, h);

+		else

+			o.addEventListener(n, h, false);

+	},

+

+	removeEvent : function(o, n, h) {

+		if (o.detachEvent)

+			o.detachEvent("on" + n, h);

+		else

+			o.removeEventListener(n, h, false);

+	},

+

+	addSelectAccessibility : function(e, s, w) {

+		// Add event handlers 

+		if (!s._isAccessible) {

+			s.onkeydown = tinyMCE.accessibleEventHandler;

+			s.onblur = tinyMCE.accessibleEventHandler;

+			s._isAccessible = true;

+			s._win = w;

+		}

+

+		return false;

+	},

+

+	accessibleEventHandler : function(e) {

+		var elm, win = this._win;

+

+		e = tinyMCE.isIE ? win.event : e;

+		elm = tinyMCE.isIE ? e.srcElement : e.target;

+

+		// Unpiggyback onchange on blur

+		if (e.type == "blur") {

+			if (elm.oldonchange) {

+				elm.onchange = elm.oldonchange;

+				elm.oldonchange = null;

+			}

+

+			return true;

+		}

+

+		// Piggyback onchange

+		if (elm.nodeName == "SELECT" && !elm.oldonchange) {

+			elm.oldonchange = elm.onchange;

+			elm.onchange = null;

+		}

+

+		// Execute onchange and remove piggyback

+		if (e.keyCode == 13 || e.keyCode == 32) {

+			elm.onchange = elm.oldonchange;

+			elm.onchange();

+			elm.oldonchange = null;

+

+			tinyMCE.cancelEvent(e);

+			return false;

+		}

+

+		return true;

+	},

+

+	_resetIframeHeight : function() {

+		var ife;

+

+		if (tinyMCE.isRealIE) {

+			ife = tinyMCE.selectedInstance.iframeElement;

+

+	/*		if (ife._oldWidth) {

+				ife.style.width = ife._oldWidth;

+				ife.width = ife._oldWidth;

+			}*/

+

+			if (ife._oldHeight) {

+				ife.style.height = ife._oldHeight;

+				ife.height = ife._oldHeight;

+			}

+		}

+	}

+

+	});

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Selection.class.js */

+

+function TinyMCE_Selection(inst) {

+	this.instance = inst;

+};

+

+TinyMCE_Selection.prototype = {

+	getSelectedHTML : function() {

+		var inst = this.instance, e, r = this.getRng(), h;

+

+		if (!r)

+			return null;

+

+		e = document.createElement("body");

+

+		if (r.cloneContents)

+			e.appendChild(r.cloneContents());

+		else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) != 'undefined')

+			e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;

+		else

+			e.innerHTML = r.toString(); // Failed, use text for now

+

+		h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);

+

+		// When editing always use fonts internaly

+		//if (tinyMCE.getParam("convert_fonts_to_spans"))

+		//	tinyMCE.convertSpansToFonts(inst.getDoc());

+

+		return h;

+	},

+

+	getSelectedText : function() {

+		var inst = this.instance, d, r, s, t;

+

+		if (tinyMCE.isIE) {

+			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 inst = this.instance, rng = this.getRng(), doc = inst.getDoc(), b = inst.getBody();

+		var trng, sx, sy, xx = -999999999, vp = inst.getViewPort();

+		var sp, le, s, e, nl, i, si, ei, w;

+

+		sx = vp.left;

+		sy = vp.top;

+

+		if (simple)

+			return {rng : rng, scrollX : sx, scrollY : sy};

+

+		if (tinyMCE.isRealIE) {

+			if (rng.item) {

+				e = rng.item(0);

+

+				nl = b.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 = doc.body.createTextRange();

+				trng.moveToElementText(inst.getBody());

+				trng.collapse(true);

+				bp = Math.abs(trng.move('character', xx));

+

+				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 - bp,

+					length : le,

+					scrollX : sx,

+					scrollY : sy

+				};

+			}

+		} else {

+			s = this.getSel();

+			e = this.getFocusElement();

+

+			if (!s)

+				return null;

+

+			if (e && e.nodeName == 'IMG') {

+				/*nl = b.getElementsByTagName('IMG');

+				for (i=0; i<nl.length; i++) {

+					if (e == nl[i]) {

+						sp = i;

+						break;

+					}

+				}*/

+

+				return {

+					start : -1,

+					end : -1,

+					index : sp,

+					scrollX : sx,

+					scrollY : sy

+				};

+			}

+

+			// Caret or selection

+			if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {

+				e = this._getPosText(b, s.anchorNode, s.focusNode);

+

+				if (!e)

+					return {scrollX : sx, scrollY : sy};

+

+				return {

+					start : e.start + s.anchorOffset,

+					end : e.end + s.focusOffset,

+					scrollX : sx,

+					scrollY : sy

+				};

+			} else {

+				e = this._getPosText(b, rng.startContainer, rng.endContainer);

+

+				if (!e)

+					return {scrollX : sx, scrollY : sy};

+

+				return {

+					start : e.start + rng.startOffset,

+					end : e.end + rng.endOffset,

+					scrollX : sx,

+					scrollY : sy

+				};

+			}

+		}

+

+		return null;

+	},

+

+	moveToBookmark : function(bookmark) {

+		var inst = this.instance, rng, nl, i, ex, b = inst.getBody(), sd;

+		var doc = inst.getDoc(), win = inst.getWin(), sel = this.getSel();

+

+		if (!bookmark)

+			return false;

+

+		if (tinyMCE.isSafari && bookmark.rng) {

+			sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset, bookmark.rng.endContainer, bookmark.rng.endOffset);

+			return true;

+		}

+

+		if (tinyMCE.isRealIE) {

+			if (bookmark.rng) {

+				try {

+					bookmark.rng.select();

+				} catch (ex) {

+					// Ignore

+				}

+

+				return true;

+			}

+

+			win.focus();

+

+			if (bookmark.tag) {

+				rng = b.createControlRange();

+

+				nl = b.getElementsByTagName(bookmark.tag);

+

+				if (nl.length > bookmark.index) {

+					try {

+						rng.addElement(nl[bookmark.index]);

+					} catch (ex) {

+						// Might be thrown if the node no longer exists

+					}

+				}

+			} else {

+				// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs

+				try {

+					// Incorrect bookmark

+					if (bookmark.start < 0)

+						return true;

+

+					rng = inst.getSel().createRange();

+					rng.moveToElementText(inst.getBody());

+					rng.collapse(true);

+					rng.moveStart('character', bookmark.start);

+					rng.moveEnd('character', bookmark.length);

+				} catch (ex) {

+					return true;

+				}

+			}

+

+			rng.select();

+

+			win.scrollTo(bookmark.scrollX, bookmark.scrollY);

+			return true;

+		}

+

+		if (tinyMCE.isGecko || tinyMCE.isOpera) {

+			if (!sel)

+				return false;

+

+			if (bookmark.rng) {

+				sel.removeAllRanges();

+				sel.addRange(bookmark.rng);

+			}

+

+			if (bookmark.start != -1 && bookmark.end != -1) {

+				try {

+					sd = this._getTextPos(b, bookmark.start, bookmark.end);

+					rng = doc.createRange();

+					rng.setStart(sd.startNode, sd.startOffset);

+					rng.setEnd(sd.endNode, sd.endOffset);

+					sel.removeAllRanges();

+					sel.addRange(rng);

+

+					if (!tinyMCE.isOpera)

+						win.focus();

+				} catch (ex) {

+					// Ignore

+				}

+			}

+

+			/*

+			if (typeof(bookmark.index) != 'undefined') {

+				tinyMCE.selectElements(b, 'IMG', function (n) {

+					if (bookmark.index-- == 0) {

+						// Select image in Gecko here

+					}

+

+					return false;

+				});

+			}

+			*/

+

+			win.scrollTo(bookmark.scrollX, bookmark.scrollY);

+			return true;

+		}

+

+		return false;

+	},

+

+	_getPosText : function(r, sn, en) {

+		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};

+

+		while ((n = w.nextNode()) != null) {

+			if (n == sn)

+				d.start = p;

+

+			if (n == en) {

+				d.end = p;

+				return d;

+			}

+

+			p += n.nodeValue ? n.nodeValue.length : 0;

+		}

+

+		return null;

+	},

+

+	_getTextPos : function(r, sp, ep) {

+		var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};

+

+		while ((n = w.nextNode()) != null) {

+			p += n.nodeValue ? n.nodeValue.length : 0;

+

+			if (p >= sp && !d.startNode) {

+				d.startNode = n;

+				d.startOffset = sp - (p - n.nodeValue.length);

+			}

+

+			if (p >= ep) {

+				d.endNode = n;

+				d.endOffset = ep - (p - n.nodeValue.length);

+

+				return d;

+			}

+		}

+

+		return null;

+	},

+

+	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 (inst.settings.auto_resize)

+			inst.resizeToContent();

+

+		if (tinyMCE.isRealIE) {

+			rng = inst.getDoc().body.createTextRange();

+

+			try {

+				rng.moveToElementText(node);

+

+				if (collapse)

+					rng.collapse(to_start);

+

+				rng.select();

+			} catch (e) {

+				// Throws illigal agrument in MSIE some times

+			}

+		} 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) {

+				// Find first textnode in tree

+				nodes = tinyMCE.getNodeTree(node, [], 3);

+				if (nodes.length > 0)

+					rng.selectNodeContents(nodes[0]);

+				else

+					rng.selectNodeContents(node);

+			} else

+				rng.selectNode(node);

+

+			if (collapse) {

+				// Special treatment of textnode collapse

+				if (!to_start && node.nodeType == 3) {

+					rng.setStart(node, node.nodeValue.length);

+					rng.setEnd(node, node.nodeValue.length);

+				} else

+					rng.collapse(to_start);

+			}

+

+			sel.removeAllRanges();

+			sel.addRange(rng);

+		}

+

+		this.scrollToNode(node);

+

+		// Set selected element

+		tinyMCE.selectedElement = null;

+		if (node.nodeType == 1)

+			tinyMCE.selectedElement = node;

+	},

+

+	scrollToNode : function(node) {

+		var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin;

+

+		// Only scroll if out of visible area

+		if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25))

+			w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25);

+

+		// Scroll container window

+		if (inst.settings.auto_resize) {

+			cwin = inst.getContainerWin();

+			cvp = tinyMCE.getViewPort(cwin);

+			p = this.getAbsPosition(node);

+

+			if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height)

+				cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25);

+		}

+	},

+

+	getAbsPosition : function(n) {

+		var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement);

+

+		return {

+			absLeft : ipos.absLeft + pos.absLeft,

+			absTop : ipos.absTop + pos.absTop

+		};

+	},

+

+	getSel : function() {

+		var inst = this.instance;

+

+		if (tinyMCE.isRealIE)

+			return inst.getDoc().selection;

+

+		return inst.contentWindow.getSelection();

+	},

+

+	getRng : function() {

+		var s = this.getSel();

+

+		if (s == null)

+			return null;

+

+		if (tinyMCE.isRealIE)

+			return s.createRange();

+

+		if (tinyMCE.isSafari && !s.getRangeAt)

+			return '' + window.getSelection();

+

+		if (s.rangeCount > 0)

+			return s.getRangeAt(0);

+

+		return null;

+	},

+

+	isCollapsed : function() {

+		var r = this.getRng();

+

+		if (r.item)

+			return false;

+

+		return r.boundingWidth == 0 || this.getSel().isCollapsed;

+	},

+

+	collapse : function(b) {

+		var r = this.getRng(), s = this.getSel();

+

+		if (r.select) {

+			r.collapse(b);

+			r.select();

+		} else {

+			if (b)

+				s.collapseToStart();

+			else

+				s.collapseToEnd();

+		}

+	},

+

+	getFocusElement : function() {

+		var inst = this.instance, doc, rng, sel, elm;

+

+		if (tinyMCE.isRealIE) {

+			doc = inst.getDoc();

+			rng = doc.selection.createRange();

+

+	//		if (rng.collapse)

+	//			rng.collapse(true);

+

+			elm = rng.item ? rng.item(0) : rng.parentElement();

+		} else {

+			if (!tinyMCE.isSafari && inst.isHidden())

+				return inst.getBody();

+

+			sel = this.getSel();

+			rng = this.getRng();

+

+			if (!sel || !rng)

+				return null;

+

+			elm = rng.commonAncestorContainer;

+			//elm = (sel && sel.anchorNode) ? sel.anchorNode : null;

+

+			// Handle selection a image or other control like element such as anchors

+			if (!rng.collapsed) {

+				// Is selection small

+				if (rng.startContainer == rng.endContainer) {

+					if (rng.startOffset - rng.endOffset < 2) {

+						if (rng.startContainer.hasChildNodes())

+							elm = rng.startContainer.childNodes[rng.startOffset];

+					}

+				}

+			}

+

+			// Get the element parent of the node

+			elm = tinyMCE.getParentElement(elm);

+

+			//if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img")

+			//	elm = tinyMCE.selectedElement;

+		}

+

+		return elm;

+	}

+

+	};

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */

+

+function TinyMCE_UndoRedo(inst) {

+	this.instance = inst;

+	this.undoLevels = [];

+	this.undoIndex = 0;

+	this.typingUndoIndex = -1;

+	this.undoRedo = true;

+};

+

+TinyMCE_UndoRedo.prototype = {

+	add : function(l) {

+		var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;

+

+		if (l) {

+			this.undoLevels[this.undoLevels.length] = l;

+			return true;

+		}

+

+		if (this.typingUndoIndex != -1) {

+			this.undoIndex = this.typingUndoIndex;

+

+			if (tinyMCE.typingUndoIndex != -1)

+				tinyMCE.undoIndex = tinyMCE.typingUndoIndex;

+		}

+

+		newHTML = tinyMCE.trim(inst.getBody().innerHTML);

+		if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) {

+			//tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content);

+

+			// Is dirty again

+			inst.isNotDirty = false;

+

+			tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst);

+

+			// Time to compress

+			customUndoLevels = tinyMCE.settings.custom_undo_redo_levels;

+			if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {

+				for (i=0; i<this.undoLevels.length-1; i++)

+					this.undoLevels[i] = this.undoLevels[i+1];

+

+				this.undoLevels.length--;

+				this.undoIndex--;

+

+				// Todo: Implement global undo/redo logic here

+			}

+

+			b = inst.undoBookmark;

+

+			if (!b)

+				b = inst.selection.getBookmark();

+

+			this.undoIndex++;

+			this.undoLevels[this.undoIndex] = {

+				content : newHTML,

+				bookmark : b

+			};

+

+			// Remove all above from global undo/redo

+			ul = tinyMCE.undoLevels;

+			for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {

+				ur = ul[i].undoRedo;

+

+				if (ur.undoIndex == ur.undoLevels.length -1)

+					ur.undoIndex--;

+

+				ur.undoLevels.length--;

+			}

+

+			// Add global undo level

+			tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;

+			tinyMCE.undoLevels.length = tinyMCE.undoIndex;

+

+			this.undoLevels.length = this.undoIndex + 1;

+

+			return true;

+		}

+

+		return false;

+	},

+

+	undo : function() {

+		var inst = this.instance;

+

+		// Do undo

+		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();

+	}

+

+	};

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */

+

+var TinyMCE_ForceParagraphs = {

+	_insertPara : function(inst, e) {

+		var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0);

+		var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock;

+		var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null;

+		var paraBefore, paraAfter, startChop, endChop, contents, i;

+

+		function isEmpty(para) {

+			var nodes;

+

+			function isEmptyHTML(html) {

+				return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == '';

+			}

+

+			// Check for images

+			if (para.getElementsByTagName("img").length > 0)

+				return false;

+

+			// Check for tables

+			if (para.getElementsByTagName("table").length > 0)

+				return false;

+

+			// Check for HRs

+			if (para.getElementsByTagName("hr").length > 0)

+				return false;

+

+			// Check all textnodes

+			nodes = tinyMCE.getNodeTree(para, [], 3);

+			for (i=0; i<nodes.length; i++) {

+				if (!isEmptyHTML(nodes[i].nodeValue))

+					return false;

+			}

+

+			// No images, no tables, no hrs, no text content then it's empty

+			return true;

+		}

+

+	//	tinyMCE.debug(body.innerHTML);

+

+	//	debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());

+

+		// Setup before range

+		rngBefore = doc.createRange();

+		rngBefore.setStart(sel.anchorNode, sel.anchorOffset);

+		rngBefore.collapse(true);

+

+		// Setup after range

+		rngAfter = doc.createRange();

+		rngAfter.setStart(sel.focusNode, sel.focusOffset);

+		rngAfter.collapse(true);

+

+		// Setup start/end points

+		direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;

+		startNode = direct ? sel.anchorNode : sel.focusNode;

+		startOffset = direct ? sel.anchorOffset : sel.focusOffset;

+		endNode = direct ? sel.focusNode : sel.anchorNode;

+		endOffset = direct ? sel.focusOffset : sel.anchorOffset;

+

+		startNode = startNode.nodeName == "HTML" ? doc.body : startNode; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes

+		startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;

+		endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;

+

+		// Get block elements

+		startBlock = inst.getParentBlockElement(startNode);

+		endBlock = inst.getParentBlockElement(endNode);

+

+		// If absolute force paragraph generation within

+		if (startBlock && (startBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(startBlock.style.position)))

+			startBlock = null;

+

+		if (endBlock && (endBlock.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(endBlock.style.position)))

+			endBlock = null;

+

+		// Use current block name

+		if (startBlock != null) {

+			blockName = startBlock.nodeName;

+

+			// Use P instead

+			if (/(TD|TABLE|TH|CAPTION)/.test(blockName) || (blockName == "DIV" && /left|right/gi.test(startBlock.style.cssFloat)))

+				blockName = "P";

+		}

+

+		// Within a list use normal behaviour

+		if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)

+			return false;

+

+		// Within a table create new paragraphs

+		if ((startBlock != null && startBlock.nodeName == "TABLE") || (endBlock != null && endBlock.nodeName == "TABLE"))

+			startBlock = endBlock = null;

+

+		// Setup new paragraphs

+		paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);

+		paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);

+

+		// Is header, then force paragraph under

+		if (/^(H[1-6])$/.test(blockName))

+			paraAfter = doc.createElement("p");

+

+		// Setup chop nodes

+		startChop = startNode;

+		endChop = endNode;

+

+		// Get startChop node

+		node = startChop;

+		do {

+			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))

+				break;

+

+			startChop = node;

+		} while ((node = node.previousSibling ? node.previousSibling : node.parentNode));

+

+		// Get endChop node

+		node = endChop;

+		do {

+			if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))

+				break;

+

+			endChop = node;

+		} while ((node = node.nextSibling ? node.nextSibling : node.parentNode));

+

+		// Fix when only a image is within the TD

+		if (startChop.nodeName == "TD")

+			startChop = startChop.firstChild;

+

+		if (endChop.nodeName == "TD")

+			endChop = endChop.lastChild;

+

+		// If not in a block element

+		if (startBlock == null) {

+			// Delete selection

+			rng.deleteContents();

+

+			if (!tinyMCE.isSafari)

+				sel.removeAllRanges();

+

+			if (startChop != rootElm && endChop != rootElm) {

+				// Insert paragraph before

+				rngBefore = rng.cloneRange();

+

+				if (startChop == body)

+					rngBefore.setStart(startChop, 0);

+				else

+					rngBefore.setStartBefore(startChop);

+

+				paraBefore.appendChild(rngBefore.cloneContents());

+

+				// Insert paragraph after

+				if (endChop.parentNode.nodeName == blockName)

+					endChop = endChop.parentNode;

+

+				// If not after image

+				//if (rng.startContainer.nodeName != "BODY" && rng.endContainer.nodeName != "BODY")

+					rng.setEndAfter(endChop);

+

+				if (endChop.nodeName != "#text" && endChop.nodeName != "BODY")

+					rngBefore.setEndAfter(endChop);

+

+				contents = rng.cloneContents();

+				if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY"))

+					paraAfter.innerHTML = contents.firstChild.innerHTML;

+				else

+					paraAfter.appendChild(contents);

+

+				// Check if it's a empty paragraph

+				if (isEmpty(paraBefore))

+					paraBefore.innerHTML = "&nbsp;";

+

+				// Check if it's a empty paragraph

+				if (isEmpty(paraAfter))

+					paraAfter.innerHTML = "&nbsp;";

+

+				// Delete old contents

+				rng.deleteContents();

+				rngAfter.deleteContents();

+				rngBefore.deleteContents();

+

+				// Insert new paragraphs

+				if (tinyMCE.isOpera) {

+					paraBefore.normalize();

+					rngBefore.insertNode(paraBefore);

+					paraAfter.normalize();

+					rngBefore.insertNode(paraAfter);

+				} else {

+					paraAfter.normalize();

+					rngBefore.insertNode(paraAfter);

+					paraBefore.normalize();

+					rngBefore.insertNode(paraBefore);

+				}

+

+				//tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);

+			} else {

+				body.innerHTML = "<" + blockName + ">&nbsp;</" + blockName + "><" + blockName + ">&nbsp;</" + blockName + ">";

+				paraAfter = body.childNodes[1];

+			}

+

+			inst.selection.moveToBookmark(b);

+			inst.selection.selectNode(paraAfter, true, true);

+

+			return true;

+		}

+

+		// Place first part within new paragraph

+		if (startChop.nodeName == blockName)

+			rngBefore.setStart(startChop, 0);

+		else

+			rngBefore.setStartBefore(startChop);

+

+		rngBefore.setEnd(startNode, startOffset);

+		paraBefore.appendChild(rngBefore.cloneContents());

+

+		// Place secound part within new paragraph

+		rngAfter.setEndAfter(endChop);

+		rngAfter.setStart(endNode, endOffset);

+		contents = rngAfter.cloneContents();

+

+		if (contents.firstChild && contents.firstChild.nodeName == blockName) {

+	/*		var nodes = contents.firstChild.childNodes;

+			for (i=0; i<nodes.length; i++) {

+				//tinyMCE.debug(nodes[i].nodeName);

+				if (nodes[i].nodeName != "BODY")

+					paraAfter.appendChild(nodes[i]);

+			}

+	*/

+			paraAfter.innerHTML = contents.firstChild.innerHTML;

+		} else

+			paraAfter.appendChild(contents);

+

+		// Check if it's a empty paragraph

+		if (isEmpty(paraBefore))

+			paraBefore.innerHTML = "&nbsp;";

+

+		// Check if it's a empty paragraph

+		if (isEmpty(paraAfter))

+			paraAfter.innerHTML = "&nbsp;";

+

+		// Create a range around everything

+		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);

+

+		// Delete all contents and insert new paragraphs

+		rng.deleteContents();

+

+		if (tinyMCE.isOpera) {

+			rng.insertNode(paraBefore);

+			rng.insertNode(paraAfter);

+		} else {

+			rng.insertNode(paraAfter);

+			rng.insertNode(paraBefore);

+		}

+

+		//tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);

+

+		// Normalize

+		paraAfter.normalize();

+		paraBefore.normalize();

+

+		inst.selection.moveToBookmark(b);

+		inst.selection.selectNode(paraAfter, true, true);

+

+		return true;

+	},

+

+	_handleBackSpace : function(inst) {

+		var r = inst.getRng(), sn = r.startContainer, nv, s = false;

+

+		// Added body check for bug #1527787

+		if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" && sn.parentNode.nodeName != "BODY") {

+			nv = sn.nodeValue;

+

+			// Handle if a backspace is pressed after a space character #bug 1466054 removed since fix for #1527787

+			/*if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ')

+				s = true;*/

+

+			// Only remove BRs if we are at the end of line #bug 1464152

+			if (nv != null && r.startOffset == nv.length)

+				sn.nextSibling.parentNode.removeChild(sn.nextSibling);

+		}

+

+		if (inst.settings.auto_resize)

+			inst.resizeToContent();

+

+		return s;

+	}

+

+	};

+

+/* file:jscripts/tiny_mce/classes/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), e = this.getElement(), x, y;

+		var w = parseInt(re.offsetWidth), h = parseInt(re.offsetHeight);

+		var ew = parseInt(e.offsetWidth), eh = parseInt(e.offsetHeight);

+

+		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() {

+		var el = this.getElement();

+

+		if (el) {

+			el.style.display = 'block';

+			this.updateBlocker();

+		}

+	},

+

+	hide : function() {

+		var el = this.getElement();

+

+		if (el) {

+			el.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.getElementById(this.id + "_blocker");

+

+			if (!b) {

+				b = d.createElement("iframe");

+

+				b.setAttribute('id', this.id + "_blocker");

+				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, h) {

+		var d = this.doc, e = d.createElement(n);

+

+		e.setAttribute('id', this.id);

+

+		if (c)

+			e.className = c;

+

+		if (!p)

+			p = d.body;

+

+		if (h)

+			e.innerHTML = h;

+

+		p.appendChild(e);

+

+		return this.element = e;

+	},

+

+	exists : function() {

+		return this.doc.getElementById(this.id) != null;

+	},

+

+	parseInt : function(s) {

+		if (s == null || s == '')

+			return 0;

+

+		return parseInt(s);

+	},

+

+	remove : function() {

+		var e = this.getElement(), b = this.getBlocker();

+

+		if (e)

+			e.parentNode.removeChild(e);

+

+		if (b)

+			b.parentNode.removeChild(b);

+	}

+

+	};

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */

+

+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 = [];

+	this.needsUpdate = true;

+};

+

+TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {

+	init : function(s) {

+		var n;

+

+		// Default params

+		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 = [];

+	},

+

+	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="' + tinyMCE.xmlEncode(m[i].js) + '" onmousedown="' + tinyMCE.xmlEncode(m[i].js) + ';return tinyMCE.cancelEvent(event);" onclick="return tinyMCE.cancelEvent(event);" onmouseup="return tinyMCE.cancelEvent(event);"><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) {

+			// Accessibility stuff

+/*			nl = this.getElement().getElementsByTagName("a");

+			if (nl.length > 0)

+				nl[0].focus();*/

+		}

+

+		tinyMCE.lastMenu = this;

+	}

+

+	});

+

+/* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */

+

+tinyMCE.add(TinyMCE_Engine, {

+	debug : function() {

+		var m = "", a, i, l = tinyMCE.log.length;

+

+		for (i=0, a = this.debug.arguments; i<a.length; i++) {

+			m += a[i];

+

+			if (i<a.length-1)

+				m += ', ';

+		}

+

+		if (l < 1000)

+			tinyMCE.log[l] = "[debug] " + m;

+	}

+

+	});

+

 
-/* file:jscripts/tiny_mce/classes/tinymce.js */
-
-var tinymce = {
-	majorVersion : '3',
-	minorVersion : '0.9',
-	releaseDate : '2008-06-02',
-
-	_init : function() {
-		var t = this, d = document, w = window, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
-
-		// Browser checks
-		t.isOpera = w.opera && opera.buildNumber;
-		t.isWebKit = /WebKit/.test(ua);
-		t.isOldWebKit = t.isWebKit && !w.getSelection().getRangeAt;
-		t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);
-		t.isIE6 = t.isIE && /MSIE [56]/.test(ua);
-		t.isGecko = !t.isWebKit && /Gecko/.test(ua);
-		t.isMac = ua.indexOf('Mac') != -1;
-
-		// TinyMCE .NET webcontrol might be setting the values for TinyMCE
-		if (w.tinyMCEPreInit) {
-			t.suffix = tinyMCEPreInit.suffix;
-			t.baseURL = tinyMCEPreInit.base;
-			t.query = tinyMCEPreInit.query;
-			return;
-		}
-
-		// Get suffix and base
-		t.suffix = '';
-
-		// If base element found, add that infront of baseURL
-		nl = d.getElementsByTagName('base');
-		for (i=0; i<nl.length; i++) {
-			if (v = nl[i].href) {
-				// Host only value like http://site.com or http://site.com:8008
-				if (/^https?:\/\/[^\/]+$/.test(v))
-					v += '/';
-
-				base = v ? v.match(/.*\//)[0] : ''; // Get only directory
-			}
-		}
-
-		function getBase(n) {
-			if (n.src && /tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(n.src)) {
-				if (/_(src|dev)\.js/g.test(n.src))
-					t.suffix = '_src';
-
-				if ((p = n.src.indexOf('?')) != -1)
-					t.query = n.src.substring(p + 1);
-
-				t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
-
-				// If path to script is relative and a base href was found add that one infront
-				if (base && t.baseURL.indexOf('://') == -1)
-					t.baseURL = base + t.baseURL;
-
-				return t.baseURL;
-			}
-
-			return null;
-		};
-
-		// Check document
-		nl = d.getElementsByTagName('script');
-		for (i=0; i<nl.length; i++) {
-			if (getBase(nl[i]))
-				return;
-		}
-
-		// Check head
-		n = d.getElementsByTagName('head')[0];
-		if (n) {
-			nl = n.getElementsByTagName('script');
-			for (i=0; i<nl.length; i++) {
-				if (getBase(nl[i]))
-					return;
-			}
-		}
-
-		return;
-	},
-
-	is : function(o, t) {
-		var n = typeof(o);
-
-		if (!t)
-			return n != 'undefined';
-
-		if (t == 'array' && (o instanceof Array))
-			return true;
-
-		return n == t;
-	},
-
-	// #if !jquery
-
-	each : function(o, cb, s) {
-		var n, l;
-
-		if (!o)
-			return 0;
-
-		s = s || o;
-
-		if (typeof(o.length) != 'undefined') {
-			// Indexed arrays, needed for Safari
-			for (n=0, l = o.length; n<l; n++) {
-				if (cb.call(s, o[n], n, o) === false)
-					return 0;
-			}
-		} else {
-			// Hashtables
-			for (n in o) {
-				if (o.hasOwnProperty(n)) {
-					if (cb.call(s, o[n], n, o) === false)
-						return 0;
-				}
-			}
-		}
-
-		return 1;
-	},
-
-	map : function(a, f) {
-		var o = [];
-
-		tinymce.each(a, function(v) {
-			o.push(f(v));
-		});
-
-		return o;
-	},
-
-	grep : function(a, f) {
-		var o = [];
-
-		tinymce.each(a, function(v) {
-			if (!f || f(v))
-				o.push(v);
-		});
-
-		return o;
-	},
-
-	inArray : function(a, v) {
-		var i, l;
-
-		if (a) {
-			for (i = 0, l = a.length; i < l; i++) {
-				if (a[i] === v)
-					return i;
-			}
-		}
-
-		return -1;
-	},
-
-	extend : function(o, e) {
-		var i, a = arguments;
-
-		for (i=1; i<a.length; i++) {
-			e = a[i];
-
-			tinymce.each(e, function(v, n) {
-				if (typeof(v) !== 'undefined')
-					o[n] = v;
-			});
-		}
-
-		return o;
-	},
-
-	trim : function(s) {
-		return (s ? '' + s : '').replace(/^\s*|\s*$/g, '');
-	},
-
-	// #endif
-
-	create : function(s, p) {
-		var t = this, sp, ns, cn, scn, c, de = 0;
-
-		// Parse : <prefix> <class>:<super class>
-		s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
-		cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
-
-		// Create namespace for new class
-		ns = t.createNS(s[3].replace(/\.\w+$/, ''));
-
-		// Class already exists
-		if (ns[cn])
-			return;
-
-		// Make pure static class
-		if (s[2] == 'static') {
-			ns[cn] = p;
-
-			if (this.onCreate)
-				this.onCreate(s[2], s[3], ns[cn]);
-
-			return;
-		}
-
-		// Create default constructor
-		if (!p[cn]) {
-			p[cn] = function() {};
-			de = 1;
-		}
-
-		// Add constructor and methods
-		ns[cn] = p[cn];
-		t.extend(ns[cn].prototype, p);
-
-		// Extend
-		if (s[5]) {
-			sp = t.resolve(s[5]).prototype;
-			scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
-
-			// Extend constructor
-			c = ns[cn];
-			if (de) {
-				// Add passthrough constructor
-				ns[cn] = function() {
-					return sp[scn].apply(this, arguments);
-				};
-			} else {
-				// Add inherit constructor
-				ns[cn] = function() {
-					this.parent = sp[scn];
-					return c.apply(this, arguments);
-				};
-			}
-			ns[cn].prototype[cn] = ns[cn];
-
-			// Add super methods
-			t.each(sp, function(f, n) {
-				ns[cn].prototype[n] = sp[n];
-			});
-
-			// Add overridden methods
-			t.each(p, function(f, n) {
-				// Extend methods if needed
-				if (sp[n]) {
-					ns[cn].prototype[n] = function() {
-						this.parent = sp[n];
-						return f.apply(this, arguments);
-					};
-				} else {
-					if (n != cn)
-						ns[cn].prototype[n] = f;
-				}
-			});
-		}
-
-		// Add static methods
-		t.each(p['static'], function(f, n) {
-			ns[cn][n] = f;
-		});
-
-		if (this.onCreate)
-			this.onCreate(s[2], s[3], ns[cn].prototype);
-	},
-
-	walk : function(o, f, n, s) {
-		s = s || this;
-
-		if (o) {
-			if (n)
-				o = o[n];
-
-			tinymce.each(o, function(o, i) {
-				if (f.call(s, o, i, n) === false)
-					return false;
-
-				tinymce.walk(o, f, n, s);
-			});
-		}
-	},
-
-	createNS : function(n, o) {
-		var i, v;
-
-		o = o || window;
-
-		n = n.split('.');
-		for (i=0; i<n.length; i++) {
-			v = n[i];
-
-			if (!o[v])
-				o[v] = {};
-
-			o = o[v];
-		}
-
-		return o;
-	},
-
-	resolve : function(n, o) {
-		var i, l;
-
-		o = o || window;
-
-		n = n.split('.');
-		for (i=0, l = n.length; i<l; i++) {
-			o = o[n[i]];
-
-			if (!o)
-				break;
-		}
-
-		return o;
-	},
-
-	addUnload : function(f, s) {
-		var t = this, w = window;
-
-		f = {func : f, scope : s || this};
-
-		if (!t.unloads) {
-			function unload() {
-				var li = t.unloads, o, n;
-
-				if (li) {
-					// Call unload handlers
-					for (n in li) {
-						o = li[n];
-
-						if (o && o.func)
-							o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
-					}
-
-					// Detach unload function
-					if (w.detachEvent) {
-						w.detachEvent('onbeforeunload', fakeUnload);
-						w.detachEvent('onunload', unload);
-					} else if (w.removeEventListener)
-						w.removeEventListener('unload', unload, false);
-
-					// Destroy references
-					t.unloads = o = li = w = unload = null;
-
-					// Run garbarge collector on IE
-					if (window.CollectGarbage)
-						window.CollectGarbage();
-				}
-			};
-
-			function fakeUnload() {
-				var d = document;
-
-				// Is there things still loading, then do some magic
-				if (d.readyState == 'interactive') {
-					function stop() {
-						// Prevent memory leak
-						d.detachEvent('onstop', stop);
-
-						// Call unload handler
-						unload();
-
-						d = null;
-					};
-
-					// Fire unload when the currently loading page is stopped
-					d.attachEvent('onstop', stop);
-
-					// Remove onstop listener after a while to prevent the unload function
-					// to execute if the user presses cancel in an onbeforeunload
-					// confirm dialog and then presses the browser stop button
-					window.setTimeout(function() {
-						d.detachEvent('onstop', stop);
-					}, 0);
-				}
-			};
-
-			// Attach unload handler
-			if (w.attachEvent) {
-				w.attachEvent('onunload', unload);
-				w.attachEvent('onbeforeunload', fakeUnload);
-			} else if (w.addEventListener)
-				w.addEventListener('unload', unload, false);
-
-			// Setup initial unload handler array
-			t.unloads = [f];
-		} else
-			t.unloads.push(f);
-
-		return f;
-	},
-
-	removeUnload : function(f) {
-		var u = this.unloads, r = null;
-
-		tinymce.each(u, function(o, i) {
-			if (o && o.func == f) {
-				u.splice(i, 1);
-				r = f;
-				return false;
-			}
-		});
-
-		return r;
-	},
-
-	explode : function(s, d) {
-		return s ? tinymce.map(s.split(d || ','), tinymce.trim) : s;
-	},
-
-	_addVer : function(u) {
-		var v;
-
-		if (!this.query)
-			return u;
-
-		v = (u.indexOf('?') == -1 ? '?' : '&') + this.query;
-
-		if (u.indexOf('#') == -1)
-			return u + v;
-
-		return u.replace('#', v + '#');
-	}
-
-	};
-
-// Required for GZip AJAX loading
-window.tinymce = tinymce;
-
-// Initialize the API
-tinymce._init();
-
-/* file:jscripts/tiny_mce/classes/adapter/jquery/adapter.js */
-
-
-/* file:jscripts/tiny_mce/classes/adapter/prototype/adapter.js */
-
-
-/* file:jscripts/tiny_mce/classes/util/Dispatcher.js */
-
-tinymce.create('tinymce.util.Dispatcher', {
-	scope : null,
-	listeners : null,
-
-	Dispatcher : function(s) {
-		this.scope = s || this;
-		this.listeners = [];
-	},
-
-	add : function(cb, s) {
-		this.listeners.push({cb : cb, scope : s || this.scope});
-
-		return cb;
-	},
-
-	addToTop : function(cb, s) {
-		this.listeners.unshift({cb : cb, scope : s || this.scope});
-
-		return cb;
-	},
-
-	remove : function(cb) {
-		var l = this.listeners, o = null;
-
-		tinymce.each(l, function(c, i) {
-			if (cb == c.cb) {
-				o = cb;
-				l.splice(i, 1);
-				return false;
-			}
-		});
-
-		return o;
-	},
-
-	dispatch : function() {
-		var s, a = arguments, i, li = this.listeners, c;
-
-		// Needs to be a real loop since the listener count might change while looping
-		// And this is also more efficient
-		for (i = 0; i<li.length; i++) {
-			c = li[i];
-			s = c.cb.apply(c.scope, a);
-
-			if (s === false)
-				break;
-		}
-
-		return s;
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/util/URI.js */
-
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('tinymce.util.URI', {
-		URI : function(u, s) {
-			var t = this, o, a, b;
-
-			// Default settings
-			s = t.settings = s || {};
-
-			// Strange app protocol or local anchor
-			if (/^(mailto|news|javascript|about):/i.test(u) || /^\s*#/.test(u)) {
-				t.source = u;
-				return;
-			}
-
-			// Absolute path with no host, fake host and protocol
-			if (u.indexOf('/') === 0 && u.indexOf('//') !== 0)
-				u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;
-
-			// Relative path
-			if (u.indexOf('://') === -1 && u.indexOf('//') !== 0)
-				u = (s.base_uri.protocol || 'http') + '://mce_host' + t.toAbsPath(s.base_uri.path, u);
-
-			// Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
-			u = u.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
-			u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);
-			each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {
-				var s = u[i];
-
-				// Zope 3 workaround, they use @@something
-				if (s)
-					s = s.replace(/\(mce_at\)/g, '@@');
-
-				t[v] = s;
-			});
-
-			if (b = s.base_uri) {
-				if (!t.protocol)
-					t.protocol = b.protocol;
-
-				if (!t.userInfo)
-					t.userInfo = b.userInfo;
-
-				if (!t.port && t.host == 'mce_host')
-					t.port = b.port;
-
-				if (!t.host || t.host == 'mce_host')
-					t.host = b.host;
-
-				t.source = '';
-			}
-
-			//t.path = t.path || '/';
-		},
-
-		setPath : function(p) {
-			var t = this;
-
-			p = /^(.*?)\/?(\w+)?$/.exec(p);
-
-			// Update path parts
-			t.path = p[0];
-			t.directory = p[1];
-			t.file = p[2];
-
-			// Rebuild source
-			t.source = '';
-			t.getURI();
-		},
-
-		toRelative : function(u) {
-			var t = this, o;
-
-			u = new tinymce.util.URI(u, {base_uri : t});
-
-			// Not on same domain/port or protocol
-			if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)
-				return u.getURI();
-
-			o = t.toRelPath(t.path, u.path);
-
-			// Add query
-			if (u.query)
-				o += '?' + u.query;
-
-			// Add anchor
-			if (u.anchor)
-				o += '#' + u.anchor;
-
-			return o;
-		},
-	
-		toAbsolute : function(u, nh) {
-			var u = new tinymce.util.URI(u, {base_uri : this});
-
-			return u.getURI(this.host == u.host ? nh : 0);
-		},
-
-		toRelPath : function(base, path) {
-			var items, bp = 0, out = '', i;
-
-			// Split the paths
-			base = base.substring(0, base.lastIndexOf('/'));
-			base = base.split('/');
-			items = path.split('/');
-
-			if (base.length >= items.length) {
-				for (i = 0; i < base.length; i++) {
-					if (i >= items.length || base[i] != items[i]) {
-						bp = i + 1;
-						break;
-					}
-				}
-			}
-
-			if (base.length < items.length) {
-				for (i = 0; i < items.length; i++) {
-					if (i >= base.length || base[i] != items[i]) {
-						bp = i + 1;
-						break;
-					}
-				}
-			}
-
-			if (bp == 1)
-				return path;
-
-			for (i = 0; i < base.length - (bp - 1); i++)
-				out += "../";
-
-			for (i = bp - 1; i < items.length; i++) {
-				if (i != bp - 1)
-					out += "/" + items[i];
-				else
-					out += items[i];
-			}
-
-			return out;
-		},
-
-		toAbsPath : function(base, path) {
-			var i, nb = 0, o = [];
-
-			// Split paths
-			base = base.split('/');
-			path = path.split('/');
-
-			// Remove empty chunks
-			each(base, function(k) {
-				if (k)
-					o.push(k);
-			});
-
-			base = o;
-
-			// Merge relURLParts chunks
-			for (i = path.length - 1, o = []; i >= 0; i--) {
-				// Ignore empty or .
-				if (path[i].length == 0 || path[i] == ".")
-					continue;
-
-				// Is parent
-				if (path[i] == '..') {
-					nb++;
-					continue;
-				}
-
-				// Move up
-				if (nb > 0) {
-					nb--;
-					continue;
-				}
-
-				o.push(path[i]);
-			}
-
-			i = base.length - nb;
-
-			// If /a/b/c or /
-			if (i <= 0)
-				return '/' + o.reverse().join('/');
-
-			return '/' + base.slice(0, i).join('/') + '/' + o.reverse().join('/');
-		},
-
-		getURI : function(nh) {
-			var s, t = this;
-
-			// Rebuild source
-			if (!t.source || nh) {
-				s = '';
-
-				if (!nh) {
-					if (t.protocol)
-						s += t.protocol + '://';
-
-					if (t.userInfo)
-						s += t.userInfo + '@';
-
-					if (t.host)
-						s += t.host;
-
-					if (t.port)
-						s += ':' + t.port;
-				}
-
-				if (t.path)
-					s += t.path;
-
-				if (t.query)
-					s += '?' + t.query;
-
-				if (t.anchor)
-					s += '#' + t.anchor;
-
-				t.source = s;
-			}
-
-			return t.source;
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/util/Cookie.js */
-
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('static tinymce.util.Cookie', {
-		getHash : function(n) {
-			var v = this.get(n), h;
-
-			if (v) {
-				each(v.split('&'), function(v) {
-					v = v.split('=');
-					h = h || {};
-					h[unescape(v[0])] = unescape(v[1]);
-				});
-			}
-
-			return h;
-		},
-
-		setHash : function(n, v, e, p, d, s) {
-			var o = '';
-
-			each(v, function(v, k) {
-				o += (!o ? '' : '&') + escape(k) + '=' + escape(v);
-			});
-
-			this.set(n, o, e, p, d, s);
-		},
-
-		get : function(n) {
-			var c = document.cookie, e, p = n + "=", b;
-
-			// Strict mode
-			if (!c)
-				return;
-
-			b = c.indexOf("; " + p);
-
-			if (b == -1) {
-				b = c.indexOf(p);
-
-				if (b != 0)
-					return null;
-			} else
-				b += 2;
-
-			e = c.indexOf(";", b);
-
-			if (e == -1)
-				e = c.length;
-
-			return unescape(c.substring(b + p.length, e));
-		},
-
-		set : function(n, v, e, p, d, s) {
-			document.cookie = n + "=" + escape(v) +
-				((e) ? "; expires=" + e.toGMTString() : "") +
-				((p) ? "; path=" + escape(p) : "") +
-				((d) ? "; domain=" + d : "") +
-				((s) ? "; secure" : "");
-		},
-
-		remove : function(n, p) {
-			var d = new Date();
-
-			d.setTime(d.getTime() - 1000);
-
-			this.set(n, '', d, p, d);
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/util/JSON.js */
-
-tinymce.create('static tinymce.util.JSON', {
-	serialize : function(o) {
-		var i, v, s = tinymce.util.JSON.serialize, t;
-
-		if (o == null)
-			return 'null';
-
-		t = typeof o;
-
-		if (t == 'string') {
-			v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
-
-			return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'])/g, function(a, b) {
-				i = v.indexOf(b);
-
-				if (i + 1)
-					return '\\' + v.charAt(i + 1);
-
-				a = b.charCodeAt().toString(16);
-
-				return '\\u' + '0000'.substring(a.length) + a;
-			}) + '"';
-		}
-
-		if (t == 'object') {
-			if (o instanceof Array) {
-					for (i=0, v = '['; i<o.length; i++)
-						v += (i > 0 ? ',' : '') + s(o[i]);
-
-					return v + ']';
-				}
-
-				v = '{';
-
-				for (i in o)
-					v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';
-
-				return v + '}';
-		}
-
-		return '' + o;
-	},
-
-	parse : function(s) {
-		try {
-			return eval('(' + s + ')');
-		} catch (ex) {
-			// Ignore
-		}
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/util/XHR.js */
-
-tinymce.create('static tinymce.util.XHR', {
-	send : function(o) {
-		var x, t, w = window, c = 0;
-
-		// Default settings
-		o.scope = o.scope || this;
-		o.success_scope = o.success_scope || o.scope;
-		o.error_scope = o.error_scope || o.scope;
-		o.async = o.async === false ? false : true;
-		o.data = o.data || '';
-
-		function get(s) {
-			x = 0;
-
-			try {
-				x = new ActiveXObject(s);
-			} catch (ex) {
-			}
-
-			return x;
-		};
-
-		x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP');
-
-		if (x) {
-			if (x.overrideMimeType)
-				x.overrideMimeType(o.content_type);
-
-			x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async);
-
-			if (o.content_type)
-				x.setRequestHeader('Content-Type', o.content_type);
-
-			x.send(o.data);
-
-			function ready() {
-				if (!o.async || x.readyState == 4 || c++ > 10000) {
-					if (o.success && c < 10000 && x.status == 200)
-						o.success.call(o.success_scope, '' + x.responseText, x, o);
-					else if (o.error)
-						o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
-
-					x = null;
-				} else
-					w.setTimeout(ready, 10);
-			};
-
-			// Syncronous request
-			if (!o.async)
-				return ready();
-
-			// Wait for response, onReadyStateChange can not be used since it leaks memory in IE
-			t = w.setTimeout(ready, 10);
-		}
-
-		}
-});
-
-/* file:jscripts/tiny_mce/classes/util/JSONRequest.js */
-
-(function() {
-	var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR;
-
-	tinymce.create('tinymce.util.JSONRequest', {
-		JSONRequest : function(s) {
-			this.settings = extend({
-			}, s);
-			this.count = 0;
-		},
-
-		send : function(o) {
-			var ecb = o.error, scb = o.success;
-
-			o = extend(this.settings, o);
-
-			o.success = function(c, x) {
-				c = JSON.parse(c);
-
-				if (typeof(c) == 'undefined') {
-					c = {
-						error : 'JSON Parse error.'
-					};
-				}
-
-				if (c.error)
-					ecb.call(o.error_scope || o.scope, c.error, x);
-				else
-					scb.call(o.success_scope || o.scope, c.result);
-			};
-
-			o.error = function(ty, x) {
-				ecb.call(o.error_scope || o.scope, ty, x);
-			};
-
-			o.data = JSON.serialize({
-				id : o.id || 'c' + (this.count++),
-				method : o.method,
-				params : o.params
-			});
-
-			// JSON content type for Ruby on rails. Bug: #1883287
-			o.content_type = 'application/json';
-
-			XHR.send(o);
-		},
-
-		'static' : {
-			sendRPC : function(o) {
-				return new tinymce.util.JSONRequest().send(o);
-			}
-		}
-
-		});
-}());
-/* file:jscripts/tiny_mce/classes/dom/DOMUtils.js */
-
-(function() {
-	// Shorten names
-	var each = tinymce.each, is = tinymce.is;
-	var isWebKit = tinymce.isWebKit, isIE = tinymce.isIE;
-
-	tinymce.create('tinymce.dom.DOMUtils', {
-		doc : null,
-		root : null,
-		files : null,
-		listeners : {},
-		pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,
-		cache : {},
-		idPattern : /^#[\w]+$/,
-		elmPattern : /^[\w_*]+$/,
-		elmClassPattern : /^([\w_]*)\.([\w_]+)$/,
-
-		DOMUtils : function(d, s) {
-			var t = this;
-
-			t.doc = d;
-			t.win = window;
-			t.files = {};
-			t.cssFlicker = false;
-			t.counter = 0;
-			t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat"; 
-			t.stdMode = d.documentMode === 8;
-
-			this.settings = s = tinymce.extend({
-				keep_values : false,
-				hex_colors : 1,
-				process_html : 1
-			}, s);
-
-			// Fix IE6SP2 flicker and check it failed for pre SP2
-			if (tinymce.isIE6) {
-				try {
-					d.execCommand('BackgroundImageCache', false, true);
-				} catch (e) {
-					t.cssFlicker = true;
-				}
-			}
-
-			tinymce.addUnload(t.destroy, t);
-		},
-
-		getRoot : function() {
-			var t = this, s = t.settings;
-
-			return (s && t.get(s.root_element)) || t.doc.body;
-		},
-
-		getViewPort : function(w) {
-			var d, b;
-
-			w = !w ? this.win : w;
-			d = w.document;
-			b = this.boxModel ? d.documentElement : d.body;
-
-			// Returns viewport size excluding scrollbars
-			return {
-				x : w.pageXOffset || b.scrollLeft,
-				y : w.pageYOffset || b.scrollTop,
-				w : w.innerWidth || b.clientWidth,
-				h : w.innerHeight || b.clientHeight
-			};
-		},
-
-		getRect : function(e) {
-			var p, t = this, w, h;
-
-			e = t.get(e);
-			p = t.getPos(e);
-			w = t.getStyle(e, 'width');
-			h = t.getStyle(e, 'height');
-
-			// Non pixel value, then force offset/clientWidth
-			if (w.indexOf('px') === -1)
-				w = 0;
-
-			// Non pixel value, then force offset/clientWidth
-			if (h.indexOf('px') === -1)
-				h = 0;
-
-			return {
-				x : p.x,
-				y : p.y,
-				w : parseInt(w) || e.offsetWidth || e.clientWidth,
-				h : parseInt(h) || e.offsetHeight || e.clientHeight
-			};
-		},
-
-		getParent : function(n, f, r) {
-			var na, se = this.settings;
-
-			n = this.get(n);
-
-			if (se.strict_root)
-				r = r || this.getRoot();
-
-			// Wrap node name as func
-			if (is(f, 'string')) {
-				na = f.toUpperCase();
-
-				f = function(n) {
-					var s = false;
-
-					// Any element
-					if (n.nodeType == 1 && na === '*') {
-						s = true;
-						return false;
-					}
-
-					each(na.split(','), function(v) {
-						if (n.nodeType == 1 && ((se.strict && n.nodeName.toUpperCase() == v) || n.nodeName.toUpperCase() == v)) {
-							s = true;
-							return false; // Break loop
-						}
-					});
-
-					return s;
-				};
-			}
-
-			while (n) {
-				if (n == r)
-					return null;
-
-				if (f(n))
-					return n;
-
-				n = n.parentNode;
-			}
-
-			return null;
-		},
-
-		get : function(e) {
-			var n;
-
-			if (e && this.doc && typeof(e) == 'string') {
-				n = e;
-				e = this.doc.getElementById(e);
-
-				// IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
-				if (e && e.id !== n)
-					return this.doc.getElementsByName(n)[1];
-			}
-
-			return e;
-		},
-
-		// #if !jquery
-
-		select : function(pa, s) {
-			var t = this, cs, c, pl, o = [], x, i, l, n;
-
-			s = t.get(s) || t.doc;
-
-			// Look for native support and use that if it's found
-			if (s.querySelectorAll) {
-				// Element scope then use temp id
-				// We need to do this to be compatible with other implementations
-				// See bug report: http://bugs.webkit.org/show_bug.cgi?id=17461
-				if (s != t.doc) {
-					i = s.id;
-					s.id = '_mc_tmp';
-					pa = '#_mc_tmp ' + pa;
-				}
-
-				// Select elements
-				l = tinymce.grep(s.querySelectorAll(pa));
-
-				// Restore old id
-				s.id = i;
-
-				return l;
-			}
-
-			if (t.settings.strict) {
-				function get(s, n) {
-					return s.getElementsByTagName(n.toLowerCase());
-				};
-			} else {
-				function get(s, n) {
-					return s.getElementsByTagName(n);
-				};
-			}
-
-			// Simple element pattern. For example: "p" or "*"
-			if (t.elmPattern.test(pa)) {
-				x = get(s, pa);
-
-				for (i = 0, l = x.length; i<l; i++)
-					o.push(x[i]);
-
-				return o;
-			}
-
-			// Simple class pattern. For example: "p.class" or ".class"
-			if (t.elmClassPattern.test(pa)) {
-				pl = t.elmClassPattern.exec(pa);
-				x = get(s, pl[1] || '*');
-				c = ' ' + pl[2] + ' ';
-
-				for (i = 0, l = x.length; i<l; i++) {
-					n = x[i];
-
-					if (n.className && (' ' + n.className + ' ').indexOf(c) !== -1)
-						o.push(n);
-				}
-
-				return o;
-			}
-
-			function collect(n) {
-				if (!n.mce_save) {
-					n.mce_save = 1;
-					o.push(n);
-				}
-			};
-
-			function collectIE(n) {
-				if (!n.getAttribute('mce_save')) {
-					n.setAttribute('mce_save', '1');
-					o.push(n);
-				}
-			};
-
-			function find(n, f, r) {
-				var i, l, nl = get(r, n);
-
-				for (i = 0, l = nl.length; i < l; i++)
-					f(nl[i]);
-			};
-
-			each(pa.split(','), function(v, i) {
-				v = tinymce.trim(v);
-
-				// Simple element pattern, most common in TinyMCE
-				if (t.elmPattern.test(v)) {
-					each(get(s, v), function(n) {
-						collect(n);
-					});
-
-					return;
-				}
-
-				// Simple element pattern with class, fairly common in TinyMCE
-				if (t.elmClassPattern.test(v)) {
-					x = t.elmClassPattern.exec(v);
-
-					each(get(s, x[1]), function(n) {
-						if (t.hasClass(n, x[2]))
-							collect(n);
-					});
-
-					return;
-				}
-
-				if (!(cs = t.cache[pa])) {
-					cs = 'x=(function(cf, s) {';
-					pl = v.split(' ');
-
-					each(pl, function(v) {
-						var p = /^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i.exec(v);
-
-						// Find elements
-						p[1] = p[1] || '*';
-						cs += 'find("' + p[1] + '", function(n) {';
-
-						// Check id
-						if (p[2])
-							cs += 'if (n.id !== "' + p[2] + '") return;';
-
-						// Check classes
-						if (p[3]) {
-							cs += 'var c = " " + n.className + " ";';
-							cs += 'if (';
-							c = '';
-							each(p[3].split('.'), function(v) {
-								if (v)
-									c += (c ? '||' : '') + 'c.indexOf(" ' + v + ' ") === -1';
-							});
-							cs += c + ') return;';
-						}
-					});
-
-					cs += 'cf(n);';
-
-					for (i = pl.length - 1; i >= 0; i--)
-						cs += '}, ' + (i ? 'n' : 's') + ');';
-
-					cs += '})';
-
-					// Compile CSS pattern function
-					t.cache[pa] = cs = eval(cs);
-				}
-
-				// Run selector function
-				cs(isIE ? collectIE : collect, s);
-			});
-
-			// Cleanup
-			each(o, function(n) {
-				if (isIE)
-					n.removeAttribute('mce_save');
-				else
-					delete n.mce_save;
-			});
-
-			return o;
-		},
-
-		// #endif
-
-		add : function(p, n, a, h, c) {
-			var t = this;
-
-			return this.run(p, function(p) {
-				var e, k;
-
-				e = is(n, 'string') ? t.doc.createElement(n) : n;
-
-				if (a) {
-					for (k in a) {
-						if (a.hasOwnProperty(k) && !is(a[k], 'object'))
-							t.setAttrib(e, k, '' + a[k]);
-					}
-
-					if (a.style && !is(a.style, 'string')) {
-						each(a.style, function(v, n) {
-							t.setStyle(e, n, v);
-						});
-					}
-				}
-
-				if (h) {
-					if (h.nodeType)
-						e.appendChild(h);
-					else
-						t.setHTML(e, h);
-				}
-
-				return !c ? p.appendChild(e) : e;
-			});
-		},
-
-		create : function(n, a, h) {
-			return this.add(this.doc.createElement(n), n, a, h, 1);
-		},
-
-		createHTML : function(n, a, h) {
-			var o = '', t = this, k;
-
-			o += '<' + n;
-
-			for (k in a) {
-				if (a.hasOwnProperty(k))
-					o += ' ' + k + '="' + t.encode(a[k]) + '"';
-			}
-
-			if (tinymce.is(h))
-				return o + '>' + h + '</' + n + '>';
-
-			return o + ' />';
-		},
-
-		remove : function(n, k) {
-			return this.run(n, function(n) {
-				var p, g;
-
-				p = n.parentNode;
-
-				if (!p)
-					return null;
-
-				if (k) {
-					each (n.childNodes, function(c) {
-						p.insertBefore(c.cloneNode(true), n);
-					});
-				}
-
-				// Fix IE psuedo leak
-		/*		if (isIE) {
-					p = n.cloneNode(true);
-					n.outerHTML = '';
-
-					return p;
-				}*/
-
-				return p.removeChild(n);
-			});
-		},
-
-		// #if !jquery
-
-		setStyle : function(n, na, v) {
-			var t = this;
-
-			return t.run(n, function(e) {
-				var s, i;
-
-				s = e.style;
-
-				// Camelcase it, if needed
-				na = na.replace(/-(\D)/g, function(a, b){
-					return b.toUpperCase();
-				});
-
-				// Default px suffix on these
-				if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v)))
-					v += 'px';
-
-				switch (na) {
-					case 'opacity':
-						// IE specific opacity
-						if (isIE) {
-							s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
-
-							if (!n.currentStyle || !n.currentStyle.hasLayout)
-								s.display = 'inline-block';
-						}
-
-						// Fix for older browsers
-						s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || '';
-						break;
-
-					case 'float':
-						isIE ? s.styleFloat = v : s.cssFloat = v;
-						break;
-					
-					default:
-						s[na] = v || '';
-				}
-
-				// Force update of the style data
-				if (t.settings.update_styles)
-					t.setAttrib(e, 'mce_style');
-			});
-		},
-
-		getStyle : function(n, na, c) {
-			n = this.get(n);
-
-			if (!n)
-				return false;
-
-			// Gecko
-			if (this.doc.defaultView && c) {
-				// Remove camelcase
-				na = na.replace(/[A-Z]/g, function(a){
-					return '-' + a;
-				});
-
-				try {
-					return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na);
-				} catch (ex) {
-					// Old safari might fail
-					return null;
-				}
-			}
-
-			// Camelcase it, if needed
-			na = na.replace(/-(\D)/g, function(a, b){
-				return b.toUpperCase();
-			});
-
-			if (na == 'float')
-				na = isIE ? 'styleFloat' : 'cssFloat';
-
-			// IE & Opera
-			if (n.currentStyle && c)
-				return n.currentStyle[na];
-
-			return n.style[na];
-		},
-
-		setStyles : function(e, o) {
-			var t = this, s = t.settings, ol;
-
-			ol = s.update_styles;
-			s.update_styles = 0;
-
-			each(o, function(v, n) {
-				t.setStyle(e, n, v);
-			});
-
-			// Update style info
-			s.update_styles = ol;
-			if (s.update_styles)
-				t.setAttrib(e, s.cssText);
-		},
-
-		setAttrib : function(e, n, v) {
-			var t = this;
-
-			// Strict XML mode
-			if (t.settings.strict)
-				n = n.toLowerCase();
-
-			return this.run(e, function(e) {
-				var s = t.settings;
-
-				switch (n) {
-					case "style":
-						// No mce_style for elements with these since they might get resized by the user
-						if (s.keep_values) {
-							if (v && !t._isRes(v))
-								e.setAttribute('mce_style', v, 2);
-							else
-								e.removeAttribute('mce_style', 2);
-						}
-
-						e.style.cssText = v;
-						break;
-
-					case "class":
-						e.className = v || ''; // Fix IE null bug
-						break;
-
-					case "src":
-					case "href":
-						if (s.keep_values) {
-							if (s.url_converter)
-								v = s.url_converter.call(s.url_converter_scope || t, v, n, e);
-
-							t.setAttrib(e, 'mce_' + n, v, 2);
-						}
-
-						break;
-				}
-
-				if (is(v) && v !== null && v.length !== 0)
-					e.setAttribute(n, '' + v, 2);
-				else
-					e.removeAttribute(n, 2);
-			});
-		},
-
-		setAttribs : function(e, o) {
-			var t = this;
-
-			return this.run(e, function(e) {
-				each(o, function(v, n) {
-					t.setAttrib(e, n, v);
-				});
-			});
-		},
-
-		// #endif
-
-		getAttrib : function(e, n, dv) {
-			var v, t = this;
-
-			e = t.get(e);
-
-			if (!e || e.nodeType !== 1)
-				return false;
-
-			if (!is(dv))
-				dv = "";
-
-			// Try the mce variant for these
-			if (/^(src|href|style|coords)$/.test(n)) {
-				v = e.getAttribute("mce_" + n);
-
-				if (v)
-					return v;
-			}
-
-			v = e.getAttribute(n, 2);
-
-			if (!v) {
-				switch (n) {
-					case 'class':
-						v = e.className;
-						break;
-
-					default:
-						// Fix for IE crash Bug: #1884376 probably due to invalid DOM structure
-						if (isIE && n === 'name' && e.nodeName === 'A') {
-							v = e.name;
-							break;
-						}
-
-						v = e.attributes[n];
-						v = v && is(v.nodeValue) ? v.nodeValue : v;
-				}
-			}
-
-			switch (n) {
-				case 'style':
-					v = v || e.style.cssText;
-
-					if (v) {
-						v = t.serializeStyle(t.parseStyle(v));
-
-						if (t.settings.keep_values && !t._isRes(v))
-							e.setAttribute('mce_style', v);
-					}
-
-					break;
-			}
-
-			// Remove Apple and WebKit stuff
-			if (isWebKit && n === "class" && v)
-				v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, '');
-
-			// Handle IE issues
-			if (isIE) {
-				switch (n) {
-					case 'rowspan':
-					case 'colspan':
-						// IE returns 1 as default value
-						if (v === 1)
-							v = '';
-
-						break;
-
-					case 'size':
-						// IE returns +0 as default value for size
-						if (v === '+0')
-							v = '';
-
-						break;
-
-					case 'hspace':
-						// IE returns -1 as default value
-						if (v === -1)
-							v = '';
-
-						break;
-
-					case 'tabindex':
-						// IE returns 32768 as default value
-						if (v === 32768)
-							v = '';
-
-						break;
-
-					case 'shape':
-						v = v.toLowerCase();
-						break;
-
-					default:
-						// IE has odd anonymous function for event attributes
-						if (n.indexOf('on') === 0 && v)
-							v = ('' + v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/, '$1');
-				}
-			}
-
-			return (v && v != '') ? '' + v : dv;
-		},
-
-		getPos : function(n) {
-			var t = this, x = 0, y = 0, e, d = t.doc, r;
-
-			n = t.get(n);
-
-			// Use getBoundingClientRect on IE, Opera has it but it's not perfect
-			if (n && isIE) {
-				n = n.getBoundingClientRect();
-				e = t.boxModel ? d.documentElement : d.body;
-				x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border
-				x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;
-				n.top += t.win.self != t.win.top ? 2 : 0; // IE adds some strange extra cord if used in a frameset
-
-				return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};
-			}
-
-			r = n;
-			while (r) {
-				x += r.offsetLeft || 0;
-				y += r.offsetTop || 0;
-				r = r.offsetParent;
-			}
-
-			r = n;
-			while (r) {
-				// Opera 9.25 bug fix, fixed in 9.50
-				if (!/^table-row|inline.*/i.test(t.getStyle(r, "display", 1))) {
-					x -= r.scrollLeft || 0;
-					y -= r.scrollTop || 0;
-				}
-
-				r = r.parentNode;
-
-				if (r == d.body)
-					break;
-			}
-
-			return {x : x, y : y};
-		},
-
-		parseStyle : function(st) {
-			var t = this, s = t.settings, o = {};
-
-			if (!st)
-				return o;
-
-			function compress(p, s, ot) {
-				var t, r, b, l;
-
-				// Get values and check it it needs compressing
-				t = o[p + '-top' + s];
-				if (!t)
-					return;
-
-				r = o[p + '-right' + s];
-				if (t != r)
-					return;
-
-				b = o[p + '-bottom' + s];
-				if (r != b)
-					return;
-
-				l = o[p + '-left' + s];
-				if (b != l)
-					return;
-
-				// Compress
-				o[ot] = l;
-				delete o[p + '-top' + s];
-				delete o[p + '-right' + s];
-				delete o[p + '-bottom' + s];
-				delete o[p + '-left' + s];
-			};
-
-			function compress2(ta, a, b, c) {
-				var t;
-
-				t = o[a];
-				if (!t)
-					return;
-
-				t = o[b];
-				if (!t)
-					return;
-
-				t = o[c];
-				if (!t)
-					return;
-
-				// Compress
-				o[ta] = o[a] + ' ' + o[b] + ' ' + o[c];
-				delete o[a];
-				delete o[b];
-				delete o[c];
-			};
-
-			each(st.split(';'), function(v) {
-				var sv, ur = [];
-
-				if (v) {
-					v = v.replace(/url\([^\)]+\)/g, function(v) {ur.push(v);return 'url(' + ur.length + ')';});
-					v = v.split(':');
-					sv = tinymce.trim(v[1]);
-					sv = sv.replace(/url\(([^\)]+)\)/g, function(a, b) {return ur[parseInt(b) - 1];});
-
-					sv = sv.replace(/rgb\([^\)]+\)/g, function(v) {
-						return t.toHex(v);
-					});
-
-					if (s.url_converter) {
-						sv = sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g, function(x, c) {
-							return 'url(' + t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), 'style', null)) + ')';
-						});
-					}
-
-					o[tinymce.trim(v[0]).toLowerCase()] = sv;
-				}
-			});
-
-			compress("border", "", "border");
-			compress("border", "-width", "border-width");
-			compress("border", "-color", "border-color");
-			compress("border", "-style", "border-style");
-			compress("padding", "", "padding");
-			compress("margin", "", "margin");
-			compress2('border', 'border-width', 'border-style', 'border-color');
-
-			if (isIE) {
-				// Remove pointless border
-				if (o.border == 'medium none')
-					o.border = '';
-			}
-
-			return o;
-		},
-
-		serializeStyle : function(o) {
-			var s = '';
-
-			each(o, function(v, k) {
-				if (k && v) {
-					switch (k) {
-						case 'color':
-						case 'background-color':
-							v = v.toLowerCase();
-							break;
-					}
-
-					s += (s ? ' ' : '') + k + ': ' + v + ';';
-				}
-			});
-
-			return s;
-		},
-
-		loadCSS : function(u) {
-			var t = this, d = t.doc;
-
-			if (!u)
-				u = '';
-
-			each(u.split(','), function(u) {
-				if (t.files[u])
-					return;
-
-				t.files[u] = true;
-				t.add(t.select('head')[0], 'link', {rel : 'stylesheet', href : tinymce._addVer(u)});
-			});
-		},
-
-		// #if !jquery
-
-		addClass : function(e, c) {
-			return this.run(e, function(e) {
-				var o;
-
-				if (!c)
-					return 0;
-
-				if (this.hasClass(e, c))
-					return e.className;
-
-				o = this.removeClass(e, c);
-
-				return e.className = (o != '' ? (o + ' ') : '') + c;
-			});
-		},
-
-		removeClass : function(e, c) {
-			var t = this, re;
-
-			return t.run(e, function(e) {
-				var v;
-
-				if (t.hasClass(e, c)) {
-					if (!re)
-						re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g");
-
-					v = e.className.replace(re, ' ');
-
-					return e.className = tinymce.trim(v != ' ' ? v : '');
-				}
-
-				return e.className;
-			});
-		},
-
-		hasClass : function(n, c) {
-			n = this.get(n);
-
-			if (!n || !c)
-				return false;
-
-			return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1;
-		},
-
-		show : function(e) {
-			return this.setStyle(e, 'display', 'block');
-		},
-
-		hide : function(e) {
-			return this.setStyle(e, 'display', 'none');
-		},
-
-		isHidden : function(e) {
-			e = this.get(e);
-
-			return e.style.display == 'none' || this.getStyle(e, 'display') == 'none';
-		},
-
-		// #endif
-
-		uniqueId : function(p) {
-			return (!p ? 'mce_' : p) + (this.counter++);
-		},
-
-		setHTML : function(e, h) {
-			var t = this;
-
-			return this.run(e, function(e) {
-				var x, i, nl, n, p, x;
-
-				h = t.processHTML(h);
-
-				if (isIE) {
-					function set() {
-						try {
-							// IE will remove comments from the beginning
-							// unless you padd the contents with something
-							e.innerHTML = '<br />' + h;
-							e.removeChild(e.firstChild);
-						} catch (ex) {
-							// IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p
-							// This seems to fix this problem
-
-							// Remove all child nodes
-							while (e.firstChild)
-								e.firstChild.removeNode();
-
-							// Create new div with HTML contents and a BR infront to keep comments
-							x = t.create('div');
-							x.innerHTML = '<br />' + h;
-
-							// Add all children from div to target
-							each (x.childNodes, function(n, i) {
-								// Skip br element
-								if (i)
-									e.appendChild(n);
-							});
-						}
-					};
-
-					// IE has a serious bug when it comes to paragraphs it can produce an invalid
-					// DOM tree if contents like this <p><ul><li>Item 1</li></ul></p> is inserted
-					// It seems to be that IE doesn't like a root block element placed inside another root block element
-					if (t.settings.fix_ie_paragraphs)
-						h = h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi, '<p$1 mce_keep="true">&nbsp;</p>');
-
-					set();
-
-					if (t.settings.fix_ie_paragraphs) {
-						// Check for odd paragraphs this is a sign of a broken DOM
-						nl = e.getElementsByTagName("p");
-						for (i = nl.length - 1, x = 0; i >= 0; i--) {
-							n = nl[i];
-
-							if (!n.hasChildNodes()) {
-								if (!n.mce_keep) {
-									x = 1; // Is broken
-									break;
-								}
-
-								n.removeAttribute('mce_keep');
-							}
-						}
-					}
-
-					// Time to fix the madness IE left us
-					if (x) {
-						// So if we replace the p elements with divs and mark them and then replace them back to paragraphs
-						// after we use innerHTML we can fix the DOM tree
-						h = h.replace(/<p([^>]+)>|<p>/g, '<div$1 mce_tmp="1">');
-						h = h.replace(/<\/p>/g, '</div>');
-
-						// Set the new HTML with DIVs
-						set();
-
-						// Replace all DIV elements with he mce_tmp attibute back to paragraphs
-						// This is needed since IE has a annoying bug see above for details
-						// This is a slow process but it has to be done. :(
-						if (t.settings.fix_ie_paragraphs) {
-							nl = e.getElementsByTagName("DIV");
-							for (i = nl.length - 1; i >= 0; i--) {
-								n = nl[i];
-
-								// Is it a temp div
-								if (n.mce_tmp) {
-									// Create new paragraph
-									p = t.doc.createElement('p');
-
-									// Copy all attributes
-									n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi, function(a, b) {
-										var v;
-
-										if (b !== 'mce_tmp') {
-											v = n.getAttribute(b);
-
-											if (!v && b === 'class')
-												v = n.className;
-
-											p.setAttribute(b, v);
-										}
-									});
-
-									// Append all children to new paragraph
-									for (x = 0; x<n.childNodes.length; x++)
-										p.appendChild(n.childNodes[x].cloneNode(true));
-
-									// Replace div with new paragraph
-									n.swapNode(p);
-								}
-							}
-						}
-					}
-				} else
-					e.innerHTML = h;
-
-				return h;
-			});
-		},
-
-		processHTML : function(h) {
-			var t = this, s = t.settings;
-
-			if (!s.process_html)
-				return h;
-
-			// Convert strong and em to b and i in FF since it can't handle them
-			if (tinymce.isGecko) {
-				h = h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi, '<$1b$2>');
-				h = h.replace(/<(\/?)em>|<em( [^>]+)>/gi, '<$1i$2>');
-			} else if (isIE)
-				h = h.replace(/&apos;/g, '&#39;'); // IE can't handle apos
-
-			// Fix some issues
-			h = h.replace(/<a( )([^>]+)\/>|<a\/>/gi, '<a$1$2></a>'); // Force open
-
-			// Store away src and href in mce_src and mce_href since browsers mess them up
-			if (s.keep_values) {
-				// Wrap scripts in comments for serialization purposes
-				if (h.indexOf('<script') !== -1) {
-					h = h.replace(/<script>/g, '<script type="text/javascript">');
-					h = h.replace(/<script(|[^>]+)>(\s*<!--|\/\/\s*<\[CDATA\[)?[\r\n]*/g, '<mce:script$1><!--\n');
-					h = h.replace(/\s*(\/\/\s*-->|\/\/\s*]]>)?<\/script>/g, '\n// --></mce:script>');
-					h = h.replace(/<mce:script(|[^>]+)><!--\n\/\/ --><\/mce:script>/g, '<mce:script$1></mce:script>');
-				}
-
-				// Process all tags with src, href or style
-				h = h.replace(/<([\w:]+) [^>]*(src|href|style|coords)[^>]*>/gi, function(a, n) {
-					function handle(m, b, c) {
-						var u = c;
-
-						// Tag already got a mce_ version
-						if (a.indexOf('mce_' + b) != -1)
-							return m;
-
-						if (b == 'style') {
-							// Why did I need this one?
-							//if (isIE)
-							//	u = t.serializeStyle(t.parseStyle(u));
-
-							// No mce_style for elements with these since they might get resized by the user
-							if (t._isRes(c))
-								return m;
-
-							if (s.hex_colors) {
-								u = u.replace(/rgb\([^\)]+\)/g, function(v) {
-									return t.toHex(v);
-								});
-							}
-
-							if (s.url_converter) {
-								u = u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g, function(x, c) {
-									return 'url(' + t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), b, n)) + ')';
-								});
-							}
-						} else if (b != 'coords') {
-							if (s.url_converter)
-								u = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), b, n));
-						}
-
-						return ' ' + b + '="' + c + '" mce_' + b + '="' + u + '"';
-					};
-
-					a = a.replace(/ (src|href|style|coords)=[\"]([^\"]+)[\"]/gi, handle); // W3C
-					a = a.replace(/ (src|href|style|coords)=[\']([^\']+)[\']/gi, handle); // W3C
-
-					return a.replace(/ (src|href|style|coords)=([^\s\"\'>]+)/gi, handle); // IE
-				});
-			}
-
-			return h;
-		},
-
-		getOuterHTML : function(e) {
-			var d;
-
-			e = this.get(e);
-
-			if (!e)
-				return null;
-
-			if (isIE)
-				return e.outerHTML;
-
-			d = (e.ownerDocument || this.doc).createElement("body");
-			d.appendChild(e.cloneNode(true));
-
-			return d.innerHTML;
-		},
-
-		setOuterHTML : function(e, h, d) {
-			var t = this;
-
-			return this.run(e, function(e) {
-				var n, tp;
-
-				e = t.get(e);
-				d = d || e.ownerDocument || t.doc;
-
-				if (isIE && e.nodeType == 1)
-					e.outerHTML = h;
-				else {
-					tp = d.createElement("body");
-					tp.innerHTML = h;
-
-					n = tp.lastChild;
-					while (n) {
-						t.insertAfter(n.cloneNode(true), e);
-						n = n.previousSibling;
-					}
-
-					t.remove(e);
-				}
-			});
-		},
-
-		decode : function(s) {
-			var e;
-
-			// Look for entities to decode
-			if (/&[^;]+;/.test(s)) {
-				// Decode the entities using a div element not super efficient but less code
-				e = this.doc.createElement("div");
-				e.innerHTML = s;
-
-				return !e.firstChild ? s : e.firstChild.nodeValue;
-			}
-
-			return s;
-		},
-
-		encode : function(s) {
-			return s ? ('' + s).replace(/[<>&\"]/g, function (c, b) {
-				switch (c) {
-					case '&':
-						return '&amp;';
-
-					case '"':
-						return '&quot;';
-
-					case '<':
-						return '&lt;';
-
-					case '>':
-						return '&gt;';
-				}
-
-				return c;
-			}) : s;
-		},
-
-		// #if !jquery
-
-		insertAfter : function(n, r) {
-			var t = this;
-
-			r = t.get(r);
-
-			return this.run(n, function(n) {
-				var p, ns;
-
-				p = r.parentNode;
-				ns = r.nextSibling;
-
-				if (ns)
-					p.insertBefore(n, ns);
-				else
-					p.appendChild(n);
-
-				return n;
-			});
-		},
-
-		// #endif
-
-		isBlock : function(n) {
-			if (n.nodeType && n.nodeType !== 1)
-				return false;
-
-			n = n.nodeName || n;
-
-			return /^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);
-		},
-
-		// #if !jquery
-
-		replace : function(n, o, k) {
-			if (is(o, 'array'))
-				n = n.cloneNode(true);
-
-			return this.run(o, function(o) {
-				if (k) {
-					each(o.childNodes, function(c) {
-						n.appendChild(c.cloneNode(true));
-					});
-				}
-
-				// Fix IE psuedo leak for elements since replacing elements if fairly common
-				// Will break parentNode for some unknown reason
-	/*			if (isIE && o.nodeType === 1) {
-					o.parentNode.insertBefore(n, o);
-					o.outerHTML = '';
-					return n;
-				}*/
-
-				return o.parentNode.replaceChild(n, o);
-			});
-		},
-
-		// #endif
-
-		toHex : function(s) {
-			var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
-
-			function hex(s) {
-				s = parseInt(s).toString(16);
-
-				return s.length > 1 ? s : '0' + s; // 0 -> 00
-			};
-
-			if (c) {
-				s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]);
-
-				return s;
-			}
-
-			return s;
-		},
-
-		getClasses : function() {
-			var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov;
-
-			if (t.classes)
-				return t.classes;
-
-			function addClasses(s) {
-				// IE style imports
-				each(s.imports, function(r) {
-					addClasses(r);
-				});
-
-				each(s.cssRules || s.rules, function(r) {
-					// Real type or fake it on IE
-					switch (r.type || 1) {
-						// Rule
-						case 1:
-							if (r.selectorText) {
-								each(r.selectorText.split(','), function(v) {
-									v = v.replace(/^\s*|\s*$|^\s\./g, "");
-
-									// Is internal or it doesn't contain a class
-									if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v))
-										return;
-
-									// Remove everything but class name
-									ov = v;
-									v = v.replace(/.*\.([a-z0-9_\-]+).*/i, '$1');
-
-									// Filter classes
-									if (f && !(v = f(v, ov)))
-										return;
-
-									if (!lo[v]) {
-										cl.push({'class' : v});
-										lo[v] = 1;
-									}
-								});
-							}
-							break;
-
-						// Import
-						case 3:
-							addClasses(r.styleSheet);
-							break;
-					}
-				});
-			};
-
-			try {
-				each(t.doc.styleSheets, addClasses);
-			} catch (ex) {
-				// Ignore
-			}
-
-			if (cl.length > 0)
-				t.classes = cl;
-
-			return cl;
-		},
-
-		run : function(e, f, s) {
-			var t = this, o;
-
-			if (t.doc && typeof(e) === 'string')
-				e = t.doc.getElementById(e);
-
-			if (!e)
-				return false;
-
-			s = s || this;
-			if (!e.nodeType && (e.length || e.length === 0)) {
-				o = [];
-
-				each(e, function(e, i) {
-					if (e) {
-						if (typeof(e) == 'string')
-							e = t.doc.getElementById(e);
-
-						o.push(f.call(s, e, i));
-					}
-				});
-
-				return o;
-			}
-
-			return f.call(s, e);
-		},
-
-		getAttribs : function(n) {
-			var o;
-
-			n = this.get(n);
-
-			if (!n)
-				return [];
-
-			if (isIE) {
-				o = [];
-
-				// Object will throw exception in IE
-				if (n.nodeName == 'OBJECT')
-					return n.attributes;
-
-				// It's crazy that this is faster in IE but it's because it returns all attributes all the time
-				n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi, function(a, b) {
-					o.push({specified : 1, nodeName : b});
-				});
-
-				return o;
-			}
-
-			return n.attributes;
-		},
-
-		destroy : function(s) {
-			var t = this;
-
-			t.win = t.doc = t.root = null;
-
-			// Manual destroy then remove unload handler
-			if (!s)
-				tinymce.removeUnload(t.destroy);
-		},
-
-		_isRes : function(c) {
-			// Is live resizble element
-			return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);
-		}
-
-		/*
-		walk : function(n, f, s) {
-			var d = this.doc, w;
-
-			if (d.createTreeWalker) {
-				w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-
-				while ((n = w.nextNode()) != null)
-					f.call(s || this, n);
-			} else
-				tinymce.walk(n, f, 'childNodes', s);
-		}
-		*/
-
-		/*
-		toRGB : function(s) {
-			var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
-
-			if (c) {
-				// #FFF -> #FFFFFF
-				if (!is(c[3]))
-					c[3] = c[2] = c[1];
-
-				return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
-			}
-
-			return s;
-		}
-		*/
-
-		});
-
-	// Setup page DOM
-	tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/Event.js */
-
-(function() {
-	// Shorten names
-	var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;
-
-	tinymce.create('static tinymce.dom.Event', {
-		inits : [],
-		events : [],
-
-		// #if !jquery
-
-		add : function(o, n, f, s) {
-			var cb, t = this, el = t.events, r;
-
-			// Handle array
-			if (o && o instanceof Array) {
-				r = [];
-
-				each(o, function(o) {
-					o = DOM.get(o);
-					r.push(t.add(o, n, f, s));
-				});
-
-				return r;
-			}
-
-			o = DOM.get(o);
-
-			if (!o)
-				return;
-
-			// Setup event callback
-			cb = function(e) {
-				e = e || window.event;
-
-				// Patch in target in IE it's W3C valid
-				if (e && !e.target && isIE)
-					e.target = e.srcElement;
-
-				if (!s)
-					return f(e);
-
-				return f.call(s, e);
-			};
-
-			if (n == 'unload') {
-				tinymce.unloads.unshift({func : cb});
-				return cb;
-			}
-
-			if (n == 'init') {
-				if (t.domLoaded)
-					cb();
-				else
-					t.inits.push(cb);
-
-				return cb;
-			}
-
-			// Store away listener reference
-			el.push({
-				obj : o,
-				name : n,
-				func : f,
-				cfunc : cb,
-				scope : s
-			});
-
-			t._add(o, n, cb);
-
-			return f;
-		},
-
-		remove : function(o, n, f) {
-			var t = this, a = t.events, s = false, r;
-
-			// Handle array
-			if (o && o instanceof Array) {
-				r = [];
-
-				each(o, function(o) {
-					o = DOM.get(o);
-					r.push(t.remove(o, n, f));
-				});
-
-				return r;
-			}
-
-			o = DOM.get(o);
-
-			each(a, function(e, i) {
-				if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) {
-					a.splice(i, 1);
-					t._remove(o, n, e.cfunc);
-					s = true;
-					return false;
-				}
-			});
-
-			return s;
-		},
-
-		clear : function(o) {
-			var t = this, a = t.events, i, e;
-
-			if (o) {
-				o = DOM.get(o);
-
-				for (i = a.length - 1; i >= 0; i--) {
-					e = a[i];
-
-					if (e.obj === o) {
-						t._remove(e.obj, e.name, e.cfunc);
-						e.obj = e.cfunc = null;
-						a.splice(i, 1);
-					}
-				}
-			}
-		},
-
-		// #endif
-
-		cancel : function(e) {
-			if (!e)
-				return false;
-
-			this.stop(e);
-			return this.prevent(e);
-		},
-
-		stop : function(e) {
-			if (e.stopPropagation)
-				e.stopPropagation();
-			else
-				e.cancelBubble = true;
-
-			return false;
-		},
-
-		prevent : function(e) {
-			if (e.preventDefault)
-				e.preventDefault();
-			else
-				e.returnValue = false;
-
-			return false;
-		},
-
-		_unload : function() {
-			var t = Event;
-
-			each(t.events, function(e, i) {
-				t._remove(e.obj, e.name, e.cfunc);
-				e.obj = e.cfunc = null;
-			});
-
-			t.events = [];
-			t = null;
-		},
-
-		_add : function(o, n, f) {
-			if (o.attachEvent)
-				o.attachEvent('on' + n, f);
-			else if (o.addEventListener)
-				o.addEventListener(n, f, false);
-			else
-				o['on' + n] = f;
-		},
-
-		_remove : function(o, n, f) {
-			if (o) {
-				try {
-					if (o.detachEvent)
-						o.detachEvent('on' + n, f);
-					else if (o.removeEventListener)
-						o.removeEventListener(n, f, false);
-					else
-						o['on' + n] = null;
-				} catch (ex) {
-					// Might fail with permission denined on IE so we just ignore that
-				}
-			}
-		},
-
-		_pageInit : function() {
-			var e = Event;
-
-			e._remove(window, 'DOMContentLoaded', e._pageInit);
-			e.domLoaded = true;
-
-			each(e.inits, function(c) {
-				c();
-			});
-
-			e.inits = [];
-		},
-
-		_wait : function() {
-			var t;
-
-			// No need since the document is already loaded
-			if (window.tinyMCE_GZ && tinyMCE_GZ.loaded) {
-				Event.domLoaded = 1;
-				return;
-			}
-
-			if (isIE && document.location.protocol != 'https:') {
-				// Fake DOMContentLoaded on IE
-				document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');
-				DOM.get("__ie_onload").onreadystatechange = function() {
-					if (this.readyState == "complete") {
-						Event._pageInit();
-						DOM.get("__ie_onload").onreadystatechange = null; // Prevent leak
-					}
-				};
-			} else {
-				Event._add(window, 'DOMContentLoaded', Event._pageInit, Event);
-
-				if (isIE || isWebKit) {
-					t = setInterval(function() {
-						if (/loaded|complete/.test(document.readyState)) {
-							clearInterval(t);
-							Event._pageInit();
-						}
-					}, 10);
-				}
-			}
-		}
-
-		});
-
-	// Shorten name
-	Event = tinymce.dom.Event;
-
-	// Dispatch DOM content loaded event for IE and Safari
-	Event._wait();
-	tinymce.addUnload(Event._unload);
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/Element.js */
-
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('tinymce.dom.Element', {
-		Element : function(id, s) {
-			var t = this, dom, el;
-
-			s = s || {};
-			t.id = id;
-			t.dom = dom = s.dom || tinymce.DOM;
-			t.settings = s;
-
-			// Only IE leaks DOM references, this is a lot faster
-			if (!tinymce.isIE)
-				el = t.dom.get(t.id);
-
-			each([
-				'getPos',
-				'getRect',
-				'getParent',
-				'add',
-				'setStyle',
-				'getStyle',
-				'setStyles',
-				'setAttrib',
-				'setAttribs',
-				'getAttrib',
-				'addClass',
-				'removeClass',
-				'hasClass',
-				'getOuterHTML',
-				'setOuterHTML',
-				'remove',
-				'show',
-				'hide',
-				'isHidden',
-				'setHTML',
-				'get'
-			], function(k) {
-				t[k] = function() {
-					var a = arguments, o;
-
-					// Opera fails
-					if (tinymce.isOpera) {
-						a = [id];
-
-						each(arguments, function(v) {
-							a.push(v);
-						});
-					} else
-						Array.prototype.unshift.call(a, el || id);
-
-					o = dom[k].apply(dom, a);
-					t.update(k);
-
-					return o;
-				};
-			});
-		},
-
-		on : function(n, f, s) {
-			return tinymce.dom.Event.add(this.id, n, f, s);
-		},
-
-		getXY : function() {
-			return {
-				x : parseInt(this.getStyle('left')),
-				y : parseInt(this.getStyle('top'))
-			};
-		},
-
-		getSize : function() {
-			var n = this.dom.get(this.id);
-
-			return {
-				w : parseInt(this.getStyle('width') || n.clientWidth),
-				h : parseInt(this.getStyle('height') || n.clientHeight)
-			};
-		},
-
-		moveTo : function(x, y) {
-			this.setStyles({left : x, top : y});
-		},
-
-		moveBy : function(x, y) {
-			var p = this.getXY();
-
-			this.moveTo(p.x + x, p.y + y);
-		},
-
-		resizeTo : function(w, h) {
-			this.setStyles({width : w, height : h});
-		},
-
-		resizeBy : function(w, h) {
-			var s = this.getSize();
-
-			this.resizeTo(s.w + w, s.h + h);
-		},
-
-		update : function(k) {
-			var t = this, b, dom = t.dom;
-
-			if (tinymce.isIE6 && t.settings.blocker) {
-				k = k || '';
-
-				// Ignore getters
-				if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0)
-					return;
-
-				// Remove blocker on remove
-				if (k == 'remove') {
-					dom.remove(t.blocker);
-					return;
-				}
-
-				if (!t.blocker) {
-					t.blocker = dom.uniqueId();
-					b = dom.add(t.settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'});
-					dom.setStyle(b, 'opacity', 0);
-				} else
-					b = dom.get(t.blocker);
-
-				dom.setStyle(b, 'left', t.getStyle('left', 1));
-				dom.setStyle(b, 'top', t.getStyle('top', 1));
-				dom.setStyle(b, 'width', t.getStyle('width', 1));
-				dom.setStyle(b, 'height', t.getStyle('height', 1));
-				dom.setStyle(b, 'display', t.getStyle('display', 1));
-				dom.setStyle(b, 'zIndex', parseInt(t.getStyle('zIndex', 1) || 0) - 1);
-			}
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/Selection.js */
-
-(function() {
-	function trimNl(s) {
-		return s.replace(/[\n\r]+/g, '');
-	};
-
-	// Shorten names
-	var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each;
-
-	tinymce.create('tinymce.dom.Selection', {
-		Selection : function(dom, win, serializer) {
-			var t = this;
-
-			t.dom = dom;
-			t.win = win;
-			t.serializer = serializer;
-
-			// Prevent leaks
-			tinymce.addUnload(t.destroy, t);
-		},
-
-		getContent : function(s) {
-			var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;
-
-			s = s || {};
-			wb = wa = '';
-			s.get = true;
-			s.format = s.format || 'html';
-
-			if (s.format == 'text')
-				return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : ''));
-
-			if (r.cloneContents) {
-				n = r.cloneContents();
-
-				if (n)
-					e.appendChild(n);
-			} else if (is(r.item) || is(r.htmlText))
-				e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
-			else
-				e.innerHTML = r.toString();
-
-			// Keep whitespace before and after
-			if (/^\s/.test(e.innerHTML))
-				wb = ' ';
-
-			if (/\s+$/.test(e.innerHTML))
-				wa = ' ';
-
-			s.getInner = true;
-
-			return t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
-		},
-
-		setContent : function(h, s) {
-			var t = this, r = t.getRng(), d = t.win.document;
-
-			s = s || {format : 'html'};
-			s.set = true;
-			h = t.dom.processHTML(h);
-
-			if (r.insertNode) {
-				// Gecko has a bug where if you insert &nbsp; using InsertHTML it will insert a space instead
-				// So we simply check if the input is HTML or text and then insert text using the insertNode method
-				if (tinymce.isGecko && h.indexOf('<') == -1) {
-					r.deleteContents();
-					r.insertNode(t.getRng().createContextualFragment(h + '<span id="__caret">_</span>'));
-					t.select(t.dom.get('__caret'));
-					t.getRng().deleteContents();
-					return;
-				}
-
-				// Use insert HTML if it exists (places cursor after content)
-				try {
-					// This might fail with an exception see bug #1893736
-					if (d.queryCommandEnabled('InsertHTML'))
-						return d.execCommand('InsertHTML', false, h);
-				} catch (ex) {
-					// Use old school method
-					r.deleteContents();
-					r.insertNode(t.getRng().createContextualFragment(h));
-				}
-			} else {
-				if (r.item) {
-					// Delete content and get caret text selection
-					d.execCommand('Delete', false, null);
-					r = t.getRng();
-				}
-
-				r.pasteHTML(h);
-			}
-		},
-
-		getStart : function() {
-			var t = this, r = t.getRng(), e;
-
-			if (isIE) {
-				if (r.item)
-					return r.item(0);
-
-				r = r.duplicate();
-				r.collapse(1);
-				e = r.parentElement();
-
-				if (e && e.nodeName == 'BODY')
-					return e.firstChild;
-
-				return e;
-			} else {
-				e = r.startContainer;
-
-				if (e.nodeName == 'BODY')
-					return e.firstChild;
-
-				return t.dom.getParent(e, function(n) {return n.nodeType == 1;});
-			}
-		},
-
-		getEnd : function() {
-			var t = this, r = t.getRng(), e;
-
-			if (isIE) {
-				if (r.item)
-					return r.item(0);
-
-				r = r.duplicate();
-				r.collapse(0);
-				e = r.parentElement();
-
-				if (e && e.nodeName == 'BODY')
-					return e.lastChild;
-
-				return e;
-			} else {
-				e = r.endContainer;
-
-				if (e.nodeName == 'BODY')
-					return e.lastChild;
-
-				return t.dom.getParent(e, function(n) {return n.nodeType == 1;});
-			}
-		},
-
-		getBookmark : function(si) {
-			var t = this, r = t.getRng(), tr, sx, sy, vp = t.dom.getViewPort(t.win), e, sp, bp, le, c = -0xFFFFFF, s, ro = t.dom.getRoot(), wb = 0, wa = 0, nv;
-			sx = vp.x;
-			sy = vp.y;
-
-			// Simple bookmark fast but not as persistent
-			if (si == 'simple')
-				return {rng : r, scrollX : sx, scrollY : sy};
-
-			// Handle IE
-			if (isIE) {
-				// Control selection
-				if (r.item) {
-					e = r.item(0);
-
-					each(t.dom.select(e.nodeName), function(n, i) {
-						if (e == n) {
-							sp = i;
-							return false;
-						}
-					});
-
-					return {
-						tag : e.nodeName,
-						index : sp,
-						scrollX : sx,
-						scrollY : sy
-					};
-				}
-
-				// Text selection
-				tr = t.dom.doc.body.createTextRange();
-				tr.moveToElementText(ro);
-				tr.collapse(true);
-				bp = Math.abs(tr.move('character', c));
-
-				tr = r.duplicate();
-				tr.collapse(true);
-				sp = Math.abs(tr.move('character', c));
-
-				tr = r.duplicate();
-				tr.collapse(false);
-				le = Math.abs(tr.move('character', c)) - sp;
-
-				return {
-					start : sp - bp,
-					length : le,
-					scrollX : sx,
-					scrollY : sy
-				};
-			}
-
-			// Handle W3C
-			e = t.getNode();
-			s = t.getSel();
-
-			if (!s)
-				return null;
-
-			// Image selection
-			if (e && e.nodeName == 'IMG') {
-				return {
-					scrollX : sx,
-					scrollY : sy
-				};
-			}
-
-			// Text selection
-
-			function getPos(r, sn, en) {
-				var w = t.dom.doc.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
-
-				while ((n = w.nextNode()) != null) {
-					if (n == sn)
-						d.start = p;
-
-					if (n == en) {
-						d.end = p;
-						return d;
-					}
-
-					p += trimNl(n.nodeValue || '').length;
-				}
-
-				return null;
-			};
-
-			// Caret or selection
-			if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
-				e = getPos(ro, s.anchorNode, s.focusNode);
-
-				if (!e)
-					return {scrollX : sx, scrollY : sy};
-
-				// Count whitespace before
-				trimNl(s.anchorNode.nodeValue || '').replace(/^\s+/, function(a) {wb = a.length;});
-
-				return {
-					start : Math.max(e.start + s.anchorOffset - wb, 0),
-					end : Math.max(e.end + s.focusOffset - wb, 0),
-					scrollX : sx,
-					scrollY : sy,
-					beg : s.anchorOffset - wb == 0
-				};
-			} else {
-				e = getPos(ro, r.startContainer, r.endContainer);
-
-				// Count whitespace before start and end container
-				//(r.startContainer.nodeValue || '').replace(/^\s+/, function(a) {wb = a.length;});
-				//(r.endContainer.nodeValue || '').replace(/^\s+/, function(a) {wa = a.length;});
-
-				if (!e)
-					return {scrollX : sx, scrollY : sy};
-
-				return {
-					start : Math.max(e.start + r.startOffset - wb, 0),
-					end : Math.max(e.end + r.endOffset - wa, 0),
-					scrollX : sx,
-					scrollY : sy,
-					beg : r.startOffset - wb == 0
-				};
-			}
-		},
-
-		moveToBookmark : function(b) {
-			var t = this, r = t.getRng(), s = t.getSel(), ro = t.dom.getRoot(), sd, nvl, nv;
-
-			function getPos(r, sp, ep) {
-				var w = t.dom.doc.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}, o, v, wa, wb;
-
-				while ((n = w.nextNode()) != null) {
-					wa = wb = 0;
-
-					nv = n.nodeValue || '';
-					//nv.replace(/^\s+[^\s]/, function(a) {wb = a.length - 1;});
-					//nv.replace(/[^\s]\s+$/, function(a) {wa = a.length - 1;});
-
-					nvl = trimNl(nv).length;
-					p += nvl;
-
-					if (p >= sp && !d.startNode) {
-						o = sp - (p - nvl);
-
-						// Fix for odd quirk in FF
-						if (b.beg && o >= nvl)
-							continue;
-
-						d.startNode = n;
-						d.startOffset = o + wb;
-					}
-
-					if (p >= ep) {
-						d.endNode = n;
-						d.endOffset = ep - (p - nvl) + wb;
-						return d;
-					}
-				}
-
-				return null;
-			};
-
-			if (!b)
-				return false;
-
-			t.win.scrollTo(b.scrollX, b.scrollY);
-
-			// Handle explorer
-			if (isIE) {
-				// Handle simple
-				if (r = b.rng) {
-					try {
-						r.select();
-					} catch (ex) {
-						// Ignore
-					}
-
-					return true;
-				}
-
-				t.win.focus();
-
-				// Handle control bookmark
-				if (b.tag) {
-					r = ro.createControlRange();
-
-					each(t.dom.select(b.tag), function(n, i) {
-						if (i == b.index)
-							r.addElement(n);
-					});
-				} else {
-					// Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs
-					try {
-						// Incorrect bookmark
-						if (b.start < 0)
-							return true;
-
-						r = s.createRange();
-						r.moveToElementText(ro);
-						r.collapse(true);
-						r.moveStart('character', b.start);
-						r.moveEnd('character', b.length);
-					} catch (ex2) {
-						return true;
-					}
-				}
-
-				try {
-					r.select();
-				} catch (ex) {
-					// Needed for some odd IE bug #1843306
-				}
-
-				return true;
-			}
-
-			// Handle W3C
-			if (!s)
-				return false;
-
-			// Handle simple
-			if (b.rng) {
-				s.removeAllRanges();
-				s.addRange(b.rng);
-			} else {
-				if (is(b.start) && is(b.end)) {
-					try {
-						sd = getPos(ro, b.start, b.end);
-
-						if (sd) {
-							r = t.dom.doc.createRange();
-							r.setStart(sd.startNode, sd.startOffset);
-							r.setEnd(sd.endNode, sd.endOffset);
-							s.removeAllRanges();
-							s.addRange(r);
-						}
-
-						if (!tinymce.isOpera)
-							t.win.focus();
-					} catch (ex) {
-						// Ignore
-					}
-				}
-			}
-		},
-
-		select : function(n, c) {
-			var t = this, r = t.getRng(), s = t.getSel(), b, fn, ln, d = t.win.document;
-
-			function first(n) {
-				return n ? d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false).nextNode() : null;
-			};
-
-			function last(n) {
-				var c, o, w;
-
-				if (!n)
-					return null;
-
-				w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-				while (c = w.nextNode())
-					o = c;
-
-				return o;
-			};
-
-			if (isIE) {
-				try {
-					b = d.body;
-
-					if (/^(IMG|TABLE)$/.test(n.nodeName)) {
-						r = b.createControlRange();
-						r.addElement(n);
-					} else {
-						r = b.createTextRange();
-						r.moveToElementText(n);
-					}
-
-					r.select();
-				} catch (ex) {
-					// Throws illigal agrument in IE some times
-				}
-			} else {
-				if (c) {
-					fn = first(n);
-					ln = last(n);
-
-					if (fn && ln) {
-						//console.debug(fn, ln);
-						r = d.createRange();
-						r.setStart(fn, 0);
-						r.setEnd(ln, ln.nodeValue.length);
-					} else
-						r.selectNode(n);
-				} else
-					r.selectNode(n);
-
-				t.setRng(r);
-			}
-
-			return n;
-		},
-
-		isCollapsed : function() {
-			var t = this, r = t.getRng(), s = t.getSel();
-
-			if (!r || r.item)
-				return false;
-
-			return !s || r.boundingWidth == 0 || s.isCollapsed;
-		},
-
-		collapse : function(b) {
-			var t = this, r = t.getRng(), n;
-
-			// Control range on IE
-			if (r.item) {
-				n = r.item(0);
-				r = this.win.document.body.createTextRange();
-				r.moveToElementText(n);
-			}
-
-			r.collapse(!!b);
-			t.setRng(r);
-		},
-
-		getSel : function() {
-			var t = this, w = this.win;
-
-			return w.getSelection ? w.getSelection() : w.document.selection;
-		},
-
-		getRng : function() {
-			var t = this, s = t.getSel(), r;
-
-			try {
-				if (s)
-					r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : t.win.document.createRange());
-			} catch (ex) {
-				// IE throws unspecified error here if TinyMCE is placed in a frame/iframe
-			}
-
-			// No range found then create an empty one
-			// This can occur when the editor is placed in a hidden container element on Gecko
-			// Or on IE when there was an exception
-			if (!r)
-				r = isIE ? t.win.document.body.createTextRange() : t.win.document.createRange();
-
-			return r;
-		},
-
-		setRng : function(r) {
-			var s;
-
-			if (!isIE) {
-				s = this.getSel();
-
-				if (s) {
-					s.removeAllRanges();
-					s.addRange(r);
-				}
-			} else {
-				try {
-					r.select();
-				} catch (ex) {
-					// Needed for some odd IE bug #1843306
-				}
-			}
-		},
-
-		setNode : function(n) {
-			var t = this;
-
-			t.setContent(t.dom.getOuterHTML(n));
-
-			return n;
-		},
-
-		getNode : function() {
-			var t = this, r = t.getRng(), s = t.getSel(), e;
-
-			if (!isIE) {
-				// Range maybe lost after the editor is made visible again
-				if (!r)
-					return t.dom.getRoot();
-
-				e = r.commonAncestorContainer;
-
-				// Handle selection a image or other control like element such as anchors
-				if (!r.collapsed) {
-					if (r.startContainer == r.endContainer || (tinymce.isWebKit && r.startContainer == r.endContainer.parentNode)) {
-						if (r.startOffset - r.endOffset < 2 || tinymce.isWebKit) {
-							if (r.startContainer.hasChildNodes())
-								e = r.startContainer.childNodes[r.startOffset];
-						}
-					}
-				}
-
-				return t.dom.getParent(e, function(n) {
-					return n.nodeType == 1;
-				});
-			}
-
-			return r.item ? r.item(0) : r.parentElement();
-		},
-
-		destroy : function(s) {
-			var t = this;
-
-			t.win = null;
-
-			// Manual destroy then remove unload handler
-			if (!s)
-				tinymce.removeUnload(t.destroy);
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/XMLWriter.js */
-
-(function() {
-	tinymce.create('tinymce.dom.XMLWriter', {
-		node : null,
-
-		XMLWriter : function(s) {
-			// Get XML document
-			function getXML() {
-				var i = document.implementation;
-
-				if (!i || !i.createDocument) {
-					// Try IE objects
-					try {return new ActiveXObject('MSXML2.DOMDocument');} catch (ex) {}
-					try {return new ActiveXObject('Microsoft.XmlDom');} catch (ex) {}
-				} else
-					return i.createDocument('', '', null);
-			};
-
-			this.doc = getXML();
-			
-			// Since Opera and WebKit doesn't escape > into &gt; we need to do it our self to normalize the output for all browsers
-			this.valid = tinymce.isOpera || tinymce.isWebKit;
-
-			this.reset();
-		},
-
-		reset : function() {
-			var t = this, d = t.doc;
-
-			if (d.firstChild)
-				d.removeChild(d.firstChild);
-
-			t.node = d.appendChild(d.createElement("html"));
-		},
-
-		writeStartElement : function(n) {
-			var t = this;
-
-			t.node = t.node.appendChild(t.doc.createElement(n));
-		},
-
-		writeAttribute : function(n, v) {
-			if (this.valid)
-				v = v.replace(/>/g, '%MCGT%');
-
-			this.node.setAttribute(n, v);
-		},
-
-		writeEndElement : function() {
-			this.node = this.node.parentNode;
-		},
-
-		writeFullEndElement : function() {
-			var t = this, n = t.node;
-
-			n.appendChild(t.doc.createTextNode(""));
-			t.node = n.parentNode;
-		},
-
-		writeText : function(v) {
-			if (this.valid)
-				v = v.replace(/>/g, '%MCGT%');
-
-			this.node.appendChild(this.doc.createTextNode(v));
-		},
-
-		writeCDATA : function(v) {
-			this.node.appendChild(this.doc.createCDATA(v));
-		},
-
-		writeComment : function(v) {
-			this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g, ' ')));
-		},
-
-		getContent : function() {
-			var h;
-
-			h = this.doc.xml || new XMLSerializer().serializeToString(this.doc);
-			h = h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g, '');
-			h = h.replace(/ ?\/>/g, ' />');
-
-			if (this.valid)
-				h = h.replace(/\%MCGT%/g, '&gt;');
-
-			return h;
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/StringWriter.js */
-
-(function() {
-	tinymce.create('tinymce.dom.StringWriter', {
-		str : null,
-		tags : null,
-		count : 0,
-		settings : null,
-		indent : null,
-
-		StringWriter : function(s) {
-			this.settings = tinymce.extend({
-				indent_char : ' ',
-				indentation : 1
-			}, s);
-
-			this.reset();
-		},
-
-		reset : function() {
-			this.indent = '';
-			this.str = "";
-			this.tags = [];
-			this.count = 0;
-		},
-
-		writeStartElement : function(n) {
-			this._writeAttributesEnd();
-			this.writeRaw('<' + n);
-			this.tags.push(n);
-			this.inAttr = true;
-			this.count++;
-			this.elementCount = this.count;
-		},
-
-		writeAttribute : function(n, v) {
-			var t = this;
-
-			t.writeRaw(" " + t.encode(n) + '="' + t.encode(v) + '"');
-		},
-
-		writeEndElement : function() {
-			var n;
-
-			if (this.tags.length > 0) {
-				n = this.tags.pop();
-
-				if (this._writeAttributesEnd(1))
-					this.writeRaw('</' + n + '>');
-
-				if (this.settings.indentation > 0)
-					this.writeRaw('\n');
-			}
-		},
-
-		writeFullEndElement : function() {
-			if (this.tags.length > 0) {
-				this._writeAttributesEnd();
-				this.writeRaw('</' + this.tags.pop() + '>');
-
-				if (this.settings.indentation > 0)
-					this.writeRaw('\n');
-			}
-		},
-
-		writeText : function(v) {
-			this._writeAttributesEnd();
-			this.writeRaw(this.encode(v));
-			this.count++;
-		},
-
-		writeCDATA : function(v) {
-			this._writeAttributesEnd();
-			this.writeRaw('<![CDATA[' + v + ']]>');
-			this.count++;
-		},
-
-		writeComment : function(v) {
-			this._writeAttributesEnd();
-			this.writeRaw('<!-- ' + v + '-->');
-			this.count++;
-		},
-
-		writeRaw : function(v) {
-			this.str += v;
-		},
-
-		encode : function(s) {
-			return s.replace(/[<>&"]/g, function(v) {
-				switch (v) {
-					case '<':
-						return '&lt;';
-
-					case '>':
-						return '&gt;';
-
-					case '&':
-						return '&amp;';
-
-					case '"':
-						return '&quot;';
-				}
-
-				return v;
-			});
-		},
-
-		getContent : function() {
-			return this.str;
-		},
-
-		_writeAttributesEnd : function(s) {
-			if (!this.inAttr)
-				return;
-
-			this.inAttr = false;
-
-			if (s && this.elementCount == this.count) {
-				this.writeRaw(' />');
-				return false;
-			}
-
-			this.writeRaw('>');
-
-			return true;
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/Serializer.js */
-
-(function() {
-	// Shorten names
-	var extend = tinymce.extend, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, isIE = tinymce.isIE, isGecko = tinymce.isGecko;
-
-	// Returns only attribites that have values not all attributes in IE
-	function getIEAtts(n) {
-		var o = [];
-
-		// Object will throw exception in IE
-		if (n.nodeName == 'OBJECT')
-			return n.attributes;
-
-		n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi, function(a, b) {
-			o.push({specified : 1, nodeName : b});
-		});
-
-		return o;
-	};
-
-	function wildcardToRE(s) {
-		return s.replace(/([?+*])/g, '.$1');
-	};
-
-	tinymce.create('tinymce.dom.Serializer', {
-		Serializer : function(s) {
-			var t = this;
-
-			t.key = 0;
-			t.onPreProcess = new Dispatcher(t);
-			t.onPostProcess = new Dispatcher(t);
-
-			if (tinymce.relaxedDomain && tinymce.isGecko) {
-				// Gecko has a bug where we can't create a new XML document if domain relaxing is used
-				t.writer = new tinymce.dom.StringWriter();
-			} else {
-				try {
-					t.writer = new tinymce.dom.XMLWriter();
-				} catch (ex) {
-					// IE might throw exception if ActiveX is disabled so we then switch to the slightly slower StringWriter
-					t.writer = new tinymce.dom.StringWriter();
-				}
-			}
-
-			// Default settings
-			t.settings = s = extend({
-				dom : tinymce.DOM,
-				valid_nodes : 0,
-				node_filter : 0,
-				attr_filter : 0,
-				invalid_attrs : /^(mce_|_moz_)/,
-				closed : /(br|hr|input|meta|img|link|param)/,
-				entity_encoding : 'named',
-				entities : '160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',
-				valid_elements : '*[*]',
-				extended_valid_elements : 0,
-				valid_child_elements : 0,
-				invalid_elements : 0,
-				fix_table_elements : 0,
-				fix_list_elements : true,
-				fix_content_duplication : true,
-				convert_fonts_to_spans : false,
-				font_size_classes : 0,
-				font_size_style_values : 0,
-				apply_source_formatting : 0,
-				indent_mode : 'simple',
-				indent_char : '\t',
-				indent_levels : 1,
-				remove_linebreaks : 1
-			}, s);
-
-			t.dom = s.dom;
-
-			if (s.fix_list_elements) {
-				t.onPreProcess.add(function(se, o) {
-					var nl, x, a = ['ol', 'ul'], i, n, p, r = /^(OL|UL)$/, np;
-
-					function prevNode(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;
-					};
-
-					for (x=0; x<a.length; x++) {
-						nl = t.dom.select(a[x], o.node);
-
-						for (i=0; i<nl.length; i++) {
-							n = nl[i];
-							p = n.parentNode;
-
-							if (r.test(p.nodeName)) {
-								np = prevNode(n, 'LI');
-
-								if (!np) {
-									np = t.dom.create('li');
-									np.innerHTML = '&nbsp;';
-									np.appendChild(n);
-									p.insertBefore(np, p.firstChild);
-								} else
-									np.appendChild(n);
-							}
-						}
-					}
-				});
-			}
-
-			if (s.fix_table_elements) {
-				t.onPreProcess.add(function(se, o) {
-					each(t.dom.select('table', o.node), function(e) {
-						var pa = t.dom.getParent(e, 'H1,H2,H3,H4,H5,H6,P'), pa2, n, tm, pl = [], i, ns;
-
-						if (pa) {
-							pa2 = pa.cloneNode(false);
-
-							pl.push(e);
-							for (n = e; n = n.parentNode;) {
-								pl.push(n);
-
-								if (n == pa)
-									break;
-							}
-
-							tm = pa2;
-							for (i = pl.length - 1; i >= 0; i--) {
-								if (i == pl.length - 1) {
-									while (ns = pl[i - 1].nextSibling)
-										tm.appendChild(ns.parentNode.removeChild(ns));
-								} else {
-									n = pl[i].cloneNode(false);
-
-									if (i != 0) {
-										while (ns = pl[i - 1].nextSibling)
-											n.appendChild(ns.parentNode.removeChild(ns));
-									}
-
-									tm = tm.appendChild(n);
-								}
-							}
-
-							e = t.dom.insertAfter(e.parentNode.removeChild(e), pa);
-							t.dom.insertAfter(e, pa);
-							t.dom.insertAfter(pa2, e);
-						}
-					});
-				});
-			}
-		},
-
-		setEntities : function(s) {
-			var t = this, a, i, l = {}, re = '', v;
-
-			// No need to setup more than once
-			if (t.entityLookup)
-				return;
-
-			// Build regex and lookup array
-			a = s.split(',');
-			for (i = 0; i < a.length; i += 2) {
-				v = a[i];
-
-				// Don't add default &amp; &quot; etc.
-				if (v == 34 || v == 38 || v == 60 || v == 62)
-					continue;
-
-				l[String.fromCharCode(a[i])] = a[i + 1];
-
-				v = parseInt(a[i]).toString(16);
-				re += '\\u' + '0000'.substring(v.length) + v;
-			}
-
-			if (!re) {
-				t.settings.entity_encoding = 'raw';
-				return;
-			}
-
-			t.entitiesRE = new RegExp('[' + re + ']', 'g');
-			t.entityLookup = l;
-		},
-
-		setValidChildRules : function(s) {
-			this.childRules = null;
-			this.addValidChildRules(s);
-		},
-
-		addValidChildRules : function(s) {
-			var t = this, inst, intr, bloc;
-
-			if (!s)
-				return;
-
-			inst = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';
-			intr = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';
-			bloc = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';
-
-			each(s.split(','), function(s) {
-				var p = s.split(/\[|\]/), re;
-
-				s = '';
-				each(p[1].split('|'), function(v) {
-					if (s)
-						s += '|';
-
-					switch (v) {
-						case '%itrans':
-							v = intr;
-							break;
-
-						case '%itrans_na':
-							v = intr.substring(2);
-							break;
-
-						case '%istrict':
-							v = inst;
-							break;
-
-						case '%istrict_na':
-							v = inst.substring(2);
-							break;
-
-						case '%btrans':
-							v = bloc;
-							break;
-
-						case '%bstrict':
-							v = bloc;
-							break;
-					}
-
-					s += v;
-				});
-				re = new RegExp('^(' + s.toLowerCase() + ')$', 'i');
-
-				each(p[0].split('/'), function(s) {
-					t.childRules = t.childRules || {};
-					t.childRules[s] = re;
-				});
-			});
-
-			// Build regex
-			s = '';
-			each(t.childRules, function(v, k) {
-				if (s)
-					s += '|';
-
-				s += k;
-			});
-
-			t.parentElementsRE = new RegExp('^(' + s.toLowerCase() + ')$', 'i');
-
-			/*console.debug(t.parentElementsRE.toString());
-			each(t.childRules, function(v) {
-				console.debug(v.toString());
-			});*/
-		},
-
-		setRules : function(s) {
-			var t = this;
-
-			t._setup();
-			t.rules = {};
-			t.wildRules = [];
-			t.validElements = {};
-
-			return t.addRules(s);
-		},
-
-		addRules : function(s) {
-			var t = this, dr;
-
-			if (!s)
-				return;
-
-			t._setup();
-
-			each(s.split(','), function(s) {
-				var p = s.split(/\[|\]/), tn = p[0].split('/'), ra, at, wat, va = [];
-
-				// Extend with default rules
-				if (dr)
-					at = tinymce.extend([], dr.attribs);
-
-				// Parse attributes
-				if (p.length > 1) {
-					each(p[1].split('|'), function(s) {
-						var ar = {}, i;
-
-						at = at || [];
-
-						// Parse attribute rule
-						s = s.replace(/::/g, '~');
-						s = /^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);
-						s[2] = s[2].replace(/~/g, ':');
-
-						// Add required attributes
-						if (s[1] == '!') {
-							ra = ra || [];
-							ra.push(s[2]);
-						}
-
-						// Remove inherited attributes
-						if (s[1] == '-') {
-							for (i = 0; i <at.length; i++) {
-								if (at[i].name == s[2]) {
-									at.splice(i, 1);
-									return;
-								}
-							}
-						}
-
-						switch (s[3]) {
-							// Add default attrib values
-							case '=':
-								ar.defaultVal = s[4] || '';
-								break;
-
-							// Add forced attrib values
-							case ':':
-								ar.forcedVal = s[4];
-								break;
-
-							// Add validation values
-							case '<':
-								ar.validVals = s[4].split('?');
-								break;
-						}
-
-						if (/[*.?]/.test(s[2])) {
-							wat = wat || [];
-							ar.nameRE = new RegExp('^' + wildcardToRE(s[2]) + '$');
-							wat.push(ar);
-						} else {
-							ar.name = s[2];
-							at.push(ar);
-						}
-
-						va.push(s[2]);
-					});
-				}
-
-				// Handle element names
-				each(tn, function(s, i) {
-					var pr = s.charAt(0), x = 1, ru = {};
-
-					// Extend with default rule data
-					if (dr) {
-						if (dr.noEmpty)
-							ru.noEmpty = dr.noEmpty;
-
-						if (dr.fullEnd)
-							ru.fullEnd = dr.fullEnd;
-
-						if (dr.padd)
-							ru.padd = dr.padd;
-					}
-
-					// Handle prefixes
-					switch (pr) {
-						case '-':
-							ru.noEmpty = true;
-							break;
-
-						case '+':
-							ru.fullEnd = true;
-							break;
-
-						case '#':
-							ru.padd = true;
-							break;
-
-						default:
-							x = 0;
-					}
-
-					tn[i] = s = s.substring(x);
-					t.validElements[s] = 1;
-
-					// Add element name or element regex
-					if (/[*.?]/.test(tn[0])) {
-						ru.nameRE = new RegExp('^' + wildcardToRE(tn[0]) + '$');
-						t.wildRules = t.wildRules || {};
-						t.wildRules.push(ru);
-					} else {
-						ru.name = tn[0];
-
-						// Store away default rule
-						if (tn[0] == '@')
-							dr = ru;
-
-						t.rules[s] = ru;
-					}
-
-					ru.attribs = at;
-
-					if (ra)
-						ru.requiredAttribs = ra;
-
-					if (wat) {
-						// Build valid attributes regexp
-						s = '';
-						each(va, function(v) {
-							if (s)
-								s += '|';
-
-							s += '(' + wildcardToRE(v) + ')';
-						});
-						ru.validAttribsRE = new RegExp('^' + s.toLowerCase() + '$');
-						ru.wildAttribs = wat;
-					}
-				});
-			});
-
-			// Build valid elements regexp
-			s = '';
-			each(t.validElements, function(v, k) {
-				if (s)
-					s += '|';
-
-				if (k != '@')
-					s += k;
-			});
-			t.validElementsRE = new RegExp('^(' + wildcardToRE(s.toLowerCase()) + ')$');
-
-			//console.debug(t.validElementsRE.toString());
-			//console.dir(t.rules);
-			//console.dir(t.wildRules);
-		},
-
-		findRule : function(n) {
-			var t = this, rl = t.rules, i, r;
-
-			t._setup();
-
-			// Exact match
-			r = rl[n];
-			if (r)
-				return r;
-
-			// Try wildcards
-			rl = t.wildRules;
-			for (i = 0; i < rl.length; i++) {
-				if (rl[i].nameRE.test(n))
-					return rl[i];
-			}
-
-			return null;
-		},
-
-		findAttribRule : function(ru, n) {
-			var i, wa = ru.wildAttribs;
-
-			for (i = 0; i < wa.length; i++) {
-				if (wa[i].nameRE.test(n))
-					return wa[i];
-			}
-
-			return null;
-		},
-
-		serialize : function(n, o) {
-			var h, t = this;
-
-			t._setup();
-			o = o || {};
-			o.format = o.format || 'html';
-			t.processObj = o;
-			n = n.cloneNode(true);
-			t.key = '' + (parseInt(t.key) + 1);
-
-			// Pre process
-			if (!o.no_events) {
-				o.node = n;
-				t.onPreProcess.dispatch(t, o);
-			}
-
-			// Serialize HTML DOM into a string
-			t.writer.reset();
-			t._serializeNode(n, o.getInner);
-
-			// Post process
-			o.content = t.writer.getContent();
-
-			if (!o.no_events)
-				t.onPostProcess.dispatch(t, o);
-
-			t._postProcess(o);
-			o.node = null;
-
-			return tinymce.trim(o.content);
-		},
-
-		// Internal functions
-
-		_postProcess : function(o) {
-			var t = this, s = t.settings, h = o.content, sc = [], p;
-
-			if (o.format == 'html') {
-				// Protect some elements
-				p = t._protect({
-					content : h,
-					patterns : [
-						{pattern : /(<script[^>]*>)(.*?)(<\/script>)/g},
-						{pattern : /(<style[^>]*>)(.*?)(<\/style>)/g},
-						{pattern : /(<pre[^>]*>)(.*?)(<\/pre>)/g, encode : 1}
-					]
-				});
-
-				h = p.content;
-
-				// Entity encode
-				if (s.entity_encoding !== 'raw')
-					h = t._encode(h);
-
-				// Use BR instead of &nbsp; padded P elements inside editor and use <p>&nbsp;</p> outside editor
-/*				if (o.set)
-					h = h.replace(/<p>\s+(&nbsp;|&#160;|\u00a0|<br \/>)\s+<\/p>/g, '<p><br /></p>');
-				else
-					h = h.replace(/<p>\s+(&nbsp;|&#160;|\u00a0|<br \/>)\s+<\/p>/g, '<p>$1</p>');*/
-
-				// Since Gecko and Safari keeps whitespace in the DOM we need to
-				// remove it inorder to match other browsers. But I think Gecko and Safari is right.
-				// This process is only done when getting contents out from the editor.
-				if (!o.set) {
-					// We need to replace paragraph whitespace with an nbsp before indentation to keep the \u00a0 char
-					h = h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g, s.entity_encoding == 'numeric' ? '<p$1>&#160;</p>' : '<p$1>&nbsp;</p>');
-
-					if (s.remove_linebreaks) {
-						h = h.replace(/\r?\n|\r/g, ' ');
-						h = h.replace(/(<[^>]+>)\s+/g, '$1 ');
-						h = h.replace(/\s+(<\/[^>]+>)/g, ' $1');
-						h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g, '<$1 $2>'); // Trim block start
-						h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g, '<$1>'); // Trim block start
-						h = h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g, '</$1>'); // Trim block end
-					}
-
-					// Simple indentation
-					if (s.apply_source_formatting && s.indent_mode == 'simple') {
-						// Add line breaks before and after block elements
-						h = h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g, '\n<$1$2$3>\n');
-						h = h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g, '\n<$1$2>');
-						h = h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g, '</$1>\n');
-						h = h.replace(/\n\n/g, '\n');
-					}
-				}
-
-				h = t._unprotect(h, p);
-
-				// Restore the \u00a0 character if raw mode is enabled
-				if (s.entity_encoding == 'raw')
-					h = h.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g, '<p$1>\u00a0</p>');
-			}
-
-			o.content = h;
-		},
-
-		_serializeNode : function(n, inn) {
-			var t = this, s = t.settings, w = t.writer, hc, el, cn, i, l, a, at, no, v, nn, ru, ar, iv;
-
-			if (!s.node_filter || s.node_filter(n)) {
-				switch (n.nodeType) {
-					case 1: // Element
-						if (n.hasAttribute ? n.hasAttribute('mce_bogus') : n.getAttribute('mce_bogus'))
-							return;
-
-						iv = false;
-						hc = n.hasChildNodes();
-						nn = n.getAttribute('mce_name') || n.nodeName.toLowerCase();
-
-						// Add correct prefix on IE
-						if (isIE) {
-							if (n.scopeName !== 'HTML' && n.scopeName !== 'html')
-								nn = n.scopeName + ':' + nn;
-						}
-
-						// Remove mce prefix on IE needed for the abbr element
-						if (nn.indexOf('mce:') === 0)
-							nn = nn.substring(4);
-
-						// Check if valid
-						if (!t.validElementsRE.test(nn) || (t.invalidElementsRE && t.invalidElementsRE.test(nn)) || inn) {
-							iv = true;
-							break;
-						}
-
-						if (isIE) {
-							// Fix IE content duplication (DOM can have multiple copies of the same node)
-							if (s.fix_content_duplication) {
-								if (n.mce_serialized == t.key)
-									return;
-
-								n.mce_serialized = t.key;
-							}
-
-							// IE sometimes adds a / infront of the node name
-							if (nn.charAt(0) == '/')
-								nn = nn.substring(1);
-						} else if (isGecko) {
-							// Ignore br elements
-							if (n.nodeName === 'BR' && n.getAttribute('type') == '_moz')
-								return;
-						}
-
-						// Check if valid child
-						if (t.childRules) {
-							if (t.parentElementsRE.test(t.elementName)) {
-								if (!t.childRules[t.elementName].test(nn)) {
-									iv = true;
-									break;
-								}
-							}
-
-							t.elementName = nn;
-						}
-
-						ru = t.findRule(nn);
-						nn = ru.name || nn;
-
-						// Skip empty nodes or empty node name in IE
-						if ((!hc && ru.noEmpty) || (isIE && !nn)) {
-							iv = true;
-							break;
-						}
-
-						// Check required
-						if (ru.requiredAttribs) {
-							a = ru.requiredAttribs;
-
-							for (i = a.length - 1; i >= 0; i--) {
-								if (this.dom.getAttrib(n, a[i]) !== '')
-									break;
-							}
-
-							// None of the required was there
-							if (i == -1) {
-								iv = true;
-								break;
-							}
-						}
-
-						w.writeStartElement(nn);
-
-						// Add ordered attributes
-						if (ru.attribs) {
-							for (i=0, at = ru.attribs, l = at.length; i<l; i++) {
-								a = at[i];
-								v = t._getAttrib(n, a);
-
-								if (v !== null)
-									w.writeAttribute(a.name, v);
-							}
-						}
-
-						// Add wild attributes
-						if (ru.validAttribsRE) {
-							at = isIE ? getIEAtts(n) : n.attributes;
-							for (i=at.length-1; i>-1; i--) {
-								no = at[i];
-
-								if (no.specified) {
-									a = no.nodeName.toLowerCase();
-
-									if (s.invalid_attrs.test(a) || !ru.validAttribsRE.test(a))
-										continue;
-
-									ar = t.findAttribRule(ru, a);
-									v = t._getAttrib(n, ar, a);
-
-									if (v !== null)
-										w.writeAttribute(a, v);
-								}
-							}
-						}
-
-						// Padd empty nodes with a &nbsp;
-						if (!hc && ru.padd)
-							w.writeText('\u00a0');
-
-						break;
-
-					case 3: // Text
-						// Check if valid child
-						if (t.childRules && t.parentElementsRE.test(t.elementName)) {
-							if (!t.childRules[t.elementName].test(n.nodeName))
-								return;
-						}
-
-						return w.writeText(n.nodeValue);
-
-					case 4: // CDATA
-						return w.writeCDATA(n.nodeValue);
-
-					case 8: // Comment
-						return w.writeComment(n.nodeValue);
-				}
-			} else if (n.nodeType == 1)
-				hc = n.hasChildNodes();
-
-			if (hc) {
-				cn = n.firstChild;
-
-				while (cn) {
-					t._serializeNode(cn);
-					t.elementName = nn;
-					cn = cn.nextSibling;
-				}
-			}
-
-			// Write element end
-			if (!iv) {
-				if (hc || !s.closed.test(nn))
-					w.writeFullEndElement();
-				else
-					w.writeEndElement();
-			}
-		},
-
-		_protect : function(o) {
-			var t = this;
-
-			o.items = o.items || [];
-
-			function enc(s) {
-				return s.replace(/[\r\n\\]/g, function(c) {
-					if (c === '\n')
-						return '\\n';
-					else if (c === '\\')
-						return '\\\\';
-
-					return '\\r';
-				});
-			};
-
-			function dec(s) {
-				return s.replace(/\\[\\rn]/g, function(c) {
-					if (c === '\\n')
-						return '\n';
-					else if (c === '\\\\')
-						return '\\';
-
-					return '\r';
-				});
-			};
-
-			each(o.patterns, function(p) {
-				o.content = dec(enc(o.content).replace(p.pattern, function(x, a, b, c) {
-					b = dec(b);
-
-					if (p.encode)
-						b = t._encode(b);
-
-					o.items.push(b);
-					return a + '<!--mce:' + (o.items.length - 1) + '-->' + c;
-				}));
-			});
-
-			return o;
-		},
-
-		_unprotect : function(h, o) {
-			h = h.replace(/\<!--mce:([0-9]+)--\>/g, function(a, b) {
-				return o.items[parseInt(b)];
-			});
-
-			o.items = [];
-
-			return h;
-		},
-
-		_encode : function(h) {
-			var t = this, s = t.settings, l;
-
-			// Entity encode
-			if (s.entity_encoding !== 'raw') {
-				if (s.entity_encoding.indexOf('named') != -1) {
-					t.setEntities(s.entities);
-					l = t.entityLookup;
-
-					h = h.replace(t.entitiesRE, function(a) {
-						var v;
-
-						if (v = l[a])
-							a = '&' + v + ';';
-
-						return a;
-					});
-				}
-
-				if (s.entity_encoding.indexOf('numeric') != -1) {
-					h = h.replace(/[\u007E-\uFFFF]/g, function(a) {
-						return '&#' + a.charCodeAt(0) + ';';
-					});
-				}
-			}
-
-			return h;
-		},
-
-		_setup : function() {
-			var t = this, s = this.settings;
-
-			if (t.done)
-				return;
-
-			t.done = 1;
-
-			t.setRules(s.valid_elements);
-			t.addRules(s.extended_valid_elements);
-			t.addValidChildRules(s.valid_child_elements);
-
-			if (s.invalid_elements)
-				t.invalidElementsRE = new RegExp('^(' + wildcardToRE(s.invalid_elements.replace(/,/g, '|').toLowerCase()) + ')$');
-
-			if (s.attrib_value_filter)
-				t.attribValueFilter = s.attribValueFilter;
-		},
-
-		_getAttrib : function(n, a, na) {
-			var i, v;
-
-			na = na || a.name;
-
-			if (a.forcedVal && (v = a.forcedVal)) {
-				if (v === '{$uid}')
-					return this.dom.uniqueId();
-
-				return v;
-			}
-
-			v = this.dom.getAttrib(n, na);
-
-			switch (na) {
-				case 'rowspan':
-				case 'colspan':
-					// Whats the point? Remove usless attribute value
-					if (v == '1')
-						v = '';
-
-					break;
-			}
-
-			if (this.attribValueFilter)
-				v = this.attribValueFilter(na, v, n);
-
-			if (a.validVals) {
-				for (i = a.validVals.length - 1; i >= 0; i--) {
-					if (v == a.validVals[i])
-						break;
-				}
-
-				if (i == -1)
-					return null;
-			}
-
-			if (v === '' && typeof(a.defaultVal) != 'undefined') {
-				v = a.defaultVal;
-
-				if (v === '{$uid}')
-					return this.dom.uniqueId();
-
-				return v;
-			} else {
-				// Remove internal mceItemXX classes when content is extracted from editor
-				if (na == 'class' && this.processObj.get)
-					v = v.replace(/\s?mceItem\w+\s?/g, '');
-			}
-
-			if (v === '')
-				return null;
-
-
-			return v;
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/dom/ScriptLoader.js */
-
-(function() {
-	var each = tinymce.each;
-
-	tinymce.create('tinymce.dom.ScriptLoader', {
-		ScriptLoader : function(s) {
-			this.settings = s || {};
-			this.queue = [];
-			this.lookup = {};
-		},
-
-		isDone : function(u) {
-			return this.lookup[u] ? this.lookup[u].state == 2 : 0;
-		},
-
-		markDone : function(u) {
-			this.lookup[u] = {state : 2, url : u};
-		},
-
-		add : function(u, cb, s, pr) {
-			var t = this, lo = t.lookup, o;
-
-			if (o = lo[u]) {
-				// Is loaded fire callback
-				if (cb && o.state == 2)
-					cb.call(s || this);
-
-				return o;
-			}
-
-			o = {state : 0, url : u, func : cb, scope : s || this};
-
-			if (pr)
-				t.queue.unshift(o);
-			else
-				t.queue.push(o);
-
-			lo[u] = o;
-
-			return o;
-		},
-
-		load : function(u, cb, s) {
-			var t = this, o;
-
-			if (o = t.lookup[u]) {
-				// Is loaded fire callback
-				if (cb && o.state == 2)
-					cb.call(s || t);
-
-				return o;
-			}
-
-			function loadScript(u) {
-				if (tinymce.dom.Event.domLoaded || t.settings.strict_mode) {
-					tinymce.util.XHR.send({
-						url : tinymce._addVer(u),
-						error : t.settings.error,
-						async : false,
-						success : function(co) {
-							t.eval(co);
-						}
-					});
-				} else
-					document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');
-			};
-
-			if (!tinymce.is(u, 'string')) {
-				each(u, function(u) {
-					loadScript(u);
-				});
-
-				if (cb)
-					cb.call(s || t);
-			} else {
-				loadScript(u);
-
-				if (cb)
-					cb.call(s || t);
-			}
-		},
-
-		loadQueue : function(cb, s) {
-			var t = this;
-
-			if (!t.queueLoading) {
-				t.queueLoading = 1;
-				t.queueCallbacks = [];
-
-				t.loadScripts(t.queue, function() {
-					t.queueLoading = 0;
-
-					if (cb)
-						cb.call(s || t);
-
-					each(t.queueCallbacks, function(o) {
-						o.func.call(o.scope);
-					});
-				});
-			} else if (cb)
-				t.queueCallbacks.push({func : cb, scope : s || t});
-		},
-
-		eval : function(co) {
-			var w = window;
-
-			// Evaluate script
-			if (!w.execScript) {
-				try {
-					eval.call(w, co);
-				} catch (ex) {
-					eval(co, w); // Firefox 3.0a8
-				}
-			} else
-				w.execScript(co); // IE
-		},
-
-		loadScripts : function(sc, cb, s) {
-			var t = this, lo = t.lookup;
-
-			function done(o) {
-				o.state = 2; // Has been loaded
-
-				// Run callback
-				if (o.func)
-					o.func.call(o.scope || t);
-			};
-
-			function allDone() {
-				var l;
-
-				// Check if all files are loaded
-				l = sc.length;
-				each(sc, function(o) {
-					o = lo[o.url];
-
-					if (o.state === 2) {// It has finished loading
-						done(o);
-						l--;
-					} else
-						load(o);
-				});
-
-				// They are all loaded
-				if (l === 0 && cb) {
-					cb.call(s || t);
-					cb = 0;
-				}
-			};
-
-			function load(o) {
-				if (o.state > 0)
-					return;
-
-				o.state = 1; // Is loading
-
-				tinymce.util.XHR.send({
-					url : o.url,
-					error : t.settings.error,
-					success : function(co) {
-						t.eval(co);
-						done(o);
-						allDone();
-					}
-				});
-			};
-
-			each(sc, function(o) {
-				var u = o.url;
-
-				// Add to queue if needed
-				if (!lo[u]) {
-					lo[u] = o;
-					t.queue.push(o);
-				} else
-					o = lo[u];
-
-				// Is already loading or has been loaded
-				if (o.state > 0)
-					return;
-
-				if (!tinymce.dom.Event.domLoaded && !t.settings.strict_mode) {
-					var ix, ol = '';
-
-					// Add onload events
-					if (cb || o.func) {
-						o.state = 1; // Is loading
-
-						ix = tinymce.dom.ScriptLoader._addOnLoad(function() {
-							done(o);
-							allDone();
-						});
-
-						if (tinymce.isIE)
-							ol = ' onreadystatechange="';
-						else
-							ol = ' onload="';
-
-						ol += 'tinymce.dom.ScriptLoader._onLoad(this,\'' + u + '\',' + ix + ');"';
-					}
-
-					document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"' + ol + '></script>');
-
-					if (!o.func)
-						done(o);
-				} else
-					load(o);
-			});
-
-			allDone();
-		},
-
-		// Static methods
-		'static' : {
-			_addOnLoad : function(f) {
-				var t = this;
-
-				t._funcs = t._funcs || [];
-				t._funcs.push(f);
-
-				return t._funcs.length - 1;
-			},
-
-			_onLoad : function(e, u, ix) {
-				if (!tinymce.isIE || e.readyState == 'complete')
-					this._funcs[ix].call(this);
-			}
-		}
-
-		});
-
-	// Global script loader
-	tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();
-})();
-
-/* file:jscripts/tiny_mce/classes/ui/Control.js */
-
-(function() {
-	// Shorten class names
-	var DOM = tinymce.DOM, is = tinymce.is;
-
-	tinymce.create('tinymce.ui.Control', {
-		Control : function(id, s) {
-			this.id = id;
-			this.settings = s = s || {};
-			this.rendered = false;
-			this.onRender = new tinymce.util.Dispatcher(this);
-			this.classPrefix = '';
-			this.scope = s.scope || this;
-			this.disabled = 0;
-			this.active = 0;
-		},
-
-		setDisabled : function(s) {
-			var e;
-
-			if (s != this.disabled) {
-				e = DOM.get(this.id);
-
-				// Add accessibility title for unavailable actions
-				if (e && this.settings.unavailable_prefix) {
-					if (s) {
-						this.prevTitle = e.title;
-						e.title = this.settings.unavailable_prefix + ": " + e.title;
-					} else
-						e.title = this.prevTitle;
-				}
-
-				this.setState('Disabled', s);
-				this.setState('Enabled', !s);
-				this.disabled = s;
-			}
-		},
-
-		isDisabled : function() {
-			return this.disabled;
-		},
-
-		setActive : function(s) {
-			if (s != this.active) {
-				this.setState('Active', s);
-				this.active = s;
-			}
-		},
-
-		isActive : function() {
-			return this.active;
-		},
-
-		setState : function(c, s) {
-			var n = DOM.get(this.id);
-
-			c = this.classPrefix + c;
-
-			if (s)
-				DOM.addClass(n, c);
-			else
-				DOM.removeClass(n, c);
-		},
-
-		isRendered : function() {
-			return this.rendered;
-		},
-
-		renderHTML : function() {
-		},
-
-		renderTo : function(n) {
-			DOM.setHTML(n, this.renderHTML());
-		},
-
-		postRender : function() {
-			var t = this, b;
-
-			// Set pending states
-			if (is(t.disabled)) {
-				b = t.disabled;
-				t.disabled = -1;
-				t.setDisabled(b);
-			}
-
-			if (is(t.active)) {
-				b = t.active;
-				t.active = -1;
-				t.setActive(b);
-			}
-		},
-
-		remove : function() {
-			DOM.remove(this.id);
-			this.destroy();
-		},
-
-		destroy : function() {
-			tinymce.dom.Event.clear(this.id);
-		}
-
-		});
-})();
-/* file:jscripts/tiny_mce/classes/ui/Container.js */
-
-tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {
-	Container : function(id, s) {
-		this.parent(id, s);
-		this.controls = [];
-		this.lookup = {};
-	},
-
-	add : function(c) {
-		this.lookup[c.id] = c;
-		this.controls.push(c);
-
-		return c;
-	},
-
-	get : function(n) {
-		return this.lookup[n];
-	}
-
-	});
-
-
-/* file:jscripts/tiny_mce/classes/ui/Separator.js */
-
-tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
-	Separator : function(id, s) {
-		this.parent(id, s);
-		this.classPrefix = 'mceSeparator';
-	},
-
-	renderHTML : function() {
-		return tinymce.DOM.createHTML('span', {'class' : this.classPrefix});
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/ui/MenuItem.js */
-
-(function() {
-	var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
-
-	tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', {
-		MenuItem : function(id, s) {
-			this.parent(id, s);
-			this.classPrefix = 'mceMenuItem';
-		},
-
-		setSelected : function(s) {
-			this.setState('Selected', s);
-			this.selected = s;
-		},
-
-		isSelected : function() {
-			return this.selected;
-		},
-
-		postRender : function() {
-			var t = this;
-			
-			t.parent();
-
-			// Set pending state
-			if (is(t.selected))
-				t.setSelected(t.selected);
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/ui/Menu.js */
-
-(function() {
-	var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
-
-	tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', {
-		Menu : function(id, s) {
-			var t = this;
-
-			t.parent(id, s);
-			t.items = {};
-			t.collapsed = false;
-			t.menuCount = 0;
-			t.onAddItem = new tinymce.util.Dispatcher(this);
-		},
-
-		expand : function(d) {
-			var t = this;
-
-			if (d) {
-				walk(t, function(o) {
-					if (o.expand)
-						o.expand();
-				}, 'items', t);
-			}
-
-			t.collapsed = false;
-		},
-
-		collapse : function(d) {
-			var t = this;
-
-			if (d) {
-				walk(t, function(o) {
-					if (o.collapse)
-						o.collapse();
-				}, 'items', t);
-			}
-
-			t.collapsed = true;
-		},
-
-		isCollapsed : function() {
-			return this.collapsed;
-		},
-
-		add : function(o) {
-			if (!o.settings)
-				o = new tinymce.ui.MenuItem(o.id || DOM.uniqueId(), o);
-
-			this.onAddItem.dispatch(this, o);
-
-			return this.items[o.id] = o;
-		},
-
-		addSeparator : function() {
-			return this.add({separator : true});
-		},
-
-		addMenu : function(o) {
-			if (!o.collapse)
-				o = this.createMenu(o);
-
-			this.menuCount++;
-
-			return this.add(o);
-		},
-
-		hasMenus : function() {
-			return this.menuCount !== 0;
-		},
-
-		remove : function(o) {
-			delete this.items[o.id];
-		},
-
-		removeAll : function() {
-			var t = this;
-
-			walk(t, function(o) {
-				if (o.removeAll)
-					o.removeAll();
-				else
-					o.remove();
-
-				o.destroy();
-			}, 'items', t);
-
-			t.items = {};
-		},
-
-		createMenu : function(o) {
-			var m = new tinymce.ui.Menu(o.id || DOM.uniqueId(), o);
-
-			m.onAddItem.add(this.onAddItem.dispatch, this.onAddItem);
-
-			return m;
-		}
-
-		});
-})();
-/* file:jscripts/tiny_mce/classes/ui/DropMenu.js */
-
-(function() {
-	var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element;
-
-	tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', {
-		DropMenu : function(id, s) {
-			s = s || {};
-			s.container = s.container || DOM.doc.body;
-			s.offset_x = s.offset_x || 0;
-			s.offset_y = s.offset_y || 0;
-			s.vp_offset_x = s.vp_offset_x || 0;
-			s.vp_offset_y = s.vp_offset_y || 0;
-
-			if (is(s.icons) && !s.icons)
-				s['class'] += ' mceNoIcons';
-
-			this.parent(id, s);
-			this.onShowMenu = new tinymce.util.Dispatcher(this);
-			this.onHideMenu = new tinymce.util.Dispatcher(this);
-			this.classPrefix = 'mceMenu';
-		},
-
-		createMenu : function(s) {
-			var t = this, cs = t.settings, m;
-
-			s.container = s.container || cs.container;
-			s.parent = t;
-			s.constrain = s.constrain || cs.constrain;
-			s['class'] = s['class'] || cs['class'];
-			s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x;
-			s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y;
-			m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s);
-
-			m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem);
-
-			return m;
-		},
-
-		update : function() {
-			var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;
-
-			tw = s.max_width ? Math.min(tb.clientWidth, s.max_width) : tb.clientWidth;
-			th = s.max_height ? Math.min(tb.clientHeight, s.max_height) : tb.clientHeight;
-
-			if (!DOM.boxModel)
-				t.element.setStyles({width : tw + 2, height : th + 2});
-			else
-				t.element.setStyles({width : tw, height : th});
-
-			if (s.max_width)
-				DOM.setStyle(co, 'width', tw);
-
-			if (s.max_height) {
-				DOM.setStyle(co, 'height', th);
-
-				if (tb.clientHeight < s.max_height)
-					DOM.setStyle(co, 'overflow', 'hidden');
-			}
-		},
-
-		showMenu : function(x, y, px) {
-			var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix;
-
-			t.collapse(1);
-
-			if (t.isMenuVisible)
-				return;
-
-			if (!t.rendered) {
-				co = DOM.add(t.settings.container, t.renderNode());
-
-				each(t.items, function(o) {
-					o.postRender();
-				});
-
-				t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
-			} else
-				co = DOM.get('menu_' + t.id);
-
-			// Move layer out of sight unless it's Opera since it scrolls to top of page due to an bug
-			if (!tinymce.isOpera)
-				DOM.setStyles(co, {left : -0xFFFF , top : -0xFFFF});
-
-			DOM.show(co);
-			t.update();
-
-			x += s.offset_x || 0;
-			y += s.offset_y || 0;
-			vp.w -= 4;
-			vp.h -= 4;
-
-			// Move inside viewport if not submenu
-			if (s.constrain) {
-				w = co.clientWidth - ot;
-				h = co.clientHeight - ot;
-				mx = vp.x + vp.w;
-				my = vp.y + vp.h;
-
-				if ((x + s.vp_offset_x + w) > mx)
-					x = px ? px - w : Math.max(0, (mx - s.vp_offset_x) - w);
-
-				if ((y + s.vp_offset_y + h) > my)
-					y = Math.max(0, (my - s.vp_offset_y) - h);
-			}
-
-			DOM.setStyles(co, {left : x , top : y});
-			t.element.update();
-
-			t.isMenuVisible = 1;
-			t.mouseClickFunc = Event.add(co, 'click', function(e) {
-				var m;
-
-				e = e.target;
-
-				if (e && (e = DOM.getParent(e, 'TR')) && !DOM.hasClass(e, cp + 'ItemSub')) {
-					m = t.items[e.id];
-
-					if (m.isDisabled())
-						return;
-
-					dm = t;
-
-					while (dm) {
-						if (dm.hideMenu)
-							dm.hideMenu();
-
-						dm = dm.settings.parent;
-					}
-
-					if (m.settings.onclick)
-						m.settings.onclick(e);
-
-					return Event.cancel(e); // Cancel to fix onbeforeunload problem
-				}
-			});
-
-			if (t.hasMenus()) {
-				t.mouseOverFunc = Event.add(co, 'mouseover', function(e) {
-					var m, r, mi;
-
-					e = e.target;
-					if (e && (e = DOM.getParent(e, 'TR'))) {
-						m = t.items[e.id];
-
-						if (t.lastMenu)
-							t.lastMenu.collapse(1);
-
-						if (m.isDisabled())
-							return;
-
-						if (e && DOM.hasClass(e, cp + 'ItemSub')) {
-							//p = DOM.getPos(s.container);
-							r = DOM.getRect(e);
-							m.showMenu((r.x + r.w - ot), r.y - ot, r.x);
-							t.lastMenu = m;
-							DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive');
-						}
-					}
-				});
-			}
-
-			t.onShowMenu.dispatch(t);
-
-			if (s.keyboard_focus) {
-				Event.add(co, 'keydown', t._keyHandler, t);
-				DOM.select('a', 'menu_' + t.id)[0].focus(); // Select first link
-				t._focusIdx = 0;
-			}
-		},
-
-		hideMenu : function(c) {
-			var t = this, co = DOM.get('menu_' + t.id), e;
-
-			if (!t.isMenuVisible)
-				return;
-
-			Event.remove(co, 'mouseover', t.mouseOverFunc);
-			Event.remove(co, 'click', t.mouseClickFunc);
-			Event.remove(co, 'keydown', t._keyHandler);
-			DOM.hide(co);
-			t.isMenuVisible = 0;
-
-			if (!c)
-				t.collapse(1);
-
-			if (t.element)
-				t.element.hide();
-
-			if (e = DOM.get(t.id))
-				DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive');
-
-			t.onHideMenu.dispatch(t);
-		},
-
-		add : function(o) {
-			var t = this, co;
-
-			o = t.parent(o);
-
-			if (t.isRendered && (co = DOM.get('menu_' + t.id)))
-				t._add(DOM.select('tbody', co)[0], o);
-
-			return o;
-		},
-
-		collapse : function(d) {
-			this.parent(d);
-			this.hideMenu(1);
-		},
-
-		remove : function(o) {
-			DOM.remove(o.id);
-			this.destroy();
-
-			return this.parent(o);
-		},
-
-		destroy : function() {
-			var t = this, co = DOM.get('menu_' + t.id);
-
-			Event.remove(co, 'mouseover', t.mouseOverFunc);
-			Event.remove(co, 'click', t.mouseClickFunc);
-
-			if (t.element)
-				t.element.remove();
-
-			DOM.remove(co);
-		},
-
-		renderNode : function() {
-			var t = this, s = t.settings, n, tb, co, w;
-
-			w = DOM.create('div', {id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000'});
-			co = DOM.add(w, 'div', {id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')});
-			t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
-
-			if (s.menu_line)
-				DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'});
-
-//			n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'});
-			n = DOM.add(co, 'table', {id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0});
-			tb = DOM.add(n, 'tbody');
-
-			each(t.items, function(o) {
-				t._add(tb, o);
-			});
-
-			t.rendered = true;
-
-			return w;
-		},
-
-		// Internal functions
-
-		_keyHandler : function(e) {
-			var t = this, kc = e.keyCode;
-
-			function focus(d) {
-				var i = t._focusIdx + d, e = DOM.select('a', 'menu_' + t.id)[i];
-
-				if (e) {
-					t._focusIdx = i;
-					e.focus();
-				}
-			};
-
-			switch (kc) {
-				case 38:
-					focus(-1); // Select first link
-					return;
-
-				case 40:
-					focus(1);
-					return;
-
-				case 13:
-					return;
-
-				case 27:
-					return this.hideMenu();
-			}
-		},
-
-		_add : function(tb, o) {
-			var n, s = o.settings, a, ro, it, cp = this.classPrefix;
-
-			if (s.separator) {
-				ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'});
-				DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'});
-
-				if (n = ro.previousSibling)
-					DOM.addClass(n, 'mceLast');
-
-				return;
-			}
-
-			n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'});
-			n = it = DOM.add(n, 'td');
-			n = a = DOM.add(n, 'a', {href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'});
-
-			DOM.addClass(it, s['class']);
-//			n = DOM.add(n, 'span', {'class' : 'item'});
-			DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});
-			n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);
-
-			if (o.settings.style)
-				DOM.setAttrib(n, 'style', o.settings.style);
-
-			if (tb.childNodes.length == 1)
-				DOM.addClass(ro, 'mceFirst');
-
-			if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator'))
-				DOM.addClass(ro, 'mceFirst');
-
-			if (o.collapse)
-				DOM.addClass(ro, cp + 'ItemSub');
-
-			if (n = ro.previousSibling)
-				DOM.removeClass(n, 'mceLast');
-
-			DOM.addClass(ro, 'mceLast');
-		}
-
-		});
-})();
-/* file:jscripts/tiny_mce/classes/ui/Button.js */
-
-(function() {
-	var DOM = tinymce.DOM;
-
-	tinymce.create('tinymce.ui.Button:tinymce.ui.Control', {
-		Button : function(id, s) {
-			this.parent(id, s);
-			this.classPrefix = 'mceButton';
-		},
-
-		renderHTML : function() {
-			var cp = this.classPrefix, s = this.settings, h, l;
-
-			l = DOM.encode(s.label || '');
-			h = '<a id="' + this.id + '" href="javascript:;" class="' + cp + ' ' + cp + 'Enabled ' + s['class'] + (l ? ' ' + cp + 'Labeled' : '') +'" onmousedown="return false;" onclick="return false;" title="' + DOM.encode(s.title) + '">';
-
-			if (s.image)
-				h += '<img class="mceIcon" src="' + s.image + '" />' + l + '</a>';
-			else
-				h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '') + '</a>';
-
-			return h;
-		},
-
-		postRender : function() {
-			var t = this, s = t.settings;
-
-			tinymce.dom.Event.add(t.id, 'click', function(e) {
-				if (!t.isDisabled())
-					return s.onclick.call(s.scope, e);
-			});
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/ui/ListBox.js */
-
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
-
-	tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {
-		ListBox : function(id, s) {
-			var t = this;
-
-			t.parent(id, s);
-			t.items = [];
-			t.onChange = new Dispatcher(t);
-			t.onPostRender = new Dispatcher(t);
-			t.onAdd = new Dispatcher(t);
-			t.onRenderMenu = new tinymce.util.Dispatcher(this);
-			t.classPrefix = 'mceListBox';
-		},
-
-		select : function(v) {
-			var t = this, e, fv;
-
-			// Do we need to do something?
-			if (v != t.selectedValue) {
-				e = DOM.get(t.id + '_text');
-				t.selectedValue = v;
-
-				// Find item
-				each(t.items, function(o) {
-					if (o.value == v) {
-						DOM.setHTML(e, DOM.encode(o.title));
-						fv = 1;
-						return false;
-					}
-				});
-
-				// If no item was found then present title
-				if (!fv) {
-					DOM.setHTML(e, DOM.encode(t.settings.title));
-					DOM.addClass(e, 'mceTitle');
-					e = 0;
-					return;
-				} else
-					DOM.removeClass(e, 'mceTitle');
-			}
-
-			e = 0;
-		},
-
-		add : function(n, v, o) {
-			var t = this;
-
-			o = o || {};
-			o = tinymce.extend(o, {
-				title : n,
-				value : v
-			});
-
-			t.items.push(o);
-			t.onAdd.dispatch(t, o);
-		},
-
-		getLength : function() {
-			return this.items.length;
-		},
-
-		renderHTML : function() {
-			var h = '', t = this, s = t.settings, cp = t.classPrefix;
-
-			h = '<table id="' + t.id + '" cellpadding="0" cellspacing="0" class="' + cp + ' ' + cp + 'Enabled' + (s['class'] ? (' ' + s['class']) : '') + '"><tbody><tr>';
-			h += '<td>' + DOM.createHTML('a', {id : t.id + '_text', href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '</td>';
-			h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '<span></span>') + '</td>';
-			h += '</tr></tbody></table>';
-
-			return h;
-		},
-
-		showMenu : function() {
-			var t = this, p1, p2, e = DOM.get(this.id), m;
-
-			if (t.isDisabled() || t.items.length == 0)
-				return;
-
-			if (t.menu && t.menu.isMenuVisible)
-				return t.hideMenu();
-
-			if (!t.isMenuRendered) {
-				t.renderMenu();
-				t.isMenuRendered = true;
-			}
-
-			p1 = DOM.getPos(this.settings.menu_container);
-			p2 = DOM.getPos(e);
-
-			m = t.menu;
-			m.settings.offset_x = p2.x;
-			m.settings.offset_y = p2.y;
-			m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus
-
-			// Select in menu
-			if (t.oldID)
-				m.items[t.oldID].setSelected(0);
-
-			each(t.items, function(o) {
-				if (o.value === t.selectedValue) {
-					m.items[o.id].setSelected(1);
-					t.oldID = o.id;
-				}
-			});
-
-			m.showMenu(0, e.clientHeight);
-
-			Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
-			DOM.addClass(t.id, t.classPrefix + 'Selected');
-
-			//DOM.get(t.id + '_text').focus();
-		},
-
-		hideMenu : function(e) {
-			var t = this;
-
-			// Prevent double toogles by canceling the mouse click event to the button
-			if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open'))
-				return;
-
-			if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceMenu');})) {
-				DOM.removeClass(t.id, t.classPrefix + 'Selected');
-				Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
-
-				if (t.menu)
-					t.menu.hideMenu();
-			}
-		},
-
-		renderMenu : function() {
-			var t = this, m;
-
-			m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
-				menu_line : 1,
-				'class' : t.classPrefix + 'Menu mceNoIcons',
-				max_width : 150,
-				max_height : 150
-			});
-
-			m.onHideMenu.add(t.hideMenu, t);
-
-			m.add({
-				title : t.settings.title,
-				'class' : 'mceMenuItemTitle'
-			}).setDisabled(1);
-
-			each(t.items, function(o) {
-				o.id = DOM.uniqueId();
-				o.onclick = function() {
-					if (t.settings.onselect(o.value) !== false)
-						t.select(o.value); // Must be runned after
-				};
-
-				m.add(o);
-			});
-
-			t.onRenderMenu.dispatch(t, m);
-			t.menu = m;
-		},
-
-		postRender : function() {
-			var t = this, cp = t.classPrefix;
-
-			Event.add(t.id, 'click', t.showMenu, t);
-			Event.add(t.id + '_text', 'focus', function(e) {
-				if (!t._focused) {
-					t.keyDownHandler = Event.add(t.id + '_text', 'keydown', function(e) {
-						var idx = -1, v, kc = e.keyCode;
-
-						// Find current index
-						each(t.items, function(v, i) {
-							if (t.selectedValue == v.value)
-								idx = i;
-						});
-
-						// Move up/down
-						if (kc == 38)
-							v = t.items[idx - 1];
-						else if (kc == 40)
-							v = t.items[idx + 1];
-						else if (kc == 13) {
-							// Fake select on enter
-							v = t.selectedValue;
-							t.selectedValue = null; // Needs to be null to fake change
-							t.settings.onselect(v);
-							return Event.cancel(e);
-						}
-
-						if (v) {
-							t.hideMenu();
-							t.select(v.value);
-						}
-					});
-				}
-
-				t._focused = 1;
-			});
-			Event.add(t.id + '_text', 'blur', function() {Event.remove(t.id + '_text', 'keydown', t.keyDownHandler); t._focused = 0;});
-
-			// Old IE doesn't have hover on all elements
-			if (tinymce.isIE6 || !DOM.boxModel) {
-				Event.add(t.id, 'mouseover', function() {
-					if (!DOM.hasClass(t.id, cp + 'Disabled'))
-						DOM.addClass(t.id, cp + 'Hover');
-				});
-
-				Event.add(t.id, 'mouseout', function() {
-					if (!DOM.hasClass(t.id, cp + 'Disabled'))
-						DOM.removeClass(t.id, cp + 'Hover');
-				});
-			}
-
-			t.onPostRender.dispatch(t, DOM.get(t.id));
-		},
-
-		destroy : function() {
-			this.parent();
-
-			Event.clear(this.id + '_text');
-		}
-
-		});
-})();
-/* file:jscripts/tiny_mce/classes/ui/NativeListBox.js */
-
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
-
-	tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {
-		NativeListBox : function(id, s) {
-			this.parent(id, s);
-			this.classPrefix = 'mceNativeListBox';
-		},
-
-		setDisabled : function(s) {
-			DOM.get(this.id).disabled = s;
-		},
-
-		isDisabled : function() {
-			return DOM.get(this.id).disabled;
-		},
-
-		select : function(v) {
-			var e = DOM.get(this.id), ol = e.options;
-
-			v = '' + (v || '');
-
-			e.selectedIndex = 0;
-			each(ol, function(o, i) {
-				if (o.value == v) {
-					e.selectedIndex = i;
-					return false;
-				}
-			});
-		},
-
-		add : function(n, v, a) {
-			var o, t = this;
-
-			a = a || {};
-			a.value = v;
-
-			if (t.isRendered())
-				DOM.add(DOM.get(this.id), 'option', a, n);
-
-			o = {
-				title : n,
-				value : v,
-				attribs : a
-			};
-
-			t.items.push(o);
-			t.onAdd.dispatch(t, o);
-		},
-
-		getLength : function() {
-			return DOM.get(this.id).options.length - 1;
-		},
-
-		renderHTML : function() {
-			var h, t = this;
-
-			h = DOM.createHTML('option', {value : ''}, '-- ' + t.settings.title + ' --');
-
-			each(t.items, function(it) {
-				h += DOM.createHTML('option', {value : it.value}, it.title);
-			});
-
-			h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox'}, h);
-
-			return h;
-		},
-
-		postRender : function() {
-			var t = this, ch;
-
-			t.rendered = true;
-
-			function onChange(e) {
-				var v = e.target.options[e.target.selectedIndex].value;
-
-				t.onChange.dispatch(t, v);
-
-				if (t.settings.onselect)
-					t.settings.onselect(v);
-			};
-
-			Event.add(t.id, 'change', onChange);
-
-			// Accessibility keyhandler
-			Event.add(t.id, 'keydown', function(e) {
-				var bf;
-
-				Event.remove(t.id, 'change', ch);
-
-				bf = Event.add(t.id, 'blur', function() {
-					Event.add(t.id, 'change', onChange);
-					Event.remove(t.id, 'blur', bf);
-				});
-
-				if (e.keyCode == 13 || e.keyCode == 32) {
-					onChange(e);
-					return Event.cancel(e);
-				}
-			});
-
-			t.onPostRender.dispatch(t, DOM.get(t.id));
-		}
-
-		});
-})();
-/* file:jscripts/tiny_mce/classes/ui/MenuButton.js */
-
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
-
-	tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', {
-		MenuButton : function(id, s) {
-			this.parent(id, s);
-			this.onRenderMenu = new tinymce.util.Dispatcher(this);
-			s.menu_container = s.menu_container || DOM.doc.body;
-		},
-
-		showMenu : function() {
-			var t = this, p1, p2, e = DOM.get(t.id), m;
-
-			if (t.isDisabled())
-				return;
-
-			if (!t.isMenuRendered) {
-				t.renderMenu();
-				t.isMenuRendered = true;
-			}
-
-			if (t.isMenuVisible)
-				return t.hideMenu();
-
-			p1 = DOM.getPos(t.settings.menu_container);
-			p2 = DOM.getPos(e);
-
-			m = t.menu;
-			m.settings.offset_x = p2.x;
-			m.settings.offset_y = p2.y;
-			m.settings.vp_offset_x = p2.x;
-			m.settings.vp_offset_y = p2.y;
-			m.settings.keyboard_focus = t._focused;
-			m.showMenu(0, e.clientHeight);
-
-			Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
-			t.setState('Selected', 1);
-
-			t.isMenuVisible = 1;
-		},
-
-		renderMenu : function() {
-			var t = this, m;
-
-			m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
-				menu_line : 1,
-				'class' : this.classPrefix + 'Menu',
-				icons : t.settings.icons
-			});
-
-			m.onHideMenu.add(t.hideMenu, t);
-
-			t.onRenderMenu.dispatch(t, m);
-			t.menu = m;
-		},
-
-		hideMenu : function(e) {
-			var t = this;
-
-			// Prevent double toogles by canceling the mouse click event to the button
-			if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';}))
-				return;
-
-			if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceMenu');})) {
-				t.setState('Selected', 0);
-				Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
-				if (t.menu)
-					t.menu.hideMenu();
-			}
-
-			t.isMenuVisible = 0;
-		},
-
-		postRender : function() {
-			var t = this, s = t.settings;
-
-			Event.add(t.id, 'click', function() {
-				if (!t.isDisabled()) {
-					if (s.onclick)
-						s.onclick(t.value);
-
-					t.showMenu();
-				}
-			});
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/ui/SplitButton.js */
-
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
-
-	tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', {
-		SplitButton : function(id, s) {
-			this.parent(id, s);
-			this.classPrefix = 'mceSplitButton';
-		},
-
-		renderHTML : function() {
-			var h, t = this, s = t.settings, h1;
-
-			h = '<tbody><tr>';
-
-			if (s.image)
-				h1 = DOM.createHTML('img ', {src : s.image, 'class' : 'mceAction ' + s['class']});
-			else
-				h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, '');
-
-			h += '<td>' + DOM.createHTML('a', {id : t.id + '_action', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
-	
-			h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']});
-			h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
-
-			h += '</tr></tbody>';
-
-			return DOM.createHTML('table', {id : t.id, 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', onmousedown : 'return false;', title : s.title}, h);
-		},
-
-		postRender : function() {
-			var t = this, s = t.settings;
-
-			if (s.onclick) {
-				Event.add(t.id + '_action', 'click', function() {
-					if (!t.isDisabled())
-						s.onclick(t.value);
-				});
-			}
-
-			Event.add(t.id + '_open', 'click', t.showMenu, t);
-			Event.add(t.id + '_open', 'focus', function() {t._focused = 1;});
-			Event.add(t.id + '_open', 'blur', function() {t._focused = 0;});
-
-			// Old IE doesn't have hover on all elements
-			if (tinymce.isIE6 || !DOM.boxModel) {
-				Event.add(t.id, 'mouseover', function() {
-					if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
-						DOM.addClass(t.id, 'mceSplitButtonHover');
-				});
-
-				Event.add(t.id, 'mouseout', function() {
-					if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
-						DOM.removeClass(t.id, 'mceSplitButtonHover');
-				});
-			}
-		},
-
-		destroy : function() {
-			this.parent();
-
-			Event.clear(this.id + '_action');
-			Event.clear(this.id + '_open');
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/ui/ColorSplitButton.js */
-
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each;
-
-	tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', {
-		ColorSplitButton : function(id, s) {
-			var t = this;
-
-			t.parent(id, s);
-
-			t.settings = s = tinymce.extend({
-				colors : '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',
-				grid_width : 8,
-				default_color : '#888888'
-			}, t.settings);
-
-			t.onShowMenu = new tinymce.util.Dispatcher(t);
-			t.onHideMenu = new tinymce.util.Dispatcher(t);
-
-			t.value = s.default_color;
-		},
-
-		showMenu : function() {
-			var t = this, r, p, e, p2;
-
-			if (t.isDisabled())
-				return;
-
-			if (!t.isMenuRendered) {
-				t.renderMenu();
-				t.isMenuRendered = true;
-			}
-
-			if (t.isMenuVisible)
-				return t.hideMenu();
-
-			e = DOM.get(t.id);
-			DOM.show(t.id + '_menu');
-			DOM.addClass(e, 'mceSplitButtonSelected');
-			p2 = DOM.getPos(e);
-			DOM.setStyles(t.id + '_menu', {
-				left : p2.x,
-				top : p2.y + e.clientHeight,
-				zIndex : 200000
-			});
-			e = 0;
-
-			Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
-
-			if (t._focused) {
-				t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) {
-					if (e.keyCode == 27)
-						t.hideMenu();
-				});
-
-				DOM.select('a', t.id + '_menu')[0].focus(); // Select first link
-			}
-
-			t.onShowMenu.dispatch(t);
-
-			t.isMenuVisible = 1;
-		},
-
-		hideMenu : function(e) {
-			var t = this;
-
-			// Prevent double toogles by canceling the mouse click event to the button
-			if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';}))
-				return;
-
-			if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceSplitButtonMenu');})) {
-				DOM.removeClass(t.id, 'mceSplitButtonSelected');
-				Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
-				Event.remove(t.id + '_menu', 'keydown', t._keyHandler);
-				DOM.hide(t.id + '_menu');
-			}
-
-			t.onHideMenu.dispatch(t);
-
-			t.isMenuVisible = 0;
-		},
-
-		renderMenu : function() {
-			var t = this, m, i = 0, s = t.settings, n, tb, tr, w;
-
-			w = DOM.add(s.menu_container, 'div', {id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
-			m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});
-			DOM.add(m, 'span', {'class' : 'mceMenuLine'});
-
-			n = DOM.add(m, 'table', {'class' : 'mceColorSplitMenu'});
-			tb = DOM.add(n, 'tbody');
-
-			// Generate color grid
-			i = 0;
-			each(is(s.colors, 'array') ? s.colors : s.colors.split(','), function(c) {
-				c = c.replace(/^#/, '');
-
-				if (!i--) {
-					tr = DOM.add(tb, 'tr');
-					i = s.grid_width - 1;
-				}
-
-				n = DOM.add(tr, 'td');
-
-				n = DOM.add(n, 'a', {
-					href : 'javascript:;',
-					style : {
-						backgroundColor : '#' + c
-					},
-					mce_color : '#' + c
-				});
-			});
-
-			if (s.more_colors_func) {
-				n = DOM.add(tb, 'tr');
-				n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'});
-				n = DOM.add(n, 'a', {id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title);
-
-				Event.add(n, 'click', function(e) {
-					s.more_colors_func.call(s.more_colors_scope || this);
-					return Event.cancel(e); // Cancel to fix onbeforeunload problem
-				});
-			}
-
-			DOM.addClass(m, 'mceColorSplitMenu');
-
-			Event.add(t.id + '_menu', 'click', function(e) {
-				var c;
-
-				e = e.target;
-
-				if (e.nodeName == 'A' && (c = e.getAttribute('mce_color')))
-					t.setColor(c);
-
-				return Event.cancel(e); // Prevent IE auto save warning
-			});
-
-			return w;
-		},
-
-		setColor : function(c) {
-			var t = this;
-
-			DOM.setStyle(t.id + '_preview', 'backgroundColor', c);
-
-			t.value = c;
-			t.hideMenu();
-			t.settings.onselect(c);
-		},
-
-		postRender : function() {
-			var t = this, id = t.id;
-
-			t.parent();
-			DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'});
-		},
-
-		destroy : function() {
-			this.parent();
-
-			Event.clear(this.id + '_menu');
-			Event.clear(this.id + '_more');
-			DOM.remove(this.id + '_menu');
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/ui/Toolbar.js */
-
-tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
-	renderHTML : function() {
-		var t = this, h = '', c, co, dom = tinymce.DOM, s = t.settings, i, pr, nx, cl;
-
-		cl = t.controls;
-		for (i=0; i<cl.length; i++) {
-			// Get current control, prev control, next control and if the control is a list box or not
-			co = cl[i];
-			pr = cl[i - 1];
-			nx = cl[i + 1];
-
-			// Add toolbar start
-			if (i === 0) {
-				c = 'mceToolbarStart';
-
-				if (co.Button)
-					c += ' mceToolbarStartButton';
-				else if (co.SplitButton)
-					c += ' mceToolbarStartSplitButton';
-				else if (co.ListBox)
-					c += ' mceToolbarStartListBox';
-
-				h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
-			}
-
-			// Add toolbar end before list box and after the previous button
-			// This is to fix the o2k7 editor skins
-			if (pr && co.ListBox) {
-				if (pr.Button || pr.SplitButton)
-					h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '<!-- IE -->'));
-			}
-
-			// Render control HTML
-
-			// IE 8 quick fix, needed to propertly generate a hit area for anchors
-			if (dom.stdMode)
-				h += '<td style="position: relative">' + co.renderHTML() + '</td>';
-			else
-				h += '<td>' + co.renderHTML() + '</td>';
-
-			// Add toolbar start after list box and before the next button
-			// This is to fix the o2k7 editor skins
-			if (nx && co.ListBox) {
-				if (nx.Button || nx.SplitButton)
-					h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '<!-- IE -->'));
-			}
-		}
-
-		c = 'mceToolbarEnd';
-
-		if (co.Button)
-			c += ' mceToolbarEndButton';
-		else if (co.SplitButton)
-			c += ' mceToolbarEndSplitButton';
-		else if (co.ListBox)
-			c += ' mceToolbarEndListBox';
-
-		h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
-
-		return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || ''}, '<tbody><tr>' + h + '</tr></tbody>');
-	}
-
-	});
-
-/* file:jscripts/tiny_mce/classes/AddOnManager.js */
-
-(function() {
-	var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
-
-	tinymce.create('tinymce.AddOnManager', {
-		items : [],
-		urls : {},
-		lookup : {},
-		onAdd : new Dispatcher(this),
-
-		get : function(n) {
-			return this.lookup[n];
-		},
-
-		requireLangPack : function(n) {
-			var u, s;
-
-			if (tinymce.EditorManager.settings) {
-				u = this.urls[n] + '/langs/' + tinymce.EditorManager.settings.language + '.js';
-				s = tinymce.EditorManager.settings;
-
-				if (s) {
-					if (!tinymce.dom.Event.domLoaded && !s.strict_mode)
-						tinymce.ScriptLoader.load(u);
-					else
-						tinymce.ScriptLoader.add(u);
-				}
-			}
-		},
-
-		add : function(id, o) {
-			this.items.push(o);
-			this.lookup[id] = o;
-			this.onAdd.dispatch(this, id, o);
-
-			return o;
-		},
-
-		load : function(n, u, cb, s) {
-			var t = this;
-
-			if (t.urls[n])
-				return;
-
-			if (u.indexOf('/') != 0 && u.indexOf('://') == -1)
-				u = tinymce.baseURL + '/' +  u;
-
-			t.urls[n] = u.substring(0, u.lastIndexOf('/'));
-			tinymce.ScriptLoader.add(u, cb, s);
-		}
-
-		});
-
-	// Create plugin and theme managers
-	tinymce.PluginManager = new tinymce.AddOnManager();
-	tinymce.ThemeManager = new tinymce.AddOnManager();
-}());
-/* file:jscripts/tiny_mce/classes/EditorManager.js */
-
-(function() {
-	// Shorten names
-	var each = tinymce.each, extend = tinymce.extend, DOM = tinymce.DOM, Event = tinymce.dom.Event, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, explode = tinymce.explode;
-
-	tinymce.create('static tinymce.EditorManager', {
-		editors : {},
-		i18n : {},
-		activeEditor : null,
-
-		preInit : function() {
-			var t = this, lo = window.location;
-
-			// Setup some URLs where the editor API is located and where the document is
-			tinymce.documentBaseURL = lo.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
-			if (!/[\/\\]$/.test(tinymce.documentBaseURL))
-				tinymce.documentBaseURL += '/';
-
-			tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
-			tinymce.EditorManager.baseURI = new tinymce.util.URI(tinymce.baseURL);
-
-			// Setup document domain
-			if (tinymce.EditorManager.baseURI.host != lo.hostname && lo.hostname)
-				document.domain = tinymce.relaxedDomain = lo.hostname.replace(/.*\.(.+\..+)$/, '$1');
-
-			// Add before unload listener
-			// This was required since IE was leaking memory if you added and removed beforeunload listeners
-			// with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
-			t.onBeforeUnload = new tinymce.util.Dispatcher(t);
-
-			// Must be on window or IE will leak if the editor is placed in frame or iframe
-			Event.add(window, 'beforeunload', function(e) {
-				t.onBeforeUnload.dispatch(t, e);
-			});
-		},
-
-		init : function(s) {
-			var t = this, pl, sl = tinymce.ScriptLoader, c, e;
-
-			function execCallback(se, n, s) {
-				var f = se[n];
-
-				if (!f)
-					return;
-
-				if (tinymce.is(f, 'string')) {
-					s = f.replace(/\.\w+$/, '');
-					s = s ? tinymce.resolve(s) : 0;
-					f = tinymce.resolve(f);
-				}
-
-				return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
-			};
-
-			s = extend({
-				theme : "simple",
-				language : "en",
-				strict_loading_mode : document.contentType == 'application/xhtml+xml'
-			}, s);
-
-			t.settings = s;
-
-			// If page not loaded and strict mode isn't enabled then load them
-			if (!Event.domLoaded && !s.strict_loading_mode) {
-				// Load language
-				if (s.language)
-					sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
-
-				// Load theme
-				if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
-					ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
-
-				// Load plugins
-				if (s.plugins) {
-					pl = explode(s.plugins);
-
-					// Load compat2x first
-					if (tinymce.inArray(pl, 'compat2x') != -1)
-						PluginManager.load('compat2x', 'plugins/compat2x/editor_plugin' + tinymce.suffix + '.js');
-
-					// Load rest if plugins
-					each(pl, function(v) {
-						if (v && v.charAt(0) != '-' && !PluginManager.urls[v]) {
-							// Skip safari plugin for other browsers
-							if (!tinymce.isWebKit && v == 'safari')
-								return;
-
-							PluginManager.load(v, 'plugins/' + v + '/editor_plugin' + tinymce.suffix + '.js');
-						}
-					});
-				}
-
-				sl.loadQueue();
-			}
-
-			// Legacy call
-			Event.add(document, 'init', function() {
-				var l, co;
-
-				execCallback(s, 'onpageload');
-
-				// Verify that it's a valid browser
-				if (s.browsers) {
-					l = false;
-
-					each(explode(s.browsers), function(v) {
-						switch (v) {
-							case 'ie':
-							case 'msie':
-								if (tinymce.isIE)
-									l = true;
-								break;
-
-							case 'gecko':
-								if (tinymce.isGecko)
-									l = true;
-								break;
-
-							case 'safari':
-							case 'webkit':
-								if (tinymce.isWebKit)
-									l = true;
-								break;
-
-							case 'opera':
-								if (tinymce.isOpera)
-									l = true;
-
-								break;
-						}
-					});
-
-					// Not a valid one
-					if (!l)
-						return;
-				}
-
-				switch (s.mode) {
-					case "exact":
-						l = s.elements || '';
-
-						if(l.length > 0) {
-							each(explode(l), function(v) {
-								if (DOM.get(v))
-									new tinymce.Editor(v, s).render(1);
-								else {
-									c = 0;
-
-									each(document.forms, function(f) {
-										each(f.elements, function(e) {
-											if (e.name === v) {
-												v = 'mce_editor_' + c;
-												DOM.setAttrib(e, 'id', v);
-												new tinymce.Editor(v, s).render(1);
-											}
-										});
-									});
-								}
-							});
-						}
-						break;
-
-					case "textareas":
-					case "specific_textareas":
-						function hasClass(n, c) {
-							return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
-						};
-
-						each(DOM.select('textarea'), function(v) {
-							if (s.editor_deselector && hasClass(v, s.editor_deselector))
-								return;
-
-							if (!s.editor_selector || hasClass(v, s.editor_selector)) {
-								// Can we use the name
-								e = DOM.get(v.name);
-								if (!v.id && !e)
-									v.id = v.name;
-
-								// Generate unique name if missing or already exists
-								if (!v.id || t.get(v.id))
-									v.id = DOM.uniqueId();
-
-								new tinymce.Editor(v.id, s).render(1);
-							}
-						});
-						break;
-				}
-
-				// Call onInit when all editors are initialized
-				if (s.oninit) {
-					l = co = 0;
-
-					each (t.editors, function(ed) {
-						co++;
-
-						if (!ed.initialized) {
-							// Wait for it
-							ed.onInit.add(function() {
-								l++;
-
-								// All done
-								if (l == co)
-									execCallback(s, 'oninit');
-							});
-						} else
-							l++;
-
-						// All done
-						if (l == co)
-							execCallback(s, 'oninit');					
-					});
-				}
-			});
-		},
-
-		get : function(id) {
-			return this.editors[id];
-		},
-
-		getInstanceById : function(id) {
-			return this.get(id);
-		},
-
-		add : function(e) {
-			this.editors[e.id] = e;
-			this._setActive(e);
-
-			return e;
-		},
-
-		remove : function(e) {
-			var t = this;
-
-			// Not in the collection
-			if (!t.editors[e.id])
-				return null;
-
-			delete t.editors[e.id];
-
-			// Select another editor since the active one was removed
-			if (t.activeEditor == e) {
-				each(t.editors, function(e) {
-					t._setActive(e);
-					return false; // Break
-				});
-			}
-
-			e.destroy();
-
-			return e;
-		},
-
-		execCommand : function(c, u, v) {
-			var t = this, ed = t.get(v), w;
-
-			// Manager commands
-			switch (c) {
-				case "mceFocus":
-					ed.focus();
-					return true;
-
-				case "mceAddEditor":
-				case "mceAddControl":
-					if (!t.get(v))
-						new tinymce.Editor(v, t.settings).render();
-
-					return true;
-
-				case "mceAddFrameControl":
-					w = v.window;
-
-					// Add tinyMCE global instance and tinymce namespace to specified window
-					w.tinyMCE = tinyMCE;
-					w.tinymce = tinymce;
-
-					tinymce.DOM.doc = w.document;
-					tinymce.DOM.win = w;
-
-					ed = new tinymce.Editor(v.element_id, v);
-					ed.render();
-
-					// Fix IE memory leaks
-					if (tinymce.isIE) {
-						function clr() {
-							ed.destroy();
-							w.detachEvent('onunload', clr);
-							w = w.tinyMCE = w.tinymce = null; // IE leak
-						};
-
-						w.attachEvent('onunload', clr);
-					}
-
-					v.page_window = null;
-
-					return true;
-
-				case "mceRemoveEditor":
-				case "mceRemoveControl":
-					ed.remove();
-					return true;
-
-				case 'mceToggleEditor':
-					if (!ed) {
-						t.execCommand('mceAddControl', 0, v);
-						return true;
-					}
-
-					if (ed.isHidden())
-						ed.show();
-					else
-						ed.hide();
-
-					return true;
-			}
-
-			// Run command on active editor
-			if (t.activeEditor)
-				return t.activeEditor.execCommand(c, u, v);
-
-			return false;
-		},
-
-		execInstanceCommand : function(id, c, u, v) {
-			var ed = this.get(id);
-
-			if (ed)
-				return ed.execCommand(c, u, v);
-
-			return false;
-		},
-
-		triggerSave : function() {
-			each(this.editors, function(e) {
-				e.save();
-			});
-		},
-
-		addI18n : function(p, o) {
-			var lo, i18n = this.i18n;
-
-			if (!tinymce.is(p, 'string')) {
-				each(p, function(o, lc) {
-					each(o, function(o, g) {
-						each(o, function(o, k) {
-							if (g === 'common')
-								i18n[lc + '.' + k] = o;
-							else
-								i18n[lc + '.' + g + '.' + k] = o;
-						});
-					});
-				});
-			} else {
-				each(o, function(o, k) {
-					i18n[p + '.' + k] = o;
-				});
-			}
-		},
-
-		// Private methods
-
-		_setActive : function(e) {
-			this.selectedInstance = this.activeEditor = e;
-		}
-
-		});
-
-	tinymce.EditorManager.preInit();
-})();
-
-// Short for editor manager window.tinyMCE is needed when TinyMCE gets loaded though a XHR call
-var tinyMCE = window.tinyMCE = tinymce.EditorManager;
-
-/* file:jscripts/tiny_mce/classes/Editor.js */
-
-(function() {
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, Dispatcher = tinymce.util.Dispatcher;
-	var each = tinymce.each, isGecko = tinymce.isGecko, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit;
-	var is = tinymce.is, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, EditorManager = tinymce.EditorManager;
-	var inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode;
-
-	tinymce.create('tinymce.Editor', {
-		Editor : function(id, s) {
-			var t = this;
-
-			t.id = t.editorId = id;
-			t.execCommands = {};
-			t.queryStateCommands = {};
-			t.queryValueCommands = {};
-			t.plugins = {};
-
-			// Add events to the editor
-			each([
-				'onPreInit',
-				'onBeforeRenderUI',
-				'onPostRender',
-				'onInit',
-				'onRemove',
-				'onActivate',
-				'onDeactivate',
-				'onClick',
-				'onEvent',
-				'onMouseUp',
-				'onMouseDown',
-				'onDblClick',
-				'onKeyDown',
-				'onKeyUp',
-				'onKeyPress',
-				'onContextMenu',
-				'onSubmit',
-				'onReset',
-				'onPaste',
-				'onPreProcess',
-				'onPostProcess',
-				'onBeforeSetContent',
-				'onBeforeGetContent',
-				'onSetContent',
-				'onGetContent',
-				'onLoadContent',
-				'onSaveContent',
-				'onNodeChange',
-				'onChange',
-				'onBeforeExecCommand',
-				'onExecCommand',
-				'onUndo',
-				'onRedo',
-				'onVisualAid',
-				'onSetProgressState'
-			], function(e) {
-				t[e] = new Dispatcher(t);
-			});
-
-			// Default editor config
-			t.settings = s = extend({
-				id : id,
-				language : 'en',
-				docs_language : 'en',
-				theme : 'simple',
-				skin : 'default',
-				delta_width : 0,
-				delta_height : 0,
-				popup_css : '',
-				plugins : '',
-				document_base_url : tinymce.documentBaseURL,
-				add_form_submit_trigger : 1,
-				submit_patch : 1,
-				add_unload_trigger : 1,
-				convert_urls : 1,
-				relative_urls : 1,
-				remove_script_host : 1,
-				table_inline_editing : 0,
-				object_resizing : 1,
-				cleanup : 1,
-				accessibility_focus : 1,
-				custom_shortcuts : 1,
-				custom_undo_redo_keyboard_shortcuts : 1,
-				custom_undo_redo_restore_selection : 1,
-				custom_undo_redo : 1,
-				doctype : '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">',
-				visual_table_class : 'mceItemTable',
-				visual : 1,
-				inline_styles : true,
-				convert_fonts_to_spans : true,
-				font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
-				apply_source_formatting : 1,
-				directionality : 'ltr',
-				forced_root_block : 'p',
-				valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border=0|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',
-				hidden_input : 1,
-				padd_empty_editor : 1,
-				render_ui : 1,
-				init_theme : 1,
-				force_p_newlines : 1,
-				indentation : '30px'
-			}, s);
-
-			// Setup URIs
-			t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {
-				base_uri : tinyMCE.baseURI
-			});
-			t.baseURI = EditorManager.baseURI;
-
-			// Call setup
-			t.execCallback('setup', t);
-		},
-
-		render : function(nst) {
-			var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
-
-			// Page is not loaded yet, wait for it
-			if (!Event.domLoaded) {
-				Event.add(document, 'init', function() {
-					t.render();
-				});
-				return;
-			}
-
-			// Force strict loading mode if render us called by user and not internally
-			if (!nst) {
-				s.strict_loading_mode = 1;
-				tinyMCE.settings = s;
-			}
-
-			// Element not found, then skip initialization
-			if (!t.getElement())
-				return;
-
-			if (s.strict_loading_mode) {
-				sl.settings.strict_mode = s.strict_loading_mode;
-				tinymce.DOM.settings.strict = 1;
-			}
-
-			// Add hidden input for non input elements inside form elements
-			if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
-				DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
-
-			t.windowManager = new tinymce.WindowManager(t);
-
-			if (s.encoding == 'xml') {
-				t.onGetContent.add(function(ed, o) {
-					if (o.save)
-						o.content = DOM.encode(o.content);
-				});
-			}
-
-			if (s.add_form_submit_trigger) {
-				t.onSubmit.addToTop(function() {
-					if (t.initialized) {
-						t.save();
-						t.isNotDirty = 1;
-					}
-				});
-			}
-
-			if (s.add_unload_trigger && !s.ask) {
-				t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
-					if (t.initialized && !t.destroyed && !t.isHidden())
-						t.save({format : 'raw', no_events : true});
-				});
-			}
-
-			tinymce.addUnload(t.destroy, t);
-
-			if (s.submit_patch) {
-				t.onBeforeRenderUI.add(function() {
-					var n = t.getElement().form;
-
-					if (!n)
-						return;
-
-					// Already patched
-					if (n._mceOldSubmit)
-						return;
-
-					// Check page uses id="submit" or name="submit" for it's submit button
-					if (!n.submit.nodeType && !n.submit.length) {
-						t.formElement = n;
-						n._mceOldSubmit = n.submit;
-						n.submit = function() {
-							// Save all instances
-							EditorManager.triggerSave();
-							t.isNotDirty = 1;
-
-							return this._mceOldSubmit(this);
-						};
-					}
-
-					n = null;
-				});
-			}
-
-			// Load scripts
-			function loadScripts() {
-				if (s.language)
-					sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
-
-				if (s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
-					ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
-
-				each(explode(s.plugins), function(p) {
-					if (p && p.charAt(0) != '-' && !PluginManager.urls[p]) {
-						// Skip safari plugin for other browsers
-						if (!isWebKit && p == 'safari')
-							return;
-
-						PluginManager.load(p, 'plugins/' + p + '/editor_plugin' + tinymce.suffix + '.js');
-					}
-				});
-
-				// Init when que is loaded
-				sl.loadQueue(function() {
-					if (s.ask) {
-						function ask() {
-							// Yield for awhile to avoid focus bug on FF 3 when cancel is pressed
-							window.setTimeout(function() {
-								Event.remove(t.id, 'focus', ask);
-
-								t.windowManager.confirm(t.getLang('edit_confirm'), function(s) {
-									if (s)
-										t.init();
-								});
-							}, 0);
-						};
-
-						Event.add(t.id, 'focus', ask);
-						return;
-					}
-
-					if (!t.removed)
-						t.init();
-				});
-			};
-
-			// Load compat2x first
-			if (s.plugins.indexOf('compat2x') != -1) {
-				PluginManager.load('compat2x', 'plugins/compat2x/editor_plugin' + tinymce.suffix + '.js');
-				sl.loadQueue(loadScripts);
-			} else
-				loadScripts();
-		},
-
-		init : function() {
-			var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re;
-
-			EditorManager.add(t);
-
-			// Create theme
-			s.theme = s.theme.replace(/-/, '');
-			o = ThemeManager.get(s.theme);
-			t.theme = new o();
-
-			if (t.theme.init && s.init_theme)
-				t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
-
-			// Create all plugins
-			each(explode(s.plugins.replace(/\-/g, '')), function(p) {
-				var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
-
-				if (c) {
-					po = new c(t, u);
-
-					t.plugins[p] = po;
-
-					if (po.init)
-						po.init(t, u);
-				}
-			});
-
-			// Setup popup CSS path(s)
-			if (s.popup_css)
-				s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
-			else
-				s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
-
-			if (s.popup_css_add)
-				s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
-
-			// Setup control factory
-			t.controlManager = new tinymce.ControlManager(t);
-			t.undoManager = new tinymce.UndoManager(t);
-
-			// Pass through
-			t.undoManager.onAdd.add(function(um, l) {
-				if (!l.initial)
-					return t.onChange.dispatch(t, l, um);
-			});
-
-			t.undoManager.onUndo.add(function(um, l) {
-				return t.onUndo.dispatch(t, l, um);
-			});
-
-			t.undoManager.onRedo.add(function(um, l) {
-				return t.onRedo.dispatch(t, l, um);
-			});
-
-			if (s.custom_undo_redo) {
-				t.onExecCommand.add(function(ed, cmd, ui, val, a) {
-					if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
-						t.undoManager.add();
-				});
-			}
-
-			t.onExecCommand.add(function(ed, c) {
-				// Don't refresh the select lists until caret move
-				if (!/^(FontName|FontSize)$/.test(c))
-					t.nodeChanged();
-			});
-
-			// Remove ghost selections on images and tables in Gecko
-			if (isGecko) {
-				function repaint(a, o) {
-					if (!o || !o.initial)
-						t.execCommand('mceRepaint');
-				};
-
-				t.onUndo.add(repaint);
-				t.onRedo.add(repaint);
-				t.onSetContent.add(repaint);
-			}
-
-			// Enables users to override the control factory
-			t.onBeforeRenderUI.dispatch(t, t.controlManager);
-
-			// Measure box
-			if (s.render_ui) {
-				w = s.width || e.style.width || e.offsetWidth;
-				h = s.height || e.style.height || e.offsetHeight;
-				t.orgDisplay = e.style.display;
-				re = /^[0-9\.]+(|px)$/i;
-
-				if (re.test('' + w))
-					w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);
-
-				if (re.test('' + h))
-					h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);
-
-				// Render UI
-				o = t.theme.renderUI({
-					targetNode : e,
-					width : w,
-					height : h,
-					deltaWidth : s.delta_width,
-					deltaHeight : s.delta_height
-				});
-
-				t.editorContainer = o.editorContainer;
-			}
-
-			
-			// Resize editor
-			DOM.setStyles(o.sizeContainer || o.editorContainer, {
-				width : w,
-				height : h
-			});
-
-			h = (o.iframeHeight || h) + ((h + '').indexOf('%') == -1 ? (o.deltaHeight || 0) : '');
-			if (h < 100)
-				h = 100;
-
-			t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="' + t.documentBaseURI.getURI() + '"></base>';
-			t.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
-
-			if (tinymce.relaxedDomain)
-				t.iframeHTML += '<script type="text/javascript">document.domain = "' + tinymce.relaxedDomain + '";</script>';
-
-			bi = s.body_id || 'tinymce';
-			if (bi.indexOf('=') != -1) {
-				bi = t.getParam('body_id', '', 'hash');
-				bi = bi[t.id] || bi;
-			}
-
-			bc = s.body_class || '';
-			if (bc.indexOf('=') != -1) {
-				bc = t.getParam('body_class', '', 'hash');
-				bc = bc[t.id] || '';
-			}
-
-			t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '"></body></html>';
-
-			// Domain relaxing enabled, then set document domain
-			if (tinymce.relaxedDomain) {
-				// We need to write the contents here in IE since multiple writes messes up refresh button and back button
-				if (isIE)
-					u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';
-				else if (tinymce.isOpera)
-					u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()';					
-			}
-
-			// Create iframe
-			n = DOM.add(o.iframeContainer, 'iframe', {
-				id : t.id + "_ifr",
-				src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
-				frameBorder : '0',
-				style : {
-					width : '100%',
-					height : h
-				}
-			});
-
-			t.contentAreaContainer = o.iframeContainer;
-			DOM.get(o.editorContainer).style.display = t.orgDisplay;
-			DOM.get(t.id).style.display = 'none';
-
-			// Safari 2.x requires us to wait for the load event and load a real HTML doc
-			if (tinymce.isOldWebKit) {
-				Event.add(n, 'load', t.setupIframe, t);
-				n.src = tinymce.baseURL + '/plugins/safari/blank.htm';
-			} else {
-				if (!isIE || !tinymce.relaxedDomain)
-					t.setupIframe();
-
-				e = n = o = null; // Cleanup
-			}
-		},
-
-		setupIframe : function() {
-			var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
-
-			// Setup iframe body
-			if (!isIE || !tinymce.relaxedDomain) {
-				d.open();
-				d.write(t.iframeHTML);
-				d.close();
-			}
-
-			// Design mode needs to be added here Ctrl+A will fail otherwise
-			if (!isIE) {
-				try {
-					d.designMode = 'On';
-				} catch (ex) {
-					// Will fail on Gecko if the editor is placed in an hidden container element
-					// The design mode will be set ones the editor is focused
-				}
-			}
-
-			// IE needs to use contentEditable or it will display non secure items for HTTPS
-			if (isIE) {
-				// It will not steal focus if we hide it while setting contentEditable
-				b = t.getBody();
-				DOM.hide(b);
-				b.contentEditable = true;
-				DOM.show(b);
-			}
-
-			// Setup objects
-			t.dom = new tinymce.DOM.DOMUtils(t.getDoc(), {
-				keep_values : true,
-				url_converter : t.convertURL,
-				url_converter_scope : t,
-				hex_colors : s.force_hex_style_colors,
-				class_filter : s.class_filter,
-				update_styles : 1,
-				fix_ie_paragraphs : 1
-			});
-
-			t.serializer = new tinymce.dom.Serializer({
-				entity_encoding : s.entity_encoding,
-				entities : s.entities,
-				valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
-				extended_valid_elements : s.extended_valid_elements,
-				valid_child_elements : s.valid_child_elements,
-				invalid_elements : s.invalid_elements,
-				fix_table_elements : s.fix_table_elements,
-				fix_list_elements : s.fix_list_elements,
-				fix_content_duplication : s.fix_content_duplication,
-				convert_fonts_to_spans : s.convert_fonts_to_spans,
-				font_size_classes  : s.font_size_classes,
-				font_size_style_values : s.font_size_style_values,
-				apply_source_formatting : s.apply_source_formatting,
-				remove_linebreaks : s.remove_linebreaks,
-				dom : t.dom
-			});
-
-			t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
-			t.forceBlocks = new tinymce.ForceBlocks(t, {
-				forced_root_block : s.forced_root_block
-			});
-			t.editorCommands = new tinymce.EditorCommands(t);
-
-			// Pass through
-			t.serializer.onPreProcess.add(function(se, o) {
-				return t.onPreProcess.dispatch(t, o, se);
-			});
-
-			t.serializer.onPostProcess.add(function(se, o) {
-				return t.onPostProcess.dispatch(t, o, se);
-			});
-
-			t.onPreInit.dispatch(t);
-
-			if (!s.gecko_spellcheck)
-				t.getBody().spellcheck = 0;
-
-			t._addEvents();
-
-			t.controlManager.onPostRender.dispatch(t, t.controlManager);
-			t.onPostRender.dispatch(t);
-
-			if (s.directionality)
-				t.getBody().dir = s.directionality;
-
-			if (s.nowrap)
-				t.getBody().style.whiteSpace = "nowrap";
-
-			if (s.auto_resize)
-				t.onNodeChange.add(t.resizeToContent, t);
-
-			if (s.custom_elements) {
-				function handleCustom(ed, o) {
-					each(explode(s.custom_elements), function(v) {
-						var n;
-
-						if (v.indexOf('~') === 0) {
-							v = v.substring(1);
-							n = 'span';
-						} else
-							n = 'div';
-
-						o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' mce_name="$1"$2>');
-						o.content = o.content.replace(new RegExp('</(' + v + ')>', 'g'), '</' + n + '>');
-					});
-				};
-
-				t.onBeforeSetContent.add(handleCustom);
-				t.onPostProcess.add(function(ed, o) {
-					if (o.set)
-						handleCustom(ed, o)
-				});
-			}
-
-			if (s.handle_node_change_callback) {
-				t.onNodeChange.add(function(ed, cm, n) {
-					t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());
-				});
-			}
-
-			if (s.save_callback) {
-				t.onSaveContent.add(function(ed, o) {
-					var h = t.execCallback('save_callback', t.id, o.content, t.getBody());
-
-					if (h)
-						o.content = h;
-				});
-			}
-
-			if (s.onchange_callback) {
-				t.onChange.add(function(ed, l) {
-					t.execCallback('onchange_callback', t, l);
-				});
-			}
-
-			if (s.convert_newlines_to_brs) {
-				t.onBeforeSetContent.add(function(ed, o) {
-					if (o.initial)
-						o.content = o.content.replace(/\r?\n/g, '<br />');
-				});
-			}
-
-			if (s.fix_nesting && isIE) {
-				t.onBeforeSetContent.add(function(ed, o) {
-					o.content = t._fixNesting(o.content);
-				});
-			}
-
-			if (s.preformatted) {
-				t.onPostProcess.add(function(ed, o) {
-					o.content = o.content.replace(/^\s*<pre.*?>/, '');
-					o.content = o.content.replace(/<\/pre>\s*$/, '');
-
-					if (o.set)
-						o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';
-				});
-			}
-
-			if (s.verify_css_classes) {
-				t.serializer.attribValueFilter = function(n, v) {
-					var s, cl;
-
-					if (n == 'class') {
-						// Build regexp for classes
-						if (!t.classesRE) {
-							cl = t.dom.getClasses();
-
-							if (cl.length > 0) {
-								s = '';
-
-								each (cl, function(o) {
-									s += (s ? '|' : '') + o['class'];
-								});
-
-								t.classesRE = new RegExp('(' + s + ')', 'gi');
-							}
-						}
-
-						return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';
-					}
-
-					return v;
-				};
-			}
-
-			if (s.convert_fonts_to_spans)
-				t._convertFonts();
-
-			if (s.inline_styles)
-				t._convertInlineElements();
-
-			if (s.cleanup_callback) {
-				t.onBeforeSetContent.add(function(ed, o) {
-					o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
-				});
-
-				t.onPreProcess.add(function(ed, o) {
-					if (o.set)
-						t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
-
-					if (o.get)
-						t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
-				});
-
-				t.onPostProcess.add(function(ed, o) {
-					if (o.set)
-						o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
-
-					if (o.get)						
-						o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
-				});
-			}
-
-			if (s.save_callback) {
-				t.onGetContent.add(function(ed, o) {
-					if (o.save)
-						o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());
-				});
-			}
-
-			if (s.handle_event_callback) {
-				t.onEvent.add(function(ed, e, o) {
-					if (t.execCallback('handle_event_callback', e, ed, o) === false)
-						Event.cancel(e);
-				});
-			}
-
-			t.onSetContent.add(function() {
-				// Safari needs some time, it will crash the browser when a link is created otherwise
-				// I think this crash issue is resolved in the latest 3.0.4
-				//window.setTimeout(function() {
-					t.addVisual(t.getBody());
-				//}, 1);
-			});
-
-			// Remove empty contents
-			if (s.padd_empty_editor) {
-				t.onPostProcess.add(function(ed, o) {
-					o.content = o.content.replace(/^(<p>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
-				});
-			}
-
-			if (isGecko) {
-				try {
-					// Design mode must be set here once again to fix a bug where
-					// Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again
-					d.designMode = 'Off';
-					d.designMode = 'On';
-				} catch (ex) {
-					// Will fail on Gecko if the editor is placed in an hidden container element
-					// The design mode will be set ones the editor is focused
-				}
-			}
-
-			// A small timeout was needed since firefox will remove. Bug: #1838304
-			setTimeout(function () {
-				if (t.removed)
-					return;
-
-				t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
-				t.startContent = t.getContent({format : 'raw'});
-				t.undoManager.add({initial : true});
-				t.initialized = true;
-
-				t.onInit.dispatch(t);
-				t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());
-				t.execCallback('init_instance_callback', t);
-				t.focus(true);
-				t.nodeChanged({initial : 1});
-
-				// Load specified content CSS last
-				if (s.content_css) {
-					tinymce.each(explode(s.content_css), function(u) {
-						t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
-					});
-				}
-
-				// Handle auto focus
-				if (s.auto_focus) {
-					setTimeout(function () {
-						var ed = EditorManager.get(s.auto_focus);
-
-						ed.selection.select(ed.getBody(), 1);
-						ed.selection.collapse(1);
-						ed.getWin().focus();
-					}, 100);
-				}
-			}, 1);
-	
-			e = null;
-		},
-
-		
-		focus : function(sf) {
-			var oed, t = this, ce = t.settings.content_editable;
-
-			if (!sf) {
-				if (!ce)
-					t.getWin().focus();
-
-							}
-
-			if (EditorManager.activeEditor != t) {
-				if ((oed = EditorManager.activeEditor) != null)
-					oed.onDeactivate.dispatch(oed, t);
-
-				t.onActivate.dispatch(t, oed);
-			}
-
-			EditorManager._setActive(t);
-		},
-
-		execCallback : function(n) {
-			var t = this, f = t.settings[n], s;
-
-			if (!f)
-				return;
-
-			// Look through lookup
-			if (t.callbackLookup && (s = t.callbackLookup[n])) {
-				f = s.func;
-				s = s.scope;
-			}
-
-			if (is(f, 'string')) {
-				s = f.replace(/\.\w+$/, '');
-				s = s ? tinymce.resolve(s) : 0;
-				f = tinymce.resolve(f);
-				t.callbackLookup = t.callbackLookup || {};
-				t.callbackLookup[n] = {func : f, scope : s};
-			}
-
-			return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
-		},
-
-		translate : function(s) {
-			var c = this.settings.language, i18n = EditorManager.i18n;
-
-			if (!s)
-				return '';
-
-			return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
-				return i18n[c + '.' + b] || '{#' + b + '}';
-			});
-		},
-
-		getLang : function(n, dv) {
-			return EditorManager.i18n[this.settings.language + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
-		},
-
-		getParam : function(n, dv, ty) {
-			var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
-
-			if (ty === 'hash') {
-				o = {};
-
-				if (is(v, 'string')) {
-					each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
-						v = v.split('=');
-
-						if (v.length > 1)
-							o[tr(v[0])] = tr(v[1]);
-						else
-							o[tr(v[0])] = tr(v);
-					});
-				} else
-					o = v;
-
-				return o;
-			}
-
-			return v;
-		},
-
-		nodeChanged : function(o) {
-			var t = this, s = t.selection, n = s.getNode() || t.getBody();
-
-			// Fix for bug #1896577 it seems that this can not be fired while the editor is loading
-			if (t.initialized) {
-				t.onNodeChange.dispatch(
-					t,
-					o ? o.controlManager || t.controlManager : t.controlManager,
-					isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n, // Fix for IE initial state
-					s.isCollapsed(),
-					o
-				);
-			}
-		},
-
-		addButton : function(n, s) {
-			var t = this;
-
-			t.buttons = t.buttons || {};
-			t.buttons[n] = s;
-		},
-
-		addCommand : function(n, f, s) {
-			this.execCommands[n] = {func : f, scope : s || this};
-		},
-
-		addQueryStateHandler : function(n, f, s) {
-			this.queryStateCommands[n] = {func : f, scope : s || this};
-		},
-
-		addQueryValueHandler : function(n, f, s) {
-			this.queryValueCommands[n] = {func : f, scope : s || this};
-		},
-
-		addShortcut : function(pa, desc, cmd_func, sc) {
-			var t = this, c;
-
-			if (!t.settings.custom_shortcuts)
-				return false;
-
-			t.shortcuts = t.shortcuts || {};
-
-			if (is(cmd_func, 'string')) {
-				c = cmd_func;
-
-				cmd_func = function() {
-					t.execCommand(c, false, null);
-				};
-			}
-
-			if (is(cmd_func, 'object')) {
-				c = cmd_func;
-
-				cmd_func = function() {
-					t.execCommand(c[0], c[1], c[2]);
-				};
-			}
-
-			each(explode(pa), function(pa) {
-				var o = {
-					func : cmd_func,
-					scope : sc || this,
-					desc : desc,
-					alt : false,
-					ctrl : false,
-					shift : false
-				};
-
-				each(explode(pa, '+'), function(v) {
-					switch (v) {
-						case 'alt':
-						case 'ctrl':
-						case 'shift':
-							o[v] = true;
-							break;
-
-						default:
-							o.charCode = v.charCodeAt(0);
-							o.keyCode = v.toUpperCase().charCodeAt(0);
-					}
-				});
-
-				t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
-			});
-
-			return true;
-		},
-
-		execCommand : function(cmd, ui, val, a) {
-			var t = this, s = 0, o, st;
-
-			if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
-				t.focus();
-
-			o = {};
-			t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o);
-			if (o.terminate)
-				return false;
-
-			// Command callback
-			if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
-				t.onExecCommand.dispatch(t, cmd, ui, val, a);
-				return true;
-			}
-
-			// Registred commands
-			if (o = t.execCommands[cmd]) {
-				st = o.func.call(o.scope, ui, val);
-
-				// Fall through on true
-				if (st !== true) {
-					t.onExecCommand.dispatch(t, cmd, ui, val, a);
-					return st;
-				}
-			}
-
-			// Plugin commands
-			each(t.plugins, function(p) {
-				if (p.execCommand && p.execCommand(cmd, ui, val)) {
-					t.onExecCommand.dispatch(t, cmd, ui, val, a);
-					s = 1;
-					return false;
-				}
-			});
-
-			if (s)
-				return true;
-
-			// Theme commands
-			if (t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
-				t.onExecCommand.dispatch(t, cmd, ui, val, a);
-				return true;
-			}
-
-			// Editor commands
-			if (t.editorCommands.execCommand(cmd, ui, val)) {
-				t.onExecCommand.dispatch(t, cmd, ui, val, a);
-				return true;
-			}
-
-			// Browser commands
-			t.getDoc().execCommand(cmd, ui, val);
-			t.onExecCommand.dispatch(t, cmd, ui, val, a);
-		},
-
-		queryCommandState : function(c) {
-			var t = this, o, s;
-
-			// Is hidden then return undefined
-			if (t._isHidden())
-				return;
-
-			// Registred commands
-			if (o = t.queryStateCommands[c]) {
-				s = o.func.call(o.scope);
-
-				// Fall though on true
-				if (s !== true)
-					return s;
-			}
-
-			// Registred commands
-			o = t.editorCommands.queryCommandState(c);
-			if (o !== -1)
-				return o;
-
-			// Browser commands
-			try {
-				return this.getDoc().queryCommandState(c);
-			} catch (ex) {
-				// Fails sometimes see bug: 1896577
-			}
-		},
-
-		queryCommandValue : function(c) {
-			var t = this, o, s;
-
-			// Is hidden then return undefined
-			if (t._isHidden())
-				return;
-
-			// Registred commands
-			if (o = t.queryValueCommands[c]) {
-				s = o.func.call(o.scope);
-
-				// Fall though on true
-				if (s !== true)
-					return s;
-			}
-
-			// Registred commands
-			o = t.editorCommands.queryCommandValue(c);
-			if (is(o))
-				return o;
-
-			// Browser commands
-			try {
-				return this.getDoc().queryCommandValue(c);
-			} catch (ex) {
-				// Fails sometimes see bug: 1896577
-			}
-		},
-
-		show : function() {
-			var t = this;
-
-			DOM.show(t.getContainer());
-			DOM.hide(t.id);
-			t.load();
-		},
-
-		hide : function() {
-			var t = this, d = t.getDoc();
-
-			// Fixed bug where IE has a blinking cursor left from the editor
-			if (isIE && d)
-				d.execCommand('SelectAll');
-
-			// We must save before we hide so Safari doesn't crash
-			t.save();
-			DOM.hide(t.getContainer());
-			DOM.setStyle(t.id, 'display', t.orgDisplay);
-		},
-
-		isHidden : function() {
-			return !DOM.isHidden(this.id);
-		},
-
-		setProgressState : function(b, ti, o) {
-			this.onSetProgressState.dispatch(this, b, ti, o);
-
-			return b;
-		},
-
-		resizeToContent : function() {
-			var t = this;
-
-			DOM.setStyle(t.id + "_ifr", 'height', t.getBody().scrollHeight);
-		},
-
-		load : function(o) {
-			var t = this, e = t.getElement(), h;
-
-			o = o || {};
-			o.load = true;
-
-			h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
-			o.element = e;
-
-			if (!o.no_events)
-				t.onLoadContent.dispatch(t, o);
-
-			o.element = e = null;
-
-			return h;
-		},
-
-		save : function(o) {
-			var t = this, e = t.getElement(), h, f;
-
-			if (!t.initialized)
-				return;
-
-			o = o || {};
-			o.save = true;
-
-			// Add undo level will trigger onchange event
-			if (!o.no_events) {
-				t.undoManager.typing = 0;
-				t.undoManager.add();
-			}
-
-			o.element = e;
-			h = o.content = t.getContent(o);
-
-			if (!o.no_events)
-				t.onSaveContent.dispatch(t, o);
-
-			h = o.content;
-
-			if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
-				e.innerHTML = h;
-
-				// Update hidden form element
-				if (f = DOM.getParent(t.id, 'form')) {
-					each(f.elements, function(e) {
-						if (e.name == t.id) {
-							e.value = h;
-							return false;
-						}
-					});
-				}
-			} else
-				e.value = h;
-
-			o.element = e = null;
-
-			return h;
-		},
-
-		setContent : function(h, o) {
-			var t = this;
-
-			o = o || {};
-			o.format = o.format || 'html';
-			o.set = true;
-			o.content = h;
-
-			if (!o.no_events)
-				t.onBeforeSetContent.dispatch(t, o);
-
-			// Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
-			// It will also be impossible to place the caret in the editor unless there is a BR element present
-			if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) {
-				o.content = t.dom.setHTML(t.getBody(), '<br mce_bogus="1" />');
-				o.format = 'raw';
-			}
-
-			o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content));
-
-			if (o.format != 'raw' && t.settings.cleanup) {
-				o.getInner = true;
-				o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o));
-			}
-
-			if (!o.no_events)
-				t.onSetContent.dispatch(t, o);
-
-			return o.content;
-		},
-
-		getContent : function(o) {
-			var t = this, h;
-
-			o = o || {};
-			o.format = o.format || 'html';
-			o.get = true;
-
-			if (!o.no_events)
-				t.onBeforeGetContent.dispatch(t, o);
-
-			if (o.format != 'raw' && t.settings.cleanup) {
-				o.getInner = true;
-				h = t.serializer.serialize(t.getBody(), o);
-			} else
-				h = t.getBody().innerHTML;
-
-			h = h.replace(/^\s*|\s*$/g, '');
-			o.content = h;
-
-			if (!o.no_events)
-				t.onGetContent.dispatch(t, o);
-
-			return o.content;
-		},
-
-		isDirty : function() {
-			var t = this;
-
-			return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty;
-		},
-
-		getContainer : function() {
-			var t = this;
-
-			if (!t.container)
-				t.container = DOM.get(t.editorContainer || t.id + '_parent');
-
-			return t.container;
-		},
-
-		getContentAreaContainer : function() {
-			return this.contentAreaContainer;
-		},
-
-		getElement : function() {
-			return DOM.get(this.settings.content_element || this.id);
-		},
-
-		getWin : function() {
-			var t = this, e;
-
-			if (!t.contentWindow) {
-				e = DOM.get(t.id + "_ifr");
-
-				if (e)
-					t.contentWindow = e.contentWindow;
-			}
-
-			return t.contentWindow;
-		},
-
-		getDoc : function() {
-			var t = this, w;
-
-			if (!t.contentDocument) {
-				w = t.getWin();
-
-				if (w)
-					t.contentDocument = w.document;
-			}
-
-			return t.contentDocument;
-		},
-
-		getBody : function() {
-			return this.bodyElement || this.getDoc().body;
-		},
-
-		convertURL : function(u, n, e) {
-			var t = this, s = t.settings;
-
-			// Use callback instead
-			if (s.urlconverter_callback)
-				return t.execCallback('urlconverter_callback', u, e, true, n);
-
-			// Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
-			if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)
-				return u;
-
-			// Convert to relative
-			if (s.relative_urls)
-				return t.documentBaseURI.toRelative(u);
-
-			// Convert to absolute
-			u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);
-
-			return u;
-		},
-
-		addVisual : function(e) {
-			var t = this, s = t.settings;
-
-			e = e || t.getBody();
-
-			if (!is(t.hasVisual))
-				t.hasVisual = s.visual;
-
-			each(t.dom.select('table,a', e), function(e) {
-				var v;
-
-				switch (e.nodeName) {
-					case 'TABLE':
-						v = t.dom.getAttrib(e, 'border');
-
-						if (!v || v == '0') {
-							if (t.hasVisual)
-								t.dom.addClass(e, s.visual_table_class);
-							else
-								t.dom.removeClass(e, s.visual_table_class);
-						}
-
-						return;
-
-					case 'A':
-						v = t.dom.getAttrib(e, 'name');
-
-						if (v) {
-							if (t.hasVisual)
-								t.dom.addClass(e, 'mceItemAnchor');
-							else
-								t.dom.removeClass(e, 'mceItemAnchor');
-						}
-
-						return;
-				}
-			});
-
-			t.onVisualAid.dispatch(t, e, t.hasVisual);
-		},
-
-		remove : function() {
-			var t = this, e = t.getContainer();
-
-			t.removed = 1; // Cancels post remove event execution
-			t.hide();
-
-			t.execCallback('remove_instance_callback', t);
-			t.onRemove.dispatch(t);
-
-			// Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
-			t.onExecCommand.listeners = [];
-
-			EditorManager.remove(t);
-			DOM.remove(e);
-		},
-
-		destroy : function(s) {
-			var t = this;
-
-			// One time is enough
-			if (t.destroyed)
-				return;
-
-			if (!s) {
-				tinymce.removeUnload(t.destroy);
-				tinyMCE.onBeforeUnload.remove(t._beforeUnload);
-
-				// Manual destroy
-				if (t.theme.destroy)
-					t.theme.destroy();
-
-				// Destroy controls, selection and dom
-				t.controlManager.destroy();
-				t.selection.destroy();
-				t.dom.destroy();
-
-				// Remove all events
-
-				// Don't clear the window or document if content editable
-				// is enabled since other instances might still be present
-				if (!t.settings.content_editable) {
-					Event.clear(t.getWin());
-					Event.clear(t.getDoc());
-				}
-
-				Event.clear(t.getBody());
-				Event.clear(t.formElement);
-			}
-
-			if (t.formElement) {
-				t.formElement.submit = t.formElement._mceOldSubmit;
-				t.formElement._mceOldSubmit = null;
-			}
-
-			t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
-
-			if (t.selection)
-				t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
-
-			t.destroyed = 1;
-		},
-
-		// Internal functions
-
-		_addEvents : function() {
-			// 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
-			var t = this, i, s = t.settings, lo = {
-				mouseup : 'onMouseUp',
-				mousedown : 'onMouseDown',
-				click : 'onClick',
-				keyup : 'onKeyUp',
-				keydown : 'onKeyDown',
-				keypress : 'onKeyPress',
-				submit : 'onSubmit',
-				reset : 'onReset',
-				contextmenu : 'onContextMenu',
-				dblclick : 'onDblClick',
-				paste : 'onPaste' // Doesn't work in all browsers yet
-			};
-
-			function eventHandler(e, o) {
-				var ty = e.type;
-
-				// Don't fire events when it's removed
-				if (t.removed)
-					return;
-
-				// Generic event handler
-				if (t.onEvent.dispatch(t, e, o) !== false) {
-					// Specific event handler
-					t[lo[e.fakeType || e.type]].dispatch(t, e, o);
-				}
-			};
-
-			// Add DOM events
-			each(lo, function(v, k) {
-				switch (k) {
-					case 'contextmenu':
-						if (tinymce.isOpera) {
-							// Fake contextmenu on Opera
-							Event.add(t.getBody(), 'mousedown', function(e) {
-								if (e.ctrlKey) {
-									e.fakeType = 'contextmenu';
-									eventHandler(e);
-								}
-							});
-						} else
-							Event.add(t.getBody(), k, eventHandler);
-						break;
-
-					case 'paste':
-						Event.add(t.getBody(), k, function(e) {
-							var tx, h, el, r;
-
-							// Get plain text data
-							if (e.clipboardData)
-								tx = e.clipboardData.getData('text/plain');
-							else if (tinymce.isIE)
-								tx = t.getWin().clipboardData.getData('Text');
-
-							// Get HTML data
-							/*if (tinymce.isIE) {
-								el = DOM.add(DOM.doc.body, 'div', {style : 'visibility:hidden;overflow:hidden;position:absolute;width:1px;height:1px'});
-								r = DOM.doc.body.createTextRange();
-								r.moveToElementText(el);
-								r.execCommand('Paste');
-								h = el.innerHTML;
-								DOM.remove(el);
-							}*/
-
-							eventHandler(e, {text : tx, html : h});
-						});
-						break;
-
-					case 'submit':
-					case 'reset':
-						Event.add(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);
-						break;
-
-					default:
-						Event.add(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);
-				}
-			});
-
-			Event.add(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {
-				t.focus(true);
-			});
-
-			
-			// Fixes bug where a specified document_base_uri could result in broken images
-			// This will also fix drag drop of images in Gecko
-			if (tinymce.isGecko) {
-				// Convert all images to absolute URLs
-/*				t.onSetContent.add(function(ed, o) {
-					each(ed.dom.select('img'), function(e) {
-						var v;
-
-						if (v = e.getAttribute('mce_src'))
-							e.src = t.documentBaseURI.toAbsolute(v);
-					})
-				});*/
-
-				Event.add(t.getDoc(), 'DOMNodeInserted', function(e) {
-					var v;
-
-					e = e.target;
-
-					if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('mce_src')))
-						e.src = t.documentBaseURI.toAbsolute(v);
-				});
-			}
-
-			// Set various midas options in Gecko
-			if (isGecko) {
-				function setOpts() {
-					var t = this, d = t.getDoc(), s = t.settings;
-
-					if (isGecko) {
-						if (t._isHidden()) {
-							try {
-								if (!s.content_editable)
-									d.designMode = 'On';
-							} catch (ex) {
-								// Fails if it's hidden
-							}
-						}
-
-						try {
-							// Try new Gecko method
-							d.execCommand("styleWithCSS", 0, false);
-						} catch (ex) {
-							// Use old method
-							if (!t._isHidden())
-								try {d.execCommand("useCSS", 0, true);} catch (ex) {}
-						}
-
-						if (!s.table_inline_editing)
-							try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}
-
-						if (!s.object_resizing)
-							try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}
-					}
-				};
-
-				t.onBeforeExecCommand.add(setOpts);
-				t.onMouseDown.add(setOpts);
-			}
-
-			// Add node change handlers
-			t.onMouseUp.add(t.nodeChanged);
-			t.onClick.add(t.nodeChanged);
-			t.onKeyUp.add(function(ed, e) {
-				if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.keyCode == 46 || e.keyCode == 8 || e.ctrlKey)
-					t.nodeChanged();
-			});
-
-			// Add reset handler
-			t.onReset.add(function() {
-				t.setContent(t.startContent, {format : 'raw'});
-			});
-
-			if (t.getParam('tab_focus')) {
-				function tabCancel(ed, e) {
-					if (e.keyCode === 9)
-						return Event.cancel(e);
-				};
-
-				function tabHandler(ed, e) {
-					var x, i, f, el, v;
-
-					function find(d) {
-						f = DOM.getParent(ed.id, 'form');
-						el = f.elements;
-
-						if (f) {
-							each(el, function(e, i) {
-								if (e.id == ed.id) {
-									x = i;
-									return false;
-								}
-							});
-
-							if (d > 0) {
-								for (i = x + 1; i < el.length; i++) {
-									if (el[i].type != 'hidden')
-										return el[i];
-								}
-							} else {
-								for (i = x - 1; i >= 0; i--) {
-									if (el[i].type != 'hidden')
-										return el[i];
-								}
-							}
-						}
-
-						return null;
-					};
-
-					if (e.keyCode === 9) {
-						v = explode(ed.getParam('tab_focus'));
-
-						if (v.length == 1) {
-							v[1] = v[0];
-							v[0] = ':prev';
-						}
-
-						// Find element to focus
-						if (e.shiftKey) {
-							if (v[0] == ':prev')
-								el = find(-1);
-							else
-								el = DOM.get(v[0]);
-						} else {
-							if (v[1] == ':next')
-								el = find(1);
-							else
-								el = DOM.get(v[1]);
-						}
-
-						if (el) {
-							if (ed = EditorManager.get(el.id || el.name))
-								ed.focus();
-							else
-								window.setTimeout(function() {window.focus();el.focus();}, 10);
-
-							return Event.cancel(e);
-						}
-					}
-				};
-
-				t.onKeyUp.add(tabCancel);
-
-				if (isGecko) {
-					t.onKeyPress.add(tabHandler);
-					t.onKeyDown.add(tabCancel);
-				} else
-					t.onKeyDown.add(tabHandler);
-			}
-
-			// Add shortcuts
-			if (s.custom_shortcuts) {
-				if (s.custom_undo_redo_keyboard_shortcuts) {
-					t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');
-					t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');
-				}
-
-				// Add default shortcuts for gecko
-				if (isGecko) {
-					t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
-					t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
-					t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
-				}
-
-				// BlockFormat shortcuts keys
-				for (i=1; i<=6; i++)
-					t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, '<h' + i + '>']);
-
-				t.addShortcut('ctrl+7', '', ['FormatBlock', false, '<p>']);
-				t.addShortcut('ctrl+8', '', ['FormatBlock', false, '<div>']);
-				t.addShortcut('ctrl+9', '', ['FormatBlock', false, '<address>']);
-
-				function find(e) {
-					var v = null;
-
-					if (!e.altKey && !e.ctrlKey && !e.metaKey)
-						return v;
-
-					each(t.shortcuts, function(o) {
-						if (o.ctrl != e.ctrlKey && (!tinymce.isMac || o.ctrl == e.metaKey))
-							return;
-
-						if (o.alt != e.altKey)
-							return;
-
-						if (o.shift != e.shiftKey)
-							return;
-
-						if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {
-							v = o;
-							return false;
-						}
-					});
-
-					return v;
-				};
-
-				t.onKeyUp.add(function(ed, e) {
-					var o = find(e);
-
-					if (o)
-						return Event.cancel(e);
-				});
-
-				t.onKeyPress.add(function(ed, e) {
-					var o = find(e);
-
-					if (o)
-						return Event.cancel(e);
-				});
-
-				t.onKeyDown.add(function(ed, e) {
-					var o = find(e);
-
-					if (o) {
-						o.func.call(o.scope);
-						return Event.cancel(e);
-					}
-				});
-			}
-
-			if (tinymce.isIE) {
-				// Fix so resize will only update the width and height attributes not the styles of an image
-				// It will also block mceItemNoResize items
-				Event.add(t.getDoc(), 'controlselect', function(e) {
-					var re = t.resizeInfo, cb;
-
-					e = e.target;
-
-					// Don't do this action for non image elements
-					if (e.nodeName !== 'IMG')
-						return;
-
-					if (re)
-						Event.remove(re.node, re.ev, re.cb);
-
-					if (!t.dom.hasClass(e, 'mceItemNoResize')) {
-						ev = 'resizeend';
-						cb = Event.add(e, ev, function(e) {
-							var v;
-
-							e = e.target;
-
-							if (v = t.dom.getStyle(e, 'width')) {
-								t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));
-								t.dom.setStyle(e, 'width', '');
-							}
-
-							if (v = t.dom.getStyle(e, 'height')) {
-								t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));
-								t.dom.setStyle(e, 'height', '');
-							}
-						});
-					} else {
-						ev = 'resizestart';
-						cb = Event.add(e, 'resizestart', Event.cancel, Event);
-					}
-
-					re = t.resizeInfo = {
-						node : e,
-						ev : ev,
-						cb : cb
-					};
-				});
-
-				t.onKeyDown.add(function(ed, e) {
-					switch (e.keyCode) {
-						case 8:
-							// Fix IE control + backspace browser bug
-							if (t.selection.getRng().item) {
-								t.selection.getRng().item(0).removeNode();
-								return Event.cancel(e);
-							}
-					}
-				});
-			}
-
-			if (tinymce.isOpera) {
-				t.onClick.add(function(ed, e) {
-					Event.prevent(e);
-				});
-			}
-
-			// Add custom undo/redo handlers
-			if (s.custom_undo_redo) {
-				function addUndo() {
-					t.undoManager.typing = 0;
-					t.undoManager.add();
-				};
-
-				// Add undo level on editor blur
-				if (tinymce.isIE) {
-					Event.add(t.getWin(), 'blur', function(e) {
-						var n;
-
-						// Check added for fullscreen bug
-						if (t.selection) {
-							n = t.selection.getNode();
-
-							// Add undo level is selection was lost to another document
-							if (!t.removed && n.ownerDocument && n.ownerDocument != t.getDoc())
-								addUndo();
-						}
-					});
-				} else {
-					Event.add(t.getDoc(), 'blur', function() {
-						if (t.selection && !t.removed)
-							addUndo();
-					});
-				}
-
-				t.onMouseDown.add(addUndo);
-
-				t.onKeyUp.add(function(ed, e) {
-					if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey) {
-						t.undoManager.typing = 0;
-						t.undoManager.add();
-					}
-				});
-
-				t.onKeyDown.add(function(ed, e) {
-					// Is caracter positon keys
-					if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) {
-						if (t.undoManager.typing) {
-							t.undoManager.add();
-							t.undoManager.typing = 0;
-						}
-
-						return;
-					}
-
-					if (!t.undoManager.typing) {
-						t.undoManager.add();
-						t.undoManager.typing = 1;
-					}
-				});
-			}
-		},
-
-		_convertInlineElements : function() {
-			var t = this, s = t.settings, dom = t.dom, v, e, na, st, sp;
-
-			function convert(ed, o) {
-				if (!s.inline_styles)
-					return;
-
-				if (o.get) {
-					each(t.dom.select('table,u,strike', o.node), function(n) {
-						switch (n.nodeName) {
-							case 'TABLE':
-								if (v = dom.getAttrib(n, 'height')) {
-									dom.setStyle(n, 'height', v);
-									dom.setAttrib(n, 'height', '');
-								}
-								break;
-
-							case 'U':
-							case 'STRIKE':
-								//sp = dom.create('span', {style : dom.getAttrib(n, 'style')});
-								n.style.textDecoration = n.nodeName == 'U' ? 'underline' : 'line-through';
-								dom.setAttrib(n, 'mce_style', '');
-								dom.setAttrib(n, 'mce_name', 'span');
-								break;
-						}
-					});
-				} else if (o.set) {
-					each(t.dom.select('table,span', o.node).reverse(), function(n) {
-						if (n.nodeName == 'TABLE') {
-							if (v = dom.getStyle(n, 'height'))
-								dom.setAttrib(n, 'height', v.replace(/[^0-9%]+/g, ''));
-						} else {
-							// Convert spans to elements
-							if (n.style.textDecoration == 'underline')
-								na = 'u';
-							else if (n.style.textDecoration == 'line-through')
-								na = 'strike';
-							else
-								na = '';
-
-							if (na) {
-								n.style.textDecoration = '';
-								dom.setAttrib(n, 'mce_style', '');
-
-								e = dom.create(na, {
-									style : dom.getAttrib(n, 'style')
-								});
-
-								dom.replace(e, n, 1);
-							}
-						}
-					});
-				}
-			};
-
-			t.onPreProcess.add(convert);
-
-			if (!s.cleanup_on_startup) {
-				t.onSetContent.add(function(ed, o) {
-					if (o.initial)
-						convert(t, {node : t.getBody(), set : 1});
-				});
-			}
-		},
-
-		_convertFonts : function() {
-			var t = this, s = t.settings, dom = t.dom, fz, fzn, sl, cl;
-
-			// No need
-			if (!s.inline_styles)
-				return;
-
-			// Font pt values and font size names
-			fz = [8, 10, 12, 14, 18, 24, 36];
-			fzn = ['xx-small', 'x-small','small','medium','large','x-large', 'xx-large'];
-
-			if (sl = s.font_size_style_values)
-				sl = explode(sl);
-
-			if (cl = s.font_size_classes)
-				cl = explode(cl);
-
-			function convertToFonts(no) {
-				var n, f, nl, x, i, v, st;
-
-				// Convert spans to fonts on non WebKit browsers
-				if (tinymce.isWebKit || !s.inline_styles)
-					return;
-
-				nl = t.dom.select('span', no);
-				for (x = nl.length - 1; x >= 0; x--) {
-					n = nl[x];
-
-					f = dom.create('font', {
-						color : dom.toHex(dom.getStyle(n, 'color')),
-						face : dom.getStyle(n, 'fontFamily'),
-						style : dom.getAttrib(n, 'style'),
-						'class' : dom.getAttrib(n, 'class')
-					});
-
-					// Clear color and font family
-					st = f.style;
-					if (st.color || st.fontFamily) {
-						st.color = st.fontFamily = '';
-						dom.setAttrib(f, 'mce_style', ''); // Remove cached style data
-					}
-
-					if (sl) {
-						i = inArray(sl, dom.getStyle(n, 'fontSize'));
-
-						if (i != -1) {
-							dom.setAttrib(f, 'size', '' + (i + 1 || 1));
-							//f.style.fontSize = '';
-						}
-					} else if (cl) {
-						i = inArray(cl, dom.getAttrib(n, 'class'));
-						v = dom.getStyle(n, 'fontSize');
-
-						if (i == -1 && v.indexOf('pt') > 0)
-							i = inArray(fz, parseInt(v));
-
-						if (i == -1)
-							i = inArray(fzn, v);
-
-						if (i != -1) {
-							dom.setAttrib(f, 'size', '' + (i + 1 || 1));
-							f.style.fontSize = '';
-						}
-					}
-
-					if (f.color || f.face || f.size) {
-						f.style.fontFamily = '';
-						dom.setAttrib(f, 'mce_style', '');
-						dom.replace(f, n, 1);
-					}
-
-					f = n = null;
-				}
-			};
-
-			// Run on setup
-			t.onSetContent.add(function(ed, o) {
-				convertToFonts(ed.getBody());
-			});
-
-			// Run on cleanup
-			t.onPreProcess.add(function(ed, o) {
-				var n, sp, nl, x;
-
-				// Keep unit tests happy
-				if (!s.inline_styles)
-					return;
-
-				if (o.get) {
-					nl = t.dom.select('font', o.node);
-					for (x = nl.length - 1; x >= 0; x--) {
-						n = nl[x];
-
-						sp = dom.create('span', {
-							style : dom.getAttrib(n, 'style'),
-							'class' : dom.getAttrib(n, 'class')
-						});
-
-						dom.setStyles(sp, {
-							fontFamily : dom.getAttrib(n, 'face'),
-							color : dom.getAttrib(n, 'color'),
-							backgroundColor : n.style.backgroundColor
-						});
-
-						if (n.size) {
-							if (sl)
-								dom.setStyle(sp, 'fontSize', sl[parseInt(n.size) - 1]);
-							else
-								dom.setAttrib(sp, 'class', cl[parseInt(n.size) - 1]);
-						}
-
-						dom.setAttrib(sp, 'mce_style', '');
-						dom.replace(sp, n, 1);
-					}
-				}
-			});
-		},
-
-		_isHidden : function() {
-			var s;
-
-			if (!isGecko)
-				return 0;
-
-			// Weird, wheres that cursor selection?
-			s = this.selection.getSel();
-			return (!s || !s.rangeCount || s.rangeCount == 0);
-		},
-
-		// Fix for bug #1867292
-		_fixNesting : function(s) {
-			var d = [], i;
-
-			s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) {
-				var e;
-
-				// Handle end element
-				if (b === '/') {
-					if (!d.length)
-						return '';
-
-					if (c !== d[d.length - 1].tag) {
-						for (i=d.length - 1; i>=0; i--) {
-							if (d[i].tag === c) {
-								d[i].close = 1;
-								break;
-							}
-						}
-
-						return '';
-					} else {
-						d.pop();
-
-						if (d.length && d[d.length - 1].close) {
-							a = a + '</' + d[d.length - 1].tag + '>';
-							d.pop();
-						}
-					}
-				} else {
-					// Ignore these
-					if (/^(br|hr|input|meta|img|link|param)$/i.test(c))
-						return a;
-
-					// Ignore closed ones
-					if (/\/>$/.test(a))
-						return a;
-
-					d.push({tag : c}); // Push start element
-				}
-
-				return a;
-			});
-
-			// End all open tags
-			for (i=d.length - 1; i>=0; i--)
-				s += '</' + d[i].tag + '>';
-
-			return s;
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/EditorCommands.js */
-
-(function() {
-	var each = tinymce.each, isIE = tinymce.isIE, isGecko = tinymce.isGecko, isOpera = tinymce.isOpera, isWebKit = tinymce.isWebKit;
-
-	tinymce.create('tinymce.EditorCommands', {
-		EditorCommands : function(ed) {
-			this.editor = ed;
-		},
-
-		execCommand : function(cmd, ui, val) {
-			var t = this, ed = t.editor, f;
-
-			switch (cmd) {
-				case 'Cut':
-				case 'Copy':
-				case 'Paste':
-					try {
-						ed.getDoc().execCommand(cmd, ui, val);
-					} catch (ex) {
-						if (isGecko) {
-							ed.windowManager.confirm(ed.getLang('clipboard_msg'), function(s) {
-								if (s)
-									window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal');
-							});
-						} else
-							ed.windowManager.alert(ed.getLang('clipboard_no_support'));
-					}
-
-					return true;
-
-				// Ignore these
-				case 'mceResetDesignMode':
-				case 'mceBeginUndoLevel':
-					return true;
-
-				// Ignore these
-				case 'unlink':
-					t.UnLink();
-					return true;
-
-				// Bundle these together
-				case 'JustifyLeft':
-				case 'JustifyCenter':
-				case 'JustifyRight':
-				case 'JustifyFull':
-					t.mceJustify(cmd, cmd.substring(7).toLowerCase());
-					return true;
-
-				case 'mceEndUndoLevel':
-				case 'mceAddUndoLevel':
-					ed.undoManager.add();
-					return true;
-
-				default:
-					f = this[cmd];
-
-					if (f) {
-						f.call(this, ui, val);
-						return true;
-					}
-			}
-
-			return false;
-		},
-
-		Indent : function() {
-			var ed = this.editor, d = ed.dom, s = ed.selection, e, iv, iu;
-
-			// Setup indent level
-			iv = ed.settings.indentation;
-			iu = /[a-z%]+$/i.exec(iv);
-			iv = parseInt(iv);
-
-			if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) {
-				each(this._getSelectedBlocks(), function(e) {
-					d.setStyle(e, 'paddingLeft', (parseInt(e.style.paddingLeft || 0) + iv) + iu);
-				});
-
-				return;
-			}
-
-			ed.getDoc().execCommand('Indent', false, null);
-
-			if (isIE) {
-				d.getParent(s.getNode(), function(n) {
-					if (n.nodeName == 'BLOCKQUOTE') {
-						n.dir = n.style.cssText = '';
-					}
-				});
-			}
-		},
-
-		Outdent : function() {
-			var ed = this.editor, d = ed.dom, s = ed.selection, e, v, iv, iu;
-
-			// Setup indent level
-			iv = ed.settings.indentation;
-			iu = /[a-z%]+$/i.exec(iv);
-			iv = parseInt(iv);
-
-			if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) {
-				each(this._getSelectedBlocks(), function(e) {
-					v = Math.max(0, parseInt(e.style.paddingLeft || 0) - iv);
-					d.setStyle(e, 'paddingLeft', v ? v + iu : '');
-				});
-
-				return;
-			}
-
-			ed.getDoc().execCommand('Outdent', false, null);
-		},
-
-		mceSetAttribute : function(u, v) {
-			var ed = this.editor, d = ed.dom, e;
-
-			if (e = d.getParent(ed.selection.getNode(), d.isBlock))
-				d.setAttrib(e, v.name, v.value);
-		},
-
-		mceSetContent : function(u, v) {
-			this.editor.setContent(v);
-		},
-
-		mceToggleVisualAid : function() {
-			var ed = this.editor;
-
-			ed.hasVisual = !ed.hasVisual;
-			ed.addVisual();
-		},
-
-		mceReplaceContent : function(u, v) {
-			var s = this.editor.selection;
-
-			s.setContent(v.replace(/\{\$selection\}/g, s.getContent({format : 'text'})));
-		},
-
-		mceInsertLink : function(u, v) {
-			var ed = this.editor, s = ed.selection, e = ed.dom.getParent(s.getNode(), 'A');
-
-			if (tinymce.is(v, 'string'))
-				v = {href : v};
-
-			function set(e) {
-				each(v, function(v, k) {
-					ed.dom.setAttrib(e, k, v);
-				});
-			};
-
-			if (!e) {
-				ed.execCommand('CreateLink', false, 'javascript:mctmp(0);');
-				each(ed.dom.select('a'), function(e) {
-					if (e.href == 'javascript:mctmp(0);')
-						set(e);
-				});
-			} else {
-				if (v.href)
-					set(e);
-				else
-					ed.dom.remove(e, 1);
-			}
-		},
-
-		UnLink : function() {
-			var ed = this.editor, s = ed.selection;
-
-			if (s.isCollapsed())
-				s.select(s.getNode());
-
-			ed.getDoc().execCommand('unlink', false, null);
-			s.collapse(0);
-		},
-
-		FontName : function(u, v) {
-			var t = this, ed = t.editor, s = ed.selection, e;
-
-			if (!v) {
-				if (s.isCollapsed())
-					s.select(s.getNode());
-
-				t.RemoveFormat();
-			} else
-				ed.getDoc().execCommand('FontName', false, v);
-		},
-
-		FontSize : function(u, v) {
-			var ed = this.editor, s = ed.settings, fz = tinymce.explode(s.font_size_style_values), fzc = tinymce.explode(s.font_size_classes), h, bm;
-
-			// Remove style sizes
-			each(ed.dom.select('font'), function(e) {
-				e.style.fontSize = '';
-			});
-
-			// Let the browser add new size it will remove unneded ones in some browsers
-			ed.getDoc().execCommand('FontSize', false, v);
-
-			// Add style values
-			if (s.inline_styles) {
-				each(ed.dom.select('font'), function(e) {
-					// Try remove redundant font elements
-					if (!e.size || e.parentNode.nodeName == 'FONT' && e.size == e.parentNode.size) {
-						if (!bm)
-							bm = ed.selection.getBookmark();
-
-						ed.dom.remove(e, 1);
-						return;
-					}
-
-					// Setup font size based on font size value
-					if (v = e.size) {
-						if (fzc && fzc.length > 0)
-							ed.dom.setAttrib(e, 'class', fzc[parseInt(v) - 1]);
-						else
-							ed.dom.setStyle(e, 'fontSize', fz[parseInt(v) - 1]);
-					}
-				});
-			}
-
-			ed.selection.moveToBookmark(bm);
-		},
-
-		queryCommandValue : function(c) {
-			var f = this['queryValue' + c];
-
-			if (f)
-				return f.call(this, c);
-
-			return false;
-		},
-
-		queryCommandState : function(cmd) {
-			var f;
-
-			switch (cmd) {
-				// Bundle these together
-				case 'JustifyLeft':
-				case 'JustifyCenter':
-				case 'JustifyRight':
-				case 'JustifyFull':
-					return this.queryStateJustify(cmd, cmd.substring(7).toLowerCase());
-
-				default:
-					if (f = this['queryState' + cmd])
-						return f.call(this, cmd);
-			}
-
-			return -1;
-		},
-
-		_queryState : function(c) {
-			try {
-				return this.editor.getDoc().queryCommandState(c);
-			} catch (ex) {
-				// Ignore exception
-			}
-		},
-
-		_queryVal : function(c) {
-			try {
-				return this.editor.getDoc().queryCommandValue(c);
-			} catch (ex) {
-				// Ignore exception
-			}
-		},
-
-		queryValueFontSize : function() {
-			var ed = this.editor, v = 0, p;
-
-			if (isOpera || isWebKit) {
-				if (p = ed.dom.getParent(ed.selection.getNode(), 'FONT'))
-					v = p.size;
-
-				return v;
-			}
-
-			return this._queryVal('FontSize');
-		},
-
-		queryValueFontName : function() {
-			var ed = this.editor, v = 0, p;
-
-			if (p = ed.dom.getParent(ed.selection.getNode(), 'FONT'))
-				v = p.face;
-
-			if (!v)
-				v = this._queryVal('FontName');
-
-			return v;
-		},
-
-		mceJustify : function(c, v) {
-			var ed = this.editor, se = ed.selection, n = se.getNode(), nn = n.nodeName, bl, nb, dom = ed.dom, rm;
-
-			if (ed.settings.inline_styles && this.queryStateJustify(c, v))
-				rm = 1;
-
-			bl = dom.getParent(n, ed.dom.isBlock);
-
-			if (nn == 'IMG') {
-				if (v == 'full')
-					return;
-
-				if (rm) {
-					if (v == 'center')
-						dom.setStyle(n.parentNode, 'textAlign', '');
-
-					dom.setStyle(n, 'float', '');
-					this.mceRepaint();
-					return;
-				}
-
-				if (v == 'center') {
-					// Do not change table elements
-					if (/^(TD|TH)$/.test(bl.nodeName))
-						bl = 0;
-
-					if (!bl || bl.childNodes.length > 1) {
-						nb = dom.create('p');
-						nb.appendChild(n.cloneNode(false));
-
-						if (bl)
-							dom.insertAfter(nb, bl);
-						else
-							dom.insertAfter(nb, n);
-
-						dom.remove(n);
-						n = nb.firstChild;
-						bl = nb;
-					}
-
-					dom.setStyle(bl, 'textAlign', v);
-					dom.setStyle(n, 'float', '');
-				} else {
-					dom.setStyle(n, 'float', v);
-					dom.setStyle(n.parentNode, 'textAlign', '');
-				}
-
-				this.mceRepaint();
-				return;
-			}
-
-			// Handle the alignment outselfs, less quirks in all browsers
-			if (ed.settings.inline_styles && ed.settings.forced_root_block) {
-				if (rm)
-					v = '';
-
-				each(this._getSelectedBlocks(dom.getParent(se.getStart(), dom.isBlock), dom.getParent(se.getEnd(), dom.isBlock)), function(e) {
-					dom.setAttrib(e, 'align', '');
-					dom.setStyle(e, 'textAlign', v == 'full' ? 'justify' : v);
-				});
-
-				return;
-			} else if (!rm)
-				ed.getDoc().execCommand(c, false, null);
-
-			if (ed.settings.inline_styles) {
-				if (rm) {
-					dom.getParent(ed.selection.getNode(), function(n) {
-						if (n.style && n.style.textAlign)
-							dom.setStyle(n, 'textAlign', '');
-					});
-
-					return;
-				}
-
-				each(dom.select('*'), function(n) {
-					var v = n.align;
-
-					if (v) {
-						if (v == 'full')
-							v = 'justify';
-
-						dom.setStyle(n, 'textAlign', v);
-						dom.setAttrib(n, 'align', '');
-					}
-				});
-			}
-		},
-
-		mceSetCSSClass : function(u, v) {
-			this.mceSetStyleInfo(0, {command : 'setattrib', name : 'class', value : v});
-		},
-
-		getSelectedElement : function() {
-			var t = this, ed = t.editor, dom = ed.dom, se = ed.selection, r = se.getRng(), r1, r2, sc, ec, so, eo, e, sp, ep, re;
-
-			if (se.isCollapsed() || r.item)
-				return se.getNode();
-
-			// Setup regexp
-			re = ed.settings.merge_styles_invalid_parents;
-			if (tinymce.is(re, 'string'))
-				re = new RegExp(re, 'i');
-
-			if (isIE) {
-				r1 = r.duplicate();
-				r1.collapse(true);
-				sc = r1.parentElement();
-
-				r2 = r.duplicate();
-				r2.collapse(false);
-				ec = r2.parentElement();
-
-				if (sc != ec) {
-					r1.move('character', 1);
-					sc = r1.parentElement();
-				}
-
-				if (sc == ec) {
-					r1 = r.duplicate();
-					r1.moveToElementText(sc);
-
-					if (r1.compareEndPoints('StartToStart', r) == 0 && r1.compareEndPoints('EndToEnd', r) == 0)
-						return re && re.test(sc.nodeName) ? null : sc;
-				}
-			} else {
-				function getParent(n) {
-					return dom.getParent(n, function(n) {return n.nodeType == 1;});
-				};
-
-				sc = r.startContainer;
-				ec = r.endContainer;
-				so = r.startOffset;
-				eo = r.endOffset;
-
-				if (!r.collapsed) {
-					if (sc == ec) {
-						if (so - eo < 2) {
-							if (sc.hasChildNodes()) {
-								sp = sc.childNodes[so];
-								return re && re.test(sp.nodeName) ? null : sp;
-							}
-						}
-					}
-				}
-
-				if (sc.nodeType != 3 || ec.nodeType != 3)
-					return null;
-
-				if (so == 0) {
-					sp = getParent(sc);
-
-					if (sp && sp.firstChild != sc)
-						sp = null;
-				}
-
-				if (so == sc.nodeValue.length) {
-					e = sc.nextSibling;
-
-					if (e && e.nodeType == 1)
-						sp = sc.nextSibling;
-				}
-
-				if (eo == 0) {
-					e = ec.previousSibling;
-
-					if (e && e.nodeType == 1)
-						ep = e;
-				}
-
-				if (eo == ec.nodeValue.length) {
-					ep = getParent(ec);
-
-					if (ep && ep.lastChild != ec)
-						ep = null;
-				}
-
-				// Same element
-				if (sp == ep)
-					return re && sp && re.test(sp.nodeName) ? null : sp;
-			}
-
-			return null;
-		},
-
-		InsertHorizontalRule : function() {
-			// Fix for Gecko <hr size="1" /> issue and IE bug rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
-			if (isGecko || isIE)
-				this.editor.selection.setContent('<hr />');
-			else
-				this.editor.getDoc().execCommand('InsertHorizontalRule', false, '');
-		},
-
-		RemoveFormat : function() {
-			var t = this, ed = t.editor, s = ed.selection, b;
-
-			// Safari breaks tables
-			if (isWebKit)
-				s.setContent(s.getContent({format : 'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g, ''), {format : 'raw'});
-			else
-				ed.getDoc().execCommand('RemoveFormat', false, null);
-
-			t.mceSetStyleInfo(0, {command : 'removeformat'});
-			ed.addVisual();
-		},
-
-		mceSetStyleInfo : function(u, v) {
-			var t = this, ed = t.editor, d = ed.getDoc(), dom = ed.dom, e, b, s = ed.selection, nn = v.wrapper || 'span', b = s.getBookmark(), re;
-
-			function set(n, e) {
-				if (n.nodeType == 1) {
-					switch (v.command) {
-						case 'setattrib':
-							return dom.setAttrib(n, v.name, v.value);
-
-						case 'setstyle':
-							return dom.setStyle(n, v.name, v.value);
-
-						case 'removeformat':
-							return dom.setAttrib(n, 'class', '');
-					}
-				}
-			};
-
-			// Setup regexp
-			re = ed.settings.merge_styles_invalid_parents;
-			if (tinymce.is(re, 'string'))
-				re = new RegExp(re, 'i');
-
-			// Set style info on selected element
-			if (e = t.getSelectedElement())
-				set(e, 1);
-			else {
-				// Generate wrappers and set styles on them
-				d.execCommand('FontName', false, '__');
-				each(isWebKit ? dom.select('span') : dom.select('font'), function(n) {
-					var sp, e;
-
-					if (dom.getAttrib(n, 'face') == '__' || n.style.fontFamily === '__') {
-						sp = dom.create(nn, {mce_new : '1'});
-
-						set(sp);
-
-						each (n.childNodes, function(n) {
-							sp.appendChild(n.cloneNode(true));
-						});
-
-						dom.replace(sp, n);
-					}
-				});
-			}
-
-			// Remove wrappers inside new ones
-			each(dom.select(nn).reverse(), function(n) {
-				var p = n.parentNode;
-
-				// Check if it's an old span in a new wrapper
-				if (!dom.getAttrib(n, 'mce_new')) {
-					// Find new wrapper
-					p = dom.getParent(n, function(n) {
-						return n.nodeType == 1 && dom.getAttrib(n, 'mce_new');
-					});
-
-					if (p)
-						dom.remove(n, 1);
-				}
-			});
-
-			// Merge wrappers with parent wrappers
-			each(dom.select(nn).reverse(), function(n) {
-				var p = n.parentNode;
-
-				if (!p || !dom.getAttrib(n, 'mce_new'))
-					return;
-
-				// Has parent of the same type and only child
-				if (p.nodeName == nn.toUpperCase() && p.childNodes.length == 1)
-					return dom.remove(p, 1);
-
-				// Has parent that is more suitable to have the class and only child
-				if (n.nodeType == 1 && (!re || !re.test(p.nodeName)) && p.childNodes.length == 1) {
-					set(p); // Set style info on parent instead
-					dom.setAttrib(n, 'class', '');
-				}
-			});
-
-			// Remove empty wrappers
-			each(dom.select(nn).reverse(), function(n) {
-				if (dom.getAttrib(n, 'mce_new') || (dom.getAttribs(n).length <= 1 && n.className === '')) {
-					if (!dom.getAttrib(n, 'class') && !dom.getAttrib(n, 'style'))
-						return dom.remove(n, 1);
-
-					dom.setAttrib(n, 'mce_new', ''); // Remove mce_new marker
-				}
-			});
-
-			s.moveToBookmark(b);
-		},
-
-		queryStateJustify : function(c, v) {
-			var ed = this.editor, n = ed.selection.getNode(), dom = ed.dom;
-
-			if (n && n.nodeName == 'IMG') {
-				if (dom.getStyle(n, 'float') == v)
-					return 1;
-
-				return n.parentNode.style.textAlign == v;
-			}
-
-			n = dom.getParent(ed.selection.getStart(), function(n) {
-				return n.nodeType == 1 && n.style.textAlign;
-			});
-
-			if (v == 'full')
-				v = 'justify';
-
-			if (ed.settings.inline_styles)
-				return (n && n.style.textAlign == v);
-
-			return this._queryState(c);
-		},
-
-		HiliteColor : function(ui, val) {
-			var t = this, ed = t.editor, d = ed.getDoc();
-
-			function set(s) {
-				if (!isGecko)
-					return;
-
-				try {
-					// Try new Gecko method
-					d.execCommand("styleWithCSS", 0, s);
-				} catch (ex) {
-					// Use old
-					d.execCommand("useCSS", 0, !s);
-				}
-			};
-
-			if (isGecko || isOpera) {
-				set(true);
-				d.execCommand('hilitecolor', false, val);
-				set(false);
-			} else
-				d.execCommand('BackColor', false, val);
-		},
-
-		Undo : function() {
-			var ed = this.editor;
-
-			if (ed.settings.custom_undo_redo) {
-				ed.undoManager.undo();
-				ed.nodeChanged();
-			} else
-				ed.getDoc().execCommand('Undo', false, null);
-		},
-
-		Redo : function() {
-			var ed = this.editor;
-
-			if (ed.settings.custom_undo_redo) {
-				ed.undoManager.redo();
-				ed.nodeChanged();
-			} else
-				ed.getDoc().execCommand('Redo', false, null);
-		},
-
-		FormatBlock : function(ui, val) {
-			var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, bl, nb, b;
-
-			function isBlock(n) {
-				return /^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);
-			};
-
-			bl = dom.getParent(s.getNode(), function(n) {
-				return isBlock(n);
-			});
-
-			// IE has an issue where it removes the parent div if you change format on the paragrah in <div><p>Content</p></div>
-			// FF and Opera doesn't change parent DIV elements if you switch format
-			if (bl) {
-				if ((isIE && isBlock(bl.parentNode)) || bl.nodeName == 'DIV') {
-					// Rename block element
-					nb = ed.dom.create(val);
-
-					each(dom.getAttribs(bl), function(v) {
-						dom.setAttrib(nb, v.nodeName, dom.getAttrib(bl, v.nodeName));
-					});
-
-					b = s.getBookmark();
-					dom.replace(nb, bl, 1);
-					s.moveToBookmark(b);
-					ed.nodeChanged();
-					return;
-				}
-			}
-
-			val = ed.settings.forced_root_block ? (val || '<p>') : val;
-
-			if (val.indexOf('<') == -1)
-				val = '<' + val + '>';
-
-			if (tinymce.isGecko)
-				val = val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi, '$1');
-
-			ed.getDoc().execCommand('FormatBlock', false, val);
-		},
-
-		mceCleanup : function() {
-			var ed = this.editor, s = ed.selection, b = s.getBookmark();
-			ed.setContent(ed.getContent());
-			s.moveToBookmark(b);
-		},
-
-		mceRemoveNode : function(ui, val) {
-			var ed = this.editor, s = ed.selection, b, n = val || s.getNode();
-
-			// Make sure that the body node isn't removed
-			if (n == ed.getBody())
-				return;
-
-			b = s.getBookmark();
-			ed.dom.remove(n, 1);
-			s.moveToBookmark(b);
-			ed.nodeChanged();
-		},
-
-		mceSelectNodeDepth : function(ui, val) {
-			var ed = this.editor, s = ed.selection, c = 0;
-
-			ed.dom.getParent(s.getNode(), function(n) {
-				if (n.nodeType == 1 && c++ == val) {
-					s.select(n);
-					ed.nodeChanged();
-					return false;
-				}
-			}, ed.getBody());
-		},
-
-		mceSelectNode : function(u, v) {
-			this.editor.selection.select(v);
-		},
-
-		mceInsertContent : function(ui, val) {
-			this.editor.selection.setContent(val);
-		},
-
-		mceInsertRawHTML : function(ui, val) {
-			var ed = this.editor;
-
-			ed.selection.setContent('tiny_mce_marker');
-			ed.setContent(ed.getContent().replace(/tiny_mce_marker/g, val));
-		},
-
-		mceRepaint : function() {
-			var s, b, e = this.editor;
-
-			if (tinymce.isGecko) {
-				try {
-					s = e.selection;
-					b = s.getBookmark(true);
-
-					if (s.getSel())
-						s.getSel().selectAllChildren(e.getBody());
-
-					s.collapse(true);
-					s.moveToBookmark(b);
-				} catch (ex) {
-					// Ignore
-				}
-			}
-		},
-
-		queryStateUnderline : function() {
-			var ed = this.editor, n = ed.selection.getNode();
-
-			if (n && n.nodeName == 'A')
-				return false;
-
-			return this._queryState('Underline');
-		},
-
-		queryStateOutdent : function() {
-			var ed = this.editor, n;
-
-			if (ed.settings.inline_styles) {
-				if ((n = ed.dom.getParent(ed.selection.getStart(), ed.dom.isBlock)) && parseInt(n.style.paddingLeft) > 0)
-					return true;
-
-				if ((n = ed.dom.getParent(ed.selection.getEnd(), ed.dom.isBlock)) && parseInt(n.style.paddingLeft) > 0)
-					return true;
-			} else
-				return !!ed.dom.getParent(ed.selection.getNode(), 'BLOCKQUOTE');
-
-			return this.queryStateInsertUnorderedList() || this.queryStateInsertOrderedList();
-		},
-
-		queryStateInsertUnorderedList : function() {
-			return this.editor.dom.getParent(this.editor.selection.getNode(), 'UL');
-		},
-
-		queryStateInsertOrderedList : function() {
-			return this.editor.dom.getParent(this.editor.selection.getNode(), 'OL');
-		},
-
-		queryStatemceBlockQuote : function() {
-			return !!this.editor.dom.getParent(this.editor.selection.getStart(), function(n) {return n.nodeName === 'BLOCKQUOTE';});
-		},
-
-		mceBlockQuote : function() {
-			var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl;
-
-			function getBQ(e) {
-				return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});
-			};
-
-			// Get start/end block
-			sb = dom.getParent(s.getStart(), dom.isBlock);
-			eb = dom.getParent(s.getEnd(), dom.isBlock);
-
-			// Remove blockquote(s)
-			if (bq = getBQ(sb)) {
-				if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))
-					bm = s.getBookmark();
-
-				// Move all elements after the end block into new bq
-				if (getBQ(eb)) {
-					bq2 = bq.cloneNode(false);
-
-					while (n = eb.nextSibling)
-						bq2.appendChild(n.parentNode.removeChild(n));
-				}
-
-				// Add new bq after
-				if (bq2)
-					dom.insertAfter(bq2, bq);
-
-				// Move all selected blocks after the current bq
-				nl = t._getSelectedBlocks(sb, eb);
-				for (i = nl.length - 1; i >= 0; i--) {
-					dom.insertAfter(nl[i], bq);
-				}
-
-				// Empty bq, then remove it
-				if (/^\s*$/.test(bq.innerHTML))
-					dom.remove(bq, 1); // Keep children so boomark restoration works correctly
-
-				// Empty bq, then remote it
-				if (bq2 && /^\s*$/.test(bq2.innerHTML))
-					dom.remove(bq2, 1); // Keep children so boomark restoration works correctly
-
-				if (!bm) {
-					// Move caret inside empty block element
-					if (!isIE) {
-						r = ed.getDoc().createRange();
-						r.setStart(sb, 0);
-						r.setEnd(sb, 0);
-						s.setRng(r);
-					} else {
-						s.select(sb);
-						s.collapse(0);
-
-						// IE misses the empty block some times element so we must move back the caret
-						if (dom.getParent(s.getStart(), dom.isBlock) != sb) {
-							r = s.getRng();
-							r.move('character', -1);
-							r.select();
-						}
-					}
-				} else
-					t.editor.selection.moveToBookmark(bm);
-
-				return;
-			}
-
-			// Since IE can start with a totally empty document we need to add the first bq and paragraph
-			if (isIE && !sb && !eb) {
-				t.editor.getDoc().execCommand('Indent');
-				n = getBQ(s.getNode());
-				n.style.margin = n.dir = ''; // IE adds margin and dir to bq
-				return;
-			}
-
-			if (!sb || !eb)
-				return;
-
-			// If empty paragraph node then do not use bookmark
-			if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))
-				bm = s.getBookmark();
-
-			// Move selected block elements into a bq
-			each(t._getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) {
-				// Found existing BQ add to this one
-				if (e.nodeName == 'BLOCKQUOTE' && !bq) {
-					bq = e;
-					return;
-				}
-
-				// No BQ found, create one
-				if (!bq) {
-					bq = dom.create('blockquote');
-					e.parentNode.insertBefore(bq, e);
-				}
-
-				// Add children from existing BQ
-				if (e.nodeName == 'BLOCKQUOTE' && bq) {
-					n = e.firstChild;
-
-					while (n) {
-						bq.appendChild(n.cloneNode(true));
-						n = n.nextSibling;
-					}
-
-					dom.remove(e);
-					return;
-				}
-
-				// Add non BQ element to BQ
-				bq.appendChild(dom.remove(e));
-			});
-
-			if (!bm) {
-				// Move caret inside empty block element
-				if (!isIE) {
-					r = ed.getDoc().createRange();
-					r.setStart(sb, 0);
-					r.setEnd(sb, 0);
-					s.setRng(r);
-				} else {
-					s.select(sb);
-					s.collapse(1);
-				}
-			} else
-				s.moveToBookmark(bm);
-		},
-/*
-		_mceBlockQuote : function() {
-			var t = this, s = t.editor.selection, b = s.getBookmark(), bq, dom = t.editor.dom;
-
-			function findBQ(e) {
-				return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});
-			};
-
-			// Remove blockquote(s)
-			if (findBQ(s.getStart())) {
-				each(t._getSelectedBlocks(findBQ(s.getStart()), findBQ(s.getEnd())), function(e) {
-					// Found BQ lets remove it
-					if (e.nodeName == 'BLOCKQUOTE')
-						dom.remove(e, 1);
-				});
-
-				t.editor.selection.moveToBookmark(b);
-				return;
-			}
-
-			each(t._getSelectedBlocks(findBQ(s.getStart()), findBQ(s.getEnd())), function(e) {
-				var n;
-
-				// Found existing BQ add to this one
-				if (e.nodeName == 'BLOCKQUOTE' && !bq) {
-					bq = e;
-					return;
-				}
-
-				// No BQ found, create one
-				if (!bq) {
-					bq = dom.create('blockquote');
-					e.parentNode.insertBefore(bq, e);
-				}
-
-				// Add children from existing BQ
-				if (e.nodeName == 'BLOCKQUOTE' && bq) {
-					n = e.firstChild;
-
-					while (n) {
-						bq.appendChild(n.cloneNode(true));
-						n = n.nextSibling;
-					}
-
-					dom.remove(e);
-
-					return;
-				}
-
-				// Add non BQ element to BQ
-				bq.appendChild(dom.remove(e));
-			});
-
-			t.editor.selection.moveToBookmark(b);
-		},
-*/
-		_getSelectedBlocks : function(st, en) {
-			var ed = this.editor, dom = ed.dom, s = ed.selection, sb, eb, n, bl = [];
-
-			sb = dom.getParent(st || s.getStart(), dom.isBlock);
-			eb = dom.getParent(en || s.getEnd(), dom.isBlock);
-
-			if (sb)
-				bl.push(sb);
-
-			if (sb && eb && sb != eb) {
-				n = sb;
-
-				while ((n = n.nextSibling) && n != eb) {
-					if (dom.isBlock(n))
-						bl.push(n);
-				}
-			}
-
-			if (eb && sb != eb)
-				bl.push(eb);
-
-			return bl;
-		}
-	});
-})();
-
-
-/* file:jscripts/tiny_mce/classes/UndoManager.js */
-
-tinymce.create('tinymce.UndoManager', {
-	index : 0,
-	data : null,
-	typing : 0,
-
-	UndoManager : function(ed) {
-		var t = this, Dispatcher = tinymce.util.Dispatcher;
-
-		t.editor = ed;
-		t.data = [];
-		t.onAdd = new Dispatcher(this);
-		t.onUndo = new Dispatcher(this);
-		t.onRedo = new Dispatcher(this);
-	},
-
-	add : function(l) {
-		var t = this, i, ed = t.editor, b, s = ed.settings, la;
-
-		l = l || {};
-		l.content = l.content || ed.getContent({format : 'raw', no_events : 1});
-
-		// Add undo level if needed
-		l.content = l.content.replace(/^\s*|\s*$/g, '');
-		la = t.data[t.index > 0 && (t.index == 0 || t.index == t.data.length) ? t.index - 1 : t.index];
-		if (!l.initial && la && l.content == la.content)
-			return null;
-
-		// Time to compress
-		if (s.custom_undo_redo_levels) {
-			if (t.data.length > s.custom_undo_redo_levels) {
-				for (i = 0; i < t.data.length - 1; i++)
-					t.data[i] = t.data[i + 1];
-
-				t.data.length--;
-				t.index = t.data.length;
-			}
-		}
-
-		if (s.custom_undo_redo_restore_selection && !l.initial)
-			l.bookmark = b = l.bookmark || ed.selection.getBookmark();
-
-		if (t.index < t.data.length)
-			t.index++;
-
-		// Only initial marked undo levels should be allowed as first item
-		// This to workaround a bug with Firefox and the blur event
-		if (t.data.length === 0 && !l.initial)
-			return null;
-
-		// Add level
-		t.data.length = t.index + 1;
-		t.data[t.index++] = l;
-
-		if (l.initial)
-			t.index = 0;
-
-		// Set initial bookmark use first real undo level
-		if (t.data.length == 2 && t.data[0].initial)
-			t.data[0].bookmark = b;
-
-		t.onAdd.dispatch(t, l);
-		ed.isNotDirty = 0;
-
-		//console.dir(t.data);
-
-		return l;
-	},
-
-	undo : function() {
-		var t = this, ed = t.editor, l = l, i;
-
-		if (t.typing) {
-			t.add();
-			t.typing = 0;
-		}
-
-		if (t.index > 0) {
-			// If undo on last index then take snapshot
-			if (t.index == t.data.length && t.index > 1) {
-				i = t.index;
-				t.typing = 0;
-
-				if (!t.add())
-					t.index = i;
-
-				--t.index;
-			}
-
-			l = t.data[--t.index];
-			ed.setContent(l.content, {format : 'raw'});
-			ed.selection.moveToBookmark(l.bookmark);
-
-			t.onUndo.dispatch(t, l);
-		}
-
-		return l;
-	},
-
-	redo : function() {
-		var t = this, ed = t.editor, l = null;
-
-		if (t.index < t.data.length - 1) {
-			l = t.data[++t.index];
-			ed.setContent(l.content, {format : 'raw'});
-			ed.selection.moveToBookmark(l.bookmark);
-
-			t.onRedo.dispatch(t, l);
-		}
-
-		return l;
-	},
-
-	clear : function() {
-		var t = this;
-
-		t.data = [];
-		t.index = 0;
-		t.typing = 0;
-		t.add({initial : true});
-	},
-
-	hasUndo : function() {
-		return this.index != 0 || this.typing;
-	},
-
-	hasRedo : function() {
-		return this.index < this.data.length - 1;
-	}
-
-	});
-/* file:jscripts/tiny_mce/classes/ForceBlocks.js */
-
-(function() {
-	// Shorten names
-	var Event, isIE, isGecko, isOpera, each, extend;
-
-	Event = tinymce.dom.Event;
-	isIE = tinymce.isIE;
-	isGecko = tinymce.isGecko;
-	isOpera = tinymce.isOpera;
-	each = tinymce.each;
-	extend = tinymce.extend;
-
-	tinymce.create('tinymce.ForceBlocks', {
-		ForceBlocks : function(ed) {
-			var t = this, s = ed.settings, elm;
-
-			t.editor = ed;
-			t.dom = ed.dom;
-			elm = (s.forced_root_block || 'p').toLowerCase();
-			s.element = elm.toUpperCase();
-
-			ed.onPreInit.add(t.setup, t);
-
-			t.reOpera = new RegExp('(\\u00a0|&#160;|&nbsp;)<\/' + elm + '>', 'gi');
-			t.rePadd = new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g, elm), 'gi');
-			t.reNbsp2BR1 = new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi');
-			t.reNbsp2BR2 = new RegExp('<p( )([^>]+)>(&nbsp;|&#160;)<\\\/p>|<p>(&nbsp;|&#160;)<\\\/p>'.replace(/p/g, elm), 'gi');
-			t.reBR2Nbsp = new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');
-			t.reTrailBr = new RegExp('\\s*<br \\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');
-
-			function padd(ed, o) {
-				if (isOpera)
-					o.content = o.content.replace(t.reOpera, '</' + elm + '>');
-
-				o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0</' + elm + '>');
-
-				if (!isIE && !isOpera && o.set) {
-					// Use &nbsp; instead of BR in padded paragraphs
-					o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2><br /></' + elm + '>');
-					o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2><br /></' + elm + '>');
-				} else {
-					o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0</' + elm + '>');
-					o.content = o.content.replace(t.reTrailBr, '</' + elm + '>');
-				}
-			};
-
-			ed.onBeforeSetContent.add(padd);
-			ed.onPostProcess.add(padd);
-
-			if (s.forced_root_block) {
-				ed.onInit.add(t.forceRoots, t);
-				ed.onSetContent.add(t.forceRoots, t);
-				ed.onBeforeGetContent.add(t.forceRoots, t);
-			}
-		},
-
-		setup : function() {
-			var t = this, ed = t.editor, s = ed.settings;
-
-			// Force root blocks when typing and when getting output
-			if (s.forced_root_block) {
-				ed.onKeyUp.add(t.forceRoots, t);
-				ed.onPreProcess.add(t.forceRoots, t);
-			}
-
-			if (s.force_br_newlines) {
-				// Force IE to produce BRs on enter
-				if (isIE) {
-					ed.onKeyPress.add(function(ed, e) {
-						var n, s = ed.selection;
-
-						if (e.keyCode == 13 && s.getNode().nodeName != 'LI') {
-							s.setContent('<br id="__" /> ', {format : 'raw'});
-							n = ed.dom.get('__');
-							n.removeAttribute('id');
-							s.select(n);
-							s.collapse();
-							return Event.cancel(e);
-						}
-					});
-				}
-
-				return;
-			}
-
-			if (!isIE && s.force_p_newlines) {
-/*				ed.onPreProcess.add(function(ed, o) {
-					each(ed.dom.select('br', o.node), function(n) {
-						var p = n.parentNode;
-
-						// Replace <p><br /></p> with <p>&nbsp;</p>
-						if (p && p.nodeName == 'p' && (p.childNodes.length == 1 || p.lastChild == n)) {
-							p.replaceChild(ed.getDoc().createTextNode('\u00a0'), n);
-						}
-					});
-				});*/
-
-				ed.onKeyPress.add(function(ed, e) {
-					if (e.keyCode == 13 && !e.shiftKey) {
-						if (!t.insertPara(e))
-							Event.cancel(e);
-					}
-				});
-
-				if (isGecko) {
-					ed.onKeyDown.add(function(ed, e) {
-						if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey)
-							t.backspaceDelete(e, e.keyCode == 8);
-					});
-				}
-			}
-
-			function ren(rn, na) {
-				var ne = ed.dom.create(na);
-
-				each(rn.attributes, function(a) {
-					if (a.specified && a.nodeValue)
-						ne.setAttribute(a.nodeName.toLowerCase(), a.nodeValue);
-				});
-
-				each(rn.childNodes, function(n) {
-					ne.appendChild(n.cloneNode(true));
-				});
-
-				rn.parentNode.replaceChild(ne, rn);
-
-				return ne;
-			};
-
-			// Replaces IE:s auto generated paragraphs with the specified element name
-			if (isIE && s.element != 'P') {
-				ed.onKeyPress.add(function(ed, e) {
-					t.lastElm = ed.selection.getNode().nodeName;
-				});
-
-				ed.onKeyUp.add(function(ed, e) {
-					var bl, sel = ed.selection, n = sel.getNode(), b = ed.getBody();
-
-					if (b.childNodes.length === 1 && n.nodeName == 'P') {
-						n = ren(n, s.element);
-						sel.select(n);
-						sel.collapse();
-						ed.nodeChanged();
-					} else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {
-						bl = ed.dom.getParent(n, 'P');
-
-						if (bl) {
-							ren(bl, s.element);
-							ed.nodeChanged();
-						}
-					}
-				});
-			}
-		},
-
-		find : function(n, t, s) {
-			var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, false), c = -1;
-
-			while (n = w.nextNode()) {
-				c++;
-
-				// Index by node
-				if (t == 0 && n == s)
-					return c;
-
-				// Node by index
-				if (t == 1 && c == s)
-					return n;
-			}
-
-			return -1;
-		},
-
-		forceRoots : function(ed, e) {
-			var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF;
-			var nx, bl, bp, sp, le, nl = b.childNodes, i;
-
-			// Fix for bug #1863847
-			if (e && e.keyCode == 13)
-				return true;
-
-			// Wrap non blocks into blocks
-			for (i = nl.length - 1; i >= 0; i--) {
-				nx = nl[i];
-
-				// Is text or non block element
-				if (nx.nodeType == 3 || (!t.dom.isBlock(nx) && nx.nodeType != 8)) {
-					if (!bl) {
-						// Create new block but ignore whitespace
-						if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) {
-							// Store selection
-							if (si == -2 && r) {
-								if (!isIE) {
-									// If element is inside body, might not be the case in contentEdiable mode
-									if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) {
-										so = r.startOffset;
-										eo = r.endOffset;
-										si = t.find(b, 0, r.startContainer);
-										ei = t.find(b, 0, r.endContainer);
-									}
-								} else {
-									tr = d.body.createTextRange();
-									tr.moveToElementText(b);
-									tr.collapse(1);
-									bp = tr.move('character', c) * -1;
-
-									tr = r.duplicate();
-									tr.collapse(1);
-									sp = tr.move('character', c) * -1;
-
-									tr = r.duplicate();
-									tr.collapse(0);
-									le = (tr.move('character', c) * -1) - sp;
-
-									si = sp - bp;
-									ei = le;
-								}
-							}
-
-							bl = ed.dom.create(ed.settings.forced_root_block);
-							bl.appendChild(nx.cloneNode(1));
-							nx.parentNode.replaceChild(bl, nx);
-						}
-					} else {
-						if (bl.hasChildNodes())
-							bl.insertBefore(nx, bl.firstChild);
-						else
-							bl.appendChild(nx);
-					}
-				} else
-					bl = null; // Time to create new block
-			}
-
-			// Restore selection
-			if (si != -2) {
-				if (!isIE) {
-					bl = b.getElementsByTagName(ed.settings.element)[0];
-					r = d.createRange();
-
-					// Select last location or generated block
-					if (si != -1)
-						r.setStart(t.find(b, 1, si), so);
-					else
-						r.setStart(bl, 0);
-
-					// Select last location or generated block
-					if (ei != -1)
-						r.setEnd(t.find(b, 1, ei), eo);
-					else
-						r.setEnd(bl, 0);
-
-					if (s) {
-						s.removeAllRanges();
-						s.addRange(r);
-					}
-				} else {
-					try {
-						r = s.createRange();
-						r.moveToElementText(b);
-						r.collapse(1);
-						r.moveStart('character', si);
-						r.moveEnd('character', ei);
-						r.select();
-					} catch (ex) {
-						// Ignore
-					}
-				}
-			}
-		},
-
-		getParentBlock : function(n) {
-			var d = this.dom;
-
-			return d.getParent(n, d.isBlock);
-		},
-
-		insertPara : function(e) {
-			var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body;
-			var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch;
-
-			function isEmpty(n) {
-				n = n.innerHTML;
-				n = n.replace(/<(img|hr|table)/gi, '-'); // Keep these convert them to - chars
-				n = n.replace(/<[^>]+>/g, ''); // Remove all tags
-
-				return n.replace(/[ \t\r\n]+/g, '') == '';
-			};
-
-			// If root blocks are forced then use Operas default behavior since it's really good
-// Removed due to bug: #1853816
-//			if (se.forced_root_block && isOpera)
-//				return true;
-
-			// Setup before range
-			rb = d.createRange();
-
-			// If is before the first block element and in body, then move it into first block element
-			rb.setStart(s.anchorNode, s.anchorOffset);
-			rb.collapse(true);
-
-			// Setup after range
-			ra = d.createRange();
-
-			// If is before the first block element and in body, then move it into first block element
-			ra.setStart(s.focusNode, s.focusOffset);
-			ra.collapse(true);
-
-			// Setup start/end points
-			dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;
-			sn = dir ? s.anchorNode : s.focusNode;
-			so = dir ? s.anchorOffset : s.focusOffset;
-			en = dir ? s.focusNode : s.anchorNode;
-			eo = dir ? s.focusOffset : s.anchorOffset;
-
-			// If selection is in empty table cell
-			if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {
-				dom.remove(sn.firstChild); // Remove BR
-
-				// Create two new block elements
-				ed.dom.add(sn, se.element, null, '<br />');
-				aft = ed.dom.add(sn, se.element, null, '<br />');
-
-				// Move caret into the last one
-				r = d.createRange();
-				r.selectNodeContents(aft);
-				r.collapse(1);
-				ed.selection.setRng(r);
-
-				return false;
-			}
-
-			// If the caret is in an invalid location in FF we need to move it into the first block
-			if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) {
-				sn = en = sn.firstChild;
-				so = eo = 0;
-				rb = d.createRange();
-				rb.setStart(sn, 0);
-				ra = d.createRange();
-				ra.setStart(en, 0);
-			}
-
-			// Never use body as start or end node
-			sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
-			sn = sn.nodeName == "BODY" ? sn.firstChild : sn;
-			en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
-			en = en.nodeName == "BODY" ? en.firstChild : en;
-
-			// Get start and end blocks
-			sb = t.getParentBlock(sn);
-			eb = t.getParentBlock(en);
-			bn = sb ? sb.nodeName : se.element; // Get block name to create
-
-			// Return inside list use default browser behavior
-			if (t.dom.getParent(sb, function(n) { return /OL|UL|PRE/.test(n.nodeName); }))
-				return true;
-
-			// If caption or absolute layers then always generate new blocks within
-			if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(sb.style.position))) {
-				bn = se.element;
-				sb = null;
-			}
-
-			// If caption or absolute layers then always generate new blocks within
-			if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(eb.style.position))) {
-				bn = se.element;
-				eb = null;
-			}
-
-			// Use P instead
-			if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(sb.style.cssFloat))) {
-				bn = se.element;
-				sb = eb = null;
-			}
-
-			// Setup new before and after blocks
-			bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn);
-			aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn);
-
-			// Remove id from after clone
-			aft.removeAttribute('id');
-
-			// Is header and cursor is at the end, then force paragraph under
-			if (/^(H[1-6])$/.test(bn) && sn.nodeValue && so == sn.nodeValue.length)
-				aft = ed.dom.create(se.element);
-
-			// Find start chop node
-			n = sc = sn;
-			do {
-				if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
-					break;
-
-				sc = n;
-			} while ((n = n.previousSibling ? n.previousSibling : n.parentNode));
-
-			// Find end chop node
-			n = ec = en;
-			do {
-				if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
-					break;
-
-				ec = n;
-			} while ((n = n.nextSibling ? n.nextSibling : n.parentNode));
-
-			// Place first chop part into before block element
-			if (sc.nodeName == bn)
-				rb.setStart(sc, 0);
-			else
-				rb.setStartBefore(sc);
-
-			rb.setEnd(sn, so);
-			bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
-
-			// Place secnd chop part within new block element
-			try {
-				ra.setEndAfter(ec);
-			} catch(ex) {
-				//console.debug(s.focusNode, s.focusOffset);
-			}
-
-			ra.setStart(en, eo);
-			aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
-
-			// Create range around everything
-			r = d.createRange();
-			if (!sc.previousSibling && sc.parentNode.nodeName == bn) {
-				r.setStartBefore(sc.parentNode);
-			} else {
-				if (rb.startContainer.nodeName == bn && rb.startOffset == 0)
-					r.setStartBefore(rb.startContainer);
-				else
-					r.setStart(rb.startContainer, rb.startOffset);
-			}
-
-			if (!ec.nextSibling && ec.parentNode.nodeName == bn)
-				r.setEndAfter(ec.parentNode);
-			else
-				r.setEnd(ra.endContainer, ra.endOffset);
-
-			// Delete and replace it with new block elements
-			r.deleteContents();
-
-			if (isOpera)
-				ed.getWin().scrollTo(0, vp.y);
-
-			// Never wrap blocks in blocks
-			if (bef.firstChild && bef.firstChild.nodeName == bn)
-				bef.innerHTML = bef.firstChild.innerHTML;
-
-			if (aft.firstChild && aft.firstChild.nodeName == bn)
-				aft.innerHTML = aft.firstChild.innerHTML;
-
-			// Padd empty blocks
-			if (isEmpty(bef))
-				bef.innerHTML = '<br />';
-
-			if (isEmpty(aft))
-				aft.innerHTML = isOpera ? '&nbsp;' : '<br />'; // Extra space for Opera so that the caret can move there
-
-			// Opera needs this one backwards
-			if (isOpera) {
-				r.insertNode(bef);
-				r.insertNode(aft);
-			} else {
-				r.insertNode(aft);
-				r.insertNode(bef);
-			}
-
-			// Normalize
-			aft.normalize();
-			bef.normalize();
-
-			function first(n) {
-				return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false).nextNode() || n;
-			};
-
-			// Move cursor and scroll into view
-			r = d.createRange();
-			r.selectNodeContents(isGecko ? first(aft) : aft);
-			r.collapse(1);
-			s.removeAllRanges();
-			s.addRange(r);
-
-			// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
-			y = ed.dom.getPos(aft).y;
-			ch = aft.clientHeight;
-
-			// Is element within viewport
-			if (y < vp.y || y + ch > vp.y + vp.h) {
-				ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + ch);
-				//console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight));
-			}
-
-			return false;
-		},
-
-		backspaceDelete : function(e, bs) {
-			var t = this, ed = t.editor, b = ed.getBody(), n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn;
-
-			// The caret sometimes gets stuck in Gecko if you delete empty paragraphs
-			// This workaround removes the element by hand and moves the caret to the previous element
-			if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) {
-				if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) {
-					// Find previous block element
-					n = sc;
-					while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ;
-
-					if (n) {
-						if (sc != b.firstChild) {
-							// Find last text node
-							w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-							while (tn = w.nextNode())
-								n = tn;
-
-							// Place caret at the end of last text node
-							r = ed.getDoc().createRange();
-							r.setStart(n, n.nodeValue ? n.nodeValue.length : 0);
-							r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0);
-							se.setRng(r);
-
-							// Remove the target container
-							ed.dom.remove(sc);
-						}
-
-						return Event.cancel(e);
-					}
-				}
-			}
-
-			// Gecko generates BR elements here and there, we don't like those so lets remove them
-			function handler(e) {
-				e = e.target;
-
-				// A new BR was created in a block element, remove it
-				if (e && e.parentNode && e.nodeName == 'BR' && (n = t.getParentBlock(e))) {
-					Event.remove(b, 'DOMNodeInserted', handler);
-
-					// Only remove BR elements that got inserted in the middle of the text
-					if (e.previousSibling || e.nextSibling)
-						ed.dom.remove(e);
-				}
-			};
-
-			// Listen for new nodes
-			Event._add(b, 'DOMNodeInserted', handler);
-
-			// Remove listener
-			window.setTimeout(function() {
-				Event._remove(b, 'DOMNodeInserted', handler);
-			}, 1);
-		}
-	});
-})();
-
-/* file:jscripts/tiny_mce/classes/ControlManager.js */
-
-(function() {
-	// Shorten names
-	var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
-
-	tinymce.create('tinymce.ControlManager', {
-		ControlManager : function(ed, s) {
-			var t = this, i;
-
-			s = s || {};
-			t.editor = ed;
-			t.controls = {};
-			t.onAdd = new tinymce.util.Dispatcher(t);
-			t.onPostRender = new tinymce.util.Dispatcher(t);
-			t.prefix = s.prefix || ed.id + '_';
-			t._cls = {};
-
-			t.onPostRender.add(function() {
-				each(t.controls, function(c) {
-					c.postRender();
-				});
-			});
-		},
-
-		get : function(id) {
-			return this.controls[this.prefix + id] || this.controls[id];
-		},
-
-		setActive : function(id, s) {
-			var c = null;
-
-			if (c = this.get(id))
-				c.setActive(s);
-
-			return c;
-		},
-
-		setDisabled : function(id, s) {
-			var c = null;
-
-			if (c = this.get(id))
-				c.setDisabled(s);
-
-			return c;
-		},
-
-		add : function(c) {
-			var t = this;
-
-			if (c) {
-				t.controls[c.id] = c;
-				t.onAdd.dispatch(c, t);
-			}
-
-			return c;
-		},
-
-		createControl : function(n) {
-			var c, t = this, ed = t.editor;
-
-			each(ed.plugins, function(p) {
-				if (p.createControl) {
-					c = p.createControl(n, t);
-
-					if (c)
-						return false;
-				}
-			});
-
-			switch (n) {
-				case "|":
-				case "separator":
-					return t.createSeparator();
-			}
-
-			if (!c && ed.buttons && (c = ed.buttons[n]))
-				return t.createButton(n, c);
-
-			return t.add(c);
-		},
-
-		createDropMenu : function(id, s, cc) {
-			var t = this, ed = t.editor, c, bm, v, cls;
-
-			s = extend({
-				'class' : 'mceDropDown',
-				constrain : ed.settings.constrain_menus
-			}, s);
-
-			s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
-			if (v = ed.getParam('skin_variant'))
-				s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
-
-			id = t.prefix + id;
-			cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
-			c = t.controls[id] = new cls(id, s);
-			c.onAddItem.add(function(c, o) {
-				var s = o.settings;
-
-				s.title = ed.getLang(s.title, s.title);
-
-				if (!s.onclick) {
-					s.onclick = function(v) {
-						ed.execCommand(s.cmd, s.ui || false, s.value);
-					};
-				}
-			});
-
-			ed.onRemove.add(function() {
-				c.destroy();
-			});
-
-			// Fix for bug #1897785, #1898007
-			if (tinymce.isIE) {
-				c.onShowMenu.add(function() {
-					bm = ed.selection.getBookmark(1);
-				});
-
-				c.onHideMenu.add(function() {
-					if (bm)
-						ed.selection.moveToBookmark(bm);
-				});
-			}
-
-			return t.add(c);
-		},
-
-		createListBox : function(id, s, cc) {
-			var t = this, ed = t.editor, cmd, c, cls;
-
-			if (t.get(id))
-				return null;
-
-			s.title = ed.translate(s.title);
-			s.scope = s.scope || ed;
-
-			if (!s.onselect) {
-				s.onselect = function(v) {
-					ed.execCommand(s.cmd, s.ui || false, v || s.value);
-				};
-			}
-
-			s = extend({
-				title : s.title,
-				'class' : 'mce_' + id,
-				scope : s.scope,
-				control_manager : t
-			}, s);
-
-			id = t.prefix + id;
-
-			if (ed.settings.use_native_selects)
-				c = new tinymce.ui.NativeListBox(id, s);
-			else {
-				cls = cc || t._cls.listbox || tinymce.ui.ListBox;
-				c = new cls(id, s);
-			}
-
-			t.controls[id] = c;
-
-			// Fix focus problem in Safari
-			if (tinymce.isWebKit) {
-				c.onPostRender.add(function(c, n) {
-					// Store bookmark on mousedown
-					Event.add(n, 'mousedown', function() {
-						ed.bookmark = ed.selection.getBookmark('simple');
-					});
-
-					// Restore on focus, since it might be lost
-					Event.add(n, 'focus', function() {
-						ed.selection.moveToBookmark(ed.bookmark);
-						ed.bookmark = null;
-					});
-				});
-			}
-
-			if (c.hideMenu)
-				ed.onMouseDown.add(c.hideMenu, c);
-
-			return t.add(c);
-		},
-
-		createButton : function(id, s, cc) {
-			var t = this, ed = t.editor, o, c, cls;
-
-			if (t.get(id))
-				return null;
-
-			s.title = ed.translate(s.title);
-			s.label = ed.translate(s.label);
-			s.scope = s.scope || ed;
-
-			if (!s.onclick && !s.menu_button) {
-				s.onclick = function() {
-					ed.execCommand(s.cmd, s.ui || false, s.value);
-				};
-			}
-
-			s = extend({
-				title : s.title,
-				'class' : 'mce_' + id,
-				unavailable_prefix : ed.getLang('unavailable', ''),
-				scope : s.scope,
-				control_manager : t
-			}, s);
-
-			id = t.prefix + id;
-
-			if (s.menu_button) {
-				cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
-				c = new cls(id, s);
-				ed.onMouseDown.add(c.hideMenu, c);
-			} else {
-				cls = t._cls.button || tinymce.ui.Button;
-				c = new cls(id, s);
-			}
-
-			return t.add(c);
-		},
-
-		createMenuButton : function(id, s) {
-			s = s || {};
-			s.menu_button = 1;
-
-			return this.createButton(id, s);
-		},
-
-		createSplitButton : function(id, s, cc) {
-			var t = this, ed = t.editor, cmd, c, cls;
-
-			if (t.get(id))
-				return null;
-
-			s.title = ed.translate(s.title);
-			s.scope = s.scope || ed;
-
-			if (!s.onclick) {
-				s.onclick = function(v) {
-					ed.execCommand(s.cmd, s.ui || false, v || s.value);
-				};
-			}
-
-			if (!s.onselect) {
-				s.onselect = function(v) {
-					ed.execCommand(s.cmd, s.ui || false, v || s.value);
-				};
-			}
-
-			s = extend({
-				title : s.title,
-				'class' : 'mce_' + id,
-				scope : s.scope,
-				control_manager : t
-			}, s);
-
-			id = t.prefix + id;
-			cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
-			c = t.add(new cls(id, s));
-			ed.onMouseDown.add(c.hideMenu, c);
-
-			return c;
-		},
-
-		createColorSplitButton : function(id, s, cc) {
-			var t = this, ed = t.editor, cmd, c, cls, bm;
-
-			if (t.get(id))
-				return null;
-
-			s.title = ed.translate(s.title);
-			s.scope = s.scope || ed;
-
-			if (!s.onclick) {
-				s.onclick = function(v) {
-					ed.execCommand(s.cmd, s.ui || false, v || s.value);
-				};
-			}
-
-			if (!s.onselect) {
-				s.onselect = function(v) {
-					ed.execCommand(s.cmd, s.ui || false, v || s.value);
-				};
-			}
-
-			s = extend({
-				title : s.title,
-				'class' : 'mce_' + id,
-				'menu_class' : ed.getParam('skin') + 'Skin',
-				scope : s.scope,
-				more_colors_title : ed.getLang('more_colors')
-			}, s);
-
-			id = t.prefix + id;
-			cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
-			c = new cls(id, s);
-			ed.onMouseDown.add(c.hideMenu, c);
-
-			// Remove the menu element when the editor is removed
-			ed.onRemove.add(function() {
-				c.destroy();
-			});
-
-			// Fix for bug #1897785, #1898007
-			if (tinymce.isIE) {
-				c.onShowMenu.add(function() {
-					bm = ed.selection.getBookmark(1);
-				});
-
-				c.onHideMenu.add(function() {
-					if (bm)
-						ed.selection.moveToBookmark(bm);
-				});
-			}
-
-			return t.add(c);
-		},
-
-		createToolbar : function(id, s, cc) {
-			var c, t = this, cls;
-
-			id = t.prefix + id;
-			cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
-			c = new cls(id, s);
-
-			if (t.get(id))
-				return null;
-
-			return t.add(c);
-		},
-
-		createSeparator : function(cc) {
-			var cls = cc || this._cls.separator || tinymce.ui.Separator;
-
-			return new cls();
-		},
-
-		setControlType : function(n, c) {
-			return this._cls[n.toLowerCase()] = c;
-		},
-
-		destroy : function() {
-			each(this.controls, function(c) {
-				c.destroy();
-			});
-
-			this.controls = null;
-		}
-
-		});
-})();
-
-/* file:jscripts/tiny_mce/classes/WindowManager.js */
-
-(function() {
-	var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
-
-	tinymce.create('tinymce.WindowManager', {
-		WindowManager : function(ed) {
-			var t = this;
-
-			t.editor = ed;
-			t.onOpen = new Dispatcher(t);
-			t.onClose = new Dispatcher(t);
-			t.params = {};
-			t.features = {};
-		},
-
-		open : function(s, p) {
-			var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
-
-			// Default some options
-			s = s || {};
-			p = p || {};
-			sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
-			sh = isOpera ? vp.h : screen.height;
-			s.name = s.name || 'mc_' + new Date().getTime();
-			s.width = parseInt(s.width || 320);
-			s.height = parseInt(s.height || 240);
-			s.resizable = true;
-			s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
-			s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
-			p.inline = false;
-			p.mce_width = s.width;
-			p.mce_height = s.height;
-			p.mce_auto_focus = s.auto_focus;
-
-			if (mo) {
-				if (isIE) {
-					s.center = true;
-					s.help = false;
-					s.dialogWidth = s.width + 'px';
-					s.dialogHeight = s.height + 'px';
-					s.scroll = s.scrollbars || false;
-				}
-			}
-
-			// Build features string
-			each(s, function(v, k) {
-				if (tinymce.is(v, 'boolean'))
-					v = v ? 'yes' : 'no';
-
-				if (!/^(name|url)$/.test(k)) {
-					if (isIE && mo)
-						f += (f ? ';' : '') + k + ':' + v;
-					else
-						f += (f ? ',' : '') + k + '=' + v;
-				}
-			});
-
-			t.features = s;
-			t.params = p;
-			t.onOpen.dispatch(t, s, p);
-
-			u = s.url || s.file;
-			if (tinymce.relaxedDomain)
-				u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
-
-			u = tinymce._addVer(u);
-
-			try {
-				if (isIE && mo) {
-					w = 1;
-					window.showModalDialog(u, window, f);
-				} else
-					w = window.open(u, s.name, f);
-			} catch (ex) {
-				// Ignore
-			}
-
-			if (!w)
-				alert(t.editor.getLang('popup_blocked'));
-		},
-
-		close : function(w) {
-			w.close();
-			this.onClose.dispatch(this);
-		},
-
-		createInstance : function(cl, a, b, c, d, e) {
-			var f = tinymce.resolve(cl);
-
-			return new f(a, b, c, d, e);
-		},
-
-		confirm : function(t, cb, s) {
-			cb.call(s || this, confirm(this._decode(this.editor.getLang(t, t))));
-		},
-
-		alert : function(tx, cb, s) {
-			var t = this;
-	
-			alert(t._decode(t.editor.getLang(tx, tx)));
-
-			if (cb)
-				cb.call(s || t);
-		},
-
-		// Internal functions
-
-		_decode : function(s) {
-			return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
-		}
-
-		});
-}());

--- a/tinymce/2/jscripts/tiny_mce/utils/editable_selects.js
+++ b/tinymce/2/jscripts/tiny_mce/utils/editable_selects.js
@@ -1,62 +1,62 @@
-/**
- * $Id: editable_selects.js 520 2008-01-07 16:30:32Z spocke $
- *
- * Makes select boxes editable.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Makes select boxes editable.

+ *

+ * @author Moxiecode


+ */

+

+var TinyMCE_EditableSelects = {

+	editSelectElm : null,

+

+	init : function() {

+		var nl = document.getElementsByTagName("select"), i, d = document, o;

+

+		for (i=0; i<nl.length; i++) {

+			if (nl[i].className.indexOf('mceEditableSelect') != -1) {

+				o = new Option('(value)', '__mce_add_custom__');

+

+				o.className = 'mceAddSelectValue';

+

+				nl[i].options[nl[i].options.length] = o;

+				nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');

+			}

+		}

+	},

+

+	onChangeEditableSelect : function(se) {

+		var d = document, ne;

+

+		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {

+			ne = d.createElement("input");

+			ne.id = se.id + "_custom";

+			ne.name = se.name + "_custom";

+			ne.type = "text";

+

+			ne.style.width = se.clientWidth;

+			se.parentNode.insertBefore(ne, se);

+			se.style.display = 'none';

+			ne.focus();

+			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;

+			TinyMCE_EditableSelects.editSelectElm = se;

+		}

+	},

+

+	onBlurEditableSelectInput : function() {

+		var se = TinyMCE_EditableSelects.editSelectElm;

+

+		if (se) {

+			if (se.previousSibling.value != '') {

+				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);

+				selectByValue(document.forms[0], se.id, se.previousSibling.value);

+			} else

+				selectByValue(document.forms[0], se.id, '');

+

+			se.style.display = 'inline';

+			se.parentNode.removeChild(se.previousSibling);

+			TinyMCE_EditableSelects.editSelectElm = null;

+		}

+	}

+};

 
-var TinyMCE_EditableSelects = {
-	editSelectElm : null,
-
-	init : function() {
-		var nl = document.getElementsByTagName("select"), i, d = document, o;
-
-		for (i=0; i<nl.length; i++) {
-			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
-				o = new Option('(value)', '__mce_add_custom__');
-
-				o.className = 'mceAddSelectValue';
-
-				nl[i].options[nl[i].options.length] = o;
-				nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
-			}
-		}
-	},
-
-	onChangeEditableSelect : function(e) {
-		var d = document, ne, se = window.event ? window.event.srcElement : e.target;
-
-		if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
-			ne = d.createElement("input");
-			ne.id = se.id + "_custom";
-			ne.name = se.name + "_custom";
-			ne.type = "text";
-
-			ne.style.width = se.offsetWidth + 'px';
-			se.parentNode.insertBefore(ne, se);
-			se.style.display = 'none';
-			ne.focus();
-			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
-			TinyMCE_EditableSelects.editSelectElm = se;
-		}
-	},
-
-	onBlurEditableSelectInput : function() {
-		var se = TinyMCE_EditableSelects.editSelectElm;
-
-		if (se) {
-			if (se.previousSibling.value != '') {
-				addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
-				selectByValue(document.forms[0], se.id, se.previousSibling.value);
-			} else
-				selectByValue(document.forms[0], se.id, '');
-
-			se.style.display = 'inline';
-			se.parentNode.removeChild(se.previousSibling);
-			TinyMCE_EditableSelects.editSelectElm = null;
-		}
-	}
-};
-

--- a/tinymce/2/jscripts/tiny_mce/utils/form_utils.js
+++ b/tinymce/2/jscripts/tiny_mce/utils/form_utils.js
@@ -1,200 +1,211 @@
-/**
- * $Id: form_utils.js 673 2008-03-06 13:26:20Z spocke $
- *
- * Various form utilitiy functions.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Various form utilitiy functions.

+ *

+ * @author Moxiecode


+ */

+

+var themeBaseURL = tinyMCE.baseURL + '/themes/' + tinyMCE.getParam("theme");

+

+function getColorPickerHTML(id, target_form_element) {

+	var h = "";

+

+	h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';

+	h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';

+	h += ' onmouseover="this.className=\'mceButtonOver\'"';

+	h += ' onmouseout="this.className=\'mceButtonNormal\'"';

+	h += ' onmousedown="this.className=\'mceButtonDown\'"';

+	h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';

+	h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';

+

+	return h;

+}

+

+function pickColor(e, target_form_element) {

+	if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown")

+		tinyMCEPopup.pickColor(e, target_form_element);

+}

+

+function updateColor(img_id, form_element_id) {

+	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;

+}

+

+function setBrowserDisabled(id, state) {

+	var img = document.getElementById(id);

+	var lnk = document.getElementById(id + "_link");

+

+	if (lnk) {

+		if (state) {

+			lnk.setAttribute("realhref", lnk.getAttribute("href"));

+			lnk.removeAttribute("href");

+			tinyMCE.switchClass(img, 'mceButtonDisabled', true);

+		} else {

+			lnk.setAttribute("href", lnk.getAttribute("realhref"));

+			tinyMCE.switchClass(img, 'mceButtonNormal', false);

+		}

+	}

+}

+

+function getBrowserHTML(id, target_form_element, type, prefix) {

+	var option = prefix + "_" + type + "_browser_callback";

+	var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));

+	if (cb == null)

+		return "";

+

+	var html = "";

+

+	html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';

+	html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';

+	html += ' onmouseover="this.className=\'mceButtonOver\';"';

+	html += ' onmouseout="this.className=\'mceButtonNormal\';"';

+	html += ' onmousedown="this.className=\'mceButtonDown\';"';

+	html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';

+	html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';

+

+	return html;

+}

+

+function openBrower(img_id, target_form_element, type, option) {

+	var img = document.getElementById(img_id);

+

+	if (img.className != "mceButtonDisabled")

+		tinyMCEPopup.openBrowser(target_form_element, type, option);

+}

+

+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {

+	if (!form_obj || !form_obj.elements[field_name])

+		return;

+

+	var sel = form_obj.elements[field_name];

+

+	var found = false;

+	for (var i=0; i<sel.options.length; i++) {

+		var option = sel.options[i];

+

+		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {

+			option.selected = true;

+			found = true;

+		} else

+			option.selected = false;

+	}

+

+	if (!found && add_custom && value != '') {

+		var option = new Option(value, value);

+		option.selected = true;

+		sel.options[sel.options.length] = option;

+		sel.selectedIndex = sel.options.length - 1;

+	}

+

+	return found;

+}

+

+function getSelectValue(form_obj, field_name) {

+	var elm = form_obj.elements[field_name];

+

+	if (elm == null || elm.options == null)

+		return "";

+

+	return elm.options[elm.selectedIndex].value;

+}

+

+function addSelectValue(form_obj, field_name, name, value) {

+	var s = form_obj.elements[field_name];

+	var o = new Option(name, value);

+	s.options[s.options.length] = o;

+}

+

+function addClassesToList(list_id, specific_option) {

+	// Setup class droplist

+	var styleSelectElm = document.getElementById(list_id);

+	var styles = tinyMCE.getParam('theme_advanced_styles', false);

+	styles = tinyMCE.getParam(specific_option, styles);

+

+	if (styles) {

+		var stylesAr = styles.split(';');

+

+		for (var i=0; i<stylesAr.length; i++) {

+			if (stylesAr != "") {

+				var key, value;

+

+				key = stylesAr[i].split('=')[0];

+				value = stylesAr[i].split('=')[1];

+

+				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);

+			}

+		}

+	} else {

+		// Use auto impored classes

+		var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));

+		for (var i=0; i<csses.length; i++)

+			styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);

+	}

+}

+

+function isVisible(element_id) {

+	var elm = document.getElementById(element_id);

+

+	return elm && elm.style.display != "none";

+}

+

+function convertRGBToHex(col) {

+	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");

+

+	var rgb = col.replace(re, "$1,$2,$3").split(',');

+	if (rgb.length == 3) {

+		r = parseInt(rgb[0]).toString(16);

+		g = parseInt(rgb[1]).toString(16);

+		b = parseInt(rgb[2]).toString(16);

+

+		r = r.length == 1 ? '0' + r : r;

+		g = g.length == 1 ? '0' + g : g;

+		b = b.length == 1 ? '0' + b : b;

+

+		return "#" + r + g + b;

+	}

+

+	return col;

+}

+

+function convertHexToRGB(col) {

+	if (col.indexOf('#') != -1) {

+		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');

+

+		r = parseInt(col.substring(0, 2), 16);

+		g = parseInt(col.substring(2, 4), 16);

+		b = parseInt(col.substring(4, 6), 16);

+

+		return "rgb(" + r + "," + g + "," + b + ")";

+	}

+

+	return col;

+}

+

+function trimSize(size) {

+	return size.replace(new RegExp('[^0-9%]', 'gi'), '');

+}

+

+function getCSSSize(size) {

+	size = trimSize(size);

+

+	if (size == "")

+		return "";

+

+	return size.indexOf('%') != -1 ? size : size + "px";

+}

+

+function getStyle(elm, attrib, style) {

+	var val = tinyMCE.getAttrib(elm, attrib);

+

+	if (val != '')

+		return '' + val;

+

+	if (typeof(style) == 'undefined')

+		style = attrib;

+

+	val = eval('elm.style.' + style);

+

+	return val == null ? '' : '' + val;

+}

 
-var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
-
-function getColorPickerHTML(id, target_form_element) {
-	var h = "";
-
-	h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
-	h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';
-
-	return h;
-}
-
-function updateColor(img_id, form_element_id) {
-	document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
-}
-
-function setBrowserDisabled(id, state) {
-	var img = document.getElementById(id);
-	var lnk = document.getElementById(id + "_link");
-
-	if (lnk) {
-		if (state) {
-			lnk.setAttribute("realhref", lnk.getAttribute("href"));
-			lnk.removeAttribute("href");
-			tinyMCEPopup.dom.addClass(img, 'disabled');
-		} else {
-			if (lnk.getAttribute("realhref"))
-				lnk.setAttribute("href", lnk.getAttribute("realhref"));
-
-			tinyMCEPopup.dom.removeClass(img, 'disabled');
-		}
-	}
-}
-
-function getBrowserHTML(id, target_form_element, type, prefix) {
-	var option = prefix + "_" + type + "_browser_callback", cb, html;
-
-	cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
-
-	if (!cb)
-		return "";
-
-	html = "";
-	html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
-	html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';
-
-	return html;
-}
-
-function openBrowser(img_id, target_form_element, type, option) {
-	var img = document.getElementById(img_id);
-
-	if (img.className != "mceButtonDisabled")
-		tinyMCEPopup.openBrowser(target_form_element, type, option);
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
-	if (!form_obj || !form_obj.elements[field_name])
-		return;
-
-	var sel = form_obj.elements[field_name];
-
-	var found = false;
-	for (var i=0; i<sel.options.length; i++) {
-		var option = sel.options[i];
-
-		if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
-			option.selected = true;
-			found = true;
-		} else
-			option.selected = false;
-	}
-
-	if (!found && add_custom && value != '') {
-		var option = new Option(value, value);
-		option.selected = true;
-		sel.options[sel.options.length] = option;
-		sel.selectedIndex = sel.options.length - 1;
-	}
-
-	return found;
-}
-
-function getSelectValue(form_obj, field_name) {
-	var elm = form_obj.elements[field_name];
-
-	if (elm == null || elm.options == null)
-		return "";
-
-	return elm.options[elm.selectedIndex].value;
-}
-
-function addSelectValue(form_obj, field_name, name, value) {
-	var s = form_obj.elements[field_name];
-	var o = new Option(name, value);
-	s.options[s.options.length] = o;
-}
-
-function addClassesToList(list_id, specific_option) {
-	// Setup class droplist
-	var styleSelectElm = document.getElementById(list_id);
-	var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
-	styles = tinyMCEPopup.getParam(specific_option, styles);
-
-	if (styles) {
-		var stylesAr = styles.split(';');
-
-		for (var i=0; i<stylesAr.length; i++) {
-			if (stylesAr != "") {
-				var key, value;
-
-				key = stylesAr[i].split('=')[0];
-				value = stylesAr[i].split('=')[1];
-
-				styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
-			}
-		}
-	} else {
-		tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
-			styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
-		});
-	}
-}
-
-function isVisible(element_id) {
-	var elm = document.getElementById(element_id);
-
-	return elm && elm.style.display != "none";
-}
-
-function convertRGBToHex(col) {
-	var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
-	var rgb = col.replace(re, "$1,$2,$3").split(',');
-	if (rgb.length == 3) {
-		r = parseInt(rgb[0]).toString(16);
-		g = parseInt(rgb[1]).toString(16);
-		b = parseInt(rgb[2]).toString(16);
-
-		r = r.length == 1 ? '0' + r : r;
-		g = g.length == 1 ? '0' + g : g;
-		b = b.length == 1 ? '0' + b : b;
-
-		return "#" + r + g + b;
-	}
-
-	return col;
-}
-
-function convertHexToRGB(col) {
-	if (col.indexOf('#') != -1) {
-		col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
-		r = parseInt(col.substring(0, 2), 16);
-		g = parseInt(col.substring(2, 4), 16);
-		b = parseInt(col.substring(4, 6), 16);
-
-		return "rgb(" + r + "," + g + "," + b + ")";
-	}
-
-	return col;
-}
-
-function trimSize(size) {
-	return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');
-}
-
-function getCSSSize(size) {
-	size = trimSize(size);
-
-	if (size == "")
-		return "";
-
-	// Add px
-	if (/^[0-9]+$/.test(size))
-		size += 'px';
-
-	return size;
-}
-
-function getStyle(elm, attrib, style) {
-	var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
-
-	if (val != '')
-		return '' + val;
-
-	if (typeof(style) == 'undefined')
-		style = attrib;
-
-	return tinyMCEPopup.dom.getStyle(elm, style);
-}
-

--- a/tinymce/2/jscripts/tiny_mce/utils/mclayer.js
+++ b/tinymce/2/jscripts/tiny_mce/utils/mclayer.js
@@ -1,211 +1,211 @@
-/**
- * $Id: mclayer.js 162 2007-01-03 16:16:52Z spocke $
- *
- * Moxiecode floating layer script.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Moxiecode floating layer script.

+ *

+ * @author Moxiecode


+ */

+

+function MCLayer(id) {

+	this.id = id;

+	this.settings = new Array();

+	this.blockerElement = null;

+	this.isMSIE = navigator.appName == "Microsoft Internet Explorer";

+	this.events = false;

+	this.autoHideCallback = null;

+}

+

+MCLayer.prototype = {

+	moveRelativeTo : function(re, p, a) {

+		var rep = this.getAbsPosition(re);

+		var w = parseInt(re.offsetWidth);

+		var h = parseInt(re.offsetHeight);

+		var x, y;

+

+		switch (p) {

+			case "tl":

+				break;

+

+			case "tr":

+				x = rep.absLeft + w;

+				y = rep.absTop;

+				break;

+

+			case "bl":

+				break;

+

+			case "br":

+				break;

+		}

+

+		this.moveTo(x, y);

+	},

+

+	moveBy : function(dx, dy) {

+		var e = this.getElement();

+		var x = parseInt(e.style.left);

+		var y = parseInt(e.style.top);

+

+		e.style.left = (x + dx) + "px";

+		e.style.top = (y + dy) + "px";

+

+		this.updateBlocker();

+	},

+

+	moveTo : function(x, y) {

+		var e = this.getElement();

+

+		e.style.left = x + "px";

+		e.style.top = y + "px";

+

+		this.updateBlocker();

+	},

+

+	show : function() {

+		MCLayer.visibleLayer = this;

+

+		this.getElement().style.display = 'block';

+		this.updateBlocker();

+	},

+

+	hide : function() {

+		this.getElement().style.display = 'none';

+		this.updateBlocker();

+	},

+

+	setAutoHide : function(s, cb) {

+		this.autoHideCallback = cb;

+		this.registerEventHandlers();

+	},

+

+	getElement : function() {

+		return document.getElementById(this.id);

+	},

+

+	updateBlocker : function() {

+		if (!this.isMSIE)

+			return;

+

+		var e = this.getElement();

+		var b = this.getBlocker();

+		var x = this.parseInt(e.style.left);

+		var y = this.parseInt(e.style.top);

+		var w = this.parseInt(e.offsetWidth);

+		var 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;

+	},

+

+	getBlocker : function() {

+		if (!this.blockerElement) {

+			var d = document, b = d.createElement("iframe");

+

+			b.style.cssText = 'display: none; left: 0px; position: absolute; 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;

+	},

+

+	registerEventHandlers : function() {

+		if (!this.events) {

+			var d = document;

+

+			this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);

+

+			this.events = true;

+		}

+	},

+

+	addEvent : function(o, n, h) {

+		if (o.attachEvent)

+			o.attachEvent("on" + n, h);

+		else

+			o.addEventListener(n, h, false);

+	},

+

+	onMouseDown : function(e) {

+		e = typeof(e) == "undefined" ? window.event : e;

+		var b = document.body;

+		var l = MCLayer.visibleLayer;

+

+		if (l) {

+			var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;

+			var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;

+			var el = l.getElement();

+			var x = parseInt(el.style.left);

+			var y = parseInt(el.style.top);

+			var w = parseInt(el.offsetWidth);

+			var h = parseInt(el.offsetHeight);

+

+			if (!(mx > x && mx < x + w && my > y && my < y + h)) {

+				MCLayer.visibleLayer = null;

+

+				if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))

+					return true;

+

+				l.hide();

+			}

+		}

+	},

+

+	addCSSClass : function(e, c) {

+		this.removeCSSClass(e, c);

+		var a = this.explode(' ', e.className);

+		a[a.length] = c;

+		e.className = a.join(' ');

+	},

+

+	removeCSSClass : function(e, c) {

+		var a = this.explode(' ', e.className), i;

+

+		for (i=0; i<a.length; i++) {

+			if (a[i] == c)

+				a[i] = '';

+		}

+

+		e.className = a.join(' ');

+	},

+

+	explode : function(d, s) {

+		var ar = s.split(d);

+		var oar = new Array();

+

+		for (var i = 0; i<ar.length; i++) {

+			if (ar[i] != "")

+				oar[oar.length] = ar[i];

+		}

+

+		return oar;

+	},

+

+	parseInt : function(s) {

+		if (s == null || s == '')

+			return 0;

+

+		return parseInt(s);

+	}

+}

 
-function MCLayer(id) {
-	this.id = id;
-	this.settings = new Array();
-	this.blockerElement = null;
-	this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
-	this.events = false;
-	this.autoHideCallback = null;
-}
-
-MCLayer.prototype = {
-	moveRelativeTo : function(re, p, a) {
-		var rep = this.getAbsPosition(re);
-		var w = parseInt(re.offsetWidth);
-		var h = parseInt(re.offsetHeight);
-		var x, y;
-
-		switch (p) {
-			case "tl":
-				break;
-
-			case "tr":
-				x = rep.absLeft + w;
-				y = rep.absTop;
-				break;
-
-			case "bl":
-				break;
-
-			case "br":
-				break;
-		}
-
-		this.moveTo(x, y);
-	},
-
-	moveBy : function(dx, dy) {
-		var e = this.getElement();
-		var x = parseInt(e.style.left);
-		var y = parseInt(e.style.top);
-
-		e.style.left = (x + dx) + "px";
-		e.style.top = (y + dy) + "px";
-
-		this.updateBlocker();
-	},
-
-	moveTo : function(x, y) {
-		var e = this.getElement();
-
-		e.style.left = x + "px";
-		e.style.top = y + "px";
-
-		this.updateBlocker();
-	},
-
-	show : function() {
-		MCLayer.visibleLayer = this;
-
-		this.getElement().style.display = 'block';
-		this.updateBlocker();
-	},
-
-	hide : function() {
-		this.getElement().style.display = 'none';
-		this.updateBlocker();
-	},
-
-	setAutoHide : function(s, cb) {
-		this.autoHideCallback = cb;
-		this.registerEventHandlers();
-	},
-
-	getElement : function() {
-		return document.getElementById(this.id);
-	},
-
-	updateBlocker : function() {
-		if (!this.isMSIE)
-			return;
-
-		var e = this.getElement();
-		var b = this.getBlocker();
-		var x = this.parseInt(e.style.left);
-		var y = this.parseInt(e.style.top);
-		var w = this.parseInt(e.offsetWidth);
-		var 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;
-	},
-
-	getBlocker : function() {
-		if (!this.blockerElement) {
-			var d = document, b = d.createElement("iframe");
-
-			b.style.cssText = 'display: none; left: 0px; position: absolute; 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;
-	},
-
-	registerEventHandlers : function() {
-		if (!this.events) {
-			var d = document;
-
-			this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
-
-			this.events = true;
-		}
-	},
-
-	addEvent : function(o, n, h) {
-		if (o.attachEvent)
-			o.attachEvent("on" + n, h);
-		else
-			o.addEventListener(n, h, false);
-	},
-
-	onMouseDown : function(e) {
-		e = typeof(e) == "undefined" ? window.event : e;
-		var b = document.body;
-		var l = MCLayer.visibleLayer;
-
-		if (l) {
-			var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
-			var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
-			var el = l.getElement();
-			var x = parseInt(el.style.left);
-			var y = parseInt(el.style.top);
-			var w = parseInt(el.offsetWidth);
-			var h = parseInt(el.offsetHeight);
-
-			if (!(mx > x && mx < x + w && my > y && my < y + h)) {
-				MCLayer.visibleLayer = null;
-
-				if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
-					return true;
-
-				l.hide();
-			}
-		}
-	},
-
-	addCSSClass : function(e, c) {
-		this.removeCSSClass(e, c);
-		var a = this.explode(' ', e.className);
-		a[a.length] = c;
-		e.className = a.join(' ');
-	},
-
-	removeCSSClass : function(e, c) {
-		var a = this.explode(' ', e.className), i;
-
-		for (i=0; i<a.length; i++) {
-			if (a[i] == c)
-				a[i] = '';
-		}
-
-		e.className = a.join(' ');
-	},
-
-	explode : function(d, s) {
-		var ar = s.split(d);
-		var oar = new Array();
-
-		for (var i = 0; i<ar.length; i++) {
-			if (ar[i] != "")
-				oar[oar.length] = ar[i];
-		}
-
-		return oar;
-	},
-
-	parseInt : function(s) {
-		if (s == null || s == '')
-			return 0;
-
-		return parseInt(s);
-	}
-}
-

--- a/tinymce/2/jscripts/tiny_mce/utils/mctabs.js
+++ b/tinymce/2/jscripts/tiny_mce/utils/mctabs.js
@@ -1,77 +1,75 @@
-/**
- * $Id: mctabs.js 758 2008-03-30 13:53:29Z spocke $
- *
- * Moxiecode DHTML Tabs script.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Moxiecode DHTML Tabs script.

+ *

+ * @author Moxiecode


+ */

+

+function MCTabs() {

+	this.settings = new Array();

+};

+

+MCTabs.prototype.init = function(settings) {

+	this.settings = settings;

+};

+

+MCTabs.prototype.getParam = function(name, default_value) {

+	var value = null;

+

+	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];

+

+	// Fix bool values

+	if (value == "true" || value == "false")

+		return (value == "true");

+

+	return value;

+};

+

+MCTabs.prototype.displayTab = function(tab_id, panel_id) {

+	var panelElm = document.getElementById(panel_id);

+	var panelContainerElm = panelElm ? panelElm.parentNode : null;

+	var tabElm = document.getElementById(tab_id);

+	var tabContainerElm = tabElm ? tabElm.parentNode : null;

+	var selectionClass = this.getParam('selection_class', 'current');

+

+	if (tabElm && tabContainerElm) {

+		var nodes = tabContainerElm.childNodes;

+

+		// Hide all other tabs

+		for (var i=0; i<nodes.length; i++) {

+			if (nodes[i].nodeName == "LI")

+				nodes[i].className = '';

+		}

+

+		// Show selected tab

+		tabElm.className = 'current';

+	}

+

+	if (panelElm && panelContainerElm) {

+		var nodes = panelContainerElm.childNodes;

+

+		// Hide all other panels

+		for (var i=0; i<nodes.length; i++) {

+			if (nodes[i].nodeName == "DIV")

+				nodes[i].className = 'panel';

+		}

+

+		// Show selected panel

+		panelElm.className = 'current';

+	}

+};

+

+MCTabs.prototype.getAnchor = function() {

+	var pos, url = document.location.href;

+

+	if ((pos = url.lastIndexOf('#')) != -1)

+		return url.substring(pos + 1);

+

+	return "";

+};

+

+// Global instance

+var mcTabs = new MCTabs();

 
-function MCTabs() {
-	this.settings = [];
-};
-
-MCTabs.prototype.init = function(settings) {
-	this.settings = settings;
-};
-
-MCTabs.prototype.getParam = function(name, default_value) {
-	var value = null;
-
-	value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
-	// Fix bool values
-	if (value == "true" || value == "false")
-		return (value == "true");
-
-	return value;
-};
-
-MCTabs.prototype.displayTab = function(tab_id, panel_id) {
-	var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i;
-
-	panelElm= document.getElementById(panel_id);
-	panelContainerElm = panelElm ? panelElm.parentNode : null;
-	tabElm = document.getElementById(tab_id);
-	tabContainerElm = tabElm ? tabElm.parentNode : null;
-	selectionClass = this.getParam('selection_class', 'current');
-
-	if (tabElm && tabContainerElm) {
-		nodes = tabContainerElm.childNodes;
-
-		// Hide all other tabs
-		for (i = 0; i < nodes.length; i++) {
-			if (nodes[i].nodeName == "LI")
-				nodes[i].className = '';
-		}
-
-		// Show selected tab
-		tabElm.className = 'current';
-	}
-
-	if (panelElm && panelContainerElm) {
-		nodes = panelContainerElm.childNodes;
-
-		// Hide all other panels
-		for (i = 0; i < nodes.length; i++) {
-			if (nodes[i].nodeName == "DIV")
-				nodes[i].className = 'panel';
-		}
-
-		// Show selected panel
-		panelElm.className = 'current';
-	}
-};
-
-MCTabs.prototype.getAnchor = function() {
-	var pos, url = document.location.href;
-
-	if ((pos = url.lastIndexOf('#')) != -1)
-		return url.substring(pos + 1);
-
-	return "";
-};
-
-// Global instance
-var mcTabs = new MCTabs();
-

--- a/tinymce/2/jscripts/tiny_mce/utils/validate.js
+++ b/tinymce/2/jscripts/tiny_mce/utils/validate.js
@@ -1,220 +1,220 @@
-/**
- * $Id: validate.js 758 2008-03-30 13:53:29Z spocke $
- *
- * Various form validation methods.
- *
- * @author Moxiecode

- */
+/**

+ * $Id$

+ *

+ * Various form validation methods.

+ *

+ * @author Moxiecode


+ */

+

+/**

+	// String validation:

+

+	if (!Validator.isEmail('myemail'))

+		alert('Invalid email.');

+

+	// Form validation:

+

+	var f = document.forms['myform'];

+

+	if (!Validator.isEmail(f.myemail))

+		alert('Invalid email.');

+*/

+

+var Validator = {

+	isEmail : function(s) {

+		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');

+	},

+

+	isAbsUrl : function(s) {

+		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');

+	},

+

+	isSize : function(s) {

+		return this.test(s, '^[0-9]+(px|%)?$');

+	},

+

+	isId : function(s) {

+		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');

+	},

+

+	isEmpty : function(s) {

+		var nl, i;

+

+		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)

+			return true;

+

+		if (s.type == 'checkbox' && !s.checked)

+			return true;

+

+		if (s.type == 'radio') {

+			for (i=0, nl = s.form.elements; i<nl.length; i++) {

+				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)

+					return false;

+			}

+

+			return true;

+		}

+

+		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);

+	},

+

+	isNumber : function(s, d) {

+		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));

+	},

+

+	test : function(s, p) {

+		s = s.nodeType == 1 ? s.value : s;

+

+		return s == '' || new RegExp(p).test(s);

+	}

+};

+

+var AutoValidator = {

+	settings : {

+		id_cls : 'id',

+		int_cls : 'int',

+		url_cls : 'url',

+		number_cls : 'number',

+		email_cls : 'email',

+		size_cls : 'size',

+		required_cls : 'required',

+		invalid_cls : 'invalid',

+		min_cls : 'min',

+		max_cls : 'max'

+	},

+

+	init : function(s) {

+		var n;

+

+		for (n in s)

+			this.settings[n] = s[n];

+	},

+

+	validate : function(f) {

+		var i, nl, s = this.settings, c = 0;

+

+		nl = this.tags(f, 'label');

+		for (i=0; i<nl.length; i++)

+			this.removeClass(nl[i], s.invalid_cls);

+

+		c += this.validateElms(f, 'input');

+		c += this.validateElms(f, 'select');

+		c += this.validateElms(f, 'textarea');

+

+		return c == 3;

+	},

+

+	invalidate : function(n) {

+		this.mark(n.form, n);

+	},

+

+	reset : function(e) {

+		var t = new Array('label', 'input', 'select', 'textarea');

+		var i, j, nl, s = this.settings;

+

+		if (e == null)

+			return;

+

+		for (i=0; i<t.length; i++) {

+			nl = this.tags(e.form ? e.form : e, t[i]);

+			for (j=0; j<nl.length; j++)

+				this.removeClass(nl[j], s.invalid_cls);

+		}

+	},

+

+	validateElms : function(f, e) {

+		var nl, i, n, s = this.settings, st = true, va = Validator, v;

+

+		nl = this.tags(f, e);

+		for (i=0; i<nl.length; i++) {

+			n = nl[i];

+

+			this.removeClass(n, s.invalid_cls);

+

+			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.size_cls) && !va.isSize(n))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.id_cls) && !va.isId(n))

+				st = this.mark(f, n);

+

+			if (this.hasClass(n, s.min_cls, true)) {

+				v = this.getNum(n, s.min_cls);

+

+				if (isNaN(v) || parseInt(n.value) < parseInt(v))

+					st = this.mark(f, n);

+			}

+

+			if (this.hasClass(n, s.max_cls, true)) {

+				v = this.getNum(n, s.max_cls);

+

+				if (isNaN(v) || parseInt(n.value) > parseInt(v))

+					st = this.mark(f, n);

+			}

+		}

+

+		return st;

+	},

+

+	hasClass : function(n, c, d) {

+		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);

+	},

+

+	getNum : function(n, c) {

+		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];

+		c = c.replace(/[^0-9]/g, '');

+

+		return c;

+	},

+

+	addClass : function(n, c, b) {

+		var o = this.removeClass(n, c);

+		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;

+	},

+

+	removeClass : function(n, c) {

+		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');

+		return n.className = c != ' ' ? c : '';

+	},

+

+	tags : function(f, s) {

+		return f.getElementsByTagName(s);

+	},

+

+	mark : function(f, n) {

+		var s = this.settings;

+

+		this.addClass(n, s.invalid_cls);

+		this.markLabels(f, n, s.invalid_cls);

+

+		return false;

+	},

+

+	markLabels : function(f, n, ic) {

+		var nl, i;

+

+		nl = this.tags(f, "label");

+		for (i=0; i<nl.length; i++) {

+			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)

+				this.addClass(nl[i], ic);

+		}

+

+		return null;

+	}

+};

 
-/**
-	// String validation:
-
-	if (!Validator.isEmail('myemail'))
-		alert('Invalid email.');
-
-	// Form validation:
-
-	var f = document.forms['myform'];
-
-	if (!Validator.isEmail(f.myemail))
-		alert('Invalid email.');
-*/
-
-var Validator = {
-	isEmail : function(s) {
-		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
-	},
-
-	isAbsUrl : function(s) {
-		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
-	},
-
-	isSize : function(s) {
-		return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
-	},
-
-	isId : function(s) {
-		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
-	},
-
-	isEmpty : function(s) {
-		var nl, i;
-
-		if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
-			return true;
-
-		if (s.type == 'checkbox' && !s.checked)
-			return true;
-
-		if (s.type == 'radio') {
-			for (i=0, nl = s.form.elements; i<nl.length; i++) {
-				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
-					return false;
-			}
-
-			return true;
-		}
-
-		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
-	},
-
-	isNumber : function(s, d) {
-		return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
-	},
-
-	test : function(s, p) {
-		s = s.nodeType == 1 ? s.value : s;
-
-		return s == '' || new RegExp(p).test(s);
-	}
-};
-
-var AutoValidator = {
-	settings : {
-		id_cls : 'id',
-		int_cls : 'int',
-		url_cls : 'url',
-		number_cls : 'number',
-		email_cls : 'email',
-		size_cls : 'size',
-		required_cls : 'required',
-		invalid_cls : 'invalid',
-		min_cls : 'min',
-		max_cls : 'max'
-	},
-
-	init : function(s) {
-		var n;
-
-		for (n in s)
-			this.settings[n] = s[n];
-	},
-
-	validate : function(f) {
-		var i, nl, s = this.settings, c = 0;
-
-		nl = this.tags(f, 'label');
-		for (i=0; i<nl.length; i++)
-			this.removeClass(nl[i], s.invalid_cls);
-
-		c += this.validateElms(f, 'input');
-		c += this.validateElms(f, 'select');
-		c += this.validateElms(f, 'textarea');
-
-		return c == 3;
-	},
-
-	invalidate : function(n) {
-		this.mark(n.form, n);
-	},
-
-	reset : function(e) {
-		var t = ['label', 'input', 'select', 'textarea'];
-		var i, j, nl, s = this.settings;
-
-		if (e == null)
-			return;
-
-		for (i=0; i<t.length; i++) {
-			nl = this.tags(e.form ? e.form : e, t[i]);
-			for (j=0; j<nl.length; j++)
-				this.removeClass(nl[j], s.invalid_cls);
-		}
-	},
-
-	validateElms : function(f, e) {
-		var nl, i, n, s = this.settings, st = true, va = Validator, v;
-
-		nl = this.tags(f, e);
-		for (i=0; i<nl.length; i++) {
-			n = nl[i];
-
-			this.removeClass(n, s.invalid_cls);
-
-			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.id_cls) && !va.isId(n))
-				st = this.mark(f, n);
-
-			if (this.hasClass(n, s.min_cls, true)) {
-				v = this.getNum(n, s.min_cls);
-
-				if (isNaN(v) || parseInt(n.value) < parseInt(v))
-					st = this.mark(f, n);
-			}
-
-			if (this.hasClass(n, s.max_cls, true)) {
-				v = this.getNum(n, s.max_cls);
-
-				if (isNaN(v) || parseInt(n.value) > parseInt(v))
-					st = this.mark(f, n);
-			}
-		}
-
-		return st;
-	},
-
-	hasClass : function(n, c, d) {
-		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
-	},
-
-	getNum : function(n, c) {
-		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
-		c = c.replace(/[^0-9]/g, '');
-
-		return c;
-	},
-
-	addClass : function(n, c, b) {
-		var o = this.removeClass(n, c);
-		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
-	},
-
-	removeClass : function(n, c) {
-		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
-		return n.className = c != ' ' ? c : '';
-	},
-
-	tags : function(f, s) {
-		return f.getElementsByTagName(s);
-	},
-
-	mark : function(f, n) {
-		var s = this.settings;
-
-		this.addClass(n, s.invalid_cls);
-		this.markLabels(f, n, s.invalid_cls);
-
-		return false;
-	},
-
-	markLabels : function(f, n, ic) {
-		var nl, i;
-
-		nl = this.tags(f, "label");
-		for (i=0; i<nl.length; i++) {
-			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
-				this.addClass(nl[i], ic);
-		}
-
-		return null;
-	}
-};
-

--- a/tinymce/2/lgpl.txt
+++ b/tinymce/2/lgpl.txt
@@ -1,438 +1,438 @@
-		  GNU LIBRARY GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
+		  GNU LIBRARY GENERAL PUBLIC LICENSE

+		       Version 2, June 1991

+

+ Copyright (C) 1991 Free Software Foundation, Inc.

+    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

+ Everyone is permitted to copy and distribute verbatim copies

+ of this license document, but changing it is not allowed.

+

+[This is the first released version of the library GPL.  It is

+ numbered 2 because it goes with version 2 of the ordinary GPL.]

+

+			    Preamble

+

+  The licenses for most software are designed to take away your

+freedom to share and change it.  By contrast, the GNU General Public

+Licenses are intended to guarantee your freedom to share and change

+free software--to make sure the software is free for all its users.

+

+  This license, the Library General Public License, applies to some

+specially designated Free Software Foundation software, and to any

+other libraries whose authors decide to use it.  You can use it for

+your libraries, too.

+

+  When we speak of free software, we are referring to freedom, not

+price.  Our General Public Licenses are designed to make sure that you

+have the freedom to distribute copies of free software (and charge for

+this service if you wish), that you receive source code or can get it

+if you want it, that you can change the software or use pieces of it

+in new free programs; and that you know you can do these things.

+

+  To protect your rights, we need to make restrictions that forbid

+anyone to deny you these rights or to ask you to surrender the rights.

+These restrictions translate to certain responsibilities for you if

+you distribute copies of the library, or if you modify it.

+

+  For example, if you distribute copies of the library, whether gratis

+or for a fee, you must give the recipients all the rights that we gave

+you.  You must make sure that they, too, receive or can get the source

+code.  If you link a program with the library, you must provide

+complete object files to the recipients so that they can relink them

+with the library, after making changes to the library and recompiling

+it.  And you must show them these terms so they know their rights.

+

+  Our method of protecting your rights has two steps: (1) copyright

+the library, and (2) offer you this license which gives you legal

+permission to copy, distribute and/or modify the library.

+

+  Also, for each distributor's protection, we want to make certain

+that everyone understands that there is no warranty for this free

+library.  If the library is modified by someone else and passed on, we

+want its recipients to know that what they have is not the original

+version, so that any problems introduced by others will not reflect on

+the original authors' reputations.

+.

+  Finally, any free program is threatened constantly by software

+patents.  We wish to avoid the danger that companies distributing free

+software will individually obtain patent licenses, thus in effect

+transforming the program into proprietary software.  To prevent this,

+we have made it clear that any patent must be licensed for everyone's

+free use or not licensed at all.

+

+  Most GNU software, including some libraries, is covered by the ordinary

+GNU General Public License, which was designed for utility programs.  This

+license, the GNU Library General Public License, applies to certain

+designated libraries.  This license is quite different from the ordinary

+one; be sure to read it in full, and don't assume that anything in it is

+the same as in the ordinary license.

+

+  The reason we have a separate public license for some libraries is that

+they blur the distinction we usually make between modifying or adding to a

+program and simply using it.  Linking a program with a library, without

+changing the library, is in some sense simply using the library, and is

+analogous to running a utility program or application program.  However, in

+a textual and legal sense, the linked executable is a combined work, a

+derivative of the original library, and the ordinary General Public License

+treats it as such.

+

+  Because of this blurred distinction, using the ordinary General

+Public License for libraries did not effectively promote software

+sharing, because most developers did not use the libraries.  We

+concluded that weaker conditions might promote sharing better.

+

+  However, unrestricted linking of non-free programs would deprive the

+users of those programs of all benefit from the free status of the

+libraries themselves.  This Library General Public License is intended to

+permit developers of non-free programs to use free libraries, while

+preserving your freedom as a user of such programs to change the free

+libraries that are incorporated in them.  (We have not seen how to achieve

+this as regards changes in header files, but we have achieved it as regards

+changes in the actual functions of the Library.)  The hope is that this

+will lead to faster development of free libraries.

+

+  The precise terms and conditions for copying, distribution and

+modification follow.  Pay close attention to the difference between a

+"work based on the library" and a "work that uses the library".  The

+former contains code derived from the library, while the latter only

+works together with the library.

+

+  Note that it is possible for a library to be covered by the ordinary

+General Public License rather than by this special one.

+.

+		  GNU LIBRARY GENERAL PUBLIC LICENSE

+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

+

+  0. This License Agreement applies to any software library which

+contains a notice placed by the copyright holder or other authorized

+party saying it may be distributed under the terms of this Library

+General Public License (also called "this License").  Each licensee is

+addressed as "you".

+

+  A "library" means a collection of software functions and/or data

+prepared so as to be conveniently linked with application programs

+(which use some of those functions and data) to form executables.

+

+  The "Library", below, refers to any such software library or work

+which has been distributed under these terms.  A "work based on the

+Library" means either the Library or any derivative work under

+copyright law: that is to say, a work containing the Library or a

+portion of it, either verbatim or with modifications and/or translated

+straightforwardly into another language.  (Hereinafter, translation is

+included without limitation in the term "modification".)

+

+  "Source code" for a work means the preferred form of the work for

+making modifications to it.  For a library, complete source code means

+all the source code for all modules it contains, plus any associated

+interface definition files, plus the scripts used to control compilation

+and installation of the library.

+

+  Activities other than copying, distribution and modification are not

+covered by this License; they are outside its scope.  The act of

+running a program using the Library is not restricted, and output from

+such a program is covered only if its contents constitute a work based

+on the Library (independent of the use of the Library in a tool for

+writing it).  Whether that is true depends on what the Library does

+and what the program that uses the Library does.

+  

+  1. You may copy and distribute verbatim copies of the Library's

+complete source code as you receive it, in any medium, provided that

+you conspicuously and appropriately publish on each copy an

+appropriate copyright notice and disclaimer of warranty; keep intact

+all the notices that refer to this License and to the absence of any

+warranty; and distribute a copy of this License along with the

+Library.

+

+  You may charge a fee for the physical act of transferring a copy,

+and you may at your option offer warranty protection in exchange for a

+fee.

+.

+  2. You may modify your copy or copies of the Library or any portion

+of it, thus forming a work based on the Library, and copy and

+distribute such modifications or work under the terms of Section 1

+above, provided that you also meet all of these conditions:

+

+    a) The modified work must itself be a software library.

+

+    b) You must cause the files modified to carry prominent notices

+    stating that you changed the files and the date of any change.

+

+    c) You must cause the whole of the work to be licensed at no

+    charge to all third parties under the terms of this License.

+

+    d) If a facility in the modified Library refers to a function or a

+    table of data to be supplied by an application program that uses

+    the facility, other than as an argument passed when the facility

+    is invoked, then you must make a good faith effort to ensure that,

+    in the event an application does not supply such function or

+    table, the facility still operates, and performs whatever part of

+    its purpose remains meaningful.

+

+    (For example, a function in a library to compute square roots has

+    a purpose that is entirely well-defined independent of the

+    application.  Therefore, Subsection 2d requires that any

+    application-supplied function or table used by this function must

+    be optional: if the application does not supply it, the square

+    root function must still compute square roots.)

+

+These requirements apply to the modified work as a whole.  If

+identifiable sections of that work are not derived from the Library,

+and can be reasonably considered independent and separate works in

+themselves, then this License, and its terms, do not apply to those

+sections when you distribute them as separate works.  But when you

+distribute the same sections as part of a whole which is a work based

+on the Library, the distribution of the whole must be on the terms of

+this License, whose permissions for other licensees extend to the

+entire whole, and thus to each and every part regardless of who wrote

+it.

+

+Thus, it is not the intent of this section to claim rights or contest

+your rights to work written entirely by you; rather, the intent is to

+exercise the right to control the distribution of derivative or

+collective works based on the Library.

+

+In addition, mere aggregation of another work not based on the Library

+with the Library (or with a work based on the Library) on a volume of

+a storage or distribution medium does not bring the other work under

+the scope of this License.

+

+  3. You may opt to apply the terms of the ordinary GNU General Public

+License instead of this License to a given copy of the Library.  To do

+this, you must alter all the notices that refer to this License, so

+that they refer to the ordinary GNU General Public License, version 2,

+instead of to this License.  (If a newer version than version 2 of the

+ordinary GNU General Public License has appeared, then you can specify

+that version instead if you wish.)  Do not make any other change in

+these notices.

+.

+  Once this change is made in a given copy, it is irreversible for

+that copy, so the ordinary GNU General Public License applies to all

+subsequent copies and derivative works made from that copy.

+

+  This option is useful when you wish to copy part of the code of

+the Library into a program that is not a library.

+

+  4. You may copy and distribute the Library (or a portion or

+derivative of it, under Section 2) in object code or executable form

+under the terms of Sections 1 and 2 above provided that you accompany

+it with the complete corresponding machine-readable source code, which

+must be distributed under the terms of Sections 1 and 2 above on a

+medium customarily used for software interchange.

+

+  If distribution of object code is made by offering access to copy

+from a designated place, then offering equivalent access to copy the

+source code from the same place satisfies the requirement to

+distribute the source code, even though third parties are not

+compelled to copy the source along with the object code.

+

+  5. A program that contains no derivative of any portion of the

+Library, but is designed to work with the Library by being compiled or

+linked with it, is called a "work that uses the Library".  Such a

+work, in isolation, is not a derivative work of the Library, and

+therefore falls outside the scope of this License.

+

+  However, linking a "work that uses the Library" with the Library

+creates an executable that is a derivative of the Library (because it

+contains portions of the Library), rather than a "work that uses the

+library".  The executable is therefore covered by this License.

+Section 6 states terms for distribution of such executables.

+

+  When a "work that uses the Library" uses material from a header file

+that is part of the Library, the object code for the work may be a

+derivative work of the Library even though the source code is not.

+Whether this is true is especially significant if the work can be

+linked without the Library, or if the work is itself a library.  The

+threshold for this to be true is not precisely defined by law.

+

+  If such an object file uses only numerical parameters, data

+structure layouts and accessors, and small macros and small inline

+functions (ten lines or less in length), then the use of the object

+file is unrestricted, regardless of whether it is legally a derivative

+work.  (Executables containing this object code plus portions of the

+Library will still fall under Section 6.)

+

+  Otherwise, if the work is a derivative of the Library, you may

+distribute the object code for the work under the terms of Section 6.

+Any executables containing that work also fall under Section 6,

+whether or not they are linked directly with the Library itself.

+.

+  6. As an exception to the Sections above, you may also compile or

+link a "work that uses the Library" with the Library to produce a

+work containing portions of the Library, and distribute that work

+under terms of your choice, provided that the terms permit

+modification of the work for the customer's own use and reverse

+engineering for debugging such modifications.

+

+  You must give prominent notice with each copy of the work that the

+Library is used in it and that the Library and its use are covered by

+this License.  You must supply a copy of this License.  If the work

+during execution displays copyright notices, you must include the

+copyright notice for the Library among them, as well as a reference

+directing the user to the copy of this License.  Also, you must do one

+of these things:

+

+    a) Accompany the work with the complete corresponding

+    machine-readable source code for the Library including whatever

+    changes were used in the work (which must be distributed under

+    Sections 1 and 2 above); and, if the work is an executable linked

+    with the Library, with the complete machine-readable "work that

+    uses the Library", as object code and/or source code, so that the

+    user can modify the Library and then relink to produce a modified

+    executable containing the modified Library.  (It is understood

+    that the user who changes the contents of definitions files in the

+    Library will not necessarily be able to recompile the application

+    to use the modified definitions.)

+

+    b) Accompany the work with a written offer, valid for at

+    least three years, to give the same user the materials

+    specified in Subsection 6a, above, for a charge no more

+    than the cost of performing this distribution.

+

+    c) If distribution of the work is made by offering access to copy

+    from a designated place, offer equivalent access to copy the above

+    specified materials from the same place.

+

+    d) Verify that the user has already received a copy of these

+    materials or that you have already sent this user a copy.

+

+  For an executable, the required form of the "work that uses the

+Library" must include any data and utility programs needed for

+reproducing the executable from it.  However, as a special exception,

+the source code distributed need not include anything that is normally

+distributed (in either source or binary form) with the major

+components (compiler, kernel, and so on) of the operating system on

+which the executable runs, unless that component itself accompanies

+the executable.

+

+  It may happen that this requirement contradicts the license

+restrictions of other proprietary libraries that do not normally

+accompany the operating system.  Such a contradiction means you cannot

+use both them and the Library together in an executable that you

+distribute.

+.

+  7. You may place library facilities that are a work based on the

+Library side-by-side in a single library together with other library

+facilities not covered by this License, and distribute such a combined

+library, provided that the separate distribution of the work based on

+the Library and of the other library facilities is otherwise

+permitted, and provided that you do these two things:

+

+    a) Accompany the combined library with a copy of the same work

+    based on the Library, uncombined with any other library

+    facilities.  This must be distributed under the terms of the

+    Sections above.

+

+    b) Give prominent notice with the combined library of the fact

+    that part of it is a work based on the Library, and explaining

+    where to find the accompanying uncombined form of the same work.

+

+  8. You may not copy, modify, sublicense, link with, or distribute

+the Library except as expressly provided under this License.  Any

+attempt otherwise to copy, modify, sublicense, link with, or

+distribute the Library is void, and will automatically terminate your

+rights under this License.  However, parties who have received copies,

+or rights, from you under this License will not have their licenses

+terminated so long as such parties remain in full compliance.

+

+  9. You are not required to accept this License, since you have not

+signed it.  However, nothing else grants you permission to modify or

+distribute the Library or its derivative works.  These actions are

+prohibited by law if you do not accept this License.  Therefore, by

+modifying or distributing the Library (or any work based on the

+Library), you indicate your acceptance of this License to do so, and

+all its terms and conditions for copying, distributing or modifying

+the Library or works based on it.

+

+  10. Each time you redistribute the Library (or any work based on the

+Library), the recipient automatically receives a license from the

+original licensor to copy, distribute, link with or modify the Library

+subject to these terms and conditions.  You may not impose any further

+restrictions on the recipients' exercise of the rights granted herein.

+You are not responsible for enforcing compliance by third parties to

+this License.

+.

+  11. If, as a consequence of a court judgment or allegation of patent

+infringement or for any other reason (not limited to patent issues),

+conditions are imposed on you (whether by court order, agreement or

+otherwise) that contradict the conditions of this License, they do not

+excuse you from the conditions of this License.  If you cannot

+distribute so as to satisfy simultaneously your obligations under this

+License and any other pertinent obligations, then as a consequence you

+may not distribute the Library at all.  For example, if a patent

+license would not permit royalty-free redistribution of the Library by

+all those who receive copies directly or indirectly through you, then

+the only way you could satisfy both it and this License would be to

+refrain entirely from distribution of the Library.

+

+If any portion of this section is held invalid or unenforceable under any

+particular circumstance, the balance of the section is intended to apply,

+and the section as a whole is intended to apply in other circumstances.

+

+It is not the purpose of this section to induce you to infringe any

+patents or other property right claims or to contest validity of any

+such claims; this section has the sole purpose of protecting the

+integrity of the free software distribution system which is

+implemented by public license practices.  Many people have made

+generous contributions to the wide range of software distributed

+through that system in reliance on consistent application of that

+system; it is up to the author/donor to decide if he or she is willing

+to distribute software through any other system and a licensee cannot

+impose that choice.

+

+This section is intended to make thoroughly clear what is believed to

+be a consequence of the rest of this License.

+

+  12. If the distribution and/or use of the Library is restricted in

+certain countries either by patents or by copyrighted interfaces, the

+original copyright holder who places the Library under this License may add

+an explicit geographical distribution limitation excluding those countries,

+so that distribution is permitted only in or among countries not thus

+excluded.  In such case, this License incorporates the limitation as if

+written in the body of this License.

+

+  13. The Free Software Foundation may publish revised and/or new

+versions of the Library General Public License from time to time.

+Such new versions will be similar in spirit to the present version,

+but may differ in detail to address new problems or concerns.

+

+Each version is given a distinguishing version number.  If the Library

+specifies a version number of this License which applies to it and

+"any later version", you have the option of following the terms and

+conditions either of that version or of any later version published by

+the Free Software Foundation.  If the Library does not specify a

+license version number, you may choose any version ever published by

+the Free Software Foundation.

+.

+  14. If you wish to incorporate parts of the Library into other free

+programs whose distribution conditions are incompatible with these,

+write to the author to ask for permission.  For software which is

+copyrighted by the Free Software Foundation, write to the Free

+Software Foundation; we sometimes make exceptions for this.  Our

+decision will be guided by the two goals of preserving the free status

+of all derivatives of our free software and of promoting the sharing

+and reuse of software generally.

+

+			    NO WARRANTY

+

+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO

+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY

+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE

+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME

+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

+

+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU

+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR

+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE

+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A

+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF

+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

+DAMAGES.

+

+		     END OF TERMS AND CONDITIONS

 
- Copyright (C) 1991 Free Software Foundation, Inc.
-    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL.  It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it.  You can use it for
-your libraries, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library.  If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-.
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software.  To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
-  Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs.  This
-license, the GNU Library General Public License, applies to certain
-designated libraries.  This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
-  The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it.  Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program.  However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
-  Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries.  We
-concluded that weaker conditions might promote sharing better.
-
-  However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves.  This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them.  (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.)  The hope is that this
-will lead to faster development of free libraries.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, while the latter only
-works together with the library.
-
-  Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-.
-		  GNU LIBRARY GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License").  Each licensee is
-addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-.
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-.
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-.
-  6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    c) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    d) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-.
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-.
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-.
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-

--- /dev/null
+++ b/tinymce/4/index.php