]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-19184, MDL-19212 - refactoring, cleanup and improvements in text editors support...
authorskodak <skodak>
Sat, 16 May 2009 20:53:21 +0000 (20:53 +0000)
committerskodak <skodak>
Sat, 16 May 2009 20:53:21 +0000 (20:53 +0000)
514 files changed:
admin/settings/appearance.php
lang/en_utf8/editor_textarea.php [new file with mode: 0644]
lang/en_utf8/editor_tinymce.php [moved from lang/en_utf8/tinymce.php with 99% similarity]
lib/accesslib.php
lib/adminlib.php
lib/editor/common/dragmath/COPYRIGHT.html [deleted file]
lib/editor/common/dragmath/LICENSE-gpl.txt [deleted file]
lib/editor/common/dragmath/README.html [deleted file]
lib/editor/common/dragmath/Release Notes.html [deleted file]
lib/editor/common/dragmath/applet/HotEqn/HotEqn.class [deleted file]
lib/editor/common/dragmath/applet/HotEqn/HotEqn.jar [deleted file]
lib/editor/common/dragmath/applet/Latex.html [deleted file]
lib/editor/common/dragmath/applet/MathML.html [deleted file]
lib/editor/common/dragmath/applet/Maxima.html [deleted file]
lib/editor/common/dragmath/applet/MaximaPopup.html [deleted file]
lib/editor/common/dragmath/applet/classes/AbsoluteLayout.jar [deleted file]
lib/editor/common/dragmath/applet/classes/Config.xml [deleted file]
lib/editor/common/dragmath/applet/classes/Display/MainApplet.class [deleted file]
lib/editor/common/dragmath/applet/classes/Project.jar [deleted file]
lib/editor/common/dragmath/applet/classes/formats/ASCIIMathML.xml [deleted file]
lib/editor/common/dragmath/applet/classes/formats/Latex.xml [deleted file]
lib/editor/common/dragmath/applet/classes/formats/Maple.xml [deleted file]
lib/editor/common/dragmath/applet/classes/formats/MathML.xml [deleted file]
lib/editor/common/dragmath/applet/classes/formats/Maxima.xml [deleted file]
lib/editor/common/dragmath/applet/classes/formats/MoodleTex.xml [deleted file]
lib/editor/common/dragmath/applet/classes/jdom.jar [deleted file]
lib/editor/common/dragmath/applet/classes/jep.jar [deleted file]
lib/editor/common/dragmath/applet/classes/lang/ca.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/cz.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/de.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/en.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/es.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/fr.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/nl.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/no.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/pl.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/pt-br.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/ru.xml [deleted file]
lib/editor/common/dragmath/applet/classes/lang/sv.xml [deleted file]
lib/editor/common/dragmath/applet/classes/swing-layout-1.0.jar [deleted file]
lib/editor/common/dragmath/demo.html [deleted file]
lib/editor/common/dragmath/doc/about.html [deleted file]
lib/editor/common/dragmath/doc/acknowledgments.html [deleted file]
lib/editor/common/dragmath/doc/browser.html [deleted file]
lib/editor/common/dragmath/doc/complex.html [deleted file]
lib/editor/common/dragmath/doc/cvs.html [deleted file]
lib/editor/common/dragmath/doc/editing.html [deleted file]
lib/editor/common/dragmath/doc/img/plus.jpg [deleted file]
lib/editor/common/dragmath/doc/img/sin on box.jpg [deleted file]
lib/editor/common/dragmath/doc/img/sin on plus.jpg [deleted file]
lib/editor/common/dragmath/doc/img/sin.jpg [deleted file]
lib/editor/common/dragmath/doc/index.html [deleted file]
lib/editor/common/dragmath/doc/integrations.html [deleted file]
lib/editor/common/dragmath/doc/language.html [deleted file]
lib/editor/common/dragmath/doc/navframe.html [deleted file]
lib/editor/common/dragmath/doc/newformat.html [deleted file]
lib/editor/common/dragmath/doc/newobject.html [deleted file]
lib/editor/common/dragmath/doc/options.html [deleted file]
lib/editor/common/dragmath/doc/parameters.html [deleted file]
lib/editor/common/dragmath/doc/simple.html [deleted file]
lib/editor/common/dragmath/index.html [deleted file]
lib/editor/common/dragmath/integrations.html [deleted file]
lib/editor/common/dragmath/support.html [deleted file]
lib/editor/htmlEditor.class.php [deleted file]
lib/editor/textarea/lib.php [new file with mode: 0644]
lib/editor/textarea/version.php [new file with mode: 0644]
lib/editor/tinymce/extra/patches/tinymce_plugin_media.patch [moved from lib/editor/tinymce/jscripts/patch-tinymce_plugin_media.txt with 88% similarity]
lib/editor/tinymce/extra/patches/tinymce_strings.patch [moved from lib/editor/tinymce/jscripts/patch-tinymce_strings.txt with 100% similarity]
lib/editor/tinymce/extra/strings.php [new file with mode: 0644]
lib/editor/tinymce/extra/tinymce.js.php [new file with mode: 0644]
lib/editor/tinymce/extra/tools/create_langfiles.php [moved from lib/editor/tinymce/create_langfiles.php with 100% similarity]
lib/editor/tinymce/extra/tools/langlist.php [moved from lib/editor/tinymce/langlist.php with 100% similarity]
lib/editor/tinymce/extra/xhtml_ruleset.txt [moved from lib/editor/tinymce/xhtml_ruleset.txt with 100% similarity]
lib/editor/tinymce/images/abbr.gif [deleted file]
lib/editor/tinymce/images/absolute.gif [deleted file]
lib/editor/tinymce/images/acronym.gif [deleted file]
lib/editor/tinymce/images/advhr.gif [deleted file]
lib/editor/tinymce/images/advimage.gif [deleted file]
lib/editor/tinymce/images/advlink.gif [deleted file]
lib/editor/tinymce/images/anchor.gif [deleted file]
lib/editor/tinymce/images/attribs.gif [deleted file]
lib/editor/tinymce/images/backcolor.gif [deleted file]
lib/editor/tinymce/images/backcolorpicker.gif [deleted file]
lib/editor/tinymce/images/bold.gif [deleted file]
lib/editor/tinymce/images/bullist.gif [deleted file]
lib/editor/tinymce/images/cancel.gif [deleted file]
lib/editor/tinymce/images/cell_props.gif [deleted file]
lib/editor/tinymce/images/charmap.gif [deleted file]
lib/editor/tinymce/images/cite.gif [deleted file]
lib/editor/tinymce/images/cleanup.gif [deleted file]
lib/editor/tinymce/images/code.gif [deleted file]
lib/editor/tinymce/images/col_after.gif [deleted file]
lib/editor/tinymce/images/col_before.gif [deleted file]
lib/editor/tinymce/images/copy.gif [deleted file]
lib/editor/tinymce/images/cut.gif [deleted file]
lib/editor/tinymce/images/del.gif [deleted file]
lib/editor/tinymce/images/delete_col.gif [deleted file]
lib/editor/tinymce/images/delete_row.gif [deleted file]
lib/editor/tinymce/images/delete_table.gif [deleted file]
lib/editor/tinymce/images/emoticons.gif [deleted file]
lib/editor/tinymce/images/emotions.gif [deleted file]
lib/editor/tinymce/images/forecolor.gif [deleted file]
lib/editor/tinymce/images/forecolorpicker.gif [deleted file]
lib/editor/tinymce/images/fullpage.gif [deleted file]
lib/editor/tinymce/images/fullscreen.gif [deleted file]
lib/editor/tinymce/images/help.gif [deleted file]
lib/editor/tinymce/images/hr.gif [deleted file]
lib/editor/tinymce/images/iespell.gif [deleted file]
lib/editor/tinymce/images/image.gif [deleted file]
lib/editor/tinymce/images/indent.gif [deleted file]
lib/editor/tinymce/images/ins.gif [deleted file]
lib/editor/tinymce/images/insertdate.gif [deleted file]
lib/editor/tinymce/images/insertlayer.gif [deleted file]
lib/editor/tinymce/images/inserttime.gif [deleted file]
lib/editor/tinymce/images/italic.gif [deleted file]
lib/editor/tinymce/images/justifycenter.gif [deleted file]
lib/editor/tinymce/images/justifyfull.gif [deleted file]
lib/editor/tinymce/images/justifyleft.gif [deleted file]
lib/editor/tinymce/images/justifyright.gif [deleted file]
lib/editor/tinymce/images/kbhelp.gif [deleted file]
lib/editor/tinymce/images/link.gif [deleted file]
lib/editor/tinymce/images/ltr.gif [deleted file]
lib/editor/tinymce/images/media.gif [deleted file]
lib/editor/tinymce/images/merge_cells.gif [deleted file]
lib/editor/tinymce/images/moodleimage.gif [deleted file]
lib/editor/tinymce/images/moodlelink.gif [deleted file]
lib/editor/tinymce/images/movebackward.gif [deleted file]
lib/editor/tinymce/images/moveforward.gif [deleted file]
lib/editor/tinymce/images/newdocument.gif [deleted file]
lib/editor/tinymce/images/nonbreaking.gif [deleted file]
lib/editor/tinymce/images/numlist.gif [deleted file]
lib/editor/tinymce/images/opacity.png [deleted file]
lib/editor/tinymce/images/outdent.gif [deleted file]
lib/editor/tinymce/images/paste.gif [deleted file]
lib/editor/tinymce/images/pastetext.gif [deleted file]
lib/editor/tinymce/images/pasteword.gif [deleted file]
lib/editor/tinymce/images/preview.gif [deleted file]
lib/editor/tinymce/images/print.gif [deleted file]
lib/editor/tinymce/images/redo.gif [deleted file]
lib/editor/tinymce/images/removeformat.gif [deleted file]
lib/editor/tinymce/images/replace.gif [deleted file]
lib/editor/tinymce/images/row_after.gif [deleted file]
lib/editor/tinymce/images/row_before.gif [deleted file]
lib/editor/tinymce/images/row_props.gif [deleted file]
lib/editor/tinymce/images/rtl.gif [deleted file]
lib/editor/tinymce/images/save.gif [deleted file]
lib/editor/tinymce/images/search.gif [deleted file]
lib/editor/tinymce/images/selectall.gif [deleted file]
lib/editor/tinymce/images/separator.gif [deleted file]
lib/editor/tinymce/images/spellchecker.gif [deleted file]
lib/editor/tinymce/images/split_cells.gif [deleted file]
lib/editor/tinymce/images/strikethrough.gif [deleted file]
lib/editor/tinymce/images/styleprops.gif [deleted file]
lib/editor/tinymce/images/sub.gif [deleted file]
lib/editor/tinymce/images/sup.gif [deleted file]
lib/editor/tinymce/images/table.gif [deleted file]
lib/editor/tinymce/images/template.gif [deleted file]
lib/editor/tinymce/images/toggle.gif [deleted file]
lib/editor/tinymce/images/underline.gif [deleted file]
lib/editor/tinymce/images/undo.gif [deleted file]
lib/editor/tinymce/images/unlink.gif [deleted file]
lib/editor/tinymce/images/visualaid.gif [deleted file]
lib/editor/tinymce/images/visualchars.gif [deleted file]
lib/editor/tinymce/jscripts/readme_moodle.txt [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/img/dragmath.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/editor_plugin_src.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/emoticons.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/img/smiley.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/js/emoticons.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/langs/en_dlg.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/blank.htm [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/changelog [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/EnchantSpell.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/GoogleSpell.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/PSpell.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/PSpellShell.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/SpellChecker.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/utils/JSON.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/utils/Logger.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/config.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/includes/general.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/rpc.php [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png [deleted file]
lib/editor/tinymce/jscripts/tiny_mce/tiny_mce.js [deleted file]
lib/editor/tinymce/langs/en.js [moved from lib/editor/tinymce/jscripts/tiny_mce/langs/en.js with 100% similarity]
lib/editor/tinymce/lib.php [new file with mode: 0644]
lib/editor/tinymce/license.txt [moved from lib/editor/tinymce/jscripts/tiny_mce/license.txt with 100% similarity]
lib/editor/tinymce/plugins/advhr/css/advhr.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css with 100% similarity]
lib/editor/tinymce/plugins/advhr/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/advhr/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/advhr/js/rule.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js with 100% similarity]
lib/editor/tinymce/plugins/advhr/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/advhr/rule.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm with 95% similarity]
lib/editor/tinymce/plugins/advimage/css/advimage.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css with 100% similarity]
lib/editor/tinymce/plugins/advimage/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/advimage/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/advimage/image.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm with 95% similarity]
lib/editor/tinymce/plugins/advimage/img/sample.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/advimage/js/image.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js with 95% similarity]
lib/editor/tinymce/plugins/advimage/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/advlink/css/advlink.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css with 100% similarity]
lib/editor/tinymce/plugins/advlink/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/advlink/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/advlink/js/advlink.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js with 96% similarity]
lib/editor/tinymce/plugins/advlink/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/advlink/link.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm with 84% similarity]
lib/editor/tinymce/plugins/autosave/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/autosave/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/bbcode/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/bbcode/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/compat2x/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/compat2x/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/contextmenu/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/contextmenu/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/directionality/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/directionality/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/dragmath/dragmath.php [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/dragmath.php with 87% similarity]
lib/editor/tinymce/plugins/dragmath/editor_plugin.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/editor_plugin.js with 100% similarity]
lib/editor/tinymce/plugins/dragmath/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/dragmath/img/dragmath.gif [moved from lib/editor/tinymce/images/dragmath.gif with 100% similarity]
lib/editor/tinymce/plugins/dragmath/js/dragmath.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/js/dragmath.js with 100% similarity]
lib/editor/tinymce/plugins/dragmath/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/emotions/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/emotions/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/emotions/emotions.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm with 96% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-cool.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif with 63% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-cry.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif with 51% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-embarassed.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif with 66% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-frown.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif with 58% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-innocent.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif with 55% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-kiss.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif with 64% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-laughing.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif with 51% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-money-mouth.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif with 58% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-sealed.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif with 50% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-smile.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif with 72% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-surprised.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif with 50% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-tongue-out.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif with 60% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-undecided.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/emotions/img/smiley-wink.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif with 57% similarity]
lib/editor/tinymce/plugins/emotions/img/smiley-yell.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif with 57% similarity]
lib/editor/tinymce/plugins/emotions/js/emotions.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js with 100% similarity]
lib/editor/tinymce/plugins/emotions/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/example/dialog.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm with 100% similarity]
lib/editor/tinymce/plugins/example/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/example/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/example/img/example.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/example/js/dialog.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js with 100% similarity]
lib/editor/tinymce/plugins/example/langs/en.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js with 100% similarity]
lib/editor/tinymce/plugins/example/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/fullpage/css/fullpage.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css with 100% similarity]
lib/editor/tinymce/plugins/fullpage/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/fullpage/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js with 90% similarity]
lib/editor/tinymce/plugins/fullpage/fullpage.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm with 94% similarity]
lib/editor/tinymce/plugins/fullpage/js/fullpage.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js with 100% similarity]
lib/editor/tinymce/plugins/fullpage/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/fullscreen/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/fullscreen/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/fullscreen/fullscreen.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm with 96% similarity]
lib/editor/tinymce/plugins/iespell/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/iespell/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/inlinepopups/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/inlinepopups/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js with 94% similarity]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif with 87% similarity]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif with 77% similarity]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css with 96% similarity]
lib/editor/tinymce/plugins/inlinepopups/template.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm with 100% similarity]
lib/editor/tinymce/plugins/insertdatetime/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/insertdatetime/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/layer/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/layer/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/media/css/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/css/content.css with 100% similarity]
lib/editor/tinymce/plugins/media/css/media.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/css/media.css with 100% similarity]
lib/editor/tinymce/plugins/media/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/media/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js with 80% similarity]
lib/editor/tinymce/plugins/media/img/flash.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/media/img/flv_player.swf [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf with 100% similarity]
lib/editor/tinymce/plugins/media/img/quicktime.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/media/img/realmedia.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif with 62% similarity]
lib/editor/tinymce/plugins/media/img/shockwave.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/media/img/trans.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/media/img/windowsmedia.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif with 61% similarity]
lib/editor/tinymce/plugins/media/js/embed.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js with 100% similarity]
lib/editor/tinymce/plugins/media/js/media.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/js/media.js with 90% similarity]
lib/editor/tinymce/plugins/media/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/media/media.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/media.htm with 96% similarity]
lib/editor/tinymce/plugins/moodlenolink/editor_plugin.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/moodlenolink/editor_plugin.js with 100% similarity]
lib/editor/tinymce/plugins/moodlenolink/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/moodlenolink/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/moodlenolink/img/ed_nolink.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/moodlenolink/img/ed_nolink.gif with 100% similarity]
lib/editor/tinymce/plugins/moodlenolink/langs/en.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/moodlenolink/langs/en.js with 100% similarity]
lib/editor/tinymce/plugins/nonbreaking/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/nonbreaking/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/noneditable/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/noneditable/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/pagebreak/css/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css with 100% similarity]
lib/editor/tinymce/plugins/pagebreak/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/pagebreak/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/pagebreak/img/pagebreak.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif with 61% similarity]
lib/editor/tinymce/plugins/pagebreak/img/trans.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/paste/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/paste/editor_plugin_src.js [new file with mode: 0644]
lib/editor/tinymce/plugins/paste/js/pastetext.js [new file with mode: 0644]
lib/editor/tinymce/plugins/paste/js/pasteword.js [new file with mode: 0644]
lib/editor/tinymce/plugins/paste/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/paste/pastetext.htm [new file with mode: 0644]
lib/editor/tinymce/plugins/paste/pasteword.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm with 66% similarity]
lib/editor/tinymce/plugins/preview/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/preview/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js with 90% similarity]
lib/editor/tinymce/plugins/preview/example.html [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/example.html with 100% similarity]
lib/editor/tinymce/plugins/preview/jscripts/embed.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js with 100% similarity]
lib/editor/tinymce/plugins/preview/preview.html [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/preview.html with 50% similarity]
lib/editor/tinymce/plugins/print/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/print/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/safari/blank.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm with 100% similarity]
lib/editor/tinymce/plugins/safari/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/safari/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js with 66% similarity]
lib/editor/tinymce/plugins/save/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/save/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/searchreplace/css/searchreplace.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css with 100% similarity]
lib/editor/tinymce/plugins/searchreplace/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/searchreplace/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/searchreplace/js/searchreplace.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js with 100% similarity]
lib/editor/tinymce/plugins/searchreplace/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/searchreplace/searchreplace.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm with 97% similarity]
lib/editor/tinymce/plugins/spellchecker/css/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css with 100% similarity]
lib/editor/tinymce/plugins/spellchecker/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/spellchecker/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/spellchecker/img/wline.gif [new file with mode: 0644]
lib/editor/tinymce/plugins/style/css/props.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/css/props.css with 100% similarity]
lib/editor/tinymce/plugins/style/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/style/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/style/js/props.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/js/props.js with 95% similarity]
lib/editor/tinymce/plugins/style/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/style/props.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/props.htm with 99% similarity]
lib/editor/tinymce/plugins/tabfocus/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/tabfocus/editor_plugin_src.js [new file with mode: 0644]
lib/editor/tinymce/plugins/table/cell.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/cell.htm with 96% similarity]
lib/editor/tinymce/plugins/table/css/cell.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css with 100% similarity]
lib/editor/tinymce/plugins/table/css/row.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/css/row.css with 100% similarity]
lib/editor/tinymce/plugins/table/css/table.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/css/table.css with 100% similarity]
lib/editor/tinymce/plugins/table/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/table/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js with 94% similarity]
lib/editor/tinymce/plugins/table/js/cell.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js with 100% similarity]
lib/editor/tinymce/plugins/table/js/merge_cells.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js with 100% similarity]
lib/editor/tinymce/plugins/table/js/row.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/js/row.js with 100% similarity]
lib/editor/tinymce/plugins/table/js/table.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js with 90% similarity]
lib/editor/tinymce/plugins/table/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/table/merge_cells.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm with 92% similarity]
lib/editor/tinymce/plugins/table/row.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/row.htm with 96% similarity]
lib/editor/tinymce/plugins/table/table.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/table.htm with 96% similarity]
lib/editor/tinymce/plugins/template/blank.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/blank.htm with 100% similarity]
lib/editor/tinymce/plugins/template/css/template.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/css/template.css with 100% similarity]
lib/editor/tinymce/plugins/template/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/template/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/template/js/template.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/js/template.js with 100% similarity]
lib/editor/tinymce/plugins/template/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/plugins/template/template.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/template.htm with 95% similarity]
lib/editor/tinymce/plugins/visualchars/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/visualchars/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/abbr.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm with 97% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/acronym.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm with 97% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/attributes.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm with 95% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/cite.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm with 97% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/css/attributes.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/css/popup.css [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/del.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm with 96% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/editor_plugin.js [new file with mode: 0644]
lib/editor/tinymce/plugins/xhtmlxtras/editor_plugin_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/ins.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm with 96% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/abbr.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/acronym.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/attributes.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/cite.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/del.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/element_common.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js with 92% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/js/ins.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js with 100% similarity]
lib/editor/tinymce/plugins/xhtmlxtras/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/readme_moodle.txt [new file with mode: 0644]
lib/editor/tinymce/strings.php [deleted file]
lib/editor/tinymce/themes/advanced/about.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/about.htm with 94% similarity]
lib/editor/tinymce/themes/advanced/anchor.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm with 90% similarity]
lib/editor/tinymce/themes/advanced/charmap.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm with 92% similarity]
lib/editor/tinymce/themes/advanced/color_picker.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm with 94% similarity]
lib/editor/tinymce/themes/advanced/editor_template.js [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/editor_template_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js with 95% similarity]
lib/editor/tinymce/themes/advanced/image.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/image.htm with 83% similarity]
lib/editor/tinymce/themes/advanced/img/colorpicker.jpg [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/img/icons.gif [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif with 52% similarity]
lib/editor/tinymce/themes/advanced/js/about.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js with 100% similarity]
lib/editor/tinymce/themes/advanced/js/anchor.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js with 100% similarity]
lib/editor/tinymce/themes/advanced/js/charmap.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js with 100% similarity]
lib/editor/tinymce/themes/advanced/js/color_picker.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js with 100% similarity]
lib/editor/tinymce/themes/advanced/js/image.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js with 100% similarity]
lib/editor/tinymce/themes/advanced/js/link.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js with 93% similarity]
lib/editor/tinymce/themes/advanced/js/source_editor.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js with 91% similarity]
lib/editor/tinymce/themes/advanced/langs/en.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js with 100% similarity]
lib/editor/tinymce/themes/advanced/langs/en_dlg.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js with 100% similarity]
lib/editor/tinymce/themes/advanced/link.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/link.htm with 89% similarity]
lib/editor/tinymce/themes/advanced/skins/default/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css with 100% similarity]
lib/editor/tinymce/themes/advanced/skins/default/dialog.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css with 93% similarity]
lib/editor/tinymce/themes/advanced/skins/default/img/buttons.png [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png with 77% similarity]
lib/editor/tinymce/themes/advanced/skins/default/img/items.gif [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/default/img/menu_arrow.gif [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/default/img/menu_check.gif [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/default/img/progress.gif [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/default/img/tabs.gif [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/default/ui.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css with 94% similarity]
lib/editor/tinymce/themes/advanced/skins/o2k7/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/themes/advanced/skins/o2k7/dialog.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css with 94% similarity]
lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg.png [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png [new file with mode: 0644]
lib/editor/tinymce/themes/advanced/skins/o2k7/ui.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css with 94% similarity]
lib/editor/tinymce/themes/advanced/skins/o2k7/ui_black.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css with 68% similarity]
lib/editor/tinymce/themes/advanced/skins/o2k7/ui_silver.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css with 81% similarity]
lib/editor/tinymce/themes/advanced/source_editor.htm [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm with 95% similarity]
lib/editor/tinymce/themes/simple/editor_template.js [new file with mode: 0644]
lib/editor/tinymce/themes/simple/editor_template_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js with 100% similarity]
lib/editor/tinymce/themes/simple/img/icons.gif [new file with mode: 0644]
lib/editor/tinymce/themes/simple/langs/en.js [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js with 100% similarity]
lib/editor/tinymce/themes/simple/skins/default/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css with 100% similarity]
lib/editor/tinymce/themes/simple/skins/default/ui.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css with 93% similarity]
lib/editor/tinymce/themes/simple/skins/o2k7/content.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css with 100% similarity]
lib/editor/tinymce/themes/simple/skins/o2k7/img/button_bg.png [new file with mode: 0644]
lib/editor/tinymce/themes/simple/skins/o2k7/ui.css [moved from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css with 93% similarity]
lib/editor/tinymce/tiny_mce.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce_popup.js [new file with mode: 0644]
lib/editor/tinymce/tiny_mce_popup_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js with 50% similarity]
lib/editor/tinymce/tiny_mce_src.js [moved from lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_src.js with 70% similarity]
lib/editor/tinymce/tinymce.js.php [deleted file]
lib/editor/tinymce/utils/editable_selects.js [moved from lib/editor/tinymce/jscripts/tiny_mce/utils/editable_selects.js with 100% similarity]
lib/editor/tinymce/utils/form_utils.js [moved from lib/editor/tinymce/jscripts/tiny_mce/utils/form_utils.js with 95% similarity]
lib/editor/tinymce/utils/mctabs.js [moved from lib/editor/tinymce/jscripts/tiny_mce/utils/mctabs.js with 100% similarity]
lib/editor/tinymce/utils/validate.js [moved from lib/editor/tinymce/jscripts/tiny_mce/utils/validate.js with 100% similarity]
lib/editor/tinymce/version.php [new file with mode: 0644]
lib/editorlib.php [new file with mode: 0644]
lib/eventslib.php
lib/form/editor.php
lib/javascript.php
lib/moodlelib.php
lib/setup.php
lib/weblib.php
user/editlib.php

index 615d2fafad406a9e32fa47e708f62f0a8af16829..06e4db76d6b0382819ff5d00bf508ae68cff6482 100644 (file)
@@ -48,19 +48,21 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     $temp->add(new admin_setting_configtext('calendar_exportsalt', get_string('calendarexportsalt','admin'), get_string('configcalendarexportsalt', 'admin'), random_string(60)));
     $ADMIN->add('appearance', $temp);
 
+/* TODO: reimplement editor settings and preferences, editors are now full plugins ;-)
     // "htmleditor" settingpage
     $ADMIN->add('appearance', new admin_category('htmleditor', get_string('htmleditor', 'admin')));
 
     $temp = new admin_settingpage('htmleditorsettings', get_string('htmleditorsettings', 'admin'));
 
-    $htmleditors = get_available_html_editors();
+    $htmleditors = get_available_editors();
 
     $temp->add(new admin_setting_configselect('defaulthtmleditor', get_string('defaulthtmleditor', 'admin'), null, 'tinymce', $htmleditors));
     $temp->add(new admin_setting_configcheckbox('htmleditor', get_string('usehtmleditor', 'admin'), get_string('confightmleditor','admin'), 1));
     $temp->add(new admin_setting_emoticons());
     $ADMIN->add('htmleditor', $temp);
 
-/* TODO: before deleting these settings migrate or drop config values!
+
+ TODO: before deleting these settings migrate or drop config values!
     $temp = new admin_settingpage('htmlarea', get_string('htmlarea', 'admin'));
     $temp->add(new admin_setting_configtext('editorbackgroundcolor', get_string('editorbackgroundcolor', 'admin'), get_string('edhelpbgcolor'), '#ffffff', PARAM_NOTAGS));
     $temp->add(new admin_setting_configtext('editorfontfamily', get_string('editorfontfamily', 'admin'), get_string('edhelpfontfamily'), 'Trebuchet MS,Verdana,Arial,Helvetica,sans-serif', PARAM_NOTAGS));
@@ -69,13 +71,13 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     $temp->add(new admin_setting_configcheckbox('editorkillword', get_string('editorkillword', 'admin'), get_string('edhelpcleanword'), 1));
     $temp->add(new admin_setting_special_editorhidebuttons());
     $ADMIN->add('htmleditor', $temp);
-*/
 
     $temp = new admin_settingpage('tinymce', 'TinyMCE');
     // add tinymce configuration options here
     $ADMIN->add('htmleditor', $temp);
+*/
 
-        // "htmlsettings" settingpage
+    // "htmlsettings" settingpage
     $temp = new admin_settingpage('htmlsettings', get_string('htmlsettings', 'admin'));
     $temp->add(new admin_setting_configcheckbox('formatstringstriptags', get_string('stripalltitletags', 'admin'), get_string('configstripalltitletags', 'admin'), 1));
     $ADMIN->add('appearance', $temp);
diff --git a/lang/en_utf8/editor_textarea.php b/lang/en_utf8/editor_textarea.php
new file mode 100644 (file)
index 0000000..f93029a
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+
+$string['modulename'] = 'Plain text area';
similarity index 99%
rename from lang/en_utf8/tinymce.php
rename to lang/en_utf8/editor_tinymce.php
index 96b3bc7be0929d91282df0f7fe4b5df732fabff2..db97d07096125772440ffb49eebd1ab9d71f9a2d 100644 (file)
@@ -1,6 +1,4 @@
-<?php // $Id$
-      // tinymce.php - created by the automatic import script
-
+<?php
 
 $string['main/common:edit_confirm'] = 'Do you want to use the WYSIWYG mode for this textarea?';
 $string['main/common:apply'] = 'Apply';
@@ -99,6 +97,7 @@ $string['main/spellchecker:sug'] = 'Suggestions';
 $string['main/spellchecker:no_sug'] = 'No suggestions';
 $string['main/spellchecker:no_mpell'] = 'No misspellings found.';
 $string['main/pagebreak:desc'] = 'Insert page break.';
+$string['modulename'] = 'TinyMCE editor';
 $string['plugins/advhr_dlg:width'] = 'Width';
 $string['plugins/advhr_dlg:size'] = 'Height';
 $string['plugins/advhr_dlg:noshade'] = 'No shadow';
@@ -706,5 +705,3 @@ $string['themes/simple:numlist_desc'] = 'Ordered list';
 $string['themes/simple:undo_desc'] = 'Undo (Ctrl+Z)';
 $string['themes/simple:redo_desc'] = 'Redo (Ctrl+Y)';
 $string['themes/simple:cleanup_desc'] = 'Cleanup messy code';
-
-?>
index 1830ce6f375f4f0a1ed8c6eb8c3a2db275071b72..df82af9a6adf1c7cc164c6ca07f539cb7e16db76 100755 (executable)
@@ -3069,6 +3069,10 @@ function load_capability_def($component) {
             $defpath = $CFG->dirroot.'/course/'.$component.'/db/access.php';
             $varprefix = $compparts[0].'_'.$compparts[1];
 
+        } else if ($compparts[0] == 'editor') {
+            $defpath = $CFG->dirroot.'/lib/editor/'.$compparts[1].'/db/access.php';
+            $varprefix = $compparts[0].'_'.$compparts[1];
+
         } else if ($compparts[0] == 'gradeimport') {
             $defpath = $CFG->dirroot.'/grade/import/'.$compparts[1].'/db/access.php';
             $varprefix = $compparts[0].'_'.$compparts[1];
@@ -3914,6 +3918,10 @@ function get_capability_string($capabilityname) {
             $string = get_string($stringname, 'format_'.$componentname);
         break;
 
+        case 'format':
+            $string = get_string($stringname, 'editor_'.$componentname);
+        break;
+
         case 'gradeexport':
             $string = get_string($stringname, 'gradeexport_'.$componentname);
         break;
index c944bea9d9144727abacf79a1597c29913656a27..5687ab6d34a6e85f259417b2bc44c0a56b549a58 100644 (file)
@@ -99,6 +99,7 @@ function get_plugin_types() {
                  'auth'          => 'auth',
                  'enrol'         => 'enrol',
                  'format'        => 'course/format',
+                 'editor'        => 'lib/editor',
                  'gradeexport'   => 'grade/export',
                  'gradeimport'   => 'grade/import',
                  'gradereport'   => 'grade/report',
diff --git a/lib/editor/common/dragmath/COPYRIGHT.html b/lib/editor/common/dragmath/COPYRIGHT.html
deleted file mode 100644 (file)
index 6a64688..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - License</title>\r
-</head>\r
-<body>\r
-\r
-<span style=" color: #000099; font-size: x-large; font-family: Arial;"><strong>DragMath copyright information</strong></span>\r
-\r
-<span style=" font-size: small; font-family: Arial;">\r
-\r
-<p>DragMath is licensed under the GNU General Public License (GPL) (<a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>)\r
-</p><p>\r
-All source code in this package is written by <a href="http://www.abillingsley.co.uk">Alex Billingsley</a> except the libraries used. The copyright information for the libaries is included below:</p>\r
-<br>\r
-<p>\r
-<h4>JDOM<br>  <a href="http://www.jdom.org">http://www.jdom.org</a></h4>\r
-JDOM is available under an Apache-style open source license, with the acknowledgment clause removed. This license is among the least restrictive license available, enabling developers to use JDOM in creating new products without requiring them to release their own products as open source. This is the license model used by the Apache Project, which created the Apache server. The license is available at the top of every source file and in LICENSE.txt in the root of the distribution.\r
-</p>\r
-<br>\r
-<p>\r
-<h4>JEP<br><a href="https://sourceforge.net/projects/jep/">https://sourceforge.net/projects/jep/</a></h4>\r
-JEP is licensed under the GNU General Public License (GPL) (<a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>)</p>\r
-<p>\r
-<br>\r
-<h4>glyFX Common Toolbar Set Icons<br>   <a href="http://www.glyfx.com">http://www.glyfx.com</a></h4>\r
-Icons used in software, license found at; <a href="http://www.glyfx.com/license-toolbar.html">http://www.glyfx.com/license-toolbar.html</a></p>\r
-</span>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/LICENSE-gpl.txt b/lib/editor/common/dragmath/LICENSE-gpl.txt
deleted file mode 100644 (file)
index c872f26..0000000
+++ /dev/null
@@ -1,341 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE\r
-                      Version 2, June 1991\r
-\r
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.\r
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-                           Preamble\r
-\r
-  The licenses for most software are designed to take away your\r
-freedom to share and change it.  By contrast, the GNU General Public\r
-License is intended to guarantee your freedom to share and change free\r
-software--to make sure the software is free for all its users.  This\r
-General Public License applies to most of the Free Software\r
-Foundation's software and to any other program whose authors commit to\r
-using it.  (Some other Free Software Foundation software is covered by\r
-the GNU Library General Public License instead.)  You can apply it to\r
-your programs, too.\r
-\r
-  When we speak of free software, we are referring to freedom, not\r
-price.  Our General Public Licenses are designed to make sure that you\r
-have the freedom to distribute copies of free software (and charge for\r
-this service if you wish), that you receive source code or can get it\r
-if you want it, that you can change the software or use pieces of it\r
-in new free programs; and that you know you can do these things.\r
-\r
-  To protect your rights, we need to make restrictions that forbid\r
-anyone to deny you these rights or to ask you to surrender the rights.\r
-These restrictions translate to certain responsibilities for you if you\r
-distribute copies of the software, or if you modify it.\r
-\r
-  For example, if you distribute copies of such a program, whether\r
-gratis or for a fee, you must give the recipients all the rights that\r
-you have.  You must make sure that they, too, receive or can get the\r
-source code.  And you must show them these terms so they know their\r
-rights.\r
-\r
-  We protect your rights with two steps: (1) copyright the software, and\r
-(2) offer you this license which gives you legal permission to copy,\r
-distribute and/or modify the software.\r
-\r
-  Also, for each author's protection and ours, we want to make certain\r
-that everyone understands that there is no warranty for this free\r
-software.  If the software is modified by someone else and passed on, we\r
-want its recipients to know that what they have is not the original, so\r
-that any problems introduced by others will not reflect on the original\r
-authors' reputations.\r
-\r
-  Finally, any free program is threatened constantly by software\r
-patents.  We wish to avoid the danger that redistributors of a free\r
-program will individually obtain patent licenses, in effect making the\r
-program proprietary.  To prevent this, we have made it clear that any\r
-patent must be licensed for everyone's free use or not licensed at all.\r
-\r
-  The precise terms and conditions for copying, distribution and\r
-modification follow.\r
-\r
-                   GNU GENERAL PUBLIC LICENSE\r
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
-  0. This License applies to any program or other work which contains\r
-a notice placed by the copyright holder saying it may be distributed\r
-under the terms of this General Public License.  The "Program", below,\r
-refers to any such program or work, and a "work based on the Program"\r
-means either the Program or any derivative work under copyright law:\r
-that is to say, a work containing the Program or a portion of it,\r
-either verbatim or with modifications and/or translated into another\r
-language.  (Hereinafter, translation is included without limitation in\r
-the term "modification".)  Each licensee is addressed as "you".\r
-\r
-Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope.  The act of\r
-running the Program is not restricted, and the output from the Program\r
-is covered only if its contents constitute a work based on the\r
-Program (independent of having been made by running the Program).\r
-Whether that is true depends on what the Program does.\r
-\r
-  1. You may copy and distribute verbatim copies of the Program's\r
-source code as you receive it, in any medium, provided that you\r
-conspicuously and appropriately publish on each copy an appropriate\r
-copyright notice and disclaimer of warranty; keep intact all the\r
-notices that refer to this License and to the absence of any warranty;\r
-and give any other recipients of the Program a copy of this License\r
-along with the Program.\r
-\r
-You may charge a fee for the physical act of transferring a copy, and\r
-you may at your option offer warranty protection in exchange for a fee.\r
-\r
-  2. You may modify your copy or copies of the Program or any portion\r
-of it, thus forming a work based on the Program, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
-    a) You must cause the modified files to carry prominent notices\r
-    stating that you changed the files and the date of any change.\r
-\r
-    b) You must cause any work that you distribute or publish, that in\r
-    whole or in part contains or is derived from the Program or any\r
-    part thereof, to be licensed as a whole at no charge to all third\r
-    parties under the terms of this License.\r
-\r
-    c) If the modified program normally reads commands interactively\r
-    when run, you must cause it, when started running for such\r
-    interactive use in the most ordinary way, to print or display an\r
-    announcement including an appropriate copyright notice and a\r
-    notice that there is no warranty (or else, saying that you provide\r
-    a warranty) and that users may redistribute the program under\r
-    these conditions, and telling the user how to view a copy of this\r
-    License.  (Exception: if the Program itself is interactive but\r
-    does not normally print such an announcement, your work based on\r
-    the Program is not required to print an announcement.)\r
-\r
-These requirements apply to the modified work as a whole.  If\r
-identifiable sections of that work are not derived from the Program,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works.  But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Program, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Program.\r
-\r
-In addition, mere aggregation of another work not based on the Program\r
-with the Program (or with a work based on the Program) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
-  3. You may copy and distribute the Program (or a work based on it,\r
-under Section 2) in object code or executable form under the terms of\r
-Sections 1 and 2 above provided that you also do one of the following:\r
-\r
-    a) Accompany it with the complete corresponding machine-readable\r
-    source code, which must be distributed under the terms of Sections\r
-    1 and 2 above on a medium customarily used for software interchange; or,\r
-\r
-    b) Accompany it with a written offer, valid for at least three\r
-    years, to give any third party, for a charge no more than your\r
-    cost of physically performing source distribution, a complete\r
-    machine-readable copy of the corresponding source code, to be\r
-    distributed under the terms of Sections 1 and 2 above on a medium\r
-    customarily used for software interchange; or,\r
-\r
-    c) Accompany it with the information you received as to the offer\r
-    to distribute corresponding source code.  (This alternative is\r
-    allowed only for noncommercial distribution and only if you\r
-    received the program in object code or executable form with such\r
-    an offer, in accord with Subsection b above.)\r
-\r
-The source code for a work means the preferred form of the work for\r
-making modifications to it.  For an executable work, complete source\r
-code means all the source code for all modules it contains, plus any\r
-associated interface definition files, plus the scripts used to\r
-control compilation and installation of the executable.  However, as a\r
-special exception, the source code distributed need not include\r
-anything that is normally distributed (in either source or binary\r
-form) with the major components (compiler, kernel, and so on) of the\r
-operating system on which the executable runs, unless that component\r
-itself accompanies the executable.\r
-\r
-If distribution of executable or object code is made by offering\r
-access to copy from a designated place, then offering equivalent\r
-access to copy the source code from the same place counts as\r
-distribution of the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\r
-  4. You may not copy, modify, sublicense, or distribute the Program\r
-except as expressly provided under this License.  Any attempt\r
-otherwise to copy, modify, sublicense or distribute the Program is\r
-void, and will automatically terminate your rights under this License.\r
-However, parties who have received copies, or rights, from you under\r
-this License will not have their licenses terminated so long as such\r
-parties remain in full compliance.\r
-\r
-  5. You are not required to accept this License, since you have not\r
-signed it.  However, nothing else grants you permission to modify or\r
-distribute the Program or its derivative works.  These actions are\r
-prohibited by law if you do not accept this License.  Therefore, by\r
-modifying or distributing the Program (or any work based on the\r
-Program), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Program or works based on it.\r
-\r
-  6. Each time you redistribute the Program (or any work based on the\r
-Program), the recipient automatically receives a license from the\r
-original licensor to copy, distribute or modify the Program subject to\r
-these terms and conditions.  You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties to\r
-this License.\r
-\r
-  7. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License.  If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Program at all.  For example, if a patent\r
-license would not permit royalty-free redistribution of the Program by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Program.\r
-\r
-If any portion of this section is held invalid or unenforceable under\r
-any particular circumstance, the balance of the section is intended to\r
-apply and the section as a whole is intended to apply in other\r
-circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system, which is\r
-implemented by public license practices.  Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\r
-  8. If the distribution and/or use of the Program is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Program under this License\r
-may add an explicit geographical distribution limitation excluding\r
-those countries, so that distribution is permitted only in or among\r
-countries not thus excluded.  In such case, this License incorporates\r
-the limitation as if written in the body of this License.\r
-\r
-  9. The Free Software Foundation may publish revised and/or new versions\r
-of the General Public License from time to time.  Such new versions will\r
-be similar in spirit to the present version, but may differ in detail to\r
-address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number.  If the Program\r
-specifies a version number of this License which applies to it and "any\r
-later version", you have the option of following the terms and conditions\r
-either of that version or of any later version published by the Free\r
-Software Foundation.  If the Program does not specify a version number of\r
-this License, you may choose any version ever published by the Free Software\r
-Foundation.\r
-\r
-  10. If you wish to incorporate parts of the Program into other free\r
-programs whose distribution conditions are different, write to the author\r
-to ask for permission.  For software which is copyrighted by the Free\r
-Software Foundation, write to the Free Software Foundation; we sometimes\r
-make exceptions for this.  Our decision will be guided by the two goals\r
-of preserving the free status of all derivatives of our free software and\r
-of promoting the sharing and reuse of software generally.\r
-\r
-                           NO WARRANTY\r
-\r
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r
-REPAIR OR CORRECTION.\r
-\r
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGES.\r
-\r
-                    END OF TERMS AND CONDITIONS\r
-\r
-           How to Apply These Terms to Your New Programs\r
-\r
-  If you develop a new program, and you want it to be of the greatest\r
-possible use to the public, the best way to achieve this is to make it\r
-free software which everyone can redistribute and change under these terms.\r
-\r
-  To do so, attach the following notices to the program.  It is safest\r
-to attach them to the start of each source file to most effectively\r
-convey the exclusion of warranty; and each file should have at least\r
-the "copyright" line and a pointer to where the full notice is found.\r
-\r
-    <one line to give the program's name and a brief idea of what it does.>\r
-    Copyright (C) <year>  <name of author>\r
-\r
-    This program is free software; you can redistribute it and/or modify\r
-    it under the terms of the GNU General Public License as published by\r
-    the Free Software Foundation; either version 2 of the License, or\r
-    (at your option) any later version.\r
-\r
-    This program is distributed in the hope that it will be useful,\r
-    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-    GNU General Public License for more details.\r
-\r
-    You should have received a copy of the GNU General Public License\r
-    along with this program; if not, write to the Free Software\r
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
-\r
-\r
-Also add information on how to contact you by electronic and paper mail.\r
-\r
-If the program is interactive, make it output a short notice like this\r
-when it starts in an interactive mode:\r
-\r
-    Gnomovision version 69, Copyright (C) year name of author\r
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r
-    This is free software, and you are welcome to redistribute it\r
-    under certain conditions; type `show c' for details.\r
-\r
-The hypothetical commands `show w' and `show c' should show the appropriate\r
-parts of the General Public License.  Of course, the commands you use may\r
-be called something other than `show w' and `show c'; they could even be\r
-mouse-clicks or menu items--whatever suits your program.\r
-\r
-You should also get your employer (if you work as a programmer) or your\r
-school, if any, to sign a "copyright disclaimer" for the program, if\r
-necessary.  Here is a sample; alter the names:\r
-\r
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\r
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.\r
-\r
-  <signature of Ty Coon>, 1 April 1989\r
-  Ty Coon, President of Vice\r
-\r
-This General Public License does not permit incorporating your program into\r
-proprietary programs.  If your program is a subroutine library, you may\r
-consider it more useful to permit linking proprietary applications with the\r
-library.  If this is what you want to do, use the GNU Library General\r
-Public License instead of this License.\r
-\r
diff --git a/lib/editor/common/dragmath/README.html b/lib/editor/common/dragmath/README.html
deleted file mode 100644 (file)
index 8bbac45..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath - README</title>\r
-</head>\r
-<body>\r
-<span style=" color: #000099; font-size: x-large; font-family: Arial;"><strong>\r
-DragMath README\r
-</strong></span>\r
-<span style=" font-size: small; font-family: Arial;">  \r
-<p>\r
-<font size=3>\r
-<p>\r
-<br>\r
-This is an open-source drag and drop equation editor written in Java. Once an expression is created the user can convert it into a variety of different linear syntax for mathematics, including MathML, LaTeX, Maple, Maxima or any user defined style.\r
-</p>\r
-DragMath Website:<a href="www.dragmath.bham.ac.uk">www.dragmath.bham.ac.uk</a><br>\r
-SoureForge.net Project:<a href="http://sourceforge.net/projects/dragmath">http://sourceforge.net/projects/dragmath</a>\r
-</p>\r
-<br>\r
-<p>\r
-<b>Package Contents:</b>\r
-</p>\r
-<br>\r
-<dl>\r
-\r
-<dt><b>README.html</b>\r
-<dd>This file</dd>\r
-</dt>\r
-<br>\r
-<dt><b>LICENSE-gpl.txt</b>\r
-<dd>License Agreement</dd>\r
-</dt>\r
-<br>\r
-<dt><b>COPYRIGHT.html </b>\r
-<dd>Copyright Information</dd>\r
-</dt>\r
-<br>\r
-<dt><b>Release Notes.html </b>\r
-<dd>Release Notes for this version</dd>\r
-</dt>\r
-<br>\r
-<dt><b>index.html</b>\r
-<dd>DragMath Website including Demonstrations</dd>\r
-</dt>\r
-<br><br>\r
-<dt><b>doc/</b>\r
-<dd>Documentation</dd>\r
-</dt>\r
-<br>\r
-<br>\r
-<dt><b>applet/classes/</b>\r
-<dl>\r
-<dt><b>formats/</b>\r
-<dd>Export formats</dd>\r
-</dt>\r
-<dt><b>lang/</b>\r
-<dd>Language files</dd>\r
-</dt>\r
-</dl>\r
-</dt>\r
-</dl>\r
-\r
-</font>\r
-</span>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/Release Notes.html b/lib/editor/common/dragmath/Release Notes.html
deleted file mode 100644 (file)
index c99f705..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath - Release Notes for Version 0.7.2</title>\r
-</head>\r
-<body>\r
-<span style=" color: #000099; font-size: x-large; font-family: Arial;"><strong>\r
-Release Notes for DragMath 0.7.2\r
-</strong></span>\r
-<span style=" font-size: small; font-family: Arial;">  \r
-<p>\r
-<font size=3>\r
-<b><a href="www.dragmath.bham.ac.uk">www.dragmath.bham.ac.uk</a></b>\r
-</p>\r
-<br>\r
-\r
-<b>DragMath 0.7.2 released 04/04/2008</b>\r
-<p>\r
-New Features:\r
-</p>\r
-<ol>\r
-<li>MoodleTex format file</li>\r
-<li>ASCIIMathML format file</li>\r
-</ol>\r
-New languages:\r
-</p>\r
-<ol>\r
-<li>Norwegian</li>\r
-</ol>\r
-Bugs fixed:\r
-</p>\r
-<ol>\r
-<li>Unary minus not working with infinity</li>\r
-</ol>\r
-<br>\r
-\r
-\r
-</font>\r
-</span>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/applet/HotEqn/HotEqn.class b/lib/editor/common/dragmath/applet/HotEqn/HotEqn.class
deleted file mode 100644 (file)
index 2d494e8..0000000
Binary files a/lib/editor/common/dragmath/applet/HotEqn/HotEqn.class and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/HotEqn/HotEqn.jar b/lib/editor/common/dragmath/applet/HotEqn/HotEqn.jar
deleted file mode 100644 (file)
index 70825cc..0000000
Binary files a/lib/editor/common/dragmath/applet/HotEqn/HotEqn.jar and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/Latex.html b/lib/editor/common/dragmath/applet/Latex.html
deleted file mode 100644 (file)
index 98c0131..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r
-<html>\r
-<head>\r
-\r
-<title>DragMath Latex Example</title>\r
-\r
-<script>\r
-function renderLatex() {\r
-  var ans = document.DragMath.getMathExpression();  \r
-  var source = '<html>'\r
-         + '<body>'\r
-         + '<h4>Latex Syntax: '\r
-         + ans\r
-         + '</h4>'\r
-         + '<applet code="HotEqn.class" codebase="HotEqn" archive="HotEqn.jar" height="300" width="600" name="my equation">'\r
-         + '<param name="equation" value="'    \r
-         + ans\r
-         + '"/>'\r
-         + '</applet>'\r
-         + '</body>'\r
-         + '</html>'\r
-         + '';\r
-\r
-  var target = document.getElementById('outputID');\r
-    var doc = target.contentDocument;\r
-        if (doc == undefined || doc == null)\r
-            doc = target.contentWindow.document;\r
-  doc.open();\r
-  doc.write(source);\r
-  doc.close();\r
-\r
\r
-}\r
-</script>\r
-\r
-</head>\r
-<body>\r
-\r
-<div id="mainContent">\r
-\r
-\r
-<DIV align=left><FONT face=Arial color=#000080 \r
-size=6><STRONG>DragMath Latex Example</STRONG></FONT></DIV>\r
-<br><br>\r
-\r
-<applet name="DragMath" codebase="classes" code="Display.MainApplet.class" archive="Project.jar,AbsoluteLayout.jar,swing-layout-1.0.jar,jdom.jar,jep.jar" width=540 height=333>\r
-<param name=language value="en">\r
-<param name=showOutputToolBar value="false">\r
-<param name=outputFormat value="Latex">\r
-To use this page you need a Java-enabled browser. Download the latest Java plug-in from <a href="http://www.java.com">Java.com</a>\r
-</applet >\r
-<br>\r
-\r
-<form>\r
-<input type='button' value='Render Latex' onclick='renderLatex(); return true;' />\r
-</form>\r
-\r
-<H2>Latex Rendering:</H2>\r
-\r
-<iframe id='outputID' src='' width='98%' height='150'>\r
-</iframe>\r
-\r
-</div>\r
-<br>\r
-Latex rendering performed by freeware Java applet <a href="http://www.atp.ruhr-uni-bochum.de/VCLab/software/HotEqn/HotEqn.html">HotEqn </a>\r
-</body>\r
-</html>\r
diff --git a/lib/editor/common/dragmath/applet/MathML.html b/lib/editor/common/dragmath/applet/MathML.html
deleted file mode 100644 (file)
index 6709f72..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r
-<html>\r
-<head>\r
-\r
-<title>DragMath MathML Example</title>\r
-\r
-<script>\r
-function renderMathML() {\r
-  var ans = document.DragMath.getMathExpression();  \r
-  var source = '<?xml version="1.0"?>'\r
-         + '<!DOCTYPE html PUBLIC'\r
-         + ' "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"'\r
-         + ' "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"'\r
-         + '['\r
-         + ' <!ENTITY mathml "http://www.w3.org/1998/Math/MathML">'\r
-         + ']>'\r
-         + ''\r
-         + '<body>'\r
-         + ans\r
-         + '</body>'\r
-         + '';\r
-  var target = document.getElementById('outputID');\r
-  target.setAttribute('src','data:text/xml;charset=utf-8,' + escape(source));\r
-}\r
-function resetMathML() {\r
-  var source = 'The MathML rendering will appear here.';\r
-  var target = document.getElementById('outputID');\r
-  target.setAttribute('src','data:text/html,' + escape(source));\r
-}\r
-</script>\r
-\r
-</head>\r
-<body>\r
-\r
-<div id="mainContent">\r
-\r
-\r
-<DIV align=left><FONT face=Arial color=#000080 \r
-size=6><STRONG>DragMath MathML Example</STRONG></FONT></DIV>\r
-<br><br>\r
-\r
-<applet name="DragMath" codebase="classes" code="Display.MainApplet.class" archive="Project.jar,AbsoluteLayout.jar,swing-layout-1.0.jar,jdom.jar,jep.jar" width=540 height=333>\r
-<param name=language value="en">\r
-<param name=outputFormat value="MathML">\r
-To use this page you need a Java-enabled browser. Download the latest Java plug-in from <a href="http://www.java.com">Java.com</a>\r
-</applet >\r
-<br>\r
-\r
-<form>\r
-<input type='button' value='Render MathML' onclick='renderMathML(); return true;' />\r
-</form>\r
-\r
-<H2>MathML Rendering:</H2>\r
-\r
-<iframe id='outputID' src='data:text/html' width='98%' height='150'>\r
-You need a MathML-enabled Gecko-based browser.\r
-</iframe>\r
-\r
-</div>\r
-<br>\r
-JavaScript used for rendering from <a href="http://www.mozilla.org/projects/mathml/demo/tester.html">Mozilla website</a>, re-used under <a href="http://creativecommons.org/licenses/by-sa/2.0/">Creative Commons License</a>\r
-\r
-</body>\r
-</html>\r
diff --git a/lib/editor/common/dragmath/applet/Maxima.html b/lib/editor/common/dragmath/applet/Maxima.html
deleted file mode 100644 (file)
index f4808b0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Maxima Example</title>\r
-\r
-<script language="JavaScript">\r
-var thedata;\r
-var newwin;\r
-var thenumber;\r
-function edit(textarea)\r
-{\r
-    thenumber = textarea;\r
-    thedata = document.forms['exampleform'].elements[textarea].value\r
-\r
-    newwin = window.open("MaximaPopup.html","","width=565,height=400,resizable")\r
-}\r
-</script>\r
-</head>\r
-\r
-\r
-<body>\r
-<DIV align=left><FONT face=Arial color=#000080 \r
-size=6><STRONG>DragMath Maxima Example</STRONG></FONT></DIV>\r
-<br><br>\r
-\r
-<FORM name="exampleform">\r
-\r
-<p>Factorise 20*x+5\r
-<br>\r
-<input type="text" id="data0" name="data0" cols="15" />\r
-<input type="button" value="Editor" onclick="edit('data0')">\r
-</p>\r
-\r
-<p>Differentiate 2·x5+2·x4-x3+3·x2-2·x with respect to x\r
-<br>\r
-<input type="text" id="data1" name="data1" cols="15">\r
-<input type="button" value="Editor" onclick="edit('data1')">\r
-</p>\r
-\r
-<p>Integrate cos( 5·x ) with respect to x\r
-<br>\r
-<input type="text" id="data3" name="data3" cols="15">\r
-<input type="button" value="Editor" onclick="edit('data3')">\r
-</p>\r
-\r
-<input type="submit" name="submit" value="Submit" />\r
-</FORM>\r
-\r
-</body>\r
-</html>\r
diff --git a/lib/editor/common/dragmath/applet/MaximaPopup.html b/lib/editor/common/dragmath/applet/MaximaPopup.html
deleted file mode 100644 (file)
index 7f68b68..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-\r
-<html>\r
-<head>\r
-\r
-<script language="Javascript">\r
-\r
-var exp = opener.document.forms['exampleform'].elements[opener.thenumber].value\r
-document.write('<applet name="DragMath" codebase="classes" code="Display.MainApplet.class" archive="Project.jar,AbsoluteLayout.jar,swing-layout-1.0.jar,jdom.jar,jep.jar" width=540 height=333>',\r
-                   '<param name=language value="en">',\r
-                   '<param name=outputFormat value="Maxima">',\r
-            '<param name=openWithExpression value="' + exp + '">',\r
-            'To use this page you need a Java-enabled browser. Download the latest Java plug-in from <a href="http://www.java.com">Java.com</a>',\r
-            '</applet>');\r
-\r
-var whichone;\r
-function writedata()\r
-{\r
-    whichone = opener.thenumber\r
-\r
-}\r
-\r
-function updateit()\r
-{\r
-    var applet = document.DragMath;\r
-    var ans = document.DragMath.getMathExpression();  \r
-    \r
-    opener.document.forms['exampleform'].elements[whichone].value = ans       \r
-    window.close()\r
-}\r
-</script>\r
-<body onload="writedata()">\r
-\r
-\r
-<form name="checkit">\r
-<input type="hidden" cols="20" id="data" />\r
-<br />\r
-<input type="button" value="Save &amp; Close" onclick="updateit()">\r
-</body>\r
-</html>\r
diff --git a/lib/editor/common/dragmath/applet/classes/AbsoluteLayout.jar b/lib/editor/common/dragmath/applet/classes/AbsoluteLayout.jar
deleted file mode 100644 (file)
index 7095af9..0000000
Binary files a/lib/editor/common/dragmath/applet/classes/AbsoluteLayout.jar and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/classes/Config.xml b/lib/editor/common/dragmath/applet/classes/Config.xml
deleted file mode 100644 (file)
index a834dcc..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-    Document   : Config.xml
-    Created on : 13 December 2007, 19:28
-    Author     : Alex Billingsley
-    Description:
-        Purpose of the document follows.
--->
-
-<Config>
-    <Languages>
-        <Lang displayName="Català" fileName="ca"></Lang>
-        <Lang displayName="čeština" fileName="cz"></Lang>
-        <Lang displayName="Deutsch" fileName="de"></Lang>
-        <Lang displayName="English" fileName="en"></Lang>
-        <Lang displayName="Español" fileName="es"></Lang>
-        <Lang displayName="français" fileName="fr"></Lang>
-        <Lang displayName="Nederlands" fileName="nl"></Lang>
-        <Lang displayName="Norsk" fileName="no"></Lang>
-        <Lang displayName="polski" fileName="pl"></Lang>
-        <Lang displayName="Pyccĸий" fileName="ru"></Lang>
-        <Lang displayName="svenska" fileName="sv"></Lang>
-        <Lang displayName="português brasileiro" fileName="pt-br"></Lang>
-    </Languages>
-    
-    <Formats>
-        <Format displayName="LaTeX" fileName="Latex"></Format>
-        <Format displayName="Maple" fileName="Maple"></Format>
-        <Format displayName="MathML" fileName="MathML"></Format>
-        <Format displayName="Maxima" fileName="Maxima"></Format>
-        <Format displayName="MoodleTex" fileName="MoodleTex"></Format>
-        <Format displayName="ASCIIMathML" fileName="ASCIIMathML"></Format>
-    </Formats>
-</Config>
diff --git a/lib/editor/common/dragmath/applet/classes/Display/MainApplet.class b/lib/editor/common/dragmath/applet/classes/Display/MainApplet.class
deleted file mode 100644 (file)
index 2967928..0000000
Binary files a/lib/editor/common/dragmath/applet/classes/Display/MainApplet.class and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/classes/Project.jar b/lib/editor/common/dragmath/applet/classes/Project.jar
deleted file mode 100644 (file)
index e02ed70..0000000
Binary files a/lib/editor/common/dragmath/applet/classes/Project.jar and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/classes/formats/ASCIIMathML.xml b/lib/editor/common/dragmath/applet/classes/formats/ASCIIMathML.xml
deleted file mode 100644 (file)
index 82f0995..0000000
+++ /dev/null
@@ -1,543 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<Syntax>\r
-    <name AutoBrackets="false">ASCIIMathML</name>\r
-    \r
-    <Initial>\r
-        <output1>`</output1>\r
-        <output2>`</output2>\r
-    </Initial>\r
-    <Text>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Text>\r
-    <Variable>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Variable>\r
-    <RealNumber>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </RealNumber>\r
-    \r
-    \r
-    \r
-    <!--  Nary Operators   -->\r
-    <Add>\r
-        <output>+</output>\r
-    </Add>\r
-\r
-    <Multiply>\r
-        <output> * </output>\r
-    </Multiply>\r
-\r
-    <Multiply2>\r
-        <output> xx </output>\r
-    </Multiply2>\r
-    <Equals>\r
-        <output>=</output>\r
-    </Equals>\r
-    <Union>\r
-        <output> uu </output>\r
-    </Union>\r
-    <Intersection>\r
-        <output> nn </output>\r
-    </Intersection>\r
-    <Comma>\r
-        <output>,</output>\r
-    </Comma>\r
-    <Equiv>\r
-        <output> -= </output>\r
-    </Equiv>\r
-    \r
-    \r
-    \r
-    <!--  Functions   -->\r
-    <UMinus>\r
-        <output1>-</output1>\r
-        <output2></output2>\r
-    </UMinus>\r
-    <Factorial brackets="false">\r
-        <output1>(</output1>\r
-        <output2>)!</output2>\r
-    </Factorial>\r
-    <NaturalLogarithm>\r
-        <output1> ln </output1>\r
-        <output2></output2>\r
-    </NaturalLogarithm>\r
-    <Logarithm>\r
-        <output1> log </output1>\r
-        <output2></output2>\r
-    </Logarithm>\r
-    <Sine>\r
-        <output1> sin </output1>\r
-        <output2></output2>\r
-    </Sine>\r
-    <Cosine>\r
-        <output1> cos </output1>\r
-        <output2></output2>\r
-    </Cosine>\r
-    <Tangent>\r
-        <output1> tan </output1>\r
-        <output2></output2>\r
-    </Tangent>\r
-    <ArcSine>\r
-        <output1> sin^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcSine>\r
-    <ArcCosine>\r
-        <output1> cos^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcCosine>\r
-    <ArcTangent>\r
-        <output1> tan^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcTangent>\r
-    <SineH>\r
-        <output1> sinh </output1>\r
-        <output2></output2>\r
-    </SineH>\r
-    <CosineH>\r
-        <output1> cosh </output1>\r
-        <output2></output2>\r
-    </CosineH>\r
-    <TanH>\r
-        <output1> tanh </output1>\r
-        <output2></output2>\r
-    </TanH>\r
-    <ArcSineH>\r
-        <output1> sinh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcSineH>\r
-    <ArcCosineH>\r
-        <output1> cosh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcCosineH>\r
-    <ArcTanH>\r
-        <output1> tanh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcTanH>\r
-    <SquareRoot brackets="false">\r
-        <output1> sqrt{</output1>\r
-        <output2>} </output2>\r
-    </SquareRoot>\r
-    <Exp brackets="false">\r
-        <output1> e^{</output1>\r
-        <output2>} </output2>\r
-    </Exp>\r
-    <Max>\r
-        <output1>max</output1>\r
-        <output2></output2>\r
-    </Max>\r
-    <Min>\r
-        <output1>min</output1>\r
-        <output2></output2>\r
-    </Min>\r
-    <Determinant>\r
-        <output1>det</output1>\r
-        <output2></output2>\r
-    </Determinant>\r
-    <Trace>\r
-        <output1>Tr</output1>\r
-        <output2></output2>\r
-    </Trace>\r
-    \r
-    \r
-    \r
-    <!--  Binary Operators  -->\r
-    <NotEqual>\r
-        <output1></output1>\r
-        <output2> != </output2>\r
-        <output3></output3>\r
-    </NotEqual>\r
-    <PlusMinus>\r
-        <output1></output1>\r
-        <output2> +- </output2>\r
-        <output3></output3>\r
-    </PlusMinus> \r
-    <Assignment>\r
-        <output1></output1>\r
-        <output2>:=</output2>\r
-        <output3></output3>\r
-    </Assignment>\r
-    <Subtract>\r
-        <output1></output1>\r
-        <output2>-</output2>\r
-        <output3></output3>\r
-    </Subtract>\r
-    <Divide brackets="false">\r
-        <output1> (</output1>\r
-        <output2>)/(</output2>\r
-        <output3>) </output3>\r
-    </Divide>\r
-    <Divide2>       \r
-        <output1></output1>\r
-        <output2> -: </output2>\r
-        <output3></output3>\r
-    </Divide2>\r
-    <LessThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<]]></output2>\r
-        <output3></output3>\r
-    </LessThan>    \r
-    <GreaterThan>\r
-        <output1></output1>\r
-        <output2>></output2>\r
-        <output3></output3>\r
-    </GreaterThan>    \r
-    <LTEQ>\r
-        <output1></output1>\r
-        <output2><![CDATA[<=]]></output2>\r
-        <output3></output3>\r
-    </LTEQ>    \r
-    <GTEQ>\r
-        <output1></output1>\r
-        <output2><![CDATA[>=]]></output2>\r
-        <output3></output3>\r
-    </GTEQ>    \r
-    <Subset>\r
-        <output1></output1>\r
-        <output2> sub </output2>\r
-        <output3></output3>\r
-    </Subset>    \r
-    <SubsetEq>\r
-        <output1></output1>\r
-        <output2> sube </output2>\r
-        <output3></output3>\r
-    </SubsetEq>    \r
-    <NSubset>\r
-        <output1></output1>\r
-        <output2> \not\subset </output2>\r
-        <output3></output3>\r
-    </NSubset> \r
-    <NSubsetEq>\r
-        <output1></output1>\r
-        <output2> \not\subseteq </output2>\r
-        <output3></output3>\r
-    </NSubsetEq>  \r
-    <Power>\r
-        <output1></output1>\r
-        <output2>^{</output2>\r
-        <output3>}</output3>\r
-    </Power>\r
-    <Subscript>\r
-        <output1></output1>\r
-        <output2>_{</output2>\r
-        <output3>}</output3>\r
-    </Subscript>  \r
-    <NthRoot reverse="true" brackets="false">\r
-        <output1> root(</output1>\r
-        <output2>)(</output2>\r
-        <output3>) </output3>\r
-    </NthRoot> \r
-    <Function>\r
-        <output1></output1>\r
-        <output2>(</output2>\r
-        <output3>)</output3>\r
-    </Function>\r
-    <LeftArrow>\r
-        <output1></output1>\r
-        <output2> larr </output2>\r
-        <output3></output3>\r
-    </LeftArrow> \r
-    <RightArrow>\r
-        <output1></output1>\r
-        <output2> rarr </output2>\r
-        <output3></output3>\r
-    </RightArrow> \r
-    <UpArrow>\r
-        <output1></output1>\r
-        <output2> uarr </output2>\r
-        <output3></output3>\r
-    </UpArrow> \r
-    <DownArrow>\r
-        <output1></output1>\r
-        <output2> darr </output2>\r
-        <output3></output3>\r
-    </DownArrow> \r
-    <LeftDblArrow>\r
-        <output1></output1>\r
-        <output2> lArr </output2>\r
-        <output3></output3>\r
-    </LeftDblArrow> \r
-    <RightDblArrow>\r
-        <output1></output1>\r
-        <output2> rArr </output2>\r
-        <output3></output3>\r
-    </RightDblArrow> \r
-    <LeftRightArrow>\r
-        <output1></output1>\r
-        <output2> harr </output2>\r
-        <output3></output3>\r
-    </LeftRightArrow> \r
-    <LeftRightDblArrow>\r
-        <output1></output1>\r
-        <output2> hArr </output2>\r
-        <output3></output3>\r
-    </LeftRightDblArrow>   \r
-    <NorthEastArrow>\r
-        <output1></output1>\r
-        <output2> \nearrow </output2>\r
-        <output3></output3>\r
-    </NorthEastArrow>          \r
-    <SouthEastArrow>\r
-        <output1></output1>\r
-        <output2> \searrow </output2>\r
-        <output3></output3>\r
-    </SouthEastArrow>    \r
-    <NorthWestArrow>        \r
-        <output1></output1>\r
-        <output2> \nwarrow </output2>\r
-        <output3></output3>\r
-    </NorthWestArrow>     \r
-    <SouthWestArrow>\r
-        <output1></output1>\r
-        <output2> \swarrow </output2>\r
-        <output3></output3>\r
-    </SouthWestArrow>     \r
-    \r
-    <Exists>\r
-        <output1></output1>\r
-        <output2> EE </output2>\r
-        <output3></output3>\r
-    </Exists>\r
-    <ForAll>\r
-        <output1></output1>\r
-        <output2> AA </output2>\r
-        <output3></output3>\r
-    </ForAll>\r
-    <IsIn>        \r
-        <output1></output1>\r
-        <output2> in </output2>\r
-        <output3></output3>\r
-    </IsIn>\r
-    <NotExists>\r
-        <output1></output1>\r
-        <output2> \not\exists </output2>\r
-        <output3></output3>\r
-    </NotExists>\r
-    <NotIn>\r
-        <output1></output1>\r
-        <output2> !in </output2>\r
-        <output3></output3>\r
-    </NotIn>\r
-    <SimEq>\r
-        <output1></output1>\r
-        <output2> \simeq </output2>\r
-        <output3></output3>\r
-    </SimEq>\r
-    <Or>       \r
-        <output1></output1>\r
-        <output2> vv </output2>\r
-        <output3></output3>\r
-    </Or>\r
-    <And>\r
-        <output1></output1>\r
-        <output2> ^^ </output2>\r
-        <output3></output3>\r
-    </And>\r
-    <Not>\r
-        <output1></output1>\r
-        <output2> not </output2>\r
-        <output3></output3>\r
-    </Not>\r
-    \r
-    \r
-    <!--  Nary Functions   -->\r
-    <Integral>\r
-        <output1> int </output1>\r
-        <output2>d</output2>\r
-        <output3></output3>\r
-    </Integral>\r
-    <Differential order="1,0">\r
-        <output1> d/(d</output1>\r
-        <output2>)</output2>\r
-        <output3></output3>\r
-    </Differential>\r
-    <PartialDifferential order="1,0">\r
-        <output1> del/(del </output1>\r
-        <output2>)</output2>\r
-        <output3></output3>\r
-    </PartialDifferential>\r
-    <Sum order="1,2,3,0">\r
-        <output1> sum_(</output1>\r
-        <output2>=</output2>\r
-        <output3>)^(</output3>\r
-        <output4>)</output4>\r
-        <output5></output5>\r
-    </Sum>\r
-    <Product order="1,2,3,0">\r
-        <output1> prod_(</output1>\r
-        <output2>=</output2>\r
-        <output3>)^(</output3>\r
-        <output4>)</output4>\r
-        <output5></output5>\r
-    </Product>\r
-    <Limit order="1,2,0">\r
-        <output1> lim_(</output1>\r
-        <output2>-></output2>\r
-        <output3>)</output3>\r
-        <output4></output4>\r
-    </Limit>\r
-    <Evaluate>\r
-        <output1></output1>\r
-        <output2>\left|_{{</output2>\r
-        <output3>}={</output3>\r
-        <output4>}}</output4>\r
-    </Evaluate>\r
-    <DefiniteIntegral order="2,3,0,1">\r
-        <output1> int_{</output1>\r
-        <output2>}^{</output2>\r
-        <output3>}</output3>\r
-        <output4>d</output4>\r
-        <output5></output5>\r
-    </DefiniteIntegral>\r
-    \r
-    \r
-    \r
-    <!--  Matrix   -->\r
-    <Matrix>\r
-        <matrixStart> [ </matrixStart>\r
-        <rowStart>[</rowStart>\r
-        <elementStart></elementStart>\r
-        <elementEnd></elementEnd>\r
-        <elementSeparator>,</elementSeparator>\r
-        <rowEnd>]</rowEnd>\r
-        <rowSeparator>,</rowSeparator>\r
-        <matrixEnd> ] </matrixEnd>\r
-    </Matrix>\r
-    \r
-    \r
-    \r
-    <!--  Grouping  -->\r
-    <BracketsRnd>\r
-        <output1>(</output1>\r
-        <output2>)</output2>\r
-    </BracketsRnd>\r
-    <BracketsCurl>\r
-        <output1>{</output1>\r
-        <output2>}</output2>\r
-    </BracketsCurl>\r
-    <BracketsSq>\r
-        <output1>[</output1>\r
-        <output2>]</output2>\r
-    </BracketsSq>\r
-    <Abs>\r
-        <output1>|\</output1>\r
-        <output2>|</output2>\r
-    </Abs>\r
-    \r
-    \r
-    \r
-    <!--  Symbols   -->\r
-    <Infinity>\r
-        <output>oo</output>\r
-    </Infinity>\r
-    \r
-    \r
-    <Γ>\r
-        <output> Gamma </output>\r
-    </Γ>\r
-    <Δ>\r
-        <output> Delta </output>\r
-    </Δ>\r
-    <Θ>\r
-        <output> Theta </output>\r
-    </Θ>\r
-    <Λ>\r
-        <output> Lamda </output>\r
-    </Λ>\r
-    <Ξ>\r
-        <output> Xi </output>\r
-    </Ξ>\r
-    <Π>\r
-        <output> Pi </output>\r
-    </Π>\r
-    <Σ>\r
-        <output> Sigma </output>\r
-    </Σ>\r
-    <Υ>\r
-        <output> Upsilon </output>\r
-    </Υ>\r
-    <Φ>\r
-        <output> Phi </output>\r
-    </Φ>\r
-    <Ψ>\r
-        <output> Psi </output>\r
-    </Ψ>\r
-    <Ω>\r
-        <output> Omega </output>\r
-    </Ω>\r
-    \r
-    \r
-    <α>\r
-        <output> alpha </output>\r
-    </α>\r
-    <β>\r
-        <output> beta </output>\r
-    </β>\r
-    <γ>\r
-        <output> gamma </output>\r
-    </γ>\r
-    <δ>\r
-        <output> delta </output>\r
-    </δ>\r
-    <ε>\r
-        <output> epsilon </output>\r
-    </ε>\r
-    <ζ>\r
-        <output> zeta </output>\r
-    </ζ>\r
-    <η>\r
-        <output> eta </output>\r
-    </η>\r
-    <θ>\r
-        <output> theta </output>\r
-    </θ>\r
-    <ι>\r
-        <output> iota </output>\r
-    </ι>\r
-    <κ>\r
-        <output> kappa </output>\r
-    </κ>\r
-    <λ>\r
-        <output> lambda </output>\r
-    </λ>\r
-    <μ>\r
-        <output> mu </output>\r
-    </μ>\r
-    <ν>\r
-        <output> nu </output>\r
-    </ν>\r
-    <ξ>\r
-        <output> xi </output>\r
-    </ξ>\r
-    <π>\r
-        <output> pi </output>\r
-    </π>\r
-    <ρ>\r
-        <output> rho </output>\r
-    </ρ>\r
-    <σ>\r
-        <output> sigma </output>\r
-    </σ>\r
-    <τ>\r
-        <output> tau </output>\r
-    </τ>\r
-    <υ>\r
-        <output> upsilon </output>\r
-    </υ>\r
-    <φ>\r
-        <output> phi </output>\r
-    </φ>\r
-    <χ>\r
-        <output> chi </output>\r
-    </χ>\r
-    <ψ>\r
-        <output> psi </output>\r
-    </ψ> \r
-    <ω>\r
-        <output> omega </output>\r
-    </ω>\r
-    \r
-</Syntax>\r
diff --git a/lib/editor/common/dragmath/applet/classes/formats/Latex.xml b/lib/editor/common/dragmath/applet/classes/formats/Latex.xml
deleted file mode 100644 (file)
index 8720b21..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<Syntax>\r
-    <name AutoBrackets="false">Latex</name>\r
-    \r
-    <Initial>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Initial>\r
-    <Text>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Text>\r
-    <Variable>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Variable>\r
-    <RealNumber>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </RealNumber>\r
-    \r
-    \r
-    \r
-    <!--  Nary Operators   -->\r
-    <Add>\r
-        <output>+</output>\r
-    </Add>\r
-    <Multiply>\r
-        <output> \cdot </output>\r
-    </Multiply>\r
-    <Multiply2>\r
-        <output> \times </output>\r
-    </Multiply2>\r
-    <Equals>\r
-        <output>=</output>\r
-    </Equals>\r
-    <Union>\r
-        <output> \cup </output>\r
-    </Union>\r
-    <Intersection>\r
-        <output> \cap </output>\r
-    </Intersection>\r
-    <Comma>\r
-        <output>,</output>\r
-    </Comma>\r
-    <Equiv>\r
-        <output> \equiv </output>\r
-    </Equiv>\r
-    \r
-    \r
-    \r
-    <!--  Functions   -->\r
-    <UMinus>\r
-        <output1>-</output1>\r
-        <output2></output2>\r
-    </UMinus>\r
-    <Factorial brackets="false">\r
-        <output1>{</output1>\r
-        <output2>}!</output2>\r
-    </Factorial>\r
-    <NaturalLogarithm>\r
-        <output1> \ln </output1>\r
-        <output2></output2>\r
-    </NaturalLogarithm>\r
-    <Logarithm>\r
-        <output1> \log </output1>\r
-        <output2></output2>\r
-    </Logarithm>\r
-    <Sine>\r
-        <output1> \sin </output1>\r
-        <output2></output2>\r
-    </Sine>\r
-    <Cosine>\r
-        <output1> \cos </output1>\r
-        <output2></output2>\r
-    </Cosine>\r
-    <Tangent>\r
-        <output1> \tan </output1>\r
-        <output2></output2>\r
-    </Tangent>\r
-    <ArcSine>\r
-        <output1> \sin^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcSine>\r
-    <ArcCosine>\r
-        <output1> \cos^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcCosine>\r
-    <ArcTangent>\r
-        <output1> \tan^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcTangent>\r
-    <SineH>\r
-        <output1> \sinh </output1>\r
-        <output2></output2>\r
-    </SineH>\r
-    <CosineH>\r
-        <output1> \cosh </output1>\r
-        <output2></output2>\r
-    </CosineH>\r
-    <TanH>\r
-        <output1> \tanh </output1>\r
-        <output2></output2>\r
-    </TanH>\r
-    <ArcSineH>\r
-        <output1> \sinh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcSineH>\r
-    <ArcCosineH>\r
-        <output1> \cosh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcCosineH>\r
-    <ArcTanH>\r
-        <output1> \tanh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcTanH>\r
-    <SquareRoot brackets="false">\r
-        <output1> \sqrt{</output1>\r
-        <output2>} </output2>\r
-    </SquareRoot>\r
-    <Exp brackets="false">\r
-        <output1> e^{</output1>\r
-        <output2>} </output2>\r
-    </Exp>\r
-    <Max>\r
-        <output1>\max</output1>\r
-        <output2></output2>\r
-    </Max>\r
-    <Min>\r
-        <output1>\min</output1>\r
-        <output2></output2>\r
-    </Min>\r
-    <Determinant>\r
-        <output1>\det</output1>\r
-        <output2></output2>\r
-    </Determinant>\r
-    <Trace>\r
-        <output1>Tr</output1>\r
-        <output2></output2>\r
-    </Trace>\r
-    \r
-    \r
-    \r
-    <!--  Binary Operators  -->\r
-    <NotEqual>\r
-        <output1></output1>\r
-        <output2> \neq </output2>\r
-        <output3></output3>\r
-    </NotEqual>\r
-    <PlusMinus>\r
-        <output1></output1>\r
-        <output2> \pm </output2>\r
-        <output3></output3>\r
-    </PlusMinus> \r
-    <Assignment>\r
-        <output1></output1>\r
-        <output2>:=</output2>\r
-        <output3></output3>\r
-    </Assignment>\r
-    <Subtract>\r
-        <output1></output1>\r
-        <output2>-</output2>\r
-        <output3></output3>\r
-    </Subtract>\r
-    <Divide brackets="false">\r
-        <output1> \frac{</output1>\r
-        <output2>}{</output2>\r
-        <output3>} </output3>\r
-    </Divide>\r
-    <Divide2>       \r
-        <output1></output1>\r
-        <output2> \div </output2>\r
-        <output3></output3>\r
-    </Divide2>\r
-    <LessThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<]]></output2>\r
-        <output3></output3>\r
-    </LessThan>    \r
-    <GreaterThan>\r
-        <output1></output1>\r
-        <output2>></output2>\r
-        <output3></output3>\r
-    </GreaterThan>    \r
-    <LTEQ>\r
-        <output1></output1>\r
-        <output2> \le </output2>\r
-        <output3></output3>\r
-    </LTEQ>    \r
-    <GTEQ>\r
-        <output1></output1>\r
-        <output2> \ge </output2>\r
-        <output3></output3>\r
-    </GTEQ>    \r
-    <Subset>\r
-        <output1></output1>\r
-        <output2> \subset </output2>\r
-        <output3></output3>\r
-    </Subset>    \r
-    <SubsetEq>\r
-        <output1></output1>\r
-        <output2> \subseteq </output2>\r
-        <output3></output3>\r
-    </SubsetEq>    \r
-    <NSubset>\r
-        <output1></output1>\r
-        <output2> \not\subset </output2>\r
-        <output3></output3>\r
-    </NSubset> \r
-    <NSubsetEq>\r
-        <output1></output1>\r
-        <output2> \not\subseteq </output2>\r
-        <output3></output3>\r
-    </NSubsetEq>  \r
-    <Power>\r
-        <output1></output1>\r
-        <output2>^{</output2>\r
-        <output3>}</output3>\r
-    </Power>\r
-    <Subscript>\r
-        <output1></output1>\r
-        <output2>_{</output2>\r
-        <output3>}</output3>\r
-    </Subscript>  \r
-    <NthRoot reverse="true" brackets="false">\r
-        <output1> \sqrt[</output1>\r
-        <output2>]{</output2>\r
-        <output3>} </output3>\r
-    </NthRoot> \r
-    <Function>\r
-        <output1></output1>\r
-        <output2>\left(</output2>\r
-        <output3>\right)</output3>\r
-    </Function>\r
-    <LeftArrow>\r
-        <output1></output1>\r
-        <output2> \leftarrow </output2>\r
-        <output3></output3>\r
-    </LeftArrow> \r
-    <RightArrow>\r
-        <output1></output1>\r
-        <output2> \rightarrow </output2>\r
-        <output3></output3>\r
-    </RightArrow> \r
-    <UpArrow>\r
-        <output1></output1>\r
-        <output2> \uparrow </output2>\r
-        <output3></output3>\r
-    </UpArrow> \r
-    <DownArrow>\r
-        <output1></output1>\r
-        <output2> \downarrow </output2>\r
-        <output3></output3>\r
-    </DownArrow> \r
-    <LeftDblArrow>\r
-        <output1></output1>\r
-        <output2> \Leftarrow </output2>\r
-        <output3></output3>\r
-    </LeftDblArrow> \r
-    <RightDblArrow>\r
-        <output1></output1>\r
-        <output2> \Rightarrow </output2>\r
-        <output3></output3>\r
-    </RightDblArrow> \r
-    <LeftRightArrow>\r
-        <output1></output1>\r
-        <output2> \leftrightarrow </output2>\r
-        <output3></output3>\r
-    </LeftRightArrow> \r
-    <LeftRightDblArrow>\r
-        <output1></output1>\r
-        <output2> \Leftrightarrow </output2>\r
-        <output3></output3>\r
-    </LeftRightDblArrow>   \r
-    <NorthEastArrow>\r
-        <output1></output1>\r
-        <output2> \nearrow </output2>\r
-        <output3></output3>\r
-    </NorthEastArrow>          \r
-    <SouthEastArrow>\r
-        <output1></output1>\r
-        <output2> \searrow </output2>\r
-        <output3></output3>\r
-    </SouthEastArrow>    \r
-    <NorthWestArrow>        \r
-        <output1></output1>\r
-        <output2> \nwarrow </output2>\r
-        <output3></output3>\r
-    </NorthWestArrow>     \r
-    <SouthWestArrow>\r
-        <output1></output1>\r
-        <output2> \swarrow </output2>\r
-        <output3></output3>\r
-    </SouthWestArrow>     \r
-    \r
-    <Exists>\r
-        <output1></output1>\r
-        <output2> \exists </output2>\r
-        <output3></output3>\r
-    </Exists>\r
-    <ForAll>\r
-        <output1></output1>\r
-        <output2> \forall </output2>\r
-        <output3></output3>\r
-    </ForAll>\r
-    <IsIn>        \r
-        <output1></output1>\r
-        <output2> \epsilon </output2>\r
-        <output3></output3>\r
-    </IsIn>\r
-    <NotExists>\r
-        <output1></output1>\r
-        <output2> \not\exists </output2>\r
-        <output3></output3>\r
-    </NotExists>\r
-    <NotIn>\r
-        <output1></output1>\r
-        <output2> \not\epsilon </output2>\r
-        <output3></output3>\r
-    </NotIn>\r
-    <SimEq>\r
-        <output1></output1>\r
-        <output2> \simeq </output2>\r
-        <output3></output3>\r
-    </SimEq>\r
-    <Or>       \r
-        <output1></output1>\r
-        <output2> \vee </output2>\r
-        <output3></output3>\r
-    </Or>\r
-    <And>\r
-        <output1></output1>\r
-        <output2> \wedge </output2>\r
-        <output3></output3>\r
-    </And>\r
-    <Not>\r
-        <output1></output1>\r
-        <output2> \neg </output2>\r
-        <output3></output3>\r
-    </Not>\r
-    \r
-    \r
-    <!--  Nary Functions   -->\r
-    <Integral>\r
-        <output1> \int </output1>\r
-        <output2>\,d</output2>\r
-        <output3></output3>\r
-    </Integral>\r
-    <Differential order="1,0">\r
-        <output1> \frac{d}{d</output1>\r
-        <output2>}</output2>\r
-        <output3></output3>\r
-    </Differential>\r
-    <PartialDifferential order="1,0">\r
-        <output1> \frac{\partial}{\partial </output1>\r
-        <output2>}</output2>\r
-        <output3></output3>\r
-    </PartialDifferential>\r
-    <Sum order="1,2,3,0">\r
-        <output1> \sum_{{</output1>\r
-        <output2>}={</output2>\r
-        <output3>}}^{</output3>\r
-        <output4>}</output4>\r
-        <output5></output5>\r
-    </Sum>\r
-    <Product order="1,2,3,0">\r
-        <output1> \prod_{{</output1>\r
-        <output2>}={</output2>\r
-        <output3>}}^{</output3>\r
-        <output4>}</output4>\r
-        <output5></output5>\r
-    </Product>\r
-    <Limit order="1,2,0">\r
-        <output1> \lim_{</output1>\r
-        <output2>\to</output2>\r
-        <output3>}</output3>\r
-        <output4></output4>\r
-    </Limit>\r
-    <Evaluate>\r
-        <output1></output1>\r
-        <output2>\left|_{{</output2>\r
-        <output3>}={</output3>\r
-        <output4>}}</output4>\r
-    </Evaluate>\r
-    <DefiniteIntegral order="2,3,0,1">\r
-        <output1> \int_{</output1>\r
-        <output2>}^{</output2>\r
-        <output3>}</output3>\r
-        <output4>\,d</output4>\r
-        <output5></output5>\r
-    </DefiniteIntegral>\r
-    \r
-    \r
-    \r
-    <!--  Matrix   -->\r
-    <Matrix>\r
-        <matrixStart> \left( \begin{array}{ccc} </matrixStart>\r
-        <rowStart></rowStart>\r
-        <elementStart></elementStart>\r
-        <elementEnd></elementEnd>\r
-        <elementSeparator><![CDATA[ & ]]></elementSeparator>\r
-        <rowEnd>\\</rowEnd>\r
-        <rowSeparator></rowSeparator>\r
-        <matrixEnd> \end{array} \right) </matrixEnd>\r
-    </Matrix>\r
-    \r
-    \r
-    \r
-    <!--  Grouping  -->\r
-    <BracketsRnd>\r
-        <output1>\left(</output1>\r
-        <output2>\right)</output2>\r
-    </BracketsRnd>\r
-    <BracketsCurl>\r
-        <output1>\{</output1>\r
-        <output2>\}</output2>\r
-    </BracketsCurl>\r
-    <BracketsSq>\r
-        <output1>\left[</output1>\r
-        <output2>\right]</output2>\r
-    </BracketsSq>\r
-    <Abs>\r
-        <output1>\left|</output1>\r
-        <output2>\right|</output2>\r
-    </Abs>\r
-    \r
-    \r
-    \r
-    <!--  Symbols   -->\r
-    <Infinity>\r
-        <output>\infty</output>\r
-    </Infinity>\r
-    \r
-    \r
-    <Γ>\r
-        <output> \Gamma </output>\r
-    </Γ>\r
-    <Δ>\r
-        <output> \Delta </output>\r
-    </Δ>\r
-    <Θ>\r
-        <output> \Theta </output>\r
-    </Θ>\r
-    <Λ>\r
-        <output> \Lamda </output>\r
-    </Λ>\r
-    <Ξ>\r
-        <output> \Xi </output>\r
-    </Ξ>\r
-    <Π>\r
-        <output> \Pi </output>\r
-    </Π>\r
-    <Σ>\r
-        <output> \Sigma </output>\r
-    </Σ>\r
-    <Υ>\r
-        <output> \Upsilon </output>\r
-    </Υ>\r
-    <Φ>\r
-        <output> \Phi </output>\r
-    </Φ>\r
-    <Ψ>\r
-        <output> \Psi </output>\r
-    </Ψ>\r
-    <Ω>\r
-        <output> \Omega </output>\r
-    </Ω>\r
-    \r
-    \r
-    <α>\r
-        <output> \alpha </output>\r
-    </α>\r
-    <β>\r
-        <output> \beta </output>\r
-    </β>\r
-    <γ>\r
-        <output> \gamma </output>\r
-    </γ>\r
-    <δ>\r
-        <output> \delta </output>\r
-    </δ>\r
-    <ε>\r
-        <output> \epsilon </output>\r
-    </ε>\r
-    <ζ>\r
-        <output> \zeta </output>\r
-    </ζ>\r
-    <η>\r
-        <output> \eta </output>\r
-    </η>\r
-    <θ>\r
-        <output> \theta </output>\r
-    </θ>\r
-    <ι>\r
-        <output> \iota </output>\r
-    </ι>\r
-    <κ>\r
-        <output> \kappa </output>\r
-    </κ>\r
-    <λ>\r
-        <output> \lambda </output>\r
-    </λ>\r
-    <μ>\r
-        <output> \mu </output>\r
-    </μ>\r
-    <ν>\r
-        <output> \nu </output>\r
-    </ν>\r
-    <ξ>\r
-        <output> \xi </output>\r
-    </ξ>\r
-    <π>\r
-        <output> \pi </output>\r
-    </π>\r
-    <ρ>\r
-        <output> \rho </output>\r
-    </ρ>\r
-    <σ>\r
-        <output> \sigma </output>\r
-    </σ>\r
-    <τ>\r
-        <output> \tau </output>\r
-    </τ>\r
-    <υ>\r
-        <output> \upsilon </output>\r
-    </υ>\r
-    <φ>\r
-        <output> \phi </output>\r
-    </φ>\r
-    <χ>\r
-        <output> \chi </output>\r
-    </χ>\r
-    <ψ>\r
-        <output> \psi </output>\r
-    </ψ> \r
-    <ω>\r
-        <output> \omega </output>\r
-    </ω>\r
-    \r
-</Syntax>\r
diff --git a/lib/editor/common/dragmath/applet/classes/formats/Maple.xml b/lib/editor/common/dragmath/applet/classes/formats/Maple.xml
deleted file mode 100644 (file)
index 7b42b78..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<Syntax>\r
-    <name AutoBrackets="true">Maple</name>\r
-    \r
-    <Initial>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Initial>\r
-    <Text>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Text>\r
-    <Variable>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Variable>\r
-    <RealNumber>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </RealNumber>\r
-    \r
-    \r
-    <!--  Nary Operators   --> \r
-    <Add>\r
-        <output>+</output>\r
-    </Add>\r
-    <Multiply>\r
-        <output>*</output>\r
-    </Multiply>\r
-    <Multiply2>\r
-        <output>*</output>\r
-    </Multiply2>\r
-    <Equals>\r
-        <output>=</output>\r
-    </Equals>\r
-    <Union>\r
-        <output> union </output>\r
-    </Union>\r
-    <Intersection>\r
-        <output> intersect </output>\r
-    </Intersection>\r
-    <Comma>\r
-        <output>,</output>\r
-    </Comma>\r
-    <Equiv>\r
-        <output>≡</output>\r
-    </Equiv>\r
-    \r
-    \r
-    \r
-    <!--  Functions   --> \r
-    <UMinus>\r
-        <output1>-</output1>\r
-        <output2></output2>\r
-    </UMinus>\r
-    <Factorial>\r
-        <output1>factorial</output1>\r
-        <output2></output2>\r
-    </Factorial>\r
-    <NaturalLogarithm>\r
-        <output1>ln</output1>\r
-        <output2></output2>\r
-    </NaturalLogarithm>\r
-    <Logarithm>\r
-        <output1>log</output1>\r
-        <output2></output2>\r
-    </Logarithm>\r
-    <Sine>\r
-        <output1>sin</output1>\r
-        <output2></output2>\r
-    </Sine>\r
-    <Cosine>\r
-        <output1>cos</output1>\r
-        <output2></output2>\r
-    </Cosine>\r
-    <Tangent>\r
-        <output1>tan</output1>\r
-        <output2></output2>\r
-    </Tangent>\r
-    <ArcSine>\r
-        <output1>arcsin</output1>\r
-        <output2></output2>\r
-    </ArcSine>\r
-    <ArcCosine>\r
-        <output1>arccos</output1>\r
-        <output2></output2>\r
-    </ArcCosine>\r
-    <ArcTangent>\r
-        <output1>arctan</output1>\r
-        <output2></output2>\r
-    </ArcTangent>\r
-    <SineH>\r
-        <output1>sinh</output1>\r
-        <output2></output2>\r
-    </SineH>\r
-    <CosineH>\r
-        <output1>cosh</output1>\r
-        <output2></output2>\r
-    </CosineH>\r
-    <TanH>\r
-        <output1>tanh</output1>\r
-        <output2></output2>\r
-    </TanH>\r
-    <ArcSineH>\r
-        <output1>arcsinh</output1>\r
-        <output2></output2>\r
-    </ArcSineH>\r
-    <ArcCosineH>\r
-        <output1>arccosh</output1>\r
-        <output2></output2>\r
-    </ArcCosineH>\r
-    <ArcTanH>\r
-        <output1>arctanh</output1>\r
-        <output2></output2>\r
-    </ArcTanH>\r
-    <SquareRoot>\r
-        <output1>sqrt</output1>\r
-        <output2></output2>\r
-    </SquareRoot>\r
-    <Exp>\r
-        <output1>exp</output1>\r
-        <output2></output2>\r
-    </Exp>\r
-    <Max>\r
-        <output1>max</output1>\r
-        <output2></output2>\r
-    </Max>\r
-    <Min>\r
-        <output1>min</output1>\r
-        <output2></output2>\r
-    </Min>\r
-    <Determinant>\r
-        <output1>det</output1>\r
-        <output2></output2>\r
-    </Determinant>\r
-    <Trace>\r
-        <output1>trace</output1>\r
-        <output2></output2>\r
-    </Trace>\r
-    \r
-    \r
-    \r
-    <!--  Binary Operators   --> \r
-    <NotEqual>\r
-        <output1></output1>\r
-        <output2>≠</output2>\r
-        <output3></output3>\r
-    </NotEqual>\r
-    <PlusMinus>\r
-        <output1></output1>\r
-        <output2>±</output2>\r
-        <output3></output3>\r
-    </PlusMinus>\r
-    <Assignment>\r
-        <output1></output1>\r
-        <output2>:=</output2>\r
-        <output3></output3>\r
-    </Assignment>\r
-    <Subtract>\r
-        <output1></output1>\r
-        <output2>-</output2>\r
-        <output3></output3>\r
-    </Subtract>\r
-    <Divide>\r
-        <output1></output1>\r
-        <output2>/</output2>\r
-        <output3></output3>\r
-    </Divide>   \r
-    <Divide2>\r
-        <output1></output1>\r
-        <output2>/</output2>\r
-        <output3></output3>\r
-    </Divide2>   \r
-    <LessThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<]]></output2>\r
-        <output3></output3>\r
-    </LessThan>    \r
-    <GreaterThan>\r
-        <output1></output1>\r
-        <output2>></output2>\r
-        <output3></output3>\r
-    </GreaterThan>    \r
-    <LTEQ>\r
-        <output1></output1>\r
-        <output2><![CDATA[<=]]></output2>\r
-        <output3></output3>\r
-    </LTEQ>    \r
-    <GTEQ>\r
-        <output1></output1>\r
-        <output2>>=</output2>\r
-        <output3></output3>\r
-    </GTEQ>    \r
-    <Subset>\r
-        <output1>`subset`(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </Subset>    \r
-    <SubsetEq>\r
-        <output1>`subset`(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </SubsetEq>    \r
-    <NSubset>\r
-        <output1>not `subset`(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </NSubset> \r
-    <NSubsetEq>\r
-        <output1>not `subset`(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </NSubsetEq>  \r
-    <Power>\r
-        <output1></output1>\r
-        <output2>^</output2>\r
-        <output3></output3>\r
-    </Power>\r
-    <Subscript>\r
-        <output1></output1>\r
-        <output2>[</output2>\r
-        <output3>]</output3>\r
-    </Subscript>  \r
-    <NthRoot>\r
-        <output1>surd(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </NthRoot>\r
-    <Function>\r
-        <output1></output1>\r
-        <output2>(</output2>\r
-        <output3>)</output3>\r
-    </Function>\r
-    <LeftArrow>\r
-        <output1></output1>\r
-        <output2>←</output2>\r
-        <output3></output3>\r
-    </LeftArrow> \r
-    <RightArrow>\r
-        <output1></output1>\r
-        <output2>→</output2>\r
-        <output3></output3>\r
-    </RightArrow> \r
-    <UpArrow>\r
-        <output1></output1>\r
-        <output2>↑</output2>\r
-        <output3></output3>\r
-    </UpArrow> \r
-    <DownArrow>\r
-        <output1></output1>\r
-        <output2>↓</output2>\r
-        <output3></output3>\r
-    </DownArrow> \r
-    <LeftDblArrow>\r
-        <output1></output1>\r
-        <output2>⇐</output2>\r
-        <output3></output3>\r
-    </LeftDblArrow> \r
-    <RightDblArrow>\r
-        <output1></output1>\r
-        <output2>⇒</output2>\r
-        <output3></output3>\r
-    </RightDblArrow> \r
-    <LeftRightArrow>\r
-        <output1></output1>\r
-        <output2>↔</output2>\r
-        <output3></output3>\r
-    </LeftRightArrow> \r
-    <LeftRightDblArrow>\r
-        <output1></output1>\r
-        <output2>⇔</output2>\r
-        <output3></output3>\r
-    </LeftRightDblArrow>   \r
-    <NorthEastArrow>\r
-        <output1></output1>\r
-        <output2>↗</output2>\r
-        <output3></output3>\r
-    </NorthEastArrow>          \r
-    <SouthEastArrow>\r
-        <output1></output1>\r
-        <output2>↘</output2>\r
-        <output3></output3>\r
-    </SouthEastArrow>    \r
-    <NorthWestArrow>        \r
-        <output1></output1>\r
-        <output2>↖</output2>\r
-        <output3></output3>\r
-    </NorthWestArrow>     \r
-    <SouthWestArrow>\r
-        <output1></output1>\r
-        <output2>↙</output2>\r
-        <output3></output3>\r
-    </SouthWestArrow>     \r
-    \r
-    <Exists>\r
-        <output1></output1>\r
-        <output2>∃</output2>\r
-        <output3></output3>\r
-    </Exists>\r
-    <ForAll>\r
-        <output1></output1>\r
-        <output2>∀</output2>\r
-        <output3></output3>\r
-    </ForAll>\r
-    <IsIn>        \r
-        <output1></output1>\r
-        <output2>∈</output2>\r
-        <output3></output3>\r
-    </IsIn>\r
-    <NotExists>\r
-        <output1></output1>\r
-        <output2>∄</output2>\r
-        <output3></output3>\r
-    </NotExists>\r
-    <NotIn>\r
-        <output1></output1>\r
-        <output2>∉</output2>\r
-        <output3></output3>\r
-    </NotIn>\r
-    <SimEq>\r
-        <output1></output1>\r
-        <output2>≃</output2>\r
-        <output3></output3>\r
-    </SimEq>\r
-    <Or>       \r
-        <output1></output1>\r
-        <output2>∨</output2>\r
-        <output3></output3>\r
-    </Or>\r
-    <And>\r
-        <output1></output1>\r
-        <output2>∧</output2>\r
-        <output3></output3>\r
-    </And>\r
-    <Not>\r
-        <output1></output1>\r
-        <output2>¬</output2>\r
-        <output3></output3>\r
-    </Not>\r
-    \r
-    \r
-    <!--  Nary Functions   --> \r
-    <Integral>\r
-        <output1>int(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </Integral>\r
-    <Differential>\r
-        <output1>diff(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </Differential>\r
-    <PartialDifferential>\r
-        <output1>diff(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </PartialDifferential>\r
-    <Sum>\r
-        <output1>sum(</output1>\r
-        <output2>,</output2>\r
-        <output3>=</output3>\r
-        <output4>..</output4>\r
-        <output5>)</output5>\r
-    </Sum>\r
-    <Product>\r
-        <output1>product(</output1>\r
-        <output2>,</output2>\r
-        <output3>=</output3>\r
-        <output4>..</output4>\r
-        <output5>)</output5>\r
-    </Product>\r
-    <Limit>\r
-        <output1>limit(</output1>\r
-        <output2>,</output2>\r
-        <output3>=</output3>\r
-        <output4>)</output4>\r
-    </Limit>\r
-    <Evaluate order="2,3,1">\r
-        <output1>subs(</output1>\r
-        <output2>=</output2>\r
-        <output3>,</output3>\r
-        <output4>)</output4>\r
-    </Evaluate>\r
-    <DefiniteIntegral>\r
-        <output1>int(</output1>\r
-        <output2>,</output2>\r
-        <output3>=</output3>\r
-        <output4>..</output4>\r
-        <output5>)</output5>\r
-    </DefiniteIntegral>\r
-    \r
-    \r
-    \r
-    <!--  Matrix   --> \r
-    <Matrix>\r
-        <matrixStart>Matrix([</matrixStart>\r
-        <rowStart>[</rowStart>\r
-        <elementStart></elementStart>\r
-        <elementEnd></elementEnd>\r
-        <elementSeparator>,</elementSeparator>\r
-        <rowEnd>]</rowEnd>\r
-        <rowSeparator>,</rowSeparator>\r
-        <matrixEnd>])</matrixEnd>\r
-    </Matrix>\r
-    \r
-    \r
-    \r
-    <!--  Grouping   --> \r
-    <BracketsRnd>\r
-        <output1>(</output1>\r
-        <output2>)</output2>\r
-    </BracketsRnd>\r
-    <BracketsCurl>\r
-        <output1>{</output1>\r
-        <output2>}</output2>\r
-    </BracketsCurl>\r
-    <BracketsSq>\r
-        <output1>[</output1>\r
-        <output2>]</output2>\r
-    </BracketsSq>\r
-    <Abs>\r
-        <output1>abs(</output1>\r
-        <output2>)</output2>\r
-    </Abs>\r
-    \r
-    \r
-    \r
-    <!--  Symbols  --> \r
-    <Infinity>\r
-        <output>infinity</output>\r
-    </Infinity>\r
-    \r
-    <Γ>\r
-        <output> Gamma </output>\r
-    </Γ>\r
-    <Δ>\r
-        <output> Delta </output>\r
-    </Δ>\r
-    <Θ>\r
-        <output> Theta </output>\r
-    </Θ>\r
-    <Λ>\r
-        <output> Lamda </output>\r
-    </Λ>\r
-    <Ξ>\r
-        <output> Xi </output>\r
-    </Ξ>\r
-    <Π>\r
-        <output> PI </output>\r
-    </Π>\r
-    <Σ>\r
-        <output> Sigma </output>\r
-    </Σ>\r
-    <Υ>\r
-        <output> Upsilon </output>\r
-    </Υ>\r
-    <Φ>\r
-        <output> Phi </output>\r
-    </Φ>\r
-    <Ψ>\r
-        <output> Psi </output>\r
-    </Ψ>\r
-    <Ω>\r
-        <output> Omega </output>\r
-    </Ω>\r
-    \r
-    \r
-    <α>\r
-        <output> alpha </output>\r
-    </α>\r
-    <β>\r
-        <output> beta </output>\r
-    </β>\r
-    <γ>\r
-        <output> gamma </output>\r
-    </γ>\r
-    <δ>\r
-        <output> delta </output>\r
-    </δ>\r
-    <ε>\r
-        <output> epsilon </output>\r
-    </ε>\r
-    <ζ>\r
-        <output> zeta </output>\r
-    </ζ>\r
-    <η>\r
-        <output> eta </output>\r
-    </η>\r
-    <θ>\r
-        <output> theta </output>\r
-    </θ>\r
-    <ι>\r
-        <output> iota </output>\r
-    </ι>\r
-    <κ>\r
-        <output> kappa </output>\r
-    </κ>\r
-    <λ>\r
-        <output> lambda </output>\r
-    </λ>\r
-    <μ>\r
-        <output> mu </output>\r
-    </μ>\r
-    <ν>\r
-        <output> nu </output>\r
-    </ν>\r
-    <ξ>\r
-        <output> xi </output>\r
-    </ξ>\r
-    <π>\r
-        <output> Pi </output>\r
-    </π>\r
-    <ρ>\r
-        <output> rho </output>\r
-    </ρ>\r
-    <σ>\r
-        <output> sigma </output>\r
-    </σ>\r
-    <τ>\r
-        <output> tau </output>\r
-    </τ>\r
-    <υ>\r
-        <output> upsilon </output>\r
-    </υ>\r
-    <φ>\r
-        <output> phi </output>\r
-    </φ>\r
-    <χ>\r
-        <output> chi </output>\r
-    </χ>\r
-    <ψ>\r
-        <output> psi </output>\r
-    </ψ> \r
-    <ω>\r
-        <output> omega </output>\r
-    </ω>\r
-    \r
-</Syntax>\r
diff --git a/lib/editor/common/dragmath/applet/classes/formats/MathML.xml b/lib/editor/common/dragmath/applet/classes/formats/MathML.xml
deleted file mode 100644 (file)
index f70367c..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<Syntax>\r
-    <name AutoBrackets="false">MathML</name>\r
-    \r
-    <Initial> \r
-        <output1><![CDATA[ <math xmlns="http://www.w3.org/1998/Math/MathML"> ]]></output1>\r
-        <output2><![CDATA[</math>]]></output2>\r
-    </Initial>\r
-    <Text>\r
-        <output1><![CDATA[<mtext>]]></output1>\r
-        <output2><![CDATA[</mtext>]]></output2>\r
-    </Text>\r
-    <Variable>\r
-        <output1><![CDATA[<mi>]]></output1>\r
-        <output2><![CDATA[</mi>]]></output2>\r
-    </Variable>\r
-    <RealNumber>\r
-        <output1><![CDATA[<mn>]]></output1>\r
-        <output2><![CDATA[</mn>]]></output2>\r
-    </RealNumber>\r
-    \r
-    \r
-    \r
-    <!--  Nary Operators   -->\r
-    <Add>\r
-        <output><![CDATA[<mo> &plus; </mo>]]></output>           \r
-    </Add>\r
-    <Multiply>\r
-        <output><![CDATA[<mo> &sdot; </mo>]]></output>\r
-    </Multiply>  \r
-    <Multiply2>\r
-        <output><![CDATA[<mo> &times; </mo>]]></output>\r
-    </Multiply2>\r
-    <Equals>\r
-        <output><![CDATA[<mo> &equals; </mo>]]></output>\r
-    </Equals>\r
-    <Union>\r
-        <output><![CDATA[<mo> &Union; </mo>]]></output>\r
-    </Union>\r
-    <Intersection>\r
-        <output><![CDATA[<mo> &Intersection; </mo>]]></output>\r
-    </Intersection>\r
-    <Comma>\r
-        <output><![CDATA[<mo> &comma; </mo>]]></output>\r
-    </Comma>\r
-    <Equiv>\r
-        <output><![CDATA[ <mo> &equiv; </mo>]]></output>\r
-    </Equiv>\r
-    \r
-    \r
-    \r
-    <!--  Functions   -->\r
-    <UMinus>\r
-        <output1><![CDATA[<mo> &minus; </mo]]></output1>\r
-        <output2></output2>\r
-    </UMinus>   \r
-    <Factorial brackets="false">\r
-        <output1><![CDATA[<mrow>]]></output1>\r
-        <output2><![CDATA[<mo>!</mo></mrow>]]></output2>\r
-    </Factorial>\r
-    <NaturalLogarithm>\r
-        <output1><![CDATA[<mi> ln </mi>]]></output1>\r
-        <output2></output2>\r
-    </NaturalLogarithm>\r
-    <Logarithm>\r
-        <output1><![CDATA[<mi> log </mi>]]></output1>\r
-        <output2></output2>\r
-    </Logarithm>\r
-    <Sine>\r
-        <output1><![CDATA[<mi> sin </mi>]]></output1>\r
-        <output2></output2>\r
-    </Sine>\r
-    <Cosine>\r
-        <output1><![CDATA[<mi> cos </mi>]]></output1>\r
-        <output2></output2>\r
-    </Cosine>\r
-    <Tangent>\r
-        <output1><![CDATA[<mi> tan </mi>]]></output1>\r
-        <output2></output2>\r
-    </Tangent>\r
-    <ArcSine>\r
-        <output1><![CDATA[ <msup> <mrow><mi>sin</mi></mrow><mrow><mn>-1</mn></mrow></msup> ]]></output1>\r
-        <output2></output2>\r
-    </ArcSine>\r
-    <ArcCosine>\r
-        <output1><![CDATA[ <msup> <mrow><mi>cos</mi></mrow><mrow><mn>-1</mn></mrow></msup> ]]></output1>\r
-        <output2></output2>\r
-    </ArcCosine>\r
-    <ArcTangent>\r
-        <output1><![CDATA[ <msup> <mrow><mi>tan</mi></mrow><mrow><mn>-1</mn></mrow></msup> ]]></output1>\r
-        <output2></output2>\r
-    </ArcTangent>\r
-    <SineH>\r
-        <output1><![CDATA[<mi> sinh </mi>]]></output1>\r
-        <output2></output2>\r
-    </SineH>\r
-    <CosineH>\r
-        <output1><![CDATA[<mi> cosh </mi>]]></output1>\r
-        <output2></output2>\r
-    </CosineH>\r
-    <TanH>\r
-        <output1><![CDATA[<mi> tanh </mi>]]></output1>\r
-        <output2></output2>\r
-    </TanH>\r
-    <ArcSineH>\r
-        <output1><![CDATA[ <msup> <mrow><mi>sinh</mi></mrow><mrow><mn>-1</mn></mrow></msup> ]]></output1>\r
-        <output2></output2>\r
-    </ArcSineH>\r
-    <ArcCosineH>\r
-        <output1><![CDATA[ <msup> <mrow><mi>cosh</mi></mrow><mrow><mn>-1</mn></mrow></msup> ]]></output1>\r
-        <output2></output2>\r
-    </ArcCosineH>\r
-    <ArcTanH>\r
-        <output1><![CDATA[ <msup> <mrow><mi>tanh</mi></mrow><mrow><mn>-1</mn></mrow></msup> ]]></output1>\r
-        <output2></output2>\r
-    </ArcTanH>\r
-    <SquareRoot brackets="false">\r
-        <output1><![CDATA[<msqrt> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> </msqrt>]]></output2>\r
-    </SquareRoot>\r
-    <Exp brackets="false">\r
-        <output1><![CDATA[ <msup> <mrow><mtext>e</mtext></mrow> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> </msup>]]></output2>\r
-    </Exp>\r
-    <Max>\r
-        <output1><![CDATA[<mi> max </mi>]]></output1>\r
-        <output2></output2>\r
-    </Max>\r
-    <Min>\r
-        <output1><![CDATA[<mi> min </mi>]]></output1>\r
-        <output2></output2>\r
-    </Min>\r
-    <Determinant>\r
-        <output1><![CDATA[<mi> det </mi>]]></output1>\r
-        <output2></output2>\r
-    </Determinant>\r
-    <Trace>\r
-        <output1><![CDATA[<mi> trace </mi>]]></output1>\r
-        <output2></output2>\r
-    </Trace>\r
-    \r
-    \r
-    \r
-    <!--  Binary Operators   -->\r
-    <NotEqual>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &ne; </mo>]]></output2>\r
-        <output3></output3>\r
-    </NotEqual>\r
-    <PlusMinus>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &PlusMinus; </mo>]]></output2>\r
-        <output3></output3>\r
-    </PlusMinus>\r
-    <Assignment>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &Assign; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Assignment>\r
-    <Subtract>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &minus; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Subtract>\r
-    <Divide brackets="false">\r
-        <output1><![CDATA[<mfrac> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </mfrac>]]></output3>\r
-    </Divide>\r
-    <Divide2>       \r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &divide; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Divide2>\r
-    <LessThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &lt; </mo>]]></output2>\r
-        <output3></output3>\r
-    </LessThan>   \r
-    <GreaterThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &gt; </mo>]]></output2>\r
-        <output3></output3>\r
-    </GreaterThan>  \r
-    <LTEQ>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &leq; </mo>]]></output2>\r
-        <output3></output3>\r
-    </LTEQ> \r
-    <GTEQ>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &geq; </mo>]]></output2>\r
-        <output3></output3>\r
-    </GTEQ> \r
-    <Subset>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &subset; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Subset>  \r
-    <SubsetEq>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &subseteq; </mo>]]></output2>\r
-        <output3></output3>\r
-    </SubsetEq>  \r
-    <NSubset>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &nsub; </mo>  ]]></output2>\r
-        <output3></output3>\r
-    </NSubset> \r
-    <NSubsetEq>\r
-        <output1></output1>\r
-        <output2><![CDATA[<mo> &nsubseteq; </mo>]]></output2>\r
-        <output3></output3>\r
-    </NSubsetEq> \r
-    <Power>\r
-        <output1><![CDATA[<msup> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </msup>]]></output3>\r
-    </Power>\r
-    <Subscript>\r
-        <output1><![CDATA[<msub> <mrow>]]></output1>\r
-        <output2><![CDATA[ </mrow> <mrow> ]]></output2>\r
-        <output3><![CDATA[ </mrow> </msub>]]></output3>\r
-    </Subscript> \r
-    <NthRoot brackets="false">\r
-        <output1><![CDATA[<mroot> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </mroot>]]></output3>\r
-    </NthRoot>  \r
-    <Function>\r
-        <output1><![CDATA[<mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> <mfenced> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </mfenced>]]></output3>\r
-    </Function>\r
-    \r
-    \r
-    <!--  Nary Functions   -->\r
-    <Integral>\r
-        <output1><![CDATA[<mrow><mo>&int;</mo> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> <mo>&DifferentialD;</mo> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </mrow>]]></output3>\r
-    </Integral>\r
-    <Differential order="1,0">\r
-        <output1><![CDATA[<mrow> <mfrac> <mrow><mo>&DifferentialD;</mo></mrow> <mrow><mo>&DifferentialD;</mo>]]></output1>\r
-        <output2><![CDATA[</mrow> </mfrac> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </mrow>]]></output3>\r
-    </Differential>\r
-    <PartialDifferential order="1,0">\r
-        <output1><![CDATA[<mrow> <mfrac> <mrow><mo>&part;</mo></mrow> <mrow><mo>&part;</mo>]]></output1>\r
-        <output2><![CDATA[</mrow> </mfrac> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow> </mrow>]]></output3>\r
-    </PartialDifferential>\r
-    <Sum order="1,2,3,0">\r
-        <output1><![CDATA[<mrow> <munderover> <mo>&sum;</mo> <mrow>]]></output1>\r
-        <output2><![CDATA[ <mo> &equals; </mo>]]></output2>\r
-        <output3><![CDATA[</mrow> <mrow>]]></output3>\r
-        <output4><![CDATA[</mrow> </munderover> <mrow>]]></output4>\r
-        <output5><![CDATA[</mrow> </mrow>]]></output5>\r
-    </Sum>\r
-    <Product order="1,2,3,0">\r
-        <output1><![CDATA[<mrow> <munderover> <mo>&prod;</mo> <mrow>]]></output1>\r
-        <output2><![CDATA[<mo> &equals; </mo>]]></output2>\r
-        <output3><![CDATA[</mrow> <mrow>]]></output3>\r
-        <output4><![CDATA[</mrow> </munderover> <mrow>]]></output4>\r
-        <output5><![CDATA[</mrow> </mrow>]]></output5>\r
-    </Product>\r
-    <Limit order="1,2,0">\r
-        <output1><![CDATA[<mrow> <munder> <mrow> <mi>lim</mi> </mrow> <mrow>]]></output1>\r
-        <output2><![CDATA[ <mo>&rarr;</mo> ]]></output2>\r
-        <output3><![CDATA[</mrow> </munder> <mrow>]]></output3>\r
-        <output4><![CDATA[</mrow> </mrow>]]></output4>\r
-    </Limit>\r
-    <Evaluate>\r
-        <output1></output1>\r
-        <output2><![CDATA[<msub> <mrow> <mi>|</mi> </mrow> <mrow>]]></output2>\r
-        <output3><![CDATA[ <mo> &equals; </mo>]]></output3>\r
-        <output4><![CDATA[ </mrow> </msub>]]></output4>\r
-    </Evaluate>\r
-    <DefiniteIntegral order="2,3,0,1">\r
-        <output1><![CDATA[<mrow> <msubsup> <mo>&int;</mo> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> <mrow>]]></output2>\r
-        <output3><![CDATA[</mrow>  </msubsup> <mrow>]]></output3>\r
-        <output4><![CDATA[</mrow> <mo>&DifferentialD;</mo> <mrow>]]></output4>\r
-        <output5><![CDATA[</mrow> </mrow>]]></output5>\r
-    </DefiniteIntegral>\r
-    <LeftArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &larr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </LeftArrow> \r
-    <RightArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &rarr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </RightArrow> \r
-    <UpArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &uarr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </UpArrow> \r
-    <DownArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &darr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </DownArrow> \r
-    <LeftDblArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &lArr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </LeftDblArrow> \r
-    <RightDblArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &rArr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </RightDblArrow> \r
-    <LeftRightArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &harr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </LeftRightArrow> \r
-    <LeftRightDblArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &hArr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </LeftRightDblArrow>   \r
-    <NorthEastArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &nearr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </NorthEastArrow>          \r
-    <SouthEastArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &searr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </SouthEastArrow>    \r
-    <NorthWestArrow>        \r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &nwarr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </NorthWestArrow>     \r
-    <SouthWestArrow>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &swarr; </mo>]]></output2>\r
-        <output3></output3>\r
-    </SouthWestArrow>     \r
-    \r
-    <Exists>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &exist; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Exists>\r
-    <ForAll>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &forall; </mo>]]></output2>\r
-        <output3></output3>\r
-    </ForAll>\r
-    <IsIn>        \r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &isin; </mo>]]></output2>\r
-        <output3></output3>\r
-    </IsIn>\r
-    <NotExists>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &nexists; </mo>]]></output2>\r
-        <output3></output3>\r
-    </NotExists>\r
-    <NotIn>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &notin; </mo>]]></output2>\r
-        <output3></output3>\r
-    </NotIn>\r
-    <SimEq>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &simeq; </mo>]]></output2>\r
-        <output3></output3>\r
-    </SimEq>\r
-    <Or>       \r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &or; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Or>\r
-    <And>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &and; </mo>]]></output2>\r
-        <output3></output3>\r
-    </And>\r
-    <Not>\r
-        <output1></output1>\r
-        <output2><![CDATA[ <mo> &not; </mo>]]></output2>\r
-        <output3></output3>\r
-    </Not>\r
-    \r
-    \r
-    \r
-    <!--  Grouping   -->\r
-    <BracketsRnd>\r
-        <output1><![CDATA[<mfenced> <mrow>]]></output1>\r
-        <output2><![CDATA[</mrow> </mfenced>]]></output2>\r
-    </BracketsRnd>\r
-    <BracketsCurl>\r
-        <output1><![CDATA[<mfenced open="{" close="}"><mrow>]]></output1>\r
-        <output2><![CDATA[</mrow></mfenced>]]></output2>\r
-    </BracketsCurl>\r
-    <BracketsSq>\r
-        <output1><![CDATA[<mfenced open="[" close="]"><mrow>]]></output1>\r
-        <output2><![CDATA[</mrow></mfenced>]]></output2>\r
-    </BracketsSq>\r
-    <Abs>\r
-        <output1><![CDATA[<mfenced open="|" close="|"><mrow>]]></output1>\r
-        <output2><![CDATA[</mrow></mfenced>]]></output2>\r
-    </Abs>\r
-    \r
-    \r
-    \r
-    <!--  Matrix   -->\r
-    <Matrix>\r
-        <matrixStart><![CDATA[<mfenced open="[" close="]"><mtable>]]></matrixStart>\r
-        <rowStart><![CDATA[<mtr>]]></rowStart>\r
-        <elementStart><![CDATA[<mtd>]]></elementStart>\r
-        <elementEnd><![CDATA[</mtd>]]></elementEnd>\r
-        <elementSeparator></elementSeparator>\r
-        <rowEnd><![CDATA[</mtr>]]></rowEnd>\r
-        <rowSeparator></rowSeparator>\r
-        <matrixEnd><![CDATA[</mtable></mfenced>]]></matrixEnd>\r
-    </Matrix>\r
-    \r
-    \r
-    \r
-    <!--  Symbols   -->\r
-    <Infinity>\r
-        <output><![CDATA[<mi> &infin; </mi>]]></output>\r
-    </Infinity>\r
-    \r
-    <Γ>\r
-        <output> <![CDATA[<mi> &Gamma; </mi>]]> </output>\r
-    </Γ>\r
-    <Δ>\r
-        <output> <![CDATA[<mi> &Delta; </mi>]]> </output>\r
-    </Δ>\r
-    <Θ>\r
-        <output> <![CDATA[<mi> &Theta; </mi>]]> </output>\r
-    </Θ>\r
-    <Λ>\r
-        <output> <![CDATA[<mi> &Lamda; </mi>]]> </output>\r
-    </Λ>\r
-    <Ξ>\r
-        <output> <![CDATA[<mi> &Xi; </mi>]]> </output>\r
-    </Ξ>\r
-    <Π>\r
-        <output> <![CDATA[<mi> &Pi; </mi>]]> </output>\r
-    </Π>\r
-    <Σ>\r
-        <output> <![CDATA[<mi> &Sigma; </mi>]]> </output>\r
-    </Σ>\r
-    <Υ>\r
-        <output> <![CDATA[<mi> &Upsilon; </mi>]]> </output>\r
-    </Υ>\r
-    <Φ>\r
-        <output> <![CDATA[<mi> &Phi; </mi>]]> </output>\r
-    </Φ>\r
-    <Ψ>\r
-        <output> <![CDATA[<mi> &Psi; </mi>]]> </output>\r
-    </Ψ>\r
-    <Ω>\r
-        <output> <![CDATA[<mi> &Omega; </mi>]]> </output>\r
-    </Ω>\r
-    \r
-    \r
-    <α>\r
-        <output> <![CDATA[<mi> &alpha; </mi>]]> </output>\r
-    </α>\r
-    <β>\r
-        <output> <![CDATA[<mi> &beta; </mi>]]> </output>\r
-    </β>\r
-    <γ>\r
-        <output> <![CDATA[<mi> &gamma; </mi>]]> </output>\r
-    </γ>\r
-    <δ>\r
-        <output> <![CDATA[<mi> &delta; </mi>]]> </output>\r
-    </δ>\r
-    <ε>\r
-        <output> <![CDATA[<mi> &epsi; </mi>]]> </output>\r
-    </ε>\r
-    <ζ>\r
-        <output> <![CDATA[<mi> &zeta; </mi>]]> </output>\r
-    </ζ>\r
-    <η>\r
-        <output> <![CDATA[<mi> &eta; </mi>]]> </output>\r
-    </η>\r
-    <θ>\r
-        <output> <![CDATA[<mi> &theta; </mi>]]> </output>\r
-    </θ>\r
-    <ι>\r
-        <output> <![CDATA[<mi> &iota; </mi>]]> </output>\r
-    </ι>\r
-    <κ>\r
-        <output> <![CDATA[<mi> &kappa; </mi>]]> </output>\r
-    </κ>\r
-    <λ>\r
-        <output> <![CDATA[<mi> &lamda; </mi>]]> </output>\r
-    </λ>\r
-    <μ>\r
-        <output> <![CDATA[<mi> &mu; </mi>]]> </output>\r
-    </μ>\r
-    <ν>\r
-        <output> <![CDATA[<mi> &nu; </mi>]]> </output>\r
-    </ν>\r
-    <ξ>\r
-        <output> <![CDATA[<mi> &xi; </mi>]]> </output>\r
-    </ξ>\r
-    <π>\r
-        <output> <![CDATA[<mi> &pi; </mi>]]> </output>\r
-    </π>\r
-    <ρ>\r
-        <output> <![CDATA[<mi> &rho; </mi>]]> </output>\r
-    </ρ>\r
-    <σ>\r
-        <output> <![CDATA[<mi> &sigma; </mi>]]> </output>\r
-    </σ>\r
-    <τ>\r
-        <output> <![CDATA[<mi> &tau; </mi>]]> </output>\r
-    </τ>\r
-    <υ>\r
-        <output> <![CDATA[<mi> &upsilon; </mi>]]> </output>\r
-    </υ>\r
-    <φ>\r
-        <output> <![CDATA[<mi> &phi; </mi>]]> </output>\r
-    </φ>\r
-    <χ>\r
-        <output> <![CDATA[<mi> &chi; </mi>]]> </output>\r
-    </χ>\r
-    <ψ>\r
-        <output> <![CDATA[<mi> &psi; </mi>]]> </output>\r
-    </ψ> \r
-    <ω>\r
-        <output> <![CDATA[<mi> &omega; </mi>]]> </output>\r
-    </ω>\r
-</Syntax>\r
diff --git a/lib/editor/common/dragmath/applet/classes/formats/Maxima.xml b/lib/editor/common/dragmath/applet/classes/formats/Maxima.xml
deleted file mode 100644 (file)
index ce58ae1..0000000
+++ /dev/null
@@ -1,544 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<Syntax>\r
-    <name AutoBrackets="true">Maxima</name>\r
-    \r
-    <Initial>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Initial>\r
-    <Text>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Text>\r
-    <Variable>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Variable>\r
-    <RealNumber>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </RealNumber>\r
-    \r
-    \r
-    \r
-    <!--  Nary Operators   -->\r
-    <Add>\r
-        <output>+</output>\r
-    </Add>\r
-    <Multiply>\r
-        <output>*</output>\r
-    </Multiply>\r
-    <Multiply2>\r
-        <output>*</output>\r
-    </Multiply2>\r
-    <Equals>\r
-        <output>=</output>\r
-    </Equals>\r
-    <Union>\r
-        <initial>union(</initial>\r
-        <output>,</output>\r
-        <final>)</final>\r
-    </Union>\r
-    <Intersection>\r
-        <initial>intersection(</initial>\r
-        <output>,</output>\r
-        <final>)</final>\r
-    </Intersection>\r
-    <Comma>\r
-        <output>,</output>\r
-    </Comma>\r
-    <Equiv>\r
-        <output>≡</output>\r
-    </Equiv>\r
-    \r
-    \r
-    \r
-    <!--  Functions   -->\r
-    <UMinus>\r
-        <output1>-</output1>\r
-        <output2></output2>\r
-    </UMinus>\r
-    <Factorial brackets="false">\r
-        <output1>(</output1>\r
-        <output2>)!</output2>\r
-    </Factorial>\r
-    <NaturalLogarithm>\r
-        <output1>log</output1>\r
-        <output2></output2>\r
-    </NaturalLogarithm>\r
-    <Logarithm>\r
-        <output1>log10</output1>\r
-        <output2></output2>\r
-    </Logarithm>\r
-    <Sine>\r
-        <output1>sin</output1>\r
-        <output2></output2>\r
-    </Sine>\r
-    <Cosine>\r
-        <output1>cos</output1>\r
-        <output2></output2>\r
-    </Cosine>\r
-    <Tangent>\r
-        <output1>tan</output1>\r
-        <output2></output2>\r
-    </Tangent>\r
-    <ArcSine>\r
-        <output1>asin</output1>\r
-        <output2></output2>\r
-    </ArcSine>\r
-    <ArcCosine>\r
-        <output1>acos</output1>\r
-        <output2></output2>\r
-    </ArcCosine>\r
-    <ArcTangent>\r
-        <output1>atan</output1>\r
-        <output2></output2>\r
-    </ArcTangent>\r
-    <SineH>\r
-        <output1>sinh</output1>\r
-        <output2></output2>\r
-    </SineH>\r
-    <CosineH>\r
-        <output1>cosh</output1>\r
-        <output2></output2>\r
-    </CosineH>\r
-    <TanH>\r
-        <output1>tanh</output1>\r
-        <output2></output2>\r
-    </TanH>\r
-    <ArcSineH>\r
-        <output1>asinh</output1>\r
-        <output2></output2>\r
-    </ArcSineH>\r
-    <ArcCosineH>\r
-        <output1>acosh</output1>\r
-        <output2></output2>\r
-    </ArcCosineH>\r
-    <ArcTanH>\r
-        <output1>atanh</output1>\r
-        <output2></output2>\r
-    </ArcTanH>\r
-    <SquareRoot>\r
-        <output1>sqrt</output1>\r
-        <output2></output2>\r
-    </SquareRoot>\r
-    <Exp>\r
-        <output1>exp</output1>\r
-        <output2></output2>\r
-    </Exp>\r
-    <Max>\r
-        <output1>max</output1>\r
-        <output2></output2>\r
-    </Max>\r
-    <Min>\r
-        <output1>min</output1>\r
-        <output2></output2>\r
-    </Min>\r
-    <Determinant>\r
-        <output1>det</output1>\r
-        <output2></output2>\r
-    </Determinant>\r
-    <Trace>\r
-        <output1>trace</output1>\r
-        <output2></output2>\r
-    </Trace>\r
-    \r
-    \r
-    \r
-    <!--  Binary Operators   -->\r
-    <NotEqual>\r
-        <output1></output1>\r
-        <output2>≠</output2>\r
-        <output3></output3>\r
-    </NotEqual>\r
-    <PlusMinus>\r
-        <output1></output1>\r
-        <output2>±</output2>\r
-        <output3></output3>\r
-    </PlusMinus>\r
-    <Assignment>\r
-        <output1></output1>\r
-        <output2>:</output2>\r
-        <output3></output3>\r
-    </Assignment>\r
-    <Subtract>\r
-        <output1></output1>\r
-        <output2>-</output2>\r
-        <output3></output3>\r
-    </Subtract>\r
-    <Divide>\r
-        <output1></output1>\r
-        <output2>/</output2>\r
-        <output3></output3>\r
-    </Divide>    \r
-    <Divide2>\r
-        <output1></output1>\r
-        <output2>/</output2>\r
-        <output3></output3>\r
-    </Divide2> \r
-    <LessThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<]]></output2>\r
-        <output3></output3>\r
-    </LessThan>    \r
-    <GreaterThan>\r
-        <output1></output1>\r
-        <output2>></output2>\r
-        <output3></output3>\r
-    </GreaterThan>    \r
-    <LTEQ>\r
-        <output1></output1>\r
-        <output2><![CDATA[<=]]></output2>\r
-        <output3></output3>\r
-    </LTEQ>    \r
-    <GTEQ>\r
-        <output1></output1>\r
-        <output2>>=</output2>\r
-        <output3></output3>\r
-    </GTEQ>    \r
-    <Subset>\r
-        <output1>subsetp(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </Subset>    \r
-    <SubsetEq>\r
-        <output1>subsetp(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </SubsetEq>    \r
-    <NSubset>\r
-        <output1>not(subsetp(</output1>\r
-        <output2>,</output2>\r
-        <output3>))</output3>\r
-    </NSubset> \r
-    <NSubsetEq>\r
-        <output1>not(subsetp(</output1>\r
-        <output2>,</output2>\r
-        <output3>))</output3>\r
-    </NSubsetEq>  \r
-    <Power>\r
-        <output1></output1>\r
-        <output2>^</output2>\r
-        <output3></output3>\r
-    </Power>\r
-    <Subscript>\r
-        <output1></output1>\r
-        <output2>[</output2>\r
-        <output3>]</output3>\r
-    </Subscript>  \r
-    <NthRoot>\r
-        <output1>(</output1>\r
-        <output2>)^(1/(</output2>\r
-        <output3>))</output3>\r
-    </NthRoot>  \r
-    <Function>\r
-        <output1></output1>\r
-        <output2>(</output2>\r
-        <output3>)</output3>\r
-    </Function>\r
-    <LeftArrow>\r
-        <output1></output1>\r
-        <output2>←</output2>\r
-        <output3></output3>\r
-    </LeftArrow> \r
-    <RightArrow>\r
-        <output1></output1>\r
-        <output2>→</output2>\r
-        <output3></output3>\r
-    </RightArrow> \r
-    <UpArrow>\r
-        <output1></output1>\r
-        <output2>↑</output2>\r
-        <output3></output3>\r
-    </UpArrow> \r
-    <DownArrow>\r
-        <output1></output1>\r
-        <output2>↓</output2>\r
-        <output3></output3>\r
-    </DownArrow> \r
-    <LeftDblArrow>\r
-        <output1></output1>\r
-        <output2>⇐</output2>\r
-        <output3></output3>\r
-    </LeftDblArrow> \r
-    <RightDblArrow>\r
-        <output1></output1>\r
-        <output2>⇒</output2>\r
-        <output3></output3>\r
-    </RightDblArrow> \r
-    <LeftRightArrow>\r
-        <output1></output1>\r
-        <output2>↔</output2>\r
-        <output3></output3>\r
-    </LeftRightArrow> \r
-    <LeftRightDblArrow>\r
-        <output1></output1>\r
-        <output2>⇔</output2>\r
-        <output3></output3>\r
-    </LeftRightDblArrow>   \r
-    <NorthEastArrow>\r
-        <output1></output1>\r
-        <output2>↗</output2>\r
-        <output3></output3>\r
-    </NorthEastArrow>          \r
-    <SouthEastArrow>\r
-        <output1></output1>\r
-        <output2>↘</output2>\r
-        <output3></output3>\r
-    </SouthEastArrow>    \r
-    <NorthWestArrow>        \r
-        <output1></output1>\r
-        <output2>↖</output2>\r
-        <output3></output3>\r
-    </NorthWestArrow>     \r
-    <SouthWestArrow>\r
-        <output1></output1>\r
-        <output2>↙</output2>\r
-        <output3></output3>\r
-    </SouthWestArrow>     \r
-    \r
-    <Exists>\r
-        <output1></output1>\r
-        <output2>∃</output2>\r
-        <output3></output3>\r
-    </Exists>\r
-    <ForAll>\r
-        <output1></output1>\r
-        <output2>∀</output2>\r
-        <output3></output3>\r
-    </ForAll>\r
-    <IsIn>        \r
-        <output1></output1>\r
-        <output2>∈</output2>\r
-        <output3></output3>\r
-    </IsIn>\r
-    <NotExists>\r
-        <output1></output1>\r
-        <output2>∄</output2>\r
-        <output3></output3>\r
-    </NotExists>\r
-    <NotIn>\r
-        <output1></output1>\r
-        <output2>∉</output2>\r
-        <output3></output3>\r
-    </NotIn>\r
-    <SimEq>\r
-        <output1></output1>\r
-        <output2>≃</output2>\r
-        <output3></output3>\r
-    </SimEq>\r
-    <Or>       \r
-        <output1></output1>\r
-        <output2>∨</output2>\r
-        <output3></output3>\r
-    </Or>\r
-    <And>\r
-        <output1></output1>\r
-        <output2>∧</output2>\r
-        <output3></output3>\r
-    </And>\r
-    <Not>\r
-        <output1></output1>\r
-        <output2>¬</output2>\r
-        <output3></output3>\r
-    </Not>\r
-    \r
-    \r
-    <!--  Nary Functions   -->\r
-    <Integral>\r
-        <output1> integrate(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </Integral>\r
-    <Differential>\r
-        <output1>diff(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </Differential>\r
-    <PartialDifferential>\r
-        <output1>diff(</output1>\r
-        <output2>,</output2>\r
-        <output3>)</output3>\r
-    </PartialDifferential>\r
-    <Sum>\r
-        <output1>sum(</output1>\r
-        <output2>,</output2>\r
-        <output3>,</output3>\r
-        <output4>,</output4>\r
-        <output5>);</output5>\r
-    </Sum>\r
-    <Product>\r
-        <output1>product(</output1>\r
-        <output2>,</output2>\r
-        <output3>,</output3>\r
-        <output4>,</output4>\r
-        <output5>);</output5>\r
-    </Product>\r
-    <Limit>\r
-        <output1>limit(</output1>\r
-        <output2>,</output2>\r
-        <output3>=</output3>\r
-        <output4>);</output4>\r
-    </Limit>\r
-    <Evaluate order="1,2,0">\r
-        <output1>subst(</output1>\r
-        <output2>=</output2>\r
-        <output3>,</output3>\r
-        <output4>)</output4>\r
-    </Evaluate>\r
-    <DefiniteIntegral>\r
-        <output1>integrate(</output1>\r
-        <output2>,</output2>\r
-        <output3>,</output3>\r
-        <output4>,</output4>\r
-        <output5>)</output5>\r
-    </DefiniteIntegral>\r
-    \r
-    \r
-    \r
-    <!--  Matrix   -->\r
-    <Matrix>\r
-        <matrixStart>matrix(</matrixStart>\r
-        <rowStart>[</rowStart>\r
-        <elementStart></elementStart>\r
-        <elementEnd></elementEnd>\r
-        <elementSeparator>,</elementSeparator>\r
-        <rowEnd>]</rowEnd>\r
-        <rowSeparator>,</rowSeparator>\r
-        <matrixEnd>)</matrixEnd>\r
-    </Matrix>\r
-    \r
-    \r
-    \r
-    <!--  Grouping   -->\r
-    <BracketsRnd>\r
-        <output1>(</output1>\r
-        <output2>)</output2>\r
-    </BracketsRnd>\r
-    <BracketsCurl>\r
-        <output1>{</output1>\r
-        <output2>}</output2>\r
-    </BracketsCurl>\r
-    <BracketsSq>\r
-        <output1>[</output1>\r
-        <output2>]</output2>\r
-    </BracketsSq>\r
-    <Abs>\r
-        <output1>abs(</output1>\r
-        <output2>)</output2>\r
-    </Abs>\r
-    \r
-    \r
-    \r
-    <!--  Symbols   -->\r
-    <Infinity>\r
-        <output>infinity</output>\r
-    </Infinity>\r
-    \r
-    <Γ>\r
-        <output> Gamma </output>\r
-    </Γ>\r
-    <Δ>\r
-        <output> Delta </output>\r
-    </Δ>\r
-    <Θ>\r
-        <output> Theta </output>\r
-    </Θ>\r
-    <Λ>\r
-        <output> Lamda </output>\r
-    </Λ>\r
-    <Ξ>\r
-        <output> Xi </output>\r
-    </Ξ>\r
-    <Π>\r
-        <output> Pi </output>\r
-    </Π>\r
-    <Σ>\r
-        <output> Sigma </output>\r
-    </Σ>\r
-    <Υ>\r
-        <output> Upsilon </output>\r
-    </Υ>\r
-    <Φ>\r
-        <output> Phi </output>\r
-    </Φ>\r
-    <Ψ>\r
-        <output> Psi </output>\r
-    </Ψ>\r
-    <Ω>\r
-        <output> Omega </output>\r
-    </Ω>\r
-    \r
-    \r
-    <α>\r
-        <output> alpha </output>\r
-    </α>\r
-    <β>\r
-        <output> beta </output>\r
-    </β>\r
-    <γ>\r
-        <output> %gamma </output>\r
-    </γ>\r
-    <δ>\r
-        <output> delta </output>\r
-    </δ>\r
-    <ε>\r
-        <output> epsilon </output>\r
-    </ε>\r
-    <ζ>\r
-        <output> zeta </output>\r
-    </ζ>\r
-    <η>\r
-        <output> eta </output>\r
-    </η>\r
-    <θ>\r
-        <output> theta </output>\r
-    </θ>\r
-    <ι>\r
-        <output> iota </output>\r
-    </ι>\r
-    <κ>\r
-        <output> kappa </output>\r
-    </κ>\r
-    <λ>\r
-        <output> lambda </output>\r
-    </λ>\r
-    <μ>\r
-        <output> mu </output>\r
-    </μ>\r
-    <ν>\r
-        <output> nu </output>\r
-    </ν>\r
-    <ξ>\r
-        <output> xi </output>\r
-    </ξ>\r
-    <π>\r
-        <output> %pi </output>\r
-    </π>\r
-    <ρ>\r
-        <output> rho </output>\r
-    </ρ>\r
-    <σ>\r
-        <output> sigma </output>\r
-    </σ>\r
-    <τ>\r
-        <output> tau </output>\r
-    </τ>\r
-    <υ>\r
-        <output> upsilon </output>\r
-    </υ>\r
-    <φ>\r
-        <output> phi </output>\r
-    </φ>\r
-    <χ>\r
-        <output> chi </output>\r
-    </χ>\r
-    <ψ>\r
-        <output> psi </output>\r
-    </ψ> \r
-    <ω>\r
-        <output> omega </output>\r
-    </ω>\r
-    \r
-</Syntax>\r
diff --git a/lib/editor/common/dragmath/applet/classes/formats/MoodleTex.xml b/lib/editor/common/dragmath/applet/classes/formats/MoodleTex.xml
deleted file mode 100644 (file)
index 92e6301..0000000
+++ /dev/null
@@ -1,541 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<Syntax>\r
-    <name AutoBrackets="false">MoodleTex</name>\r
-    \r
-    <Initial>\r
-        <output1>$$</output1>\r
-        <output2>$$</output2>\r
-    </Initial>\r
-    <Text>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Text>\r
-    <Variable>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </Variable>\r
-    <RealNumber>\r
-        <output1></output1>\r
-        <output2></output2>\r
-    </RealNumber>\r
-    \r
-    \r
-    \r
-    <!--  Nary Operators   -->\r
-    <Add>\r
-        <output>+</output>\r
-    </Add>\r
-    <Multiply>\r
-        <output> \cdot </output>\r
-    </Multiply>\r
-    <Multiply2>\r
-        <output> \times </output>\r
-    </Multiply2>\r
-    <Equals>\r
-        <output>=</output>\r
-    </Equals>\r
-    <Union>\r
-        <output> \cup </output>\r
-    </Union>\r
-    <Intersection>\r
-        <output> \cap </output>\r
-    </Intersection>\r
-    <Comma>\r
-        <output>,</output>\r
-    </Comma>\r
-    <Equiv>\r
-        <output> \equiv </output>\r
-    </Equiv>\r
-    \r
-    \r
-    \r
-    <!--  Functions   -->\r
-    <UMinus>\r
-        <output1>-</output1>\r
-        <output2></output2>\r
-    </UMinus>\r
-    <Factorial brackets="false">\r
-        <output1>{</output1>\r
-        <output2>}!</output2>\r
-    </Factorial>\r
-    <NaturalLogarithm>\r
-        <output1> \ln </output1>\r
-        <output2></output2>\r
-    </NaturalLogarithm>\r
-    <Logarithm>\r
-        <output1> \log </output1>\r
-        <output2></output2>\r
-    </Logarithm>\r
-    <Sine>\r
-        <output1> \sin </output1>\r
-        <output2></output2>\r
-    </Sine>\r
-    <Cosine>\r
-        <output1> \cos </output1>\r
-        <output2></output2>\r
-    </Cosine>\r
-    <Tangent>\r
-        <output1> \tan </output1>\r
-        <output2></output2>\r
-    </Tangent>\r
-    <ArcSine>\r
-        <output1> \sin^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcSine>\r
-    <ArcCosine>\r
-        <output1> \cos^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcCosine>\r
-    <ArcTangent>\r
-        <output1> \tan^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcTangent>\r
-    <SineH>\r
-        <output1> \sinh </output1>\r
-        <output2></output2>\r
-    </SineH>\r
-    <CosineH>\r
-        <output1> \cosh </output1>\r
-        <output2></output2>\r
-    </CosineH>\r
-    <TanH>\r
-        <output1> \tanh </output1>\r
-        <output2></output2>\r
-    </TanH>\r
-    <ArcSineH>\r
-        <output1> \sinh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcSineH>\r
-    <ArcCosineH>\r
-        <output1> \cosh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcCosineH>\r
-    <ArcTanH>\r
-        <output1> \tanh^{-1} </output1>\r
-        <output2></output2>\r
-    </ArcTanH>\r
-    <SquareRoot brackets="false">\r
-        <output1> \sqrt{</output1>\r
-        <output2>} </output2>\r
-    </SquareRoot>\r
-    <Exp brackets="false">\r
-        <output1> e^{</output1>\r
-        <output2>} </output2>\r
-    </Exp>\r
-    <Max>\r
-        <output1>\max</output1>\r
-        <output2></output2>\r
-    </Max>\r
-    <Min>\r
-        <output1>\min</output1>\r
-        <output2></output2>\r
-    </Min>\r
-    <Determinant>\r
-        <output1>\det</output1>\r
-        <output2></output2>\r
-    </Determinant>\r
-    <Trace>\r
-        <output1>Tr</output1>\r
-        <output2></output2>\r
-    </Trace>\r
-    \r
-    \r
-    \r
-    <!--  Binary Operators  -->\r
-    <NotEqual>\r
-        <output1></output1>\r
-        <output2> \neq </output2>\r
-        <output3></output3>\r
-    </NotEqual>\r
-    <PlusMinus>\r
-        <output1></output1>\r
-        <output2> \pm </output2>\r
-        <output3></output3>\r
-    </PlusMinus> \r
-    <Assignment>\r
-        <output1></output1>\r
-        <output2>:=</output2>\r
-        <output3></output3>\r
-    </Assignment>\r
-    <Subtract>\r
-        <output1></output1>\r
-        <output2>-</output2>\r
-        <output3></output3>\r
-    </Subtract>\r
-    <Divide brackets="false">\r
-        <output1> \frac{</output1>\r
-        <output2>}{</output2>\r
-        <output3>} </output3>\r
-    </Divide>\r
-    <Divide2>       \r
-        <output1></output1>\r
-        <output2> \div </output2>\r
-        <output3></output3>\r
-    </Divide2>\r
-    <LessThan>\r
-        <output1></output1>\r
-        <output2><![CDATA[<]]></output2>\r
-        <output3></output3>\r
-    </LessThan>    \r
-    <GreaterThan>\r
-        <output1></output1>\r
-        <output2>></output2>\r
-        <output3></output3>\r
-    </GreaterThan>    \r
-    <LTEQ>\r
-        <output1></output1>\r
-        <output2> \le </output2>\r
-        <output3></output3>\r
-    </LTEQ>    \r
-    <GTEQ>\r
-        <output1></output1>\r
-        <output2> \ge </output2>\r
-        <output3></output3>\r
-    </GTEQ>    \r
-    <Subset>\r
-        <output1></output1>\r
-        <output2> \subset </output2>\r
-        <output3></output3>\r
-    </Subset>    \r
-    <SubsetEq>\r
-        <output1></output1>\r
-        <output2> \subseteq </output2>\r
-        <output3></output3>\r
-    </SubsetEq>    \r
-    <NSubset>\r
-        <output1></output1>\r
-        <output2> \not\subset </output2>\r
-        <output3></output3>\r
-    </NSubset> \r
-    <NSubsetEq>\r
-        <output1></output1>\r
-        <output2> \not\subseteq </output2>\r
-        <output3></output3>\r
-    </NSubsetEq>  \r
-    <Power>\r
-        <output1></output1>\r
-        <output2>^{</output2>\r
-        <output3>}</output3>\r
-    </Power>\r
-    <Subscript>\r
-        <output1></output1>\r
-        <output2>_{</output2>\r
-        <output3>}</output3>\r
-    </Subscript>  \r
-    <NthRoot reverse="true" brackets="false">\r
-        <output1> \sqrt[</output1>\r
-        <output2>]{</output2>\r
-        <output3>} </output3>\r
-    </NthRoot> \r
-    <Function>\r
-        <output1></output1>\r
-        <output2>\left(</output2>\r
-        <output3>\right)</output3>\r
-    </Function>\r
-    <LeftArrow>\r
-        <output1></output1>\r
-        <output2> \leftarrow </output2>\r
-        <output3></output3>\r
-    </LeftArrow> \r
-    <RightArrow>\r
-        <output1></output1>\r
-        <output2> \rightarrow </output2>\r
-        <output3></output3>\r
-    </RightArrow> \r
-    <UpArrow>\r
-        <output1></output1>\r
-        <output2> \uparrow </output2>\r
-        <output3></output3>\r
-    </UpArrow> \r
-    <DownArrow>\r
-        <output1></output1>\r
-        <output2> \downarrow </output2>\r
-        <output3></output3>\r
-    </DownArrow> \r
-    <LeftDblArrow>\r
-        <output1></output1>\r
-        <output2> \Leftarrow </output2>\r
-        <output3></output3>\r
-    </LeftDblArrow> \r
-    <RightDblArrow>\r
-        <output1></output1>\r
-        <output2> \Rightarrow </output2>\r
-        <output3></output3>\r
-    </RightDblArrow> \r
-    <LeftRightArrow>\r
-        <output1></output1>\r
-        <output2> \leftrightarrow </output2>\r
-        <output3></output3>\r
-    </LeftRightArrow> \r
-    <LeftRightDblArrow>\r
-        <output1></output1>\r
-        <output2> \Leftrightarrow </output2>\r
-        <output3></output3>\r
-    </LeftRightDblArrow>   \r
-    <NorthEastArrow>\r
-        <output1></output1>\r
-        <output2> \nearrow </output2>\r
-        <output3></output3>\r
-    </NorthEastArrow>          \r
-    <SouthEastArrow>\r
-        <output1></output1>\r
-        <output2> \searrow </output2>\r
-        <output3></output3>\r
-    </SouthEastArrow>    \r
-    <NorthWestArrow>        \r
-        <output1></output1>\r
-        <output2> \nwarrow </output2>\r
-        <output3></output3>\r
-    </NorthWestArrow>     \r
-    <SouthWestArrow>\r
-        <output1></output1>\r
-        <output2> \swarrow </output2>\r
-        <output3></output3>\r
-    </SouthWestArrow>     \r
-    \r
-    <Exists>\r
-        <output1></output1>\r
-        <output2> \exists </output2>\r
-        <output3></output3>\r
-    </Exists>\r
-    <ForAll>\r
-        <output1></output1>\r
-        <output2> \forall </output2>\r
-        <output3></output3>\r
-    </ForAll>\r
-    <IsIn>        \r
-        <output1></output1>\r
-        <output2> \epsilon </output2>\r
-        <output3></output3>\r
-    </IsIn>\r
-    <NotExists>\r
-        <output1></output1>\r
-        <output2> \not\exists </output2>\r
-        <output3></output3>\r
-    </NotExists>\r
-    <NotIn>\r
-        <output1></output1>\r
-        <output2> \not\epsilon </output2>\r
-        <output3></output3>\r
-    </NotIn>\r
-    <SimEq>\r
-        <output1></output1>\r
-        <output2> \simeq </output2>\r
-        <output3></output3>\r
-    </SimEq>\r
-    <Or>       \r
-        <output1></output1>\r
-        <output2> \vee </output2>\r
-        <output3></output3>\r
-    </Or>\r
-    <And>\r
-        <output1></output1>\r
-        <output2> \wedge </output2>\r
-        <output3></output3>\r
-    </And>\r
-    <Not>\r
-        <output1></output1>\r
-        <output2> \neg </output2>\r
-        <output3></output3>\r
-    </Not>\r
-    \r
-    \r
-    <!--  Nary Functions   -->\r
-    <Integral>\r
-        <output1> \int </output1>\r
-        <output2>\,d</output2>\r
-        <output3></output3>\r
-    </Integral>\r
-    <Differential order="1,0">\r
-        <output1> \frac{d}{d</output1>\r
-        <output2>}</output2>\r
-        <output3></output3>\r
-    </Differential>\r
-    <PartialDifferential order="1,0">\r
-        <output1> \frac{\partial}{\partial </output1>\r
-        <output2>}</output2>\r
-        <output3></output3>\r
-    </PartialDifferential>\r
-    <Sum order="1,2,3,0">\r
-        <output1> \sum_{{</output1>\r
-        <output2>}={</output2>\r
-        <output3>}}^{</output3>\r
-        <output4>}</output4>\r
-        <output5></output5>\r
-    </Sum>\r
-    <Product order="1,2,3,0">\r
-        <output1> \prod_{{</output1>\r
-        <output2>}={</output2>\r
-        <output3>}}^{</output3>\r
-        <output4>}</output4>\r
-        <output5></output5>\r
-    </Product>\r
-    <Limit order="1,2,0">\r
-        <output1> \lim_{</output1>\r
-        <output2>\to</output2>\r
-        <output3>}</output3>\r
-        <output4></output4>\r
-    </Limit>\r
-    <Evaluate>\r
-        <output1></output1>\r
-        <output2>\left|_{{</output2>\r
-        <output3>}={</output3>\r
-        <output4>}}</output4>\r
-    </Evaluate>\r
-    <DefiniteIntegral order="2,3,0,1">\r
-        <output1> \int_{</output1>\r
-        <output2>}^{</output2>\r
-        <output3>}</output3>\r
-        <output4>\,d</output4>\r
-        <output5></output5>\r
-    </DefiniteIntegral>\r
-    \r
-    \r
-    \r
-    <!--  Matrix   -->\r
-    <Matrix>\r
-        <matrixStart> \left( \begin{array}{ccc} </matrixStart>\r
-        <rowStart></rowStart>\r
-        <elementStart></elementStart>\r
-        <elementEnd></elementEnd>\r
-        <elementSeparator><![CDATA[ & ]]></elementSeparator>\r
-        <rowEnd>\\</rowEnd>\r
-        <rowSeparator></rowSeparator>\r
-        <matrixEnd> \end{array} \right) </matrixEnd>\r
-    </Matrix>\r
-    \r
-    \r
-    \r
-    <!--  Grouping  -->\r
-    <BracketsRnd>\r
-        <output1>\left(</output1>\r
-        <output2>\right)</output2>\r
-    </BracketsRnd>\r
-    <BracketsCurl>\r
-        <output1>\{</output1>\r
-        <output2>\}</output2>\r
-    </BracketsCurl>\r
-    <BracketsSq>\r
-        <output1>\left[</output1>\r
-        <output2>\right]</output2>\r
-    </BracketsSq>\r
-    <Abs>\r
-        <output1>\left|</output1>\r
-        <output2>\right|</output2>\r
-    </Abs>\r
-    \r
-    \r
-    \r
-    <!--  Symbols   -->\r
-    <Infinity>\r
-        <output>\infty</output>\r
-    </Infinity>\r
-    \r
-    \r
-    <Γ>\r
-        <output> \Gamma </output>\r
-    </Γ>\r
-    <Δ>\r
-        <output> \Delta </output>\r
-    </Δ>\r
-    <Θ>\r
-        <output> \Theta </output>\r
-    </Θ>\r
-    <Λ>\r
-        <output> \Lamda </output>\r
-    </Λ>\r
-    <Ξ>\r
-        <output> \Xi </output>\r
-    </Ξ>\r
-    <Π>\r
-        <output> \Pi </output>\r
-    </Π>\r
-    <Σ>\r
-        <output> \Sigma </output>\r
-    </Σ>\r
-    <Υ>\r
-        <output> \Upsilon </output>\r
-    </Υ>\r
-    <Φ>\r
-        <output> \Phi </output>\r
-    </Φ>\r
-    <Ψ>\r
-        <output> \Psi </output>\r
-    </Ψ>\r
-    <Ω>\r
-        <output> \Omega </output>\r
-    </Ω>\r
-    \r
-    \r
-    <α>\r
-        <output> \alpha </output>\r
-    </α>\r
-    <β>\r
-        <output> \beta </output>\r
-    </β>\r
-    <γ>\r
-        <output> \gamma </output>\r
-    </γ>\r
-    <δ>\r
-        <output> \delta </output>\r
-    </δ>\r
-    <ε>\r
-        <output> \epsilon </output>\r
-    </ε>\r
-    <ζ>\r
-        <output> \zeta </output>\r
-    </ζ>\r
-    <η>\r
-        <output> \eta </output>\r
-    </η>\r
-    <θ>\r
-        <output> \theta </output>\r
-    </θ>\r
-    <ι>\r
-        <output> \iota </output>\r
-    </ι>\r
-    <κ>\r
-        <output> \kappa </output>\r
-    </κ>\r
-    <λ>\r
-        <output> \lambda </output>\r
-    </λ>\r
-    <μ>\r
-        <output> \mu </output>\r
-    </μ>\r
-    <ν>\r
-        <output> \nu </output>\r
-    </ν>\r
-    <ξ>\r
-        <output> \xi </output>\r
-    </ξ>\r
-    <π>\r
-        <output> \pi </output>\r
-    </π>\r
-    <ρ>\r
-        <output> \rho </output>\r
-    </ρ>\r
-    <σ>\r
-        <output> \sigma </output>\r
-    </σ>\r
-    <τ>\r
-        <output> \tau </output>\r
-    </τ>\r
-    <υ>\r
-        <output> \upsilon </output>\r
-    </υ>\r
-    <φ>\r
-        <output> \phi </output>\r
-    </φ>\r
-    <χ>\r
-        <output> \chi </output>\r
-    </χ>\r
-    <ψ>\r
-        <output> \psi </output>\r
-    </ψ> \r
-    <ω>\r
-        <output> \omega </output>\r
-    </ω>\r
-    \r
-</Syntax>\r
diff --git a/lib/editor/common/dragmath/applet/classes/jdom.jar b/lib/editor/common/dragmath/applet/classes/jdom.jar
deleted file mode 100644 (file)
index d9cda2a..0000000
Binary files a/lib/editor/common/dragmath/applet/classes/jdom.jar and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/classes/jep.jar b/lib/editor/common/dragmath/applet/classes/jep.jar
deleted file mode 100644 (file)
index f9e315c..0000000
Binary files a/lib/editor/common/dragmath/applet/classes/jep.jar and /dev/null differ
diff --git a/lib/editor/common/dragmath/applet/classes/lang/ca.xml b/lib/editor/common/dragmath/applet/classes/lang/ca.xml
deleted file mode 100644 (file)
index a60a24e..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-    Document   : ca.xml
-    Created on : 17 December 2007, 15:13
-    Author     : Joan Queralt i Gil i Daniel Ureña Zafra
-    Description:
-        Versió catalana de la interfície de DragMath. Es pot, per tant millorar.
--->
-
-<Language>
-    
-    <!--  Error Messages   --> 
-    <ReadingFile>Error llegint el fitxer: Comproveu-ne la validesa</ReadingFile> 
-    <ReadingFile2>Error carregant el fitxer amb format: </ReadingFile2> 
-    <LoadingExp>Error carregant l'expressió desada</LoadingExp>
-    <SavingExp>Error desant l'expressió</SavingExp>
-    <Cut>No es pot retallar la selecció: </Cut>
-    <Copy>No es pot copiar la selecció: </Copy>
-    <Tree>No es pot mostrar l'arbre: </Tree>
-    <Action>No s'ha pogut completar l'acció: </Action>
-    <AddMatrix>No es pot afegir la Matriu a aquesta posició</AddMatrix>
-    <Operator>Manca un operador en aquesta posició</Operator>
-    <Argument>Manca un argument o operador en aquesta posició</Argument>
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>
-    
-    <!--  Status Bar Messages   --> 
-    <ParseExp>L'expressió no pot ser analitzada</ParseExp>
-    <LoadExpression>DragMath - Escull una expressió per ser carregada</LoadExpression>
-    <SaveExpression>DragMath - Escull un lloc on desar l'expressió</SaveExpression>
-    <EnterRows>Introduïu el nombre de files de la matriu</EnterRows>
-    <EnterColumns>Introduïu el nombre de columnes de la matriu</EnterColumns>
-    <MatrixDim>Dimensions de la matriu</MatrixDim>
-    <NoCut>No hi ha res seleccionat per retallar</NoCut>
-    <NoPaste>No hi ha res per enganxar</NoPaste>
-    <NoBox>No hi ha cap quadre seleccionat per enganxar-hi</NoBox>
-    <NoCopy>No hi ha res seleccionat per copiar</NoCopy>
-    <Copied>Copiat</Copied>
-    <ReadingData>S'ha produït un error al llegir les dades de sortida</ReadingData>
-    <Clipboard>S'ha copiat l'expressió al porta-retalls</Clipboard>
-    <NoExpression>No hi ha cap expressió per convertir</NoExpression>
-    <NoFormat>Encara no s'ha carregat un fitxer amb format</NoFormat>
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>
-    
-    <!--  Tooltips for buttons   -->
-    <Multiply>Multiplica</Multiply>
-    <Divide>Divideix</Divide>  
-    <Add>Suma</Add> 
-    <Subtract>Resta</Subtract>  
-    <Comma>Coma</Comma>  
-    <PlusMinus>Més-menys</PlusMinus>
-    <NotEqual>No es igual</NotEqual> 
-    <SquareRoot>Arrel Quadrada</SquareRoot>  
-    <NthRoot>Arrel n-éssima</NthRoot>  
-    <Power>Superíndex</Power>  
-    <Subscript>Subíndex</Subscript>  
-    <Matrix>Matriu</Matrix>  
-    <Integral>Integral</Integral>
-    <Differential>Diferencial</Differential>
-    <LessThan>Menor que</LessThan>  
-    <GreaterThan>Major que</GreaterThan>  
-    <LTEQ>Menor o igual que</LTEQ>  
-    <GTEQ>Major o igual que</GTEQ>
-    <Equals>Igual</Equals> 
-    <Union>Unió</Union>  
-    <Intersection>Intersecció</Intersection>  
-    <Subset>Subconjunt</Subset>  
-    <SubsetEq>Subconjunt o igual que</SubsetEq>  
-    <NSubset>No inclòs</NSubset>  
-    <NSubsetEq>No inclòs o igual que</NSubsetEq> 
-    <Sine>Sinus</Sine>  
-    <Cosine>Cosinus</Cosine>  
-    <Tangent>Tangent</Tangent>  
-    <ArcSine>Arcsinus</ArcSine>  
-    <ArcCosine>Arccosinus</ArcCosine>  
-    <ArcTangent>Arctangent</ArcTangent> 
-    <SineH>Sinus hiperbòlic</SineH>  
-    <CosineH>Cosinus hiperbòlic</CosineH>  
-    <TanH>Tangent hiperbòlica</TanH>  
-    <ArcSineH>Invers del sinus hiperbòlic</ArcSineH>  
-    <ArcCosineH>Invers del cosinus hiperbòlic</ArcCosineH>  
-    <ArcTanH>Invers de la tangent hiperbòlica</ArcTanH>  
-    <Logarithm>Logaritme</Logarithm>
-    <NaturalLogarithm>Logaritme neperià</NaturalLogarithm>  
-    <Exp>Exponencial</Exp>  
-    <UMinus>Menys</UMinus>  
-    <BracketsRnd>Parèntesis</BracketsRnd>  
-    <BracketsCurl>Claus</BracketsCurl>  
-    <BracketsSq>Claudàtors</BracketsSq>  
-    <Abs>Valor absolut</Abs> 
-    <Infinity>Infinit</Infinity>
-    <GreekLetter>Lletra grega</GreekLetter> 
-    <Factorial>Factorial</Factorial> 
-    <Max>Màxim del conjunt</Max> 
-    <Min>Mínim del conjunt</Min> 
-    <Assignment>Assignació</Assignment>
-    <Function>Funció general</Function> 
-    <Determinant>Determinant</Determinant>
-    <Trace>Traça</Trace>
-    <DefiniteIntegral>Integral definida</DefiniteIntegral>
-    <Product>Producte</Product>
-    <Sum>Suma</Sum>
-    <Limit>Límit</Limit>
-    <Evaluate>Avalua una expressió en un punt</Evaluate>
-    <LeftArrow>Fletxa esquerra</LeftArrow>             
-    <RightArrow>Fletxa dreta</RightArrow>              
-    <UpArrow>Fletxa amunt</UpArrow>            
-    <DownArrow>Fletxa avall</DownArrow>                
-    <LeftRightArrow>Fletxa esquerra-dreta</LeftRightArrow>             
-    <LeftDblArrow>Fletxa doble esquerra</LeftDblArrow>         
-    <RightDblArrow>Fletxa doble dreta</RightDblArrow>          
-    <LeftRightDblArrow>Fletxa doble esquerra-dreta</LeftRightDblArrow>         
-    <NorthEastArrow>Fletxa dreta-amunt</NorthEastArrow>                
-    <SouthEastArrow>Fletxa dreta-avall</SouthEastArrow>                
-    <NorthWestArrow>Fletxa esquerra-amun</NorthWestArrow>              
-    <SouthWestArrow>Fletxa esquerra-avall</SouthWestArrow>
-    <Multiply2>Multiplica</Multiply2>
-    <Divide2>Divideix</Divide2>
-    <Equiv>Equivalència</Equiv>
-    <Exists>Existeix</Exists>
-    <ForAll>Per a tot</ForAll>
-    <IsIn>Pertany</IsIn>
-    <NotExists>No existeix</NotExists>
-    <NotIn>No pertany</NotIn>
-    <SimEq>Semblant</SimEq>
-    <Or>Unió Lògica</Or>
-    <And>Intersecció lògica</And>
-    <Not>Negació lògica</Not>
-    <PartialDifferential>Partial Differential</PartialDifferential>
-    
-    <!--  Tooltips for command buttons   -->
-    <OpenButton>Carrega un format personalitzat de sortida</OpenButton>
-    <SaveButton>Desar fórmula a un fitxer</SaveButton>
-    <ExportButton>Exportar l'expressió al porta-retalls</ExportButton>    
-    <UndoButton>Desfés</UndoButton>
-    <RedoButton>Refés</RedoButton>
-    <CutButton>Retalla</CutButton>
-    <CopyButton>Còpia</CopyButton>
-    <PasteButton>Enganxa</PasteButton>
-    <ClearButton>Neteja tot l'àrea de treball</ClearButton>
-    <SelectButton>Selecciona tot l'àrea de treball</SelectButton>
-    <LoadFormatButton>Carrega un fitxer amb format exportat</LoadFormatButton>
-    <LoadLangButton>Carrega un fitxer d'idioma</LoadLangButton>
-    <ShowTreeButton>Mostra l'arbre de l'expressió</ShowTreeButton>
-    <OutlineButton>Mostra el contorn</OutlineButton>
-    <OnlineHelpButton>Carrega documents d'ajuda al navegador</OnlineHelpButton>
-    <AboutButton>Quant a DragMath</AboutButton>
-    
-    <!--  Menu   -->
-    <FileMenu>Fitxer</FileMenu>
-    <OpenMenu>Obrir...</OpenMenu>
-    <SaveAsMenu>Anomenar i desar...</SaveAsMenu>
-    <ExportMenu>Exportar al porta-retalls</ExportMenu>
-    <ImageMenu>Export to image</ImageMenu>
-    
-    <EditMenu>Edició</EditMenu>
-    <UndoMenu>Desfer</UndoMenu>
-    <RedoMenu>Refer</RedoMenu>
-    <CutMenu>Retallar</CutMenu>
-    <CopyMenu>Còpia</CopyMenu>
-    <PasteMenu>Enganxa</PasteMenu>
-    <ClearMenu>Neteja tot</ClearMenu>
-    <SelectMenu>Seleccionar tot</SelectMenu>
-    
-    <OptionsMenu>Opcions</OptionsMenu>
-    <SetExportMenu>Format d'Exportació</SetExportMenu>
-    <SetLanguageMenu>Idioma</SetLanguageMenu>
-    
-    <HelpMenu>Ajuda</HelpMenu>
-    <DebugMenu>Depuració</DebugMenu>
-    <TreeMenu>Mostrar arbre de l'expressió</TreeMenu>
-    <OutlineMenu>Mostrar contorn</OutlineMenu>
-    <OnlineHelpMenu>Ajuda en línia</OnlineHelpMenu>
-    <AboutMenu>Quant a DragMath</AboutMenu>
-    
-</Language>
diff --git a/lib/editor/common/dragmath/applet/classes/lang/cz.xml b/lib/editor/common/dragmath/applet/classes/lang/cz.xml
deleted file mode 100644 (file)
index 0c9afdb..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : cz.xml\r
-    Created on : 30 July 2007, 15:43\r
-    Author     : Alex Billingsley \r
-    Translator : Miroslava Tihlaříková\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Chyba při načítání souboru s formátem</ReadingFile> \r
-    <ReadingFile2>Chyba při načítání souboru s formátem</ReadingFile2> \r
-    <LoadingExp>Chyba při načítání uložených výrazů</LoadingExp>\r
-    <SavingExp>Chyba při ukládání výrazů</SavingExp>\r
-    <Cut>Nelze vyjmout výběr:</Cut>\r
-    <Copy>Nelze zkopírovat výrěr:</Copy>\r
-    <Tree>Nelze zobrazit strom:</Tree>\r
-    <Action>Akce nemůže být dokončena:</Action>\r
-    <AddMatrix>Sem nelze přidat matici</AddMatrix>\r
-    <Operator>Chybí operátor</Operator>\r
-    <Argument>Chybí proměnná či operátor (na vhodné pozici)</Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Výraz nelze rozpoznat</ParseExp>\r
-    <LoadExpression>DragMath - Vyberte soubor s výrazem k načtení</LoadExpression>\r
-    <SaveExpression>DragMath - Vyberte umístění kam uložit výraz</SaveExpression>\r
-    <EnterRows>Zadejte počet řádků matice</EnterRows>\r
-    <EnterColumns>Zadejte počet sloupců matice</EnterColumns>\r
-    <MatrixDim>Rozměr matice</MatrixDim>\r
-    <NoCut>Nebylo vybráno nic na vyjmutí</NoCut>\r
-    <NoPaste>Nic na vložení</NoPaste>\r
-    <NoBox>Není vybráno políčko kam vkládat</NoBox>\r
-    <NoCopy>Není nic vybráno ke kopírování</NoCopy>\r
-    <Copied>Zkopírováno</Copied>\r
-    <ReadingData>Cyba při čtení výstupních dat</ReadingData>\r
-    <Clipboard>: výrazy uloženy do schránky</Clipboard>\r
-    <NoExpression>Žádné výrazy na konvertování</NoExpression>\r
-    <NoFormat>Ještě nebyl načten soubor s definicí formátu</NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for buttons   -->\r
-    <Multiply>Součin</Multiply>\r
-    <Divide>Podíl</Divide>  \r
-    <Add>Součet</Add> \r
-    <Subtract>Rozdíl</Subtract>  \r
-    <Comma>Desetinná čárka</Comma>  \r
-    <PlusMinus>Plus-Minus</PlusMinus>\r
-    <SquareRoot>Druhá odmocnina</SquareRoot>  \r
-    <NthRoot>N-tá odmocnina</NthRoot>  \r
-    <Power>Horní index nebo mocnina</Power>  \r
-    <Subscript>Dolní index</Subscript>  \r
-    <Matrix>Matice</Matrix>  \r
-    <Integral>Integrál</Integral>\r
-    <Differential>Derivace</Differential>\r
-    <LessThan>Menší než</LessThan>  \r
-    <GreaterThan>Větší než</GreaterThan>  \r
-    <LTEQ>Menší nebo rovno</LTEQ>  \r
-    <GTEQ>Větší nebo rovno</GTEQ>\r
-    <Equals>Rovno</Equals>\r
-    <NotEqual>Není rovno</NotEqual> \r
-    <Union>Sjednocení</Union>  \r
-    <Intersection>Průnik</Intersection>  \r
-    <Subset>Vlastní podmnožina</Subset>  \r
-    <SubsetEq>Podmnožina</SubsetEq>  \r
-    <NSubset>Není vlastní podmnožinou</NSubset>  \r
-    <NSubsetEq>Není podmnožinou</NSubsetEq> \r
-    <Sine>Sinus</Sine>  \r
-    <Cosine>Kosinus</Cosine>  \r
-    <Tangent>Tangens</Tangent>  \r
-    <ArcSine>Arkus sinus</ArcSine>  \r
-    <ArcCosine>Arkus kosinus</ArcCosine>  \r
-    <ArcTangent>Arkus tangens</ArcTangent> \r
-    <SineH>Hyperbolický sinus</SineH>  \r
-    <CosineH>Hyperbolický kosinus</CosineH>  \r
-    <TanH>Hyperbolický tangens</TanH>  \r
-    <ArcSineH>Hyperbolický arkus sinus</ArcSineH>  \r
-    <ArcCosineH>Hyperbolický arkus kosinus</ArcCosineH>  \r
-    <ArcTanH>Hyperbolický arkus tangens</ArcTanH>  \r
-    <Logarithm>Logaritmus</Logarithm>\r
-    <NaturalLogarithm>Přirozený logaritmus</NaturalLogarithm>  \r
-    <Exp>Exponenciální funkce</Exp>  \r
-    <UMinus>Mínus</UMinus>  \r
-    <BracketsRnd>Kulaté závorky</BracketsRnd>  \r
-    <BracketsCurl>Složené závorky</BracketsCurl>  \r
-    <BracketsSq>Hranaté závorky</BracketsSq>  \r
-    <Abs>Absolutní hodnota</Abs> \r
-    <Infinity>Nekonečno</Infinity>\r
-    <GreekLetter>Řecká písmena</GreekLetter> \r
-    <Factorial>Faktoriál</Factorial> \r
-    <Max>Maximum množiny </Max>\r
-    <Min>Minimum množiny</Min> \r
-    <Assignment>Přiřazení</Assignment>\r
-    <Function>Uživatelem definovaná funkce</Function> \r
-    <Determinant>Determinant</Determinant>\r
-    <Trace>Stopa</Trace>\r
-    <DefiniteIntegral>Určitý integrál</DefiniteIntegral>\r
-    <Product>Součin</Product>\r
-    <Sum>Suma</Sum>\r
-    <Limit>Limita</Limit>\r
-    <Evaluate>Hodnota výrazu v bodě</Evaluate>\r
-    <LeftArrow>Left arrow</LeftArrow> \r
-    <RightArrow>Right arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Left double arrow</LeftDblArrow> \r
-    <RightDblArrow>Right double arrow</RightDblArrow> \r
-    <LeftRightArrow>Left-Right arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Left-Right double arrow</LeftRightDblArrow> \r
-    <NorthEastArrow>North-East arrow</NorthEastArrow>          \r
-    <SouthEastArrow>South-East arrow</SouthEastArrow>          \r
-    <NorthWestArrow>North-West arrow</NorthWestArrow>          \r
-    <SouthWestArrow>South-West arrow</SouthWestArrow>\r
-    <Multiply2>Multiplication</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Equivalence</Equiv>\r
-    <Exists>There Exists</Exists>\r
-    <ForAll>For All</ForAll>\r
-    <IsIn>Element Of</IsIn>\r
-    <NotExists>There Does Not Exist</NotExists>\r
-    <NotIn>Not An Element Of</NotIn>\r
-    <SimEq>Asymptotically Equivalent To</SimEq>\r
-    <Or>Or</Or>\r
-    <And>And</And>\r
-    <Not>Not</Not>\r
-    <PartialDifferential>Partial Differential</PartialDifferential>\r
-    \r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Načíst výraz ze souboru</OpenButton>\r
-    <SaveButton>Uložit výraz do souboru</SaveButton>\r
-    <ExportButton>Exportovat výraz do schránky</ExportButton>\r
-    <UndoButton>Zpět</UndoButton>\r
-    <RedoButton>Opakovat</RedoButton>\r
-    <CutButton>Vyjmout</CutButton>\r
-    <CopyButton>Zkopírovat</CopyButton>\r
-    <PasteButton>Vložit</PasteButton>\r
-    <ClearButton>Vyčistit pracovní plochu</ClearButton>\r
-    <SelectButton>Vybrat celou pracovní plochu</SelectButton>\r
-    <LoadFormatButton>Nahrát formát pro export</LoadFormatButton>\r
-    <LoadLangButton>Nahrát soubor s jazykovym nastavením</LoadLangButton>\r
-    <ShowTreeButton>Zobrazit stromovou strukturu výrazů</ShowTreeButton>\r
-    <OutlineButton>Zobrazit obrysy výrazů na pracovní ploše</OutlineButton>\r
-    <OnlineHelpButton>Nahrát nápovědu ve webovém prohlížeči</OnlineHelpButton>\r
-    <AboutButton>O programu</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Soubor</FileMenu>\r
-    <OpenMenu>Otevřít...</OpenMenu>\r
-    <SaveAsMenu>Uložit jako...</SaveAsMenu>\r
-    <ExportMenu>Exportovat do schránky</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Změnit</EditMenu>\r
-    <UndoMenu>Zpět</UndoMenu>\r
-    <RedoMenu>Opakovat</RedoMenu>\r
-    <CutMenu>Vyjmout</CutMenu>\r
-    <CopyMenu>Zkopírovat</CopyMenu>\r
-    <PasteMenu>Vložit</PasteMenu>\r
-    <ClearMenu>Vyčistit pracovní plochu</ClearMenu>\r
-    <SelectMenu>Vybrat vše</SelectMenu>\r
-    \r
-    <OptionsMenu>Možnosti</OptionsMenu>\r
-    <SetExportMenu>Nastavit formát pro export</SetExportMenu>\r
-    <SetLanguageMenu>Nastavit jazyk</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Nápověda</HelpMenu>\r
-    <DebugMenu>Ladění</DebugMenu>\r
-    <TreeMenu>Zobrazit strukturu vzorce</TreeMenu>\r
-    <OutlineMenu>Zobrazit výstup</OutlineMenu>\r
-    <OnlineHelpMenu>Online nápověda</OnlineHelpMenu>\r
-    <AboutMenu>O programu</AboutMenu>\r
-    \r
-</Language>\r
-\r
-\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/de.xml b/lib/editor/common/dragmath/applet/classes/lang/de.xml
deleted file mode 100644 (file)
index 0979a7e..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : de.xml\r
-    Created on : 02 January 2008, 22:00\r
-    Author     : Andy Tagliani e-instructor.de\r
-    Description: Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Fehler beim Lesen des Dateiformats: Bitte auf Gültigkeit überprüfen</ReadingFile> \r
-    <ReadingFile2>Fehler beim Laden der Datei: </ReadingFile2> \r
-    <LoadingExp>Fehler beim Laden der Erweiterung</LoadingExp>\r
-    <SavingExp>Fehler beim Speichern der Erweiterung</SavingExp>\r
-    <Cut>Ausschneiden der Auswahl nicht möglich: </Cut>\r
-    <Copy>Kopieren der Auswahl nicht möglich: </Copy>\r
-    <Tree>Verzeichnisbaum kann nicht angezeigt werden: </Tree>\r
-    <Action>Aktion konnte nicht fertiggestellt werden: </Action>\r
-    <AddMatrix>Matrix konnte an der Stelle nicht hinzugefügt werden</AddMatrix>\r
-    <Operator>Operator fehlt an Position </Operator>\r
-    <Argument>Argument des Operators fehlt an Position </Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Ausdruck kann mathematisch nicht bestimmt werden</ParseExp>\r
-    <LoadExpression>DragMath - Wählen Sie eine Datei im DragMath-Format zum Laden</LoadExpression>\r
-    <SaveExpression>DragMath - Wählen Sie einen Speicherort zum Speichern der Datei im DragMath-Format</SaveExpression>\r
-    <EnterRows>Geben Sie die Anzahl der Reihen der Matrix ein</EnterRows>\r
-    <EnterColumns>Geben Sie die Anzahl der Spalten der Matrix ein</EnterColumns>\r
-    <MatrixDim>Dimension der Matrix</MatrixDim>\r
-    <NoCut>Nichts zum Ausschneiden gewählt</NoCut>\r
-    <NoPaste>Nichts zum Kopieren gewählt</NoPaste>\r
-    <NoBox>Keine Box zum Hineinkopieren gewählt</NoBox>\r
-    <NoCopy>Nichts zum Kopieren ausgewählt</NoCopy>\r
-    <Copied>Kopiert</Copied>\r
-    <ReadingData>Fehler beim Lesen des Ausgabeformats</ReadingData>\r
-    <Clipboard>Format wurde in die Zwischenablage kopiert</Clipboard>\r
-    <NoExpression>Kein Format zum Konvertieren</NoExpression>\r
-    <NoFormat>Es wurde kein Dateiformat geladen</NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Multiplikation</Multiply>\r
-    <Divide>Division</Divide>  \r
-    <Add>Addition</Add> \r
-    <Subtract>Subtraktion</Subtract>  \r
-    <Comma>Komma</Comma>\r
-    <PlusMinus>Plus-Minus</PlusMinus>\r
-    <SquareRoot>Quadratwurzel</SquareRoot>  \r
-    <NthRoot>n-te Wurzel</NthRoot>  \r
-    <Power>Hochgestellt</Power>  \r
-    <Subscript>Tiefgestellt</Subscript>  \r
-    <Matrix>Matrix</Matrix>  \r
-    <Integral>Integration</Integral>\r
-    <Differential>Differentation</Differential>\r
-    <LessThan>kleiner als</LessThan>  \r
-    <GreaterThan>größer als</GreaterThan>  \r
-    <LTEQ>kleiner als oder gleich</LTEQ>  \r
-    <GTEQ>größer als oder gleich</GTEQ>\r
-    <Equals>gleich</Equals>\r
-    <NotEqual>ungleich</NotEqual> \r
-    <Union>Vereinigung</Union>  \r
-    <Intersection>Durchschnitt</Intersection>  \r
-    <Subset>Teilmenge</Subset>  \r
-    <SubsetEq>Echte Teilmenge</SubsetEq>  \r
-    <NSubset>Keine Teilmenge</NSubset>  \r
-    <NSubsetEq>Keine echte Teilmenge</NSubsetEq> \r
-    <Sine>Sinus</Sine>  \r
-    <Cosine>Kosinus</Cosine>  \r
-    <Tangent>Tangens</Tangent>  \r
-    <ArcSine>Arkusinus</ArcSine>  \r
-    <ArcCosine>Arkuskosinus</ArcCosine>  \r
-    <ArcTangent>Arkustangens</ArcTangent> \r
-    <SineH>Sinus Hyperbolicus</SineH>  \r
-    <CosineH>Kosinus Hyperbolicus</CosineH>  \r
-    <TanH>Tangens Hyperbolicus</TanH>  \r
-    <ArcSineH>Areasinus Hyperbolicus</ArcSineH>  \r
-    <ArcCosineH>Areakosinus Hyperbolicus</ArcCosineH>  \r
-    <ArcTanH>Areatangens Hyperbolicus</ArcTanH>  \r
-    <Logarithm>Logarithmus</Logarithm>\r
-    <NaturalLogarithm>Natürlicher Logarithmus</NaturalLogarithm>  \r
-    <Exp>Exponentialfunktion</Exp>  \r
-    <UMinus>Minus</UMinus>  \r
-    <BracketsRnd>Runde Klammern</BracketsRnd>  \r
-    <BracketsCurl>Geschwungene Klammern</BracketsCurl>  \r
-    <BracketsSq>Eckige Klammern</BracketsSq>  \r
-    <Abs>Betrag</Abs> \r
-    <Infinity>Unendlich</Infinity>\r
-    <GreekLetter>Griechische Buchstaben</GreekLetter> \r
-    <Factorial>Faktorisieren</Factorial> \r
-    <Max>Maximum</Max> \r
-    <Min>Minimum</Min> \r
-    <Assignment>Aufgabe</Assignment>\r
-    <Function>Unbekannte Funktion</Function> \r
-    <Determinant>Determinante</Determinant>\r
-    <Trace>Spur</Trace>\r
-    <DefiniteIntegral>Bestimmtes Integral</DefiniteIntegral>\r
-    <Product>Produkt</Product>\r
-    <Sum>Summe</Sum>\r
-    <Limit>Grenzwert</Limit>\r
-    <Evaluate>Ausdruck auswerten</Evaluate>\r
-    <LeftArrow>Links arrow</LeftArrow> \r
-    <RightArrow>Recht arrow</RightArrow> \r
-    <UpArrow>Bis arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Links doppel arrow</LeftDblArrow> \r
-    <RightDblArrow>Recht doppel arrow</RightDblArrow> \r
-    <LeftRightArrow>Links-Recht arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Links-Recht doppel arrow</LeftRightDblArrow>     \r
-    <NorthEastArrow>Nord-Ost Pfeil</NorthEastArrow>            \r
-    <SouthEastArrow>Süd-Ost Pfeil</SouthEastArrow>            \r
-    <NorthWestArrow>Nord-West Pfeil</NorthWestArrow>           \r
-    <SouthWestArrow>Süd-West Pfeil</SouthWestArrow>\r
-    <Multiply2>Multiplikation</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Gleichwertigkeit</Equiv>\r
-    <Exists>Vorhanden</Exists>\r
-    <ForAll>Für alle</ForAll>\r
-    <IsIn>Ist in</IsIn>\r
-    <NotExists>Nicht vorhanden</NotExists>\r
-    <NotIn>Nicht in</NotIn>\r
-    <SimEq>Asymptotisch äquivalent zu</SimEq>\r
-    <Or>Oder</Or>\r
-    <And>Und</And>\r
-    <Not>Nicht</Not>\r
-    <PartialDifferential>Partial Differential</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Lade Format von Datei</OpenButton>\r
-    <SaveButton>Speichere Format als Datei</SaveButton>\r
-    <ExportButton>Exportiere Format in die Zwischenablage</ExportButton>\r
-    <UndoButton>Rückgägig</UndoButton>\r
-    <RedoButton>Wiederholen</RedoButton>\r
-    <CutButton>Ausschneiden</CutButton>\r
-    <CopyButton>Kopieren</CopyButton>\r
-    <PasteButton>Einfügen</PasteButton>\r
-    <ClearButton>Leere das gesamte Arbeitsfeld</ClearButton>\r
-    <SelectButton>Wähle das gesamte Arbeitsfeld</SelectButton>\r
-    <LoadFormatButton>Lade eine Formatdatei</LoadFormatButton>\r
-    <LoadLangButton>Lade eine Sprachdatei</LoadLangButton>\r
-    <ShowTreeButton>Zeige Baumstruktur eines Ausdrucks</ShowTreeButton>\r
-    <OutlineButton>Zeige außerhalb des Objektes im Arbeitsfeld</OutlineButton>\r
-    <OnlineHelpButton>Lade Hilfedateien im Browser</OnlineHelpButton>\r
-    <AboutButton>Über DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Datei</FileMenu>\r
-    <OpenMenu>Öffnen...</OpenMenu>\r
-    <SaveAsMenu>Speichern als...</SaveAsMenu>\r
-    <ExportMenu>Exportiere in die Zwischenablage</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Bearbeiten</EditMenu>\r
-    <UndoMenu>Rückgängig</UndoMenu>\r
-    <RedoMenu>Wiederholen</RedoMenu>\r
-    <CutMenu>Ausschneiden</CutMenu>\r
-    <CopyMenu>Kopieren</CopyMenu>\r
-    <PasteMenu>Einfügen</PasteMenu>\r
-    <ClearMenu>Arbeitsfeld leeren</ClearMenu>\r
-    <SelectMenu>Alle auswählen</SelectMenu>\r
-    \r
-    <OptionsMenu>Optionen</OptionsMenu>\r
-    <SetExportMenu>Export-Format einstellen</SetExportMenu>\r
-    <SetLanguageMenu>Sprache einstellen</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Hilfe</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Zeige Ausdruck in Baumstruktur</TreeMenu>\r
-    <OutlineMenu>Zeige außerhalb</OutlineMenu>\r
-    <OnlineHelpMenu>Online-Hilfe</OnlineHelpMenu>\r
-    <AboutMenu>Über DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/en.xml b/lib/editor/common/dragmath/applet/classes/lang/en.xml
deleted file mode 100644 (file)
index b741cf0..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : en.xml\r
-    Created on : 30 July 2007, 15:43\r
-    Author     : Alex Billingsley\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Error reading format file: Check file is valid</ReadingFile> \r
-    <ReadingFile2>Error loading format file: </ReadingFile2> \r
-    <LoadingExp>Error loading saved expression</LoadingExp>\r
-    <SavingExp>Error saving expression</SavingExp>\r
-    <Cut>Cannot cut selection: </Cut>\r
-    <Copy>Cannot copy selection: </Copy>\r
-    <Tree>Cannot display tree: </Tree>\r
-    <Action>Action could not be completed: </Action>\r
-    <AddMatrix>Cannot add Matrix at this location</AddMatrix>\r
-    <Operator>Operator missing at position </Operator>\r
-    <Argument>Argument of operator missing at position </Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Expression could not be parsed</ParseExp>\r
-    <LoadExpression>DragMath - Choose an expression file to load</LoadExpression>\r
-    <SaveExpression>DragMath - Choose the location to save the expression</SaveExpression>\r
-    <EnterRows>Enter number of rows of matrix</EnterRows>\r
-    <EnterColumns>Enter number of columns of matrix</EnterColumns>\r
-    <MatrixDim>Matrix Dimensions</MatrixDim>\r
-    <NoCut>Nothing selected to cut</NoCut>\r
-    <NoPaste>Nothing to paste</NoPaste>\r
-    <NoBox>No box selected to paste into</NoBox>\r
-    <NoCopy>Nothing selected to copy</NoCopy>\r
-    <Copied>Copied</Copied>\r
-    <ReadingData>Error reading output data</ReadingData>\r
-    <Clipboard>Expression exported to clipboard</Clipboard>\r
-    <NoExpression>No expression to convert</NoExpression>\r
-    <NoFormat>No format file has been loaded yet</NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Multiplication</Multiply>\r
-    <Divide>Division</Divide>  \r
-    <Add>Addition</Add> \r
-    <Subtract>Subtraction</Subtract>  \r
-    <Comma>Comma</Comma>\r
-    <PlusMinus>Plus-Minus</PlusMinus>\r
-    <SquareRoot>Square Root</SquareRoot>  \r
-    <NthRoot>N-th Root</NthRoot>  \r
-    <Power>Superscript</Power>  \r
-    <Subscript>Subscript</Subscript>  \r
-    <Matrix>Matrix</Matrix>  \r
-    <Integral>Integration</Integral>\r
-    <Differential>Differentiation</Differential>\r
-    <LessThan>Less Than</LessThan>  \r
-    <GreaterThan>Greater Than</GreaterThan>  \r
-    <LTEQ>Less Than or Equal To</LTEQ>  \r
-    <GTEQ>Greater Than or Equal To</GTEQ>\r
-    <Equals>Equals</Equals>\r
-    <NotEqual>Not Equal</NotEqual> \r
-    <Union>Union</Union>  \r
-    <Intersection>Intersection</Intersection>  \r
-    <Subset>Subset</Subset>  \r
-    <SubsetEq>Subset or Equal To</SubsetEq>  \r
-    <NSubset>Not Subset</NSubset>  \r
-    <NSubsetEq>Not Subset or Equal To</NSubsetEq> \r
-    <Sine>Sine</Sine>  \r
-    <Cosine>Cosine</Cosine>  \r
-    <Tangent>Tangent</Tangent>  \r
-    <ArcSine>Inverse Sine</ArcSine>  \r
-    <ArcCosine>Inverse Cosine</ArcCosine>  \r
-    <ArcTangent>Inverse Tangent</ArcTangent> \r
-    <SineH>Hyperbolic Sine</SineH>  \r
-    <CosineH>Hyperbolic Cosine</CosineH>  \r
-    <TanH>Hyperbolic Tangent</TanH>  \r
-    <ArcSineH>Inverse Hyperbolic Sine</ArcSineH>  \r
-    <ArcCosineH>Inverse Hyperbolic Cosine</ArcCosineH>  \r
-    <ArcTanH>Inverse Hyperbolic Tangent</ArcTanH>  \r
-    <Logarithm>Logarithm</Logarithm>\r
-    <NaturalLogarithm>Natural Logarithm</NaturalLogarithm>  \r
-    <Exp>Exponential Function</Exp>  \r
-    <UMinus>Minus</UMinus>  \r
-    <BracketsRnd>Round Brackets</BracketsRnd>  \r
-    <BracketsCurl>Curly Brackets</BracketsCurl>  \r
-    <BracketsSq>Square Brackets</BracketsSq>  \r
-    <Abs>Absolute Value</Abs> \r
-    <Infinity>Infinity</Infinity>\r
-    <GreekLetter>Greek letter</GreekLetter> \r
-    <Factorial>Factorial</Factorial> \r
-    <Max>Maximum of a set</Max> \r
-    <Min>Minimum of a set</Min> \r
-    <Assignment>Assignment</Assignment>\r
-    <Function>Unknown function</Function> \r
-    <Determinant>Determinant</Determinant>\r
-    <Trace>Trace</Trace>\r
-    <DefiniteIntegral>Definite Integral</DefiniteIntegral>\r
-    <Product>Product</Product>\r
-    <Sum>Sum</Sum>\r
-    <Limit>Limit</Limit>\r
-    <Evaluate>Evaluate an expression at a point</Evaluate>\r
-    <LeftArrow>Left arrow</LeftArrow> \r
-    <RightArrow>Right arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Left double arrow</LeftDblArrow> \r
-    <RightDblArrow>Right double arrow</RightDblArrow> \r
-    <LeftRightArrow>Left-Right arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Left-Right double arrow</LeftRightDblArrow> \r
-    <NorthEastArrow>North-East arrow</NorthEastArrow>          \r
-    <SouthEastArrow>South-East arrow</SouthEastArrow>          \r
-    <NorthWestArrow>North-West arrow</NorthWestArrow>          \r
-    <SouthWestArrow>South-West arrow</SouthWestArrow>\r
-    <Multiply2>Multiplication</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Equivalence</Equiv>\r
-    <Exists>There Exists</Exists>\r
-    <ForAll>For All</ForAll>\r
-    <IsIn>Element Of</IsIn>\r
-    <NotExists>There Does Not Exist</NotExists>\r
-    <NotIn>Not An Element Of</NotIn>\r
-    <SimEq>Asymptotically Equivalent To</SimEq>\r
-    <Or>Or</Or>\r
-    <And>And</And>\r
-    <Not>Not</Not>\r
-    <PartialDifferential>Partial Differential</PartialDifferential>\r
-    \r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Load expression from file</OpenButton>\r
-    <SaveButton>Save expression to file</SaveButton>\r
-    <ExportButton>Export expression to clipboard</ExportButton>\r
-    <UndoButton>Undo</UndoButton>\r
-    <RedoButton>Redo</RedoButton>\r
-    <CutButton>Cut</CutButton>\r
-    <CopyButton>Copy</CopyButton>\r
-    <PasteButton>Paste</PasteButton>\r
-    <ClearButton>Clear the entire workspace</ClearButton>\r
-    <SelectButton>Select the entire workspace</SelectButton>\r
-    <LoadFormatButton>Load an export format file</LoadFormatButton>\r
-    <LoadLangButton>Load a language file</LoadLangButton>\r
-    <ShowTreeButton>Show tree structure of expression</ShowTreeButton>\r
-    <OutlineButton>Display outline of objects on workspace</OutlineButton>\r
-    <OnlineHelpButton>Loads help documents in web browser</OnlineHelpButton>\r
-    <AboutButton>About DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>File</FileMenu>\r
-    <OpenMenu>Open...</OpenMenu>\r
-    <SaveAsMenu>Save As...</SaveAsMenu>\r
-    <ExportMenu>Export to clipboard</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Edit</EditMenu>\r
-    <UndoMenu>Undo</UndoMenu>\r
-    <RedoMenu>Redo</RedoMenu>\r
-    <CutMenu>Cut</CutMenu>\r
-    <CopyMenu>Copy</CopyMenu>\r
-    <PasteMenu>Paste</PasteMenu>\r
-    <ClearMenu>Clear Workspace</ClearMenu>\r
-    <SelectMenu>Select All</SelectMenu>\r
-    \r
-    <OptionsMenu>Options</OptionsMenu>\r
-    <SetExportMenu>Set export format</SetExportMenu>\r
-    <SetLanguageMenu>Set language</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Help</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Show expression tree</TreeMenu>\r
-    <OutlineMenu>Show outline</OutlineMenu>\r
-    <OnlineHelpMenu>Online Help</OnlineHelpMenu>\r
-    <AboutMenu>About DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/es.xml b/lib/editor/common/dragmath/applet/classes/lang/es.xml
deleted file mode 100644 (file)
index 3798234..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : es.xml    \r
-    Created on : 12 December 2007, 9:36    \r
-    Author     : Francisco Rivas <taken2k4@gmail.com>    \r
-    Description: \r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Error leyendo el archivo: Verifique archivo</ReadingFile> \r
-    <ReadingFile2>Error cargando el archivo con formato: </ReadingFile2> \r
-    <LoadingExp>Error cargando expresión guardada</LoadingExp>\r
-    <SavingExp>Error guardando expresión</SavingExp>\r
-    <Cut>No se puede cortar selección: </Cut>\r
-    <Copy>No se puede copiar selección: </Copy>\r
-    <Tree>No se puede mostrar el árbol: </Tree>\r
-    <Action>Acción no puede ser completada: </Action>\r
-    <AddMatrix>No se puede agregar una matriz en este lugar</AddMatrix>\r
-    <Operator>Operador no encontrado en esta posición </Operator>\r
-    <Argument>Argumento del operador no encontrado </Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Expresión no puede ser enviada</ParseExp>\r
-    <LoadExpression>DragMath - Seleccione un archivo de expresiones</LoadExpression>\r
-    <SaveExpression>DragMath - ¿Dónde desea guardar el archivo?</SaveExpression>\r
-    <EnterRows>Inserte el número de filas de la matriz</EnterRows>\r
-    <EnterColumns>Inserte el número de columnas de la matriz</EnterColumns>\r
-    <MatrixDim>Dimensiones de la matriz</MatrixDim>\r
-    <NoCut>No ha seleccionado nada para cortar</NoCut>\r
-    <NoPaste>Nada para pegar</NoPaste>\r
-    <NoBox>No ha seleccionado sitio para pegar</NoBox>\r
-    <NoCopy>No ha seleccionado nada para copiar</NoCopy>\r
-    <Copied>Copiado</Copied>\r
-    <ReadingData>Error leyendo datos de salida</ReadingData>\r
-    <Clipboard>Expresión exportada al portapapeles</Clipboard>\r
-    <NoExpression>No ha seleccionado expresión para convertir</NoExpression>\r
-    <NoFormat>No ha cargado un archivo con formato aún</NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Multiplicación</Multiply>\r
-    <Divide>Fracción</Divide>  \r
-    <Add>Adición</Add> \r
-    <Subtract>Sustracción</Subtract>  \r
-    <Comma>Coma</Comma>\r
-    <PlusMinus>Mas-Menos</PlusMinus>\r
-    <SquareRoot>Raíz Cuadrada</SquareRoot>  \r
-    <NthRoot>N-ésima Raíz</NthRoot>  \r
-    <Power>SuperIndice</Power>  \r
-    <Subscript>SubIndice</Subscript>  \r
-    <Matrix>Matriz</Matrix>  \r
-    <Integral>Integración</Integral>\r
-    <Differential>Diferenciación</Differential>\r
-    <LessThan>Menor que</LessThan>  \r
-    <GreaterThan>Mayor que</GreaterThan>  \r
-    <LTEQ>Menor o Igual que</LTEQ>  \r
-    <GTEQ>Mayor o Igual que</GTEQ>\r
-    <Equals>Igual</Equals>\r
-    <NotEqual>No Igual</NotEqual> \r
-    <Union>Unión</Union>  \r
-    <Intersection>Intersección</Intersection>  \r
-    <Subset>SubConjunto</Subset>  \r
-    <SubsetEq>SubConjunto o Igual que</SubsetEq>  \r
-    <NSubset>No SubConjunto</NSubset>  \r
-    <NSubsetEq>No es SubConjunto o Igual que</NSubsetEq> \r
-    <Sine>Seno</Sine>  \r
-    <Cosine>Coseno</Cosine>  \r
-    <Tangent>Tangente</Tangent>  \r
-    <ArcSine>Inversa Seno</ArcSine>  \r
-    <ArcCosine>Inversa Coseno</ArcCosine>  \r
-    <ArcTangent>Inversa Tangente</ArcTangent> \r
-    <SineH>Seno Hiperbólico</SineH>  \r
-    <CosineH>Coseno Hiperbólico</CosineH>  \r
-    <TanH>Tangente Hiperbólico</TanH>  \r
-    <ArcSineH>Seno Hiperbólico Inverso</ArcSineH>  \r
-    <ArcCosineH>Coseno Hiperbólico Inverso</ArcCosineH>  \r
-    <ArcTanH>Tangente Hiperbólica Inversa</ArcTanH>  \r
-    <Logarithm>Logaritmo</Logarithm>\r
-    <NaturalLogarithm>Logaritmo Natural</NaturalLogarithm>  \r
-    <Exp>Función Exponencial</Exp>  \r
-    <UMinus>Menos</UMinus>  \r
-    <BracketsRnd>Parentesis</BracketsRnd>  \r
-    <BracketsCurl>Llaves</BracketsCurl>  \r
-    <BracketsSq>Corchetes</BracketsSq>  \r
-    <Abs>Valor Absoluto</Abs> \r
-    <Infinity>Infinito</Infinity>\r
-    <GreekLetter>Letras Griegas</GreekLetter> \r
-    <Factorial>Factorial</Factorial> \r
-    <Max>Máximo del Conjunto</Max> \r
-    <Min>Minimo del Conjutno</Min> \r
-    <Assignment>Asignación</Assignment>\r
-    <Function>Función Desconocida</Function> \r
-    <Determinant>Determinante</Determinant>\r
-    <Trace>Ruta</Trace>\r
-    <DefiniteIntegral>Integral Definida</DefiniteIntegral>\r
-    <Product>Productoria</Product>\r
-    <Sum>Sumatoria</Sum>\r
-    <Limit>Limite</Limit>\r
-    <Evaluate>Evaluar una expresión en un punto</Evaluate>\r
-    <LeftArrow>Flecha izquierda</LeftArrow> \r
-    <RightArrow>Flecha derecha</RightArrow> \r
-    <UpArrow>Flecha arriba</UpArrow> \r
-    <DownArrow>Flecha abajo</DownArrow> \r
-    <LeftRightArrow>Flecha izquierda-dreta</LeftRightArrow> \r
-    <LeftDblArrow>Flecha doble izquierda</LeftDblArrow> \r
-    <RightDblArrow>Flecha doble derecha</RightDblArrow> \r
-    <LeftRightDblArrow>Flecha doble izquierda-derecha</LeftRightDblArrow>  \r
-    <NorthEastArrow>Flecha derecha-arriba</NorthEastArrow>             \r
-    <SouthEastArrow>Flecha derecha-abajo</SouthEastArrow>              \r
-    <NorthWestArrow>Flecha izquierda-arriba</NorthWestArrow>           \r
-    <SouthWestArrow>Flecha izquierda-abajo</SouthWestArrow>   \r
-    <Multiply2>Multiplicación</Multiply2>\r
-    <Divide2>División</Divide2>\r
-    <Equiv>Equivalencia</Equiv>\r
-    <Exists>Existe</Exists>\r
-    <ForAll>Para todo</ForAll>\r
-    <IsIn>Pertenece</IsIn>\r
-    <NotExists>No existe</NotExists>\r
-    <NotIn>No pertenece</NotIn>\r
-    <SimEq>Parecido</SimEq>\r
-    <Or>Unión Lógica</Or>\r
-    <And>Intersección lógica</And>\r
-    <Not>Negación lógica</Not>\r
-    <PartialDifferential>Diferenciales Parciales</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Cargar una expresión de un archivo</OpenButton>\r
-    <SaveButton>Salvar una expresión a un archivo</SaveButton>\r
-    <ExportButton>Exportar la expresión al portapapeles</ExportButton>\r
-    <UndoButton>Deshacer</UndoButton>\r
-    <RedoButton>Rehacer</RedoButton>\r
-    <CutButton>Cortar</CutButton>\r
-    <CopyButton>Copiar</CopyButton>\r
-    <PasteButton>Pegar</PasteButton>\r
-    <ClearButton>Limpiar toda el área de trabajo</ClearButton>\r
-    <SelectButton>Seleccionar toda el área de trabajo</SelectButton>\r
-    <LoadFormatButton>Cargar archivo con formato exportado</LoadFormatButton>\r
-    <LoadLangButton>Cargar un archivo de lenguaje</LoadLangButton>\r
-    <ShowTreeButton>Mostrar la expresión como un árbol</ShowTreeButton>\r
-    <OutlineButton>Mostrar bordes de expresiones</OutlineButton>\r
-    <OnlineHelpButton>Cargar documentos de ayuda en el navegador</OnlineHelpButton>\r
-    <AboutButton>Acerca de DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Archivo</FileMenu>\r
-    <OpenMenu>Abrir...</OpenMenu>\r
-    <SaveAsMenu>Salvar como...</SaveAsMenu>\r
-    <ExportMenu>Exportar al portapapeles</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Editar</EditMenu>\r
-    <UndoMenu>Deshacer</UndoMenu>\r
-    <RedoMenu>Rehacer</RedoMenu>\r
-    <CutMenu>Cortar</CutMenu>\r
-    <CopyMenu>Copiar</CopyMenu>\r
-    <PasteMenu>Pegar</PasteMenu>\r
-    <ClearMenu>Limpiar todo</ClearMenu>\r
-    <SelectMenu>Seleccionar todo</SelectMenu>\r
-    \r
-    <OptionsMenu>Opciones</OptionsMenu>\r
-    <SetExportMenu>Formato de Exportación</SetExportMenu>\r
-    <SetLanguageMenu>Lenguaje</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Ayuda</HelpMenu>\r
-    <DebugMenu>Depurar</DebugMenu>\r
-    <TreeMenu>Mostrar árbol de expresión</TreeMenu>\r
-    <OutlineMenu>Mostrar bordes</OutlineMenu>\r
-    <OnlineHelpMenu>Ayuda en linea</OnlineHelpMenu>\r
-    <AboutMenu>Acerca de DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/fr.xml b/lib/editor/common/dragmath/applet/classes/lang/fr.xml
deleted file mode 100644 (file)
index 1c0d352..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-\r
-<!--\r
-    Document   : fr.xml\r
-    Created on : 19 Decembre 2007, 10:54\r
-    Author     : Philippe Quattrociocchi\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Erreur de lecture du format de fichier: Vérifiez si le fichier est valide</ReadingFile> \r
-    <ReadingFile2>Erreur de lecture du fichier: </ReadingFile2> \r
-    <LoadingExp>Erreur lors du chargement des expressions</LoadingExp>\r
-    <SavingExp>Erreur lors de l'enregistrement des expressions</SavingExp>\r
-    <Cut>Découpe de la sélection impossible: </Cut>\r
-    <Copy>Copie de la sélection impossible: </Copy>\r
-    <Tree>Affichage de l'arbre impossible</Tree>\r
-    <Action>L'action n'a pas pu être terminée: </Action>\r
-    <AddMatrix>La matrice n'a pas pu être ajoutée à cette position</AddMatrix>\r
-    <Operator>L'opérateur est manquant à cette position</Operator>\r
-    <Argument>L'argument de l'opérateur est manquant à cette position</Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>L'expression n'a pas pu être lu</ParseExp>\r
-    <LoadExpression>DragMath - Choisissez un fichier d'expression à lire</LoadExpression>\r
-    <SaveExpression>DragMath - Choisissez un endroit pour sauver l'expression</SaveExpression>\r
-    <EnterRows>Entrez le nombre de lignes de la matrice</EnterRows>\r
-    <EnterColumns>Entrez le nombre de colonne de la matrice</EnterColumns>\r
-    <MatrixDim>Dimensions de la matrice</MatrixDim>\r
-    <NoCut>Rien à couper</NoCut>\r
-    <NoPaste>Rien à coller</NoPaste>\r
-    <NoBox>Pas de boîte sélectionné pour collage</NoBox>\r
-    <NoCopy>Rien à copier</NoCopy>\r
-    <Copied>Copié</Copied>\r
-    <ReadingData>Erreur lors de la lecture des données de sortie</ReadingData>\r
-    <Clipboard>Expression exporté dans le Presse-papiers</Clipboard>\r
-    <NoExpression>Aucune expression à convertir</NoExpression>\r
-    <NoFormat>Aucun format de fichier n'a encore été chargé</NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Multiplication</Multiply>\r
-    <Divide>Division</Divide>  \r
-    <Add>Addition</Add> \r
-    <Subtract>Soustraction</Subtract>  \r
-    <Comma>Virgule</Comma>\r
-    <PlusMinus>Plus ou Moin</PlusMinus>\r
-    <SquareRoot>Carré</SquareRoot>  \r
-    <NthRoot>Racine</NthRoot>  \r
-    <Power>Puissance</Power>  \r
-    <Subscript>Indice</Subscript>  \r
-    <Matrix>Matrice</Matrix>  \r
-    <Integral>Integrale</Integral>\r
-    <Differential>Différenciation</Differential>\r
-    <LessThan>Inférieur à</LessThan>  \r
-    <GreaterThan>Supérieur à</GreaterThan>  \r
-    <LTEQ>Inférieur ou égal à</LTEQ>  \r
-    <GTEQ>Supérieur ou égal à</GTEQ>\r
-    <Equals>Egal</Equals>\r
-    <NotEqual>Inégal</NotEqual> \r
-    <Union>Union</Union>  \r
-    <Intersection>Intersection</Intersection>  \r
-    <Subset>Appartient</Subset>  \r
-    <SubsetEq>Appartient ou est égal à</SubsetEq>  \r
-    <NSubset>N'appartient pas</NSubset>  \r
-    <NSubsetEq>N'appartient pas ou est égal à</NSubsetEq> \r
-    <Sine>Sinus</Sine>  \r
-    <Cosine>Cosinus</Cosine>  \r
-    <Tangent>Tangente</Tangent>  \r
-    <ArcSine>Sinus Inverse</ArcSine>  \r
-    <ArcCosine>Cosinus Inverse</ArcCosine>  \r
-    <ArcTangent>Tangente inversée</ArcTangent> \r
-    <SineH>Hyperbolic Sinus</SineH>  \r
-    <CosineH>Cosinus hyperbolique</CosineH>  \r
-    <TanH>Tangente hyperbolique</TanH>  \r
-    <ArcSineH>Sinus hyperbolique inversée</ArcSineH>  \r
-    <ArcCosineH>Cosinus hyperbolique inversée</ArcCosineH>  \r
-    <ArcTanH>Tangente hyperbolique inversée</ArcTanH>  \r
-    <Logarithm>Logarithme</Logarithm>\r
-    <NaturalLogarithm>Logarithme naturelle</NaturalLogarithm>  \r
-    <Exp>Exposant</Exp>  \r
-    <UMinus>Moins</UMinus>  \r
-    <BracketsRnd>Parenthèses</BracketsRnd>  \r
-    <BracketsCurl>Accolades</BracketsCurl>  \r
-    <BracketsSq>Crochets</BracketsSq>  \r
-    <Abs>Valeur absolue</Abs> \r
-    <Infinity>Infinie</Infinity>\r
-    <GreekLetter>Lettres grecque</GreekLetter> \r
-    <Factorial>Factoriel</Factorial> \r
-    <Max>Maximale d'un ensemble</Max> \r
-    <Min>Minimum d'un ensemble</Min> \r
-    <Assignment>Cession</Assignment>\r
-    <Function>Fonction inconnue</Function> \r
-    <Determinant>Déterminant</Determinant>\r
-    <Trace>Trace</Trace>\r
-    <DefiniteIntegral>Integrale définie</DefiniteIntegral>\r
-    <Product>Produit</Product>\r
-    <Sum>Somme</Sum>\r
-    <Limit>Limite</Limit>\r
-    <Evaluate>Évaluer l'expression en un point</Evaluate>\r
-    <LeftArrow>Gauche arrow</LeftArrow> \r
-    <RightArrow>Droite arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Gauche double arrow</LeftDblArrow> \r
-    <RightDblArrow>Right double arrow</RightDblArrow> \r
-    <LeftRightArrow>Gauche-Droite arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Gauche-Droite double arrow</LeftRightDblArrow>   \r
-    <NorthEastArrow>Nord-Est Arrow</NorthEastArrow>            \r
-    <SouthEastArrow>Sud-Est arrow</SouthEastArrow>             \r
-    <NorthWestArrow>Nord-Ouest arrow</NorthWestArrow>          \r
-    <SouthWestArrow>Sud-Ouest arrow</SouthWestArrow>  \r
-    <LeftUpArrow>Gauche-Up arrow</LeftUpArrow> \r
-    <LeftDownArrow>Gauche-Down arrow</LeftDownArrow> \r
-    <RightUpArrow>Right-Up arrow</RightUpArrow> \r
-    <RightDownArrow>Droite-down arrow</RightDownArrow> \r
-    \r
-    <Multiply2>Multiplication</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Equivalence</Equiv>\r
-    <Exists>Il existe</Exists>\r
-    <ForAll>Pour tous</ForAll>\r
-    <IsIn>Est en</IsIn>\r
-    <NotExists>Il n'existe pas</NotExists>\r
-    <NotIn>Pas un élément de</NotIn>\r
-    <SimEq>Asymptotiquement équivalente à</SimEq>\r
-    <Or>Ou</Or>\r
-    <And>Et</And>\r
-    <Not>Non</Not>\r
-    <PartialDifferential>Dérivée partielle</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Charger une expression à partir d'un fichier</OpenButton>\r
-    <SaveButton>Sauvegarde de l'expression à partir d'un fichier</SaveButton>\r
-    <ExportButton>Exporter l'expression dans le presse-papier</ExportButton>\r
-    <UndoButton>Défaire</UndoButton>\r
-    <RedoButton>Refaire</RedoButton>\r
-    <CutButton>Couper</CutButton>\r
-    <CopyButton>Copier</CopyButton>\r
-    <PasteButton>Coller</PasteButton>\r
-    <ClearButton>Tout effacer</ClearButton>\r
-    <SelectButton>Tout sélectionner</SelectButton>\r
-    <LoadFormatButton>Charger un fichier de format d'expression</LoadFormatButton>\r
-    <LoadLangButton>Charger un fichier de langage</LoadLangButton>\r
-    <ShowTreeButton>Afficher l'arborescence de l'expression</ShowTreeButton>\r
-    <OutlineButton>Afficher la structure de l'expression</OutlineButton>\r
-    <OnlineHelpButton>Charger l'aide en ligne</OnlineHelpButton>\r
-    <AboutButton>A propos de DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Fichier</FileMenu>\r
-    <OpenMenu>Ouvrir...</OpenMenu>\r
-    <SaveAsMenu>Enregistrer sous...</SaveAsMenu>\r
-    <ExportMenu>Exporter dans le presse-papier</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Editer</EditMenu>\r
-    <UndoMenu>Défaire</UndoMenu>\r
-    <RedoMenu>Refaire</RedoMenu>\r
-    <CutMenu>Couper</CutMenu>\r
-    <CopyMenu>Copier</CopyMenu>\r
-    <PasteMenu>Coller</PasteMenu>\r
-    <ClearMenu>Tout effacer</ClearMenu>\r
-    <SelectMenu>Tout sélectionner</SelectMenu>\r
-    \r
-    <OptionsMenu>Options</OptionsMenu>\r
-    <SetExportMenu>Changer de format de sorti</SetExportMenu>\r
-    <SetLanguageMenu>Changer de langue</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Aide</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Afficher l'arborescence de l'expression</TreeMenu>\r
-    <OutlineMenu>Afficher la structure de l'expression</OutlineMenu>\r
-    <OnlineHelpMenu>Aide Online</OnlineHelpMenu>\r
-    <AboutMenu>A propos de DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/nl.xml b/lib/editor/common/dragmath/applet/classes/lang/nl.xml
deleted file mode 100644 (file)
index 435ff53..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : nl.xml\r
-    Created on : 26 december 2007\r
-    Author     : Patrick Tydtgat\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Fout bij lezen bestand: Controleer geldigheid bestandstype</ReadingFile> \r
-    <ReadingFile2>Fout bij laden bestand: </ReadingFile2> \r
-    <LoadingExp>Fout bij laden uitdrukking</LoadingExp>\r
-    <SavingExp>Fout bij bewaren uitdrukking</SavingExp>\r
-    <Cut>Kan selectie niet knippen: </Cut>\r
-    <Copy>Kan selectie niet kopiëren: </Copy>\r
-    <Tree>Kan boomstructuur niet weergeven: </Tree>\r
-    <Action>Kon bewerking niet uitvoeren: </Action>\r
-    <AddMatrix>Kan matrix hier niet invoegen</AddMatrix>\r
-    <Operator>Operator ontbreekt </Operator>\r
-    <Argument>Argument ontbreekt </Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Uitdrukking kon niet behandeld worden</ParseExp>\r
-    <LoadExpression>DragMath - Kies een te laden bestand</LoadExpression>\r
-    <SaveExpression>DragMath - Kies een map om de uitdrukking te bewaren</SaveExpression>\r
-    <EnterRows>Aantal in te voegen</EnterRows>\r
-    <EnterColumns>Aantal in te voegen kolommen</EnterColumns>\r
-    <MatrixDim>Matrix Dimensies</MatrixDim>\r
-    <NoCut>Niets geselecteerd om te knippen</NoCut>\r
-    <NoPaste>Niets te plakken</NoPaste>\r
-    <NoBox>Geen box geselecteerd waarin geplakt moet worden</NoBox>\r
-    <NoCopy>Niets geselecteerd om te kopiëren</NoCopy>\r
-    <Copied>Gekopieerd</Copied>\r
-    <ReadingData>Fout bij lezen output gegevens</ReadingData>\r
-    <Clipboard>Gekopieerd naar klembord</Clipboard>\r
-    <NoExpression>Niets te converteren</NoExpression>\r
-    <NoFormat>ER werd geen format-bestand geladen</NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Vermenigvuldigen</Multiply>\r
-    <Divide>Delen</Divide>  \r
-    <Add>Optellen</Add> \r
-    <Subtract>Aftrekken</Subtract>  \r
-    <Comma>Komma</Comma>\r
-    <PlusMinus>Plus-Minus</PlusMinus>\r
-    <SquareRoot>Vierkantswortel</SquareRoot>  \r
-    <NthRoot>N-de Machtswortel</NthRoot>  \r
-    <Power>Superscript</Power>  \r
-    <Subscript>Subscript</Subscript>  \r
-    <Matrix>Matrix</Matrix>  \r
-    <Integral>Integreren</Integral>\r
-    <Differential>Differentiëren</Differential>\r
-    <LessThan>Kleiner Dan</LessThan>  \r
-    <GreaterThan>Groter Dan</GreaterThan>  \r
-    <LTEQ>Kleiner dan of Gelijk Aan</LTEQ>  \r
-    <GTEQ>Groter Dan of Gelijk Aan</GTEQ>\r
-    <Equals>Gelijk</Equals>\r
-    <NotEqual>Niet Gelijk</NotEqual> \r
-    <Union>Vereniging</Union>  \r
-    <Intersection>Doorsnede</Intersection>  \r
-    <Subset>Deelverzameling</Subset>  \r
-    <SubsetEq>Deelverzameling of Gelijk Aan</SubsetEq>  \r
-    <NSubset>Geen Deelverzameling</NSubset>  \r
-    <NSubsetEq>Geen Deelverzameling of Gelijk Aan</NSubsetEq> \r
-    <Sine>Sinus</Sine>  \r
-    <Cosine>Cosinus</Cosine>  \r
-    <Tangent>Tangens</Tangent>  \r
-    <ArcSine>Boog Sinus</ArcSine>  \r
-    <ArcCosine>Boog Cosinus</ArcCosine>  \r
-    <ArcTangent>Boog Tangens</ArcTangent> \r
-    <SineH>Sinus Hyperbolicus</SineH>  \r
-    <CosineH>Cosinus Hyperbolicus</CosineH>  \r
-    <TanH>Tangens Hyperbolicus</TanH>  \r
-    <ArcSineH>Boog Sinus Hyperbolicus</ArcSineH>  \r
-    <ArcCosineH>Boog Cosinus Hyperbolicus</ArcCosineH>  \r
-    <ArcTanH>Boog Tangens Hyperbolicus</ArcTanH>  \r
-    <Logarithm>Logaritme</Logarithm>\r
-    <NaturalLogarithm>Natuurlijke Logaritmen</NaturalLogarithm>  \r
-    <Exp>Exponentiële Functie</Exp>  \r
-    <UMinus>Min</UMinus>  \r
-    <BracketsRnd>Rondde Haakjes</BracketsRnd>  \r
-    <BracketsCurl>Accolades</BracketsCurl>  \r
-    <BracketsSq>Vierkante Haakjes</BracketsSq>  \r
-    <Abs>Absolute Waarde</Abs> \r
-    <Infinity>Oneindig</Infinity>\r
-    <GreekLetter>Griekse letter</GreekLetter> \r
-    <Factorial>Factor</Factorial> \r
-    <Max>Maximum</Max> \r
-    <Min>Minimum</Min> \r
-    <Assignment>Toekenning</Assignment>\r
-    <Function>Onbekende functie</Function> \r
-    <Determinant>Determinant</Determinant>\r
-    <Trace>Spoor</Trace>\r
-    <DefiniteIntegral>Bepaalde Integraal</DefiniteIntegral>\r
-    <Product>Product</Product>\r
-    <Sum>Som</Sum>\r
-    <Limit>Limiet</Limit>\r
-    <Evaluate>Evalueer een uitdrukking in een punt</Evaluate>\r
-    <LeftArrow>Links arrow</LeftArrow> \r
-    <RightArrow>Recht arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Omlaag arrow</DownArrow> \r
-    <LeftDblArrow>Links dubbel arrow</LeftDblArrow> \r
-    <RightDblArrow>Right dubbel arrow</RightDblArrow> \r
-    <LeftRightArrow>Links-Recht arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Links-Recht dubbel arrow</LeftRightDblArrow>    \r
-    <NorthEastArrow>Noord-Oost-arrow</NorthEastArrow>          \r
-    <SouthEastArrow>Zuid-Oost-arrow</SouthEastArrow>           \r
-    <NorthWestArrow>Noord-West-arrow</NorthWestArrow>          \r
-    <SouthWestArrow>Zuid-West arrow</SouthWestArrow>  \r
-    <Multiply2>Vermenigvuldigen</Multiply2>\r
-    <Divide2>Divisie</Divide2>\r
-    <Equiv>Gelijkwaardigheid</Equiv>\r
-    <Exists>Er Bestaat</Exists>\r
-    <ForAll>Voor alle</ForAll>\r
-    <IsIn>Element van</IsIn>\r
-    <NotExists>Er bestaat niet</NotExists>\r
-    <NotIn>Niet een element van</NotIn>\r
-    <SimEq>Asymptotically gelijk aan</SimEq>\r
-    <Or>Of</Or>\r
-    <And>En</And>\r
-    <Not>Niet</Not>\r
-    <PartialDifferential>Partiële differentiaalvergelijking</PartialDifferential>\r
-    \r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Laad uitdrukking uit bestand</OpenButton>\r
-    <SaveButton>Bewaar uitdrukking in bestand</SaveButton>\r
-    <ExportButton>Exporteer uitdrukking naar het klembord</ExportButton>\r
-    <UndoButton>Ongedaan maken</UndoButton>\r
-    <RedoButton>Herstellen</RedoButton>\r
-    <CutButton>Knippen</CutButton>\r
-    <CopyButton>Kopiëren</CopyButton>\r
-    <PasteButton>Plakken</PasteButton>\r
-    <ClearButton>Alles Wissen</ClearButton>\r
-    <SelectButton>Alles Selecteren</SelectButton>\r
-    <LoadFormatButton>Laad een export format bestand</LoadFormatButton>\r
-    <LoadLangButton>Laad een Taalbestand</LoadLangButton>\r
-    <ShowTreeButton>Toon Boomstructuur</ShowTreeButton>\r
-    <OutlineButton>Toon outline of objecten</OutlineButton>\r
-    <OnlineHelpButton>Laad help in webbrowser</OnlineHelpButton>\r
-    <AboutButton>About DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Bestand</FileMenu>\r
-    <OpenMenu>Openen...</OpenMenu>\r
-    <SaveAsMenu>Bewaar Als...</SaveAsMenu>\r
-    <ExportMenu>Kopieer naar klembord</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Bewerk</EditMenu>\r
-    <UndoMenu>Ongedaan maken</UndoMenu>\r
-    <RedoMenu>Herstellen</RedoMenu>\r
-    <CutMenu>Knippen</CutMenu>\r
-    <CopyMenu>Kopiëren</CopyMenu>\r
-    <PasteMenu>Plakken</PasteMenu>\r
-    <ClearMenu>Alles Wissen</ClearMenu>\r
-    <SelectMenu>Alles Selecteren</SelectMenu>\r
-    \r
-    <OptionsMenu>Opties</OptionsMenu>\r
-    <SetExportMenu>Kies Export Format</SetExportMenu>\r
-    <SetLanguageMenu>Kies Taal</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Help</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Toon boomstructuur</TreeMenu>\r
-    <OutlineMenu>Toon outline</OutlineMenu>\r
-    <OnlineHelpMenu>Online Help</OnlineHelpMenu>\r
-    <AboutMenu>About DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/no.xml b/lib/editor/common/dragmath/applet/classes/lang/no.xml
deleted file mode 100644 (file)
index 3664133..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : no.xml\r
-    Created on : February 2008\r
-    Author     : Anders Sanne\r
-    Description:\r
-    Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Feil ved lesing av formatfil: Sjekk om fila er gyldig</ReadingFile> \r
-    <ReadingFile2>Feil ved lasting av formatfil: </ReadingFile2>\r
-    <LoadingExp>Feil ved lasting av lagret uttrykk</LoadingExp>\r
-    <SavingExp>Feil ved lagring av uttrykk</SavingExp>\r
-    <Cut>Kan ikke klippe ut markeringen: </Cut>\r
-    <Copy>Kan ikke kopiere markeringen: </Copy>\r
-    <Tree>Kan ikke vise treet: </Tree>\r
-    <Action>Oppgaven kunne ikke fullføres: </Action>\r
-    <AddMatrix>Kan ikke legge til en matrise her</AddMatrix>\r
-    <Operator>Operator mangler ved posisjon </Operator>\r
-    <Argument>Operatorens variabel (Argument) mangler ved posisjon </Argument>\r
-    <Image>Feil: Kan ikke eksportere til bilde. Sjekk internettforbindelsen og tilgangen til http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Uttrykket kan ikke tolkes</ParseExp>\r
-    <ChooseFile>DragMath - Velg formatfil som skal lastes</ChooseFile>\r
-    <LoadExpression>DragMath - Velg uttykksfil som skal lastes</LoadExpression>\r
-    <SaveExpression>DragMath - Velg hvor du vil lagre uttrykket</SaveExpression>\r
-    <EnterRows>Angi antall rader i matrisen</EnterRows>\r
-    <EnterColumns>Ange antall kolonner i matrisen</EnterColumns>\r
-    <MatrixDim>Matrisedimmensjoner</MatrixDim>\r
-    <NoCut>Ingenting er valgt for utklipp</NoCut>\r
-    <NoPaste>Ingenting å lime inn</NoPaste>\r
-    <NoBox>Ingen boks valgt for å lime inn i</NoBox>\r
-    <NoCopy>Ingenting valgt for kopiering</NoCopy>\r
-    <Copied>Kopiert</Copied>\r
-    <ReadingData>Feil ved lesning av output data</ReadingData>\r
-    <Clipboard>Uttrykket er eksportert til utklippstavlen</Clipboard>\r
-    <NoExpression>Inget uttrykk å omforme</NoExpression>\r
-    <NoCustom>Ingen formatfil har blitt lastet ennå</NoCustom>\r
-    <ImageSize>Velg bildestørrelse 1-10 (Minst-Størst)</ImageSize>\r
-    \r
-    <!--  Tooltips for buttons   -->\r
-    <Multiply>Multiplikasjon</Multiply>\r
-    <Divide>Divisjon</Divide>  \r
-    <Add>Addisjon</Add> \r
-    <Subtract>Subtraksjon</Subtract>  \r
-    <Comma>Komma</Comma>  \r
-    <PlusMinus>Plusss-Minus</PlusMinus>\r
-    <SquareRoot>Kvadratrot</SquareRoot>  \r
-    <NthRoot>N-te rot</NthRoot>  \r
-    <Power>Eksponent</Power>  \r
-    <Subscript>Indeks</Subscript>  \r
-    <Matrix>Matrise</Matrix>  \r
-    <Integral>Integrasjon</Integral>\r
-    <Differential>Derivasjon</Differential>\r
-    <LessThan>mindre enn</LessThan>  \r
-    <GreaterThan>større enn</GreaterThan>  \r
-    <LTEQ>mindre enn eller lik</LTEQ>  \r
-    <GTEQ>større enn eller lik</GTEQ>\r
-    <Equals>lik</Equals>\r
-    <NotEqual>Ulik</NotEqual>\r
-    <Union>Union</Union>  \r
-    <Intersection>Snitt</Intersection>  \r
-    <Subset>Inneholdt i</Subset>  \r
-    <SubsetEq>Inneholdt i eller lik</SubsetEq>  \r
-    <NSubset>Ikke inneholdt i</NSubset>  \r
-    <NSubsetEq>Ikke inneholdt i eller lik</NSubsetEq> \r
-    <Sine>Sinus</Sine>  \r
-    <Cosine>Cosinus</Cosine>  \r
-    <Tangent>Tangens</Tangent>  \r
-    <ArcSine>Invers Sinus</ArcSine>  \r
-    <ArcCosine>Invers Cosinus</ArcCosine>  \r
-    <ArcTangent>Invers Tangens</ArcTangent> \r
-    <SineH>Hyperbolsk Sinus</SineH>  \r
-    <CosineH>Hyperbolsk Cosinus</CosineH>  \r
-    <TanH>Hyperbolsk Tangens</TanH>  \r
-    <ArcSineH>Invers Hyperbolsk Sinus</ArcSineH>  \r
-    <ArcCosineH>Invers Hyperbolsk Cosinus</ArcCosineH>  \r
-    <ArcTanH>Invers Hyperbolsk Tangens</ArcTanH>  \r
-    <Logarithm>Logaritme</Logarithm>\r
-    <NaturalLogarithm>Naturlig Logaritme</NaturalLogarithm>  \r
-    <Exp>Eksponetialfunksjon</Exp>  \r
-    <UMinus>Minus</UMinus>  \r
-    <BracketsRnd>rund parentes</BracketsRnd>  \r
-    <BracketsCurl>klammeparentes</BracketsCurl>  \r
-    <BracketsSq>hakeparentes</BracketsSq>  \r
-    <Abs>Absoluttverdi</Abs> \r
-    <Infinity>Uendelig</Infinity>\r
-    <GreekLetter>Gresk bokstav</GreekLetter> \r
-    <Factorial>Faktorial</Factorial> \r
-    <Max>Maksimum av en mengde</Max> \r
-    <Min>Minimum av en mengde</Min> \r
-    <Assignment>Tilordning</Assignment>\r
-    <Function>Ukjent funksjon</Function> \r
-    <Determinant>Determinant</Determinant>\r
-    <Trace>Spor</Trace>\r
-    <DefiniteIntegral>Bestemt integral</DefiniteIntegral>\r
-    <Product>Produkt</Product>\r
-    <Sum>Sum</Sum>\r
-    <Limit>Grenseverdi</Limit>\r
-    <Evaluate>Beregn et uttrykk i et punkt</Evaluate>\r
-    <LeftArrow>Venstrepil</LeftArrow> \r
-    <RightArrow>Høyrepil</RightArrow> \r
-    <UpArrow>Oppoverpil</UpArrow> \r
-    <DownArrow>Nedoverpil</DownArrow> \r
-    <LeftDblArrow>Dobbel venstrepil</LeftDblArrow> \r
-    <RightDblArrow>Dobbel høyrepil</RightDblArrow> \r
-    <LeftRightArrow>Venstre-høyre-pil</LeftRightArrow> \r
-    <LeftRightDblArrow>Dobbel venstre-høyre-pil</LeftRightDblArrow> \r
-    <NorthEastArrow>Nordøst-pil</NorthEastArrow>              \r
-    <SouthEastArrow>Sørøst-pil</SouthEastArrow>              \r
-    <NorthWestArrow>Nordøst-pil</NorthWestArrow>              \r
-    <SouthWestArrow>Sørvest-pil</SouthWestArrow>\r
-    <Multiply2>Multiplikasjon</Multiply2>\r
-    <Divide2>Divisjon</Divide2>\r
-    <Equiv>Ekvivalens</Equiv>\r
-    <Exists>Eksisterer</Exists>\r
-    <ForAll>For alle</ForAll>\r
-    <IsIn>Element i</IsIn>\r
-    <NotExists>Eksisterer ikke</NotExists>\r
-    <NotIn>Ikke element i</NotIn>\r
-    <SimEq>Asymptotisk ekvivalent med</SimEq>\r
-    <Or>Eller</Or>\r
-    <And>Og</And>\r
-    <Not>Ikke</Not>\r
-    <PartialDifferential>Partiell derivert</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Last uttrykk fra en fil</OpenButton>\r
-    <SaveButton>Lagre uttrykk til fil</SaveButton>\r
-    <ExportButton>Eksporter uttrykk til utklippstavlen</ExportButton>\r
-    <UndoButton>Angre</UndoButton>\r
-    <RedoButton>Gjør om</RedoButton>\r
-    <CutButton>Klipp ut</CutButton>\r
-    <CopyButton>Kopier</CopyButton>\r
-    <PasteButton>Lim inn</PasteButton>\r
-    <ClearButton>Rens hele arbeidsområdet</ClearButton>\r
-    <SelectButton>Velg hele arbeidsområdet</SelectButton>\r
-    <LoadFormatButton>Last en eksportformatfil</LoadFormatButton>\r
-    <LoadLangButton>Last en språkfil</LoadLangButton>\r
-    <ShowTreeButton>Vis uttykkstre</ShowTreeButton>\r
-    <OutlineButton>Vis innholdsblokk for uttykkene i arbeidsområdet</OutlineButton>\r
-    <OnlineHelpButton>Åpne hjelpefiler i nettleseren</OnlineHelpButton>\r
-    <AboutButton>Om DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Fil</FileMenu>\r
-    <OpenMenu>Åpne...</OpenMenu>\r
-    <SaveAsMenu>Lagre som...</SaveAsMenu>\r
-    <ExportMenu>Eksporter til utklippstavlen</ExportMenu>\r
-    <ImageMenu>Eksporter til bilde</ImageMenu>\r
-    \r
-    <EditMenu>Rediger</EditMenu>\r
-    <UndoMenu>Angre</UndoMenu>\r
-    <RedoMenu>Gjør om</RedoMenu>\r
-    <CutMenu>Klipp ut</CutMenu>\r
-    <CopyMenu>Kopier</CopyMenu>\r
-    <PasteMenu>Lim inn</PasteMenu>\r
-    <ClearMenu>Rens arbeidsområdet</ClearMenu>\r
-    <SelectMenu>Velg alle</SelectMenu>\r
-    \r
-    <OptionsMenu>Alternativer</OptionsMenu>\r
-    <SetExportMenu>Velg eksportformat</SetExportMenu>\r
-    <SetLanguageMenu>Velg språk</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Hjelp</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Vis uttykkstre</TreeMenu>\r
-    <OutlineMenu>Vis innholdsblokk</OutlineMenu>\r
-    <OnlineHelpMenu>Online Hjelp</OnlineHelpMenu>\r
-    <AboutMenu>Om DragMath</AboutMenu>\r
-    \r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/pl.xml b/lib/editor/common/dragmath/applet/classes/lang/pl.xml
deleted file mode 100644 (file)
index ef1879b..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : pl.xml\r
-    Created on : 30 July 2007, 15:43\r
-    Author     : Alex Billingsley \r
-    Translator : Agnieszka Herczak-Ciara\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Błąd wczytania pliku: Sprawdź format pliku</ReadingFile> \r
-    <ReadingFile2>Błąd wczytania pliku</ReadingFile2> \r
-    <LoadingExp>Błąd wczytania wyrażenia</LoadingExp>\r
-    <SavingExp>Błąd zapisu wyrażenia</SavingExp>\r
-    <Cut>Nie można wyciąć</Cut>\r
-    <Copy>Nie można skopiować</Copy>\r
-    <Tree>Nie można wyświetlić drzewa</Tree>\r
-    <Action>Działanie nie może zostać zakończone</Action>\r
-    <AddMatrix>Nie można dodać macierzy w tym miejscu</AddMatrix>\r
-    <Operator>Brakujący operator na pozycji</Operator>\r
-    <Argument>Brakujący argument na pozycji</Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Błąd parsowania wyrażenia</ParseExp>\r
-    <LoadExpression>DragMath -Wybierz plik do wczytania</LoadExpression>\r
-    <SaveExpression>DragMath - Wybierz lokalizację zapisu</SaveExpression>\r
-    <EnterRows>Wprowadź liczbę wierszy macierzy</EnterRows>\r
-    <EnterColumns>Wprowadź liczbę kolumn macierzy</EnterColumns>\r
-    <MatrixDim>Wymiar macierzy</MatrixDim>\r
-    <NoCut>Nie zaznaczono nic do wycięcia</NoCut>\r
-    <NoPaste>Brak elementów do wklejenia</NoPaste>\r
-    <NoBox>Nie wybrano nic do wklejenia</NoBox>\r
-    <NoCopy>Nie wybrano nic do skopiowania</NoCopy>\r
-    <Copied>Skopiowane</Copied>\r
-    <ReadingData>Błąd wczytania danych</ReadingData>\r
-    <Clipboard>Eksport wyrażenia do schowka</Clipboard>\r
-    <NoExpression>Brak wyrażenia do konwersji</NoExpression>\r
-    <NoFormat>Nie wybrano żadnego formatu </NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Mnożenie</Multiply>\r
-    <Divide>Ułamek</Divide>  \r
-    <Add>Dodawanie</Add> \r
-    <Subtract>Odejmowanie</Subtract>  \r
-    <Comma>Przecinek dziesiętny</Comma>\r
-    <PlusMinus>Plus-Minus</PlusMinus>\r
-    <SquareRoot>Pierwiastek kwadratowy</SquareRoot>  \r
-    <NthRoot>Pierwiastek n-tego stopnia</NthRoot>  \r
-    <Power>Indeks górny</Power>  \r
-    <Subscript>Indeks dolny</Subscript>  \r
-    <Matrix>Macierz</Matrix>  \r
-    <Integral>Całka nieoznaczona</Integral>\r
-    <Differential>Różniczkowanie</Differential>\r
-    <LessThan>Mniejsze niż</LessThan>  \r
-    <GreaterThan>Większe niż</GreaterThan>  \r
-    <LTEQ>Mniejsze lub równe</LTEQ>  \r
-    <GTEQ>Większe lub równe</GTEQ>\r
-    <Equals>Równe</Equals>\r
-    <NotEqual>Nie równe</NotEqual> \r
-    <Union>Suma</Union>  \r
-    <Intersection>Iloczyn </Intersection>  \r
-    <Subset>Zawiera się</Subset>  \r
-    <SubsetEq>Zawiera się lub jest równy</SubsetEq>  \r
-    <NSubset>Nie zawiera się</NSubset>  \r
-    <NSubsetEq>Nie zawiera się i nie jest równy</NSubsetEq> \r
-    <Sine>sin (sinus)</Sine>  \r
-    <Cosine>cos (cosinus)</Cosine>  \r
-    <Tangent>tg (tangens)</Tangent>  \r
-    <ArcSine>arcsin (arcus sinus)</ArcSine>  \r
-    <ArcCosine>arccos (arcus cosinus)</ArcCosine>  \r
-    <ArcTangent>arctg (arcus tangens)</ArcTangent> \r
-    <SineH>sinh (sinus hiperboliczny)</SineH>  \r
-    <CosineH>cosh (cosinus hiperboliczny)</CosineH>  \r
-    <TanH>tgh (tangens hiperboliczny)</TanH>  \r
-    <ArcSineH>arcsinh (arcus sinus hiperboliczny)</ArcSineH>  \r
-    <ArcCosineH>arccosh (arcus cosinus hiperboliczny)</ArcCosineH>  \r
-    <ArcTanH>arctgh (arcus tangens hiperboliczny)</ArcTanH>  \r
-    <Logarithm>Logarytm</Logarithm>\r
-    <NaturalLogarithm>Logarytm naturalny</NaturalLogarithm>  \r
-    <Exp>Exp (Funkcja eksponencjalna)</Exp>  \r
-    <UMinus>Minus</UMinus>  \r
-    <BracketsRnd>Nawiasy okrągłe</BracketsRnd>  \r
-    <BracketsCurl>Nawiasy klamrowe</BracketsCurl>  \r
-    <BracketsSq>Nawiasy kwadratowe</BracketsSq>  \r
-    <Abs>Wartość bezwzględna</Abs> \r
-    <Infinity>Nieskończoność</Infinity>\r
-    <GreekLetter>Greckie litery</GreekLetter> \r
-    <Factorial>Silnia</Factorial> \r
-    <Max>Maksimum</Max> \r
-    <Min>Minimum</Min> \r
-    <Assignment>Przypisanie</Assignment>\r
-    <Function>Funkcja</Function> \r
-    <Determinant>Wyznacznik macierzy</Determinant>\r
-    <Trace>Ślad macierzy</Trace>\r
-    <DefiniteIntegral>Całka oznaczona</DefiniteIntegral>\r
-    <Product>Iloczyn </Product>\r
-    <Sum>Suma</Sum>\r
-    <Limit>Granica</Limit>\r
-    <Evaluate>Wartość wyrażenia w punkcie</Evaluate>\r
-    <LeftArrow>Left arrow</LeftArrow> \r
-    <RightArrow>Right arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Left double arrow</LeftDblArrow> \r
-    <RightDblArrow>Right double arrow</RightDblArrow> \r
-    <LeftRightArrow>Left-Right arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Left-Right double arrow</LeftRightDblArrow> \r
-    <NorthEastArrow>North-East arrow</NorthEastArrow>          \r
-    <SouthEastArrow>South-East arrow</SouthEastArrow>          \r
-    <NorthWestArrow>North-West arrow</NorthWestArrow>          \r
-    <SouthWestArrow>South-West arrow</SouthWestArrow>\r
-    <Multiply2>Multiplication</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Equivalence</Equiv>\r
-    <Exists>There Exists</Exists>\r
-    <ForAll>For All</ForAll>\r
-    <IsIn>Element Of</IsIn>\r
-    <NotExists>There Does Not Exist</NotExists>\r
-    <NotIn>Not An Element Of</NotIn>\r
-    <SimEq>Asymptotically Equivalent To</SimEq>\r
-    <Or>Or</Or>\r
-    <And>And</And>\r
-    <Not>Not</Not>\r
-    <PartialDifferential>Partial Differential</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Wczytaj wyrażenie z pliku</OpenButton>\r
-    <SaveButton>Zapisz wyrażenie do pliku</SaveButton>\r
-    <ExportButton>Eksportuj wyrażenie do schowka</ExportButton>\r
-    <UndoButton>Cofnij</UndoButton>\r
-    <RedoButton>Ponów</RedoButton>\r
-    <CutButton>Wytnij</CutButton>\r
-    <CopyButton>Kopiuj</CopyButton>\r
-    <PasteButton>Wklej</PasteButton>\r
-    <ClearButton>Wyczyść wszystko</ClearButton>\r
-    <SelectButton>Zaznacz wszystko</SelectButton>\r
-    <LoadFormatButton>Wczytaj format pliku do eksportu</LoadFormatButton>\r
-    <LoadLangButton>Wczytaj plik językowy</LoadLangButton>\r
-    <ShowTreeButton>Pokaż strukturę drzewiastą wyrażenia</ShowTreeButton>\r
-    <OutlineButton>Display outline of objects on workspace</OutlineButton>\r
-    <OnlineHelpButton>Pomoc online</OnlineHelpButton>\r
-    <AboutButton>O DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Plik</FileMenu>\r
-    <OpenMenu>Otwórz ...</OpenMenu>\r
-    <SaveAsMenu>Zapisz jako ...</SaveAsMenu>\r
-    <ExportMenu>Eksportuj do schowka</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Edycja</EditMenu>\r
-    <UndoMenu>Cofnij</UndoMenu>\r
-    <RedoMenu>Ponów</RedoMenu>\r
-    <CutMenu>Wytnij</CutMenu>\r
-    <CopyMenu>Kopiuj</CopyMenu>\r
-    <PasteMenu>Wklej</PasteMenu>\r
-    <ClearMenu>Wyczyść wszystko</ClearMenu>\r
-    <SelectMenu>Zaznacz wszystko</SelectMenu>\r
-    \r
-    <OptionsMenu>Opcje</OptionsMenu>\r
-    <SetExportMenu>Wybierz format (Latex,MathML,...)</SetExportMenu>\r
-    <SetLanguageMenu>Wybierz język (pl,eng...)</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Pomoc</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Pokaż drzewo wyrażenia</TreeMenu>\r
-    <OutlineMenu>Outline</OutlineMenu>\r
-    <OnlineHelpMenu>Pomoc Online</OnlineHelpMenu>\r
-    <AboutMenu>O programie DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/pt-br.xml b/lib/editor/common/dragmath/applet/classes/lang/pt-br.xml
deleted file mode 100644 (file)
index a43f93a..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : pt-br.xml\r
-    Created on : 27th February 2008, 15:56\r
-    Author     : Mauricio Chamati\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Erro lendo arquivo: Verifique se o arquivo é válido</ReadingFile> \r
-    <ReadingFile2>Erro lendo arquivo: </ReadingFile2> \r
-    <LoadingExp>Erro carregando expressão salva</LoadingExp>\r
-    <SavingExp>Erro salvando expressão</SavingExp>\r
-    <Cut>Seleção não pode ser recortada: </Cut>\r
-    <Copy>Seleção não pode ser copiada: </Copy>\r
-    <Tree>Árvore não pode ser mostrada: </Tree>\r
-    <Action>Ação não pode ser completada: </Action>\r
-    <AddMatrix>Matriz não pode ser adicionada neste local</AddMatrix>\r
-    <Operator>Operador faltando na posição </Operator>\r
-    <Argument>Argumento do operador faltando na posição </Argument>\r
-    <Image>Erro: Não é possível exportar para imagem. Verifique sua conexão com a internet e acesse http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Expressão não pode ser analisada</ParseExp>\r
-    <LoadExpression>DragMath - Escolha uma expressão em arquivo para ser carregada</LoadExpression>\r
-    <SaveExpression>DragMath - Escolha o local para salvar a expressão</SaveExpression>\r
-    <EnterRows>Informe o número de linhas da matriz</EnterRows>\r
-    <EnterColumns>Informe o número de colunas da matriz</EnterColumns>\r
-    <MatrixDim>Dimensões da Matriz</MatrixDim>\r
-    <NoCut>Nada selecionado para recortar</NoCut>\r
-    <NoPaste>Nada para colar</NoPaste>\r
-    <NoBox>Nenhuma caixa selecionada para colar dentro</NoBox>\r
-    <NoCopy>Nada selecionado para copiar</NoCopy>\r
-    <Copied>Copiado</Copied>\r
-    <ReadingData>Erro lendo dados externos</ReadingData>\r
-    <Clipboard>Expressão exportada para a área de transferência</Clipboard>\r
-    <NoExpression>Nenhuma expressão para converter</NoExpression>\r
-    <NoFormat>Nenhum formato de arquivo foi carregado ainda</NoFormat>\r
-       <ImageSize>Escolha o tamanho da imagem de 1-10 (Menor-Maior)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Multiplicação</Multiply>\r
-    <Divide>Divisão</Divide>  \r
-    <Add>Adição</Add> \r
-    <Subtract>Subtração</Subtract>  \r
-    <Comma>Vírgula</Comma>\r
-    <PlusMinus>Mais-Menos</PlusMinus>\r
-    <SquareRoot>Raiz Quadrada</SquareRoot>  \r
-    <NthRoot>Raiz de N</NthRoot>  \r
-    <Power>Sobrescrito</Power>  \r
-    <Subscript>Subscrito</Subscript>  \r
-    <Matrix>Matriz</Matrix>  \r
-    <Integral>Integral</Integral>\r
-    <Differential>Diferencial</Differential>\r
-    <LessThan>Menor Que</LessThan>  \r
-    <GreaterThan>Maior Que</GreaterThan>  \r
-    <LTEQ>Menor Que ou Igual A</LTEQ>  \r
-    <GTEQ>Maior Que ou Igual A</GTEQ>\r
-    <Equals>Igual</Equals>\r
-    <NotEqual>Diferente</NotEqual> \r
-    <Union>União</Union>  \r
-    <Intersection>Intersecção</Intersection>  \r
-    <Subset>Subconjunto</Subset>  \r
-    <SubsetEq>Subconjunto ou Igual A</SubsetEq>  \r
-    <NSubset>Não é Subconjunto</NSubset>  \r
-    <NSubsetEq>Não é Subconjunto ou Igual A</NSubsetEq> \r
-    <Sine>Seno</Sine>  \r
-    <Cosine>Cosseno</Cosine>  \r
-    <Tangent>Tangente</Tangent>  \r
-    <ArcSine>Arco-Seno</ArcSine>  \r
-    <ArcCosine>Arco-Cosseno</ArcCosine>  \r
-    <ArcTangent>Arco-Tangente</ArcTangent> \r
-    <SineH>Seno Hiperbólico</SineH>  \r
-    <CosineH>Cosseno Hiperbólico</CosineH>  \r
-    <TanH>Tangente Hiperbólica</TanH>  \r
-    <ArcSineH>Arco-Seno Hiperbólico</ArcSineH>  \r
-    <ArcCosineH>Arco-Cosseno Hiperbólico</ArcCosineH>  \r
-    <ArcTanH>Arco-Tangente Hiperbólico</ArcTanH>  \r
-    <Logarithm>Logaritmo</Logarithm>\r
-    <NaturalLogarithm>Logaritmo Neperiano</NaturalLogarithm>  \r
-    <Exp>Função Exponencial</Exp>  \r
-    <UMinus>Menos</UMinus>  \r
-    <BracketsRnd>Parênteses</BracketsRnd>  \r
-    <BracketsCurl>Chaves</BracketsCurl>  \r
-    <BracketsSq>Colchetes</BracketsSq>  \r
-    <Abs>Valor Absoluto</Abs> \r
-    <Infinity>Infinito</Infinity>\r
-    <GreekLetter>Letra Grega</GreekLetter> \r
-    <Factorial>Fatorial</Factorial> \r
-    <Max>Máximo de um conjunto</Max> \r
-    <Min>Mínimo de um conjunto</Min> \r
-    <Assignment>Atribuição</Assignment>\r
-    <Function>Função desconhecida</Function> \r
-    <Determinant>Determinante</Determinant>\r
-    <Trace>Traço</Trace>\r
-    <DefiniteIntegral>Integral Definida</DefiniteIntegral>\r
-    <Product>Produto</Product>\r
-    <Sum>Soma</Sum>\r
-    <Limit>Limite</Limit>\r
-    <Evaluate>Determina uma expressão num ponto</Evaluate>\r
-    <LeftArrow>Seta para esquerda</LeftArrow> \r
-    <RightArrow>Seta para direita</RightArrow> \r
-    <UpArrow>Seta para cima</UpArrow> \r
-    <DownArrow>Seta para baixo</DownArrow> \r
-    <LeftDblArrow>Seta dupla para esquerda</LeftDblArrow> \r
-    <RightDblArrow>Seta dupla para direita</RightDblArrow> \r
-    <LeftRightArrow>Seta para Esquerda-Direita</LeftRightArrow> \r
-    <LeftRightDblArrow>Seta dupla para Esquerda-Direita</LeftRightDblArrow> \r
-    <NorthEastArrow>Seta para Nordeste</NorthEastArrow>                \r
-    <SouthEastArrow>Seta para Sudeste</SouthEastArrow>         \r
-    <NorthWestArrow>Seta para Noroeste</NorthWestArrow>                \r
-    <SouthWestArrow>Seta para Sudoeste</SouthWestArrow>\r
-    <Multiply2>Multiplicação</Multiply2>\r
-    <Divide2>Divisão</Divide2>\r
-    <Equiv>Equivalência</Equiv>\r
-    <Exists>Existe</Exists>\r
-    <ForAll>Para Todos</ForAll>\r
-    <IsIn>Elemento De</IsIn>\r
-    <NotExists>Não Existe</NotExists>\r
-    <NotIn>Não É Um Elemento De</NotIn>\r
-    <SimEq>Assintoticamente Equivalente A</SimEq>\r
-    <Or>Ou</Or>\r
-    <And>E</And>\r
-    <Not>Não</Not>\r
-    <PartialDifferential>Diferencial Parcial</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Carregar expressão de um arquivo</OpenButton>\r
-    <SaveButton>Salvar expressão em arquivo</SaveButton>\r
-    <ExportButton>Exportar expressão para área de transferência</ExportButton>\r
-    <UndoButton>Desfazer</UndoButton>\r
-    <RedoButton>Refazer</RedoButton>\r
-    <CutButton>Recortar</CutButton>\r
-    <CopyButton>Copiar</CopyButton>\r
-    <PasteButton>Colar</PasteButton>\r
-    <ClearButton>Limpar toda a área de trabalho</ClearButton>\r
-    <SelectButton>Selecionar toda a área de trabalho</SelectButton>\r
-    <LoadFormatButton>Carregar um formato de exportação</LoadFormatButton>\r
-    <LoadLangButton>Carregar um arquivo de idioma</LoadLangButton>\r
-    <ShowTreeButton>Mostrar estrutura em árvore da expressão</ShowTreeButton>\r
-    <OutlineButton>Mostrar contorno dos objetos da área de trabalho</OutlineButton>\r
-    <OnlineHelpButton>Carregar documentos de ajuda no navegador</OnlineHelpButton>\r
-    <AboutButton>Sobre DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Arquivo</FileMenu>\r
-    <OpenMenu>Abrir...</OpenMenu>\r
-    <SaveAsMenu>Salvar Como...</SaveAsMenu>\r
-    <ExportMenu>Exportar para área de transferência</ExportMenu>\r
-    <ImageMenu>Exportar para imagem</ImageMenu>\r
-    \r
-    <EditMenu>Editar</EditMenu>\r
-    <UndoMenu>Desfazer</UndoMenu>\r
-    <RedoMenu>Refazer</RedoMenu>\r
-    <CutMenu>Recortar</CutMenu>\r
-    <CopyMenu>Copiar</CopyMenu>\r
-    <PasteMenu>Colar</PasteMenu>\r
-    <ClearMenu>Limpar a área de trabalho</ClearMenu>\r
-    <SelectMenu>Selecionar Tudo</SelectMenu>\r
-    \r
-    <OptionsMenu>Opções</OptionsMenu>\r
-    <SetExportMenu>Escolher formato de exportação</SetExportMenu>\r
-    <SetLanguageMenu>Escolher idioma</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Ajuda</HelpMenu>\r
-    <DebugMenu>Debugar</DebugMenu>\r
-    <TreeMenu>Mostrar árvore de expressão</TreeMenu>\r
-    <OutlineMenu>Mostrar contorno</OutlineMenu>\r
-    <OnlineHelpMenu>Ajuda Online</OnlineHelpMenu>\r
-    <AboutMenu>Sobre DragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/ru.xml b/lib/editor/common/dragmath/applet/classes/lang/ru.xml
deleted file mode 100644 (file)
index 4dccacc..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="Windows-1251"?>\r
-\r
-<!--\r
-    Document   : ru.xml\r
-    Created on : 19 December 2007, 15:43\r
-    Author     : Sedletskiy Nikolay\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Îøèáêà ôîðìàòà ôàéëà: Ïðîâåðüòå ïðàâèëüíîñòü óêàçàííîãî ôàéëà</ReadingFile> \r
-    <ReadingFile2>Îøèáêà çàãðóçêè ôîðìàòà ôàéëà: </ReadingFile2> \r
-    <LoadingExp>Îøèáêà çàãðóçêè ñîõðàíåííîãî âûðàæåíèÿ</LoadingExp>\r
-    <SavingExp>Îøèáêà ñîõðàíåíèÿ âûðàæåíèÿ</SavingExp>\r
-    <Cut>Íåâîçìîæíî âûðåçàòü âûáðàííîå: </Cut>\r
-    <Copy>Íåâîçìîæíî êîïèðîâàòü âûáðàííîå: </Copy>\r
-    <Tree>Íåâîçìîæíî îòîáðàçèòü äåðåâî: </Tree>\r
-    <Action>Äåéñòâèå íå ìîæåò áûòü âûïîëíåííî: </Action>\r
-    <AddMatrix>Íåâîçìîæíî äàáàâèòü Ìàòðèöó â óêàçàííîå ìåñòî</AddMatrix>\r
-    <Operator>Îòñóòâòâóåò Îïåðàòîð íà ïîçèöèè </Operator>\r
-    <Argument>Îòñóòñòâóåò àðãóìåíò îïåðàòîðà íà ïîçèöèè </Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Íåâîçìîæåí ðàçáîð âûðàæåíèÿ</ParseExp>\r
-    <LoadExpression>DragMath - Âûáåðèòå ôàéë âûðàæåíèÿ äëÿ çàãðóçêè</LoadExpression>\r
-    <SaveExpression>DragMath - Âûáåðèòå ìåñòîïîëîæåíèå äëÿ ñîõðàíåíèÿ âûðàæåíèÿ</SaveExpression>\r
-    <EnterRows>Ââåäèòå êîëè÷åñòâî ñòðîê â ìàòðèöå</EnterRows>\r
-    <EnterColumns>Ââåäèòå êîëè÷åñòâî ñòîëáöåâ â ìàòðèöå</EnterColumns>\r
-    <MatrixDim>Ðàçìåð Ìàòðèöû</MatrixDim>\r
-    <NoCut>Íè÷åãî íå âûáðàííî ÷òîáû âûðåçàòü</NoCut>\r
-    <NoPaste>Íå÷åãî âñòàâëÿòü</NoPaste>\r
-    <NoBox>Íå âûáðàí áëîê äëÿ âñòàâêè</NoBox>\r
-    <NoCopy>Íè÷åãî íå âûáðàíî äëÿ êîïèðîâàíèÿ</NoCopy>\r
-    <Copied>Ñêîïèðîâàíî</Copied>\r
-    <ReadingData>Îøèáêà ÷òåíèÿ âûõîäíûõ äàííûõ</ReadingData>\r
-    <Clipboard>Âûðàæåíèå ýêñïîðòèðîâàííî â áóôåð îáìåíà</Clipboard>\r
-    <NoExpression>Íåò âûðàæåíèÿ äëÿ êîíâåðòàöèè</NoExpression>\r
-    <NoFormat>Íå çàãðóæåí ôàéë ôîðìàòà </NoFormat>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for math buttons   -->\r
-    <Multiply>Óìíàæåíèå</Multiply>\r
-    <Divide>Äåëåíèå</Divide>  \r
-    <Add>Ñëîæåíèå</Add> \r
-    <Subtract>Âû÷èòàíèå</Subtract>  \r
-    <Comma>Çàïÿòàÿ</Comma>\r
-    <PlusMinus>Ïëþñ-Ìèíóñ</PlusMinus>\r
-    <SquareRoot>Êâàäðàòíûé Êîðåíü</SquareRoot>  \r
-    <NthRoot>N-é Êîðåíü</NthRoot>  \r
-    <Power>Âåðõíèé Èíäåêñ</Power>  \r
-    <Subscript>Íèæíèé Èíäåêñ</Subscript>  \r
-    <Matrix>Ìàòðèöà</Matrix>  \r
-    <Integral>Èíòåãðèðîâàíèå</Integral>\r
-    <Differential>Äèôôåðåíöèðîâàíèå</Differential>\r
-    <LessThan>Ìåíüøå</LessThan>  \r
-    <GreaterThan>Áîëüøå</GreaterThan>  \r
-    <LTEQ>Ìåíüøå èëè Ðàâíî</LTEQ>  \r
-    <GTEQ>Áîëüøè èëè Ðàâíî</GTEQ>\r
-    <Equals>Ðàâåíñòâî</Equals>\r
-    <NotEqual>Íåðàâåíñòâî</NotEqual> \r
-    <Union>Îáúåäèíåíèå</Union>  \r
-    <Intersection>Ïåðåñå÷åíèå</Intersection>  \r
-    <Subset>Ïîäìíîæåñòâî</Subset>  \r
-    <SubsetEq>Ïîäìíîæåñòâî èëè Ðàâåíñòâî</SubsetEq>  \r
-    <NSubset>Íå Ïîäìíîæåñòâî</NSubset>  \r
-    <NSubsetEq>Íå Ïîäìíîæåñòâî èëè Ðàâåíñòâî</NSubsetEq> \r
-    <Sine>Ñèíóñ</Sine>  \r
-    <Cosine>Êîñèíóñ</Cosine>  \r
-    <Tangent>Tangent</Tangent>  \r
-    <ArcSine>Èíâåðñíûé Ñèíóñ</ArcSine>  \r
-    <ArcCosine>Èíâåðñíûé Êîñèíóñ</ArcCosine>  \r
-    <ArcTangent>Èíâåðñíûé Òàíãåíñ</ArcTangent> \r
-    <SineH>Ãèïåðáîëè÷åñêèé Ñèíóñ</SineH>  \r
-    <CosineH>Ãèïåðáîëè÷åñêèé Êîñèíóñ</CosineH>  \r
-    <TanH>Ãèïåðáîëè÷åñêèé Òàíãåíñ</TanH>  \r
-    <ArcSineH>Èíâåðñíûé Ãèïåðáîëè÷åñêèé Ñèíóñ</ArcSineH>  \r
-    <ArcCosineH>Èíâåðñíûé Ãèïåðáîëè÷åñêèé Êîñèíóñ</ArcCosineH>  \r
-    <ArcTanH>Èíâåðñíûé Ãèïåðáîëè÷åñêèé Òàíãåíñ</ArcTanH>  \r
-    <Logarithm>Ëîãàðèôì</Logarithm>\r
-    <NaturalLogarithm>Íàòóðàëüíûé Ëîãàðèôì</NaturalLogarithm>  \r
-    <Exp>Ýêñïîíåíöèàëüíàÿ Ôóíêöèÿ</Exp>  \r
-    <UMinus>Ìèíóñ</UMinus>  \r
-    <BracketsRnd>Êðóãëûå Ñêîáêè</BracketsRnd>  \r
-    <BracketsCurl>Ôèãóðíûå Ñêîáêè</BracketsCurl>  \r
-    <BracketsSq>Êâàäðàòíûå Ñêîáêè</BracketsSq>  \r
-    <Abs>Ìîäóëü</Abs> \r
-    <Infinity>Áåñêîíåñíîñòü</Infinity>\r
-    <GreekLetter>Ãðå÷åñêàÿ Áóêâà</GreekLetter> \r
-    <Factorial>Ôàêòîðèàë</Factorial> \r
-    <Max>Ìàêñèìóì</Max> \r
-    <Min>Ìèíèìóì</Min> \r
-    <Assignment>Ïðèñâàèâàíèå</Assignment>\r
-    <Function>Íåèçâåñòíàÿ ôóíêöèÿ</Function> \r
-    <Determinant>Äåòåðìèíàíò</Determinant>\r
-    <Trace>Òðàññèðîâêà</Trace>\r
-    <DefiniteIntegral>Îïðåäåë¸ííûé Èíòåãðàë</DefiniteIntegral>\r
-    <Product>Ïðîèçâåäåíèå</Product>\r
-    <Sum>Ñóììèðîâàíèå</Sum>\r
-    <Limit>Ïðåäåë</Limit>\r
-    <Evaluate>Âû÷èñëèòü âûðàæåíèå â òî÷êå</Evaluate>\r
-    <LeftArrow>Left arrow</LeftArrow> \r
-    <RightArrow>Right arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Left double arrow</LeftDblArrow> \r
-    <RightDblArrow>Right double arrow</RightDblArrow> \r
-    <LeftRightArrow>Left-Right arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Left-Right double arrow</LeftRightDblArrow> \r
-    <NorthEastArrow>North-East arrow</NorthEastArrow>          \r
-    <SouthEastArrow>South-East arrow</SouthEastArrow>          \r
-    <NorthWestArrow>North-West arrow</NorthWestArrow>          \r
-    <SouthWestArrow>South-West arrow</SouthWestArrow>\r
-    <Multiply2>Multiplication</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Equivalence</Equiv>\r
-    <Exists>There Exists</Exists>\r
-    <ForAll>For All</ForAll>\r
-    <IsIn>Element Of</IsIn>\r
-    <NotExists>There Does Not Exist</NotExists>\r
-    <NotIn>Not An Element Of</NotIn>\r
-    <SimEq>Asymptotically Equivalent To</SimEq>\r
-    <Or>Or</Or>\r
-    <And>And</And>\r
-    <Not>Not</Not>\r
-    <PartialDifferential>Partial Differential</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Çàãðóçèòü âûðàæåíèå èç ôàéëà</OpenButton>\r
-    <SaveButton>Ñîõðàíèòü âûðàæåíèå â ôàéë</SaveButton>\r
-    <ExportButton>Ýêñïîðòèðîâàòü âûðàæåíèå â áóôåð îáìåíà</ExportButton>\r
-    <UndoButton>Îòìåíèòü</UndoButton>\r
-    <RedoButton>Ïîâòîðèòü</RedoButton>\r
-    <CutButton>Âûðåçàòü</CutButton>\r
-    <CopyButton>Êîïèðîâàòü</CopyButton>\r
-    <PasteButton>Âñòàâèòü</PasteButton>\r
-    <ClearButton>Î÷èñòèòü ðàáî÷åå ïðîñòðàíñòâî</ClearButton>\r
-    <SelectButton>Âûáðàòü ðàáî÷åå ïðîñòðàíñòâî</SelectButton>\r
-    <LoadFormatButton>Çàãðóçèòü ýêñïîðò ôàéëà ôîðìàòà</LoadFormatButton>\r
-    <LoadLangButton>Çàãðóçèòü ÿçûêîâîé ôàë</LoadLangButton>\r
-    <ShowTreeButton>Ïîêàçàòü äðåâîâèäíóþ ñòðóêòóðó âûðàæåíèÿ</ShowTreeButton>\r
-    <OutlineButton>Ïîêàçàòü î÷åðòàíèå îáúåêòîâ íà ðàáî÷åì ïðîñòðàíñòâå</OutlineButton>\r
-    <OnlineHelpButton>Çàãðóçèòü äîêóìåíò ïîìîùè â âåá-áðàóçåðå</OnlineHelpButton>\r
-    <AboutButton>ΠDragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>Ôàéë</FileMenu>\r
-    <OpenMenu>Îòêðûòü...</OpenMenu>\r
-    <SaveAsMenu>Ñîõðàíèòü êàê...</SaveAsMenu>\r
-    <ExportMenu>Ýêñïîðòèðîâàòü â áóôåð îáìåíà</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Ïðàâêà</EditMenu>\r
-    <UndoMenu>Îòìåíèòü</UndoMenu>\r
-    <RedoMenu>Ïîâòîðèòü</RedoMenu>\r
-    <CutMenu>Âûðåçàòü</CutMenu>\r
-    <CopyMenu>Êîïèðîâàòü</CopyMenu>\r
-    <PasteMenu>Âûðåçàòü</PasteMenu>\r
-    <ClearMenu>Î÷èñòèòü Ðàáî÷åå Ïðîñòðàíñòâî</ClearMenu>\r
-    <SelectMenu>Âûáðàòü Âñ¸</SelectMenu>\r
-    \r
-    <OptionsMenu>Íàñòðîéêè</OptionsMenu>\r
-    <SetExportMenu>Óñòàíîâèòü ôîðìàò ýêñïîðòà</SetExportMenu>\r
-    <SetLanguageMenu>Óñòàíîâèòü ÿçûê</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Ïîìîùü</HelpMenu>\r
-    <DebugMenu>Îòëàäêà</DebugMenu>\r
-    <TreeMenu>Ïîêàçàòü äåðåâî âûðàæåíèÿ</TreeMenu>\r
-    <OutlineMenu>Ïîêàçàòü î÷åðòàíèÿ</OutlineMenu>\r
-    <OnlineHelpMenu>Îíëàéí Ïîìîùü</OnlineHelpMenu>\r
-    <AboutMenu>ΠDragMath</AboutMenu>\r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/lang/sv.xml b/lib/editor/common/dragmath/applet/classes/lang/sv.xml
deleted file mode 100644 (file)
index 82a7861..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-\r
-<!--\r
-    Document   : en.xml\r
-    Created on : 30 July 2007, 15:43\r
-    Author     : Alex Billingsley\r
-    Description:\r
-        Purpose of the document follows.\r
--->\r
-\r
-<Language>\r
-    \r
-    <!--  Error Messages   --> \r
-    <ReadingFile>Fel vid format filläsning: Kolla att filen är giltig</ReadingFile> \r
-    <ReadingFile2>Error loading format file: </ReadingFile2>\r
-    <LoadingExp>Fel vid laddning av sparad uttryck</LoadingExp>\r
-    <SavingExp>Fel vid sparande av uttryck</SavingExp>\r
-    <Cut>Kan inte klippa ut markeringen: </Cut>\r
-    <Copy>Kan inte kopiera markeringen: </Copy>\r
-    <Tree>Kan inte visa trädet: </Tree>\r
-    <Action>Åtgärden kunde inte fullgöras: </Action>\r
-    <AddMatrix>Kan inte lägga till en Matris här</AddMatrix>\r
-    <Operator>Operator saknas vid läge </Operator>\r
-    <Argument>Operatorns variabel (Argument) saknas vid läge </Argument>\r
-    <Image>Error: Cannot export to image. Check internet connection and access to http://www.mathtran.org</Image>\r
-    \r
-    <!--  Status Bar Messages   --> \r
-    <ParseExp>Uttrycket kan inte tolkas</ParseExp>\r
-    <ChooseFile>DragMath - Välj en format fil att ladda</ChooseFile>\r
-    <LoadExpression>DragMath - Välj en uttrycksfil att ladda</LoadExpression>\r
-    <SaveExpression>DragMath - Välj var du vill spara uttrycket</SaveExpression>\r
-    <EnterRows>Ange antalet rader i matrisen</EnterRows>\r
-    <EnterColumns>Ange antalet kolumner i matrisen</EnterColumns>\r
-    <MatrixDim>Matris mått</MatrixDim>\r
-    <NoCut>Inget vald att klippa ut</NoCut>\r
-    <NoPaste>Ingeting att klistra in</NoPaste>\r
-    <NoBox>Ingen box vald att klistra in i</NoBox>\r
-    <NoCopy>Inget vald att kopiera</NoCopy>\r
-    <Copied>Kopierad</Copied>\r
-    <ReadingData>Fel vid läsning av output data</ReadingData>\r
-    <Clipboard> uttryck kopierad till minnet</Clipboard>\r
-    <NoExpression>Inget uttryck att omvandla</NoExpression>\r
-    <NoCustom>Ingen format fil har laddats än</NoCustom>\r
-    <ImageSize>Choose the image size 1-10 (Smallest-Largest)</ImageSize>\r
-    \r
-    <!--  Tooltips for buttons   -->\r
-    <Multiply>Multiplikation</Multiply>\r
-    <Divide>Division</Divide>  \r
-    <Add>Addition</Add> \r
-    <Subtract>Subtraktion</Subtract>  \r
-    <Comma>Komma</Comma>  \r
-    <PlusMinus>Plus-Minus</PlusMinus>\r
-    <SquareRoot>Kvadratrot</SquareRoot>  \r
-    <NthRoot>N-te rot</NthRoot>  \r
-    <Power>exponent</Power>  \r
-    <Subscript>index</Subscript>  \r
-    <Matrix>Matris</Matrix>  \r
-    <Integral>Integration</Integral>\r
-    <Differential>Differentiering</Differential>\r
-    <LessThan>mindre än</LessThan>  \r
-    <GreaterThan>större än</GreaterThan>  \r
-    <LTEQ>mindre än eller lika med</LTEQ>  \r
-    <GTEQ>större än eller lika med</GTEQ>\r
-    <Equals>lika med</Equals>\r
-    <NotEqual>Ingen lika med</NotEqual>\r
-    <Union>Union</Union>  \r
-    <Intersection>Intersektion</Intersection>  \r
-    <Subset>Subset (undergrupp)</Subset>  \r
-    <SubsetEq>Subset (undergrupp) eller lika med</SubsetEq>  \r
-    <NSubset>Ingen Subset (undergrupp)</NSubset>  \r
-    <NSubsetEq>Ingen Subset (undergrupp) eller lika med</NSubsetEq> \r
-    <Sine>Sinus</Sine>  \r
-    <Cosine>Cosinus</Cosine>  \r
-    <Tangent>Tangens</Tangent>  \r
-    <ArcSine>Invers Sinus</ArcSine>  \r
-    <ArcCosine>Invers Cosinus</ArcCosine>  \r
-    <ArcTangent>Invers Tangens</ArcTangent> \r
-    <SineH>Hyperbolisk Sinus</SineH>  \r
-    <CosineH>Hyperbolisk Cosinus</CosineH>  \r
-    <TanH>Hyperbolisk Tangens</TanH>  \r
-    <ArcSineH>Invers Hyperbolisk Sinus</ArcSineH>  \r
-    <ArcCosineH>Invers Hyperbolisk Cosinus</ArcCosineH>  \r
-    <ArcTanH>Invers Hyperbolisk Tangens</ArcTanH>  \r
-    <Logarithm>Logaritm</Logarithm>\r
-    <NaturalLogarithm>Naturlig Logaritm</NaturalLogarithm>  \r
-    <Exp>Exponentiell Funktion</Exp>  \r
-    <UMinus>Minus</UMinus>  \r
-    <BracketsRnd>rundparentes</BracketsRnd>  \r
-    <BracketsCurl>klammerparentes</BracketsCurl>  \r
-    <BracketsSq>hakparentes</BracketsSq>  \r
-    <Abs>Absolut Värde</Abs> \r
-    <Infinity>oändlighet</Infinity>\r
-    <GreekLetter>Grekisk bokstav</GreekLetter> \r
-    <Factorial>Faktorial</Factorial> \r
-    <Max>Maximum av en mängd</Max> \r
-    <Min>Minimum av en mängd</Min> \r
-    <Assignment>Assignment</Assignment>\r
-    <Function>okänd funktion</Function> \r
-    <Determinant>Determinant</Determinant>\r
-    <Trace>Trace</Trace>\r
-    <DefiniteIntegral>Bestämd Integral</DefiniteIntegral>\r
-    <Product>Produkt</Product>\r
-    <Sum>Summa</Sum>\r
-    <Limit>Gränvärdet</Limit>\r
-    <Evaluate>utvärdera ett uttryck vid en punkt</Evaluate>\r
-    <LeftArrow>Left arrow</LeftArrow> \r
-    <RightArrow>Right arrow</RightArrow> \r
-    <UpArrow>Up arrow</UpArrow> \r
-    <DownArrow>Down arrow</DownArrow> \r
-    <LeftDblArrow>Left double arrow</LeftDblArrow> \r
-    <RightDblArrow>Right double arrow</RightDblArrow> \r
-    <LeftRightArrow>Left-Right arrow</LeftRightArrow> \r
-    <LeftRightDblArrow>Left-Right double arrow</LeftRightDblArrow> \r
-    <NorthEastArrow>North-East arrow</NorthEastArrow>          \r
-    <SouthEastArrow>South-East arrow</SouthEastArrow>          \r
-    <NorthWestArrow>North-West arrow</NorthWestArrow>          \r
-    <SouthWestArrow>South-West arrow</SouthWestArrow>\r
-    <Multiply2>Multiplication</Multiply2>\r
-    <Divide2>Division</Divide2>\r
-    <Equiv>Equivalence</Equiv>\r
-    <Exists>There Exists</Exists>\r
-    <ForAll>For All</ForAll>\r
-    <IsIn>Element Of</IsIn>\r
-    <NotExists>There Does Not Exist</NotExists>\r
-    <NotIn>Not An Element Of</NotIn>\r
-    <SimEq>Asymptotically Equivalent To</SimEq>\r
-    <Or>Or</Or>\r
-    <And>And</And>\r
-    <Not>Not</Not>\r
-    <PartialDifferential>Partial Differential</PartialDifferential>\r
-    \r
-    <!--  Tooltips for command buttons   -->\r
-    <OpenButton>Ladda uttryck från en fil</OpenButton>\r
-    <SaveButton>Spara uttryck till fil</SaveButton>\r
-    <ExportButton>Export expression to clipboard</ExportButton>\r
-    <UndoButton>Ångra</UndoButton>\r
-    <RedoButton>Redo</RedoButton>\r
-    <CutButton>Klipp ut</CutButton>\r
-    <CopyButton>Kopiera</CopyButton>\r
-    <PasteButton>klistra in</PasteButton>\r
-    <ClearButton>Clear the entire workspace</ClearButton>\r
-    <SelectButton>Select the entire workspace</SelectButton>\r
-    <LoadFormatButton>Load an export format file</LoadFormatButton>\r
-    <LoadLangButton>Load a language file</LoadLangButton>\r
-    <ShowTreeButton>Visa träd för Uttrycket</ShowTreeButton>\r
-    <OutlineButton>Display outline of objects on workspace</OutlineButton>\r
-    <OnlineHelpButton>Loads help documents in web browser</OnlineHelpButton>\r
-    <AboutButton>Om DragMath</AboutButton>\r
-    \r
-    <!--  Menu   -->\r
-    <FileMenu>File</FileMenu>\r
-    <OpenMenu>Open...</OpenMenu>\r
-    <SaveAsMenu>Save As...</SaveAsMenu>\r
-    <ExportMenu>Export to clipboard</ExportMenu>\r
-    <ImageMenu>Export to image</ImageMenu>\r
-    \r
-    <EditMenu>Edit</EditMenu>\r
-    <UndoMenu>Ångra</UndoMenu>\r
-    <RedoMenu>Redo</RedoMenu>\r
-    <CutMenu>Klipp ut</CutMenu>\r
-    <CopyMenu>Kopiera</CopyMenu>\r
-    <PasteMenu>klistra in</PasteMenu>\r
-    <ClearMenu>Clear Workspace</ClearMenu>\r
-    <SelectMenu>Select All</SelectMenu>\r
-    \r
-    <OptionsMenu>Options</OptionsMenu>\r
-    <SetExportMenu>Set export format</SetExportMenu>\r
-    <SetLanguageMenu>Set language</SetLanguageMenu>\r
-    \r
-    <HelpMenu>Help</HelpMenu>\r
-    <DebugMenu>Debug</DebugMenu>\r
-    <TreeMenu>Visa träd för uttryck</TreeMenu>\r
-    <OutlineMenu>Visa innehållsblock</OutlineMenu>\r
-    <OnlineHelpMenu>Online Help</OnlineHelpMenu>\r
-    <AboutMenu>Om DragMath</AboutMenu>\r
-    \r
-    \r
-</Language>\r
diff --git a/lib/editor/common/dragmath/applet/classes/swing-layout-1.0.jar b/lib/editor/common/dragmath/applet/classes/swing-layout-1.0.jar
deleted file mode 100644 (file)
index 8d3f66f..0000000
Binary files a/lib/editor/common/dragmath/applet/classes/swing-layout-1.0.jar and /dev/null differ
diff --git a/lib/editor/common/dragmath/demo.html b/lib/editor/common/dragmath/demo.html
deleted file mode 100644 (file)
index 7369071..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\r
-<html>\r
-<head>\r
-<title>DragMath - Demonstration</title>\r
-</head>\r
-<body>\r
-\r
-<font size="3"; style="font-family: Arial;">\r
-\r
-<p></p>\r
-<h1 style="text-align: center;"><span style="color: rgb(0, 0, 128);">DragMath</span></h1>\r
-<hr />\r
-\r
-<span style="color: rgb(0, 0, 128);">\r
-<center>\r
-<h4>\r
-<a href="index.html">Home</a>&nbsp;&nbsp;&nbsp;\r
-<a href="demo.html">Demonstration</a>&nbsp;&nbsp;&nbsp;\r
-<a href="index.html#Download">Download</a>&nbsp;&nbsp;&nbsp;\r
-<a href="doc/index.html">Documentation</a>&nbsp;&nbsp;&nbsp;\r
-<a href="integrations.html">Integrations</a>&nbsp;&nbsp;&nbsp;\r
-<a href="support.html">Support DragMath</a>&nbsp;&nbsp;&nbsp;\r
-<a href="index.html#Contact">Contact</a>\r
-</h4>\r
-</center>\r
-</span>\r
-\r
-<hr />\r
-\r
-<h2><span style="color: rgb(0, 0, 128);"><a name="Demonstration">Demonstration</a></span></h2>\r
-<p>\r
-<applet width="540" height="333" archive="Project.jar,AbsoluteLayout.jar,swing-layout-1.0.jar,jdom.jar,jep.jar" code="Display.MainApplet.class" codebase="applet/classes" name="DragMath">\r
-<param value="en" name="language" />To use this page you need a Java-enabled browser. Download the latest Java plug-in from <a href="http://www.java.com/">Java.com</a> \r
-</applet></p>\r
-<br>\r
-\r
-</h2>\r
-<p><a href="applet/Maxima.html"><b>Maxima Demo</b></a><br />\r
-This example shows setting the default output format to 'Maxima', and how JavaScript can be used to provide further interaction between a web-page and DragMath.<br />\r
-<br />\r
-<a href="applet/Latex.html"><b>LaTeX Demo</b></a><br />\r
-This example sets the default output format to 'LaTeX', and passes the LaTeX syntax to an external applet which renders it dynamically.<br />\r
-<br />\r
-<a href="applet/MathML.html"><b>MathML Demo</b></a><br />\r
-This example dynamically inserts the generated MathML syntax in the web-page, so the created expression is displayed with MathML.It requires a MathML enabled Gecko browser, or Internet Explorer and a MathML plugin.<br />\r
-&nbsp;</p>\r
-<hr />\r
-<center>\r
-<p>&copy; 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-</p>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/about.html b/lib/editor/common/dragmath/doc/about.html
deleted file mode 100644 (file)
index f82898d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - About DragMath</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<p><h2><span style=" color: #000099;"><strong>About DragMath</strong></span></h2></p>\r
-\r
-<p>\r
-DragMath is a simple "drag and drop" equation editor for mathematics. Accepting certain traditional mathematical conventions, the user can build a mathematical expression. This expression can be exported in a number of different formats. DragMath is a simple Java applet, and could be incorporated into web-based applications or other Java applications.\r
-</p>\r
-<p>\r
-DragMath started as a final-year University project at the <a href ="http://www.bham.ac.uk/">University of Birmingham<a/> by <a href="http://www.abillingsley.co.uk">Alex Billingsley</a> under the supervision of <a href ="http://web.mat.bham.ac.uk/C.J.Sangwin/">Chris Sangwin</a>. It's main application is therefore directed toward an educational one.\r
-</p>\r
-\r
-</font>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/acknowledgments.html b/lib/editor/common/dragmath/doc/acknowledgments.html
deleted file mode 100644 (file)
index 4c70f24..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - License</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style="color: #000099;"><strong>DragMath copyright information</strong></span></h2>\r
-\r
-<p>DragMath is licensed under the GNU General Public License (GPL) (<a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>)\r
-</p><p>\r
-All source code in this package is written by <a href="http://www.abillingsley.co.uk">Alex Billingsley</a> except the libraries used. The copyright information for the libaries is included below:</p>\r
-<br>\r
-<p>\r
-<h4>JDOM<br>  <a href="http://www.jdom.org">http://www.jdom.org</a></h4>\r
-JDOM is available under an Apache-style open source license, with the acknowledgment clause removed. This license is among the least restrictive license available, enabling developers to use JDOM in creating new products without requiring them to release their own products as open source. This is the license model used by the Apache Project, which created the Apache server. The license is available at the top of every source file and in LICENSE.txt in the root of the distribution.\r
-</p>\r
-<br>\r
-<p>\r
-<h4>JEP<br><a href="https://sourceforge.net/projects/jep/">https://sourceforge.net/projects/jep/</a></h4>\r
-JEP is licensed under the GNU General Public License (GPL) (<a href="http://www.gnu.org/copyleft/gpl.html">http://www.gnu.org/copyleft/gpl.html</a>)</p>\r
-<p>\r
-<br>\r
-<h4>glyFX Common Toolbar Set Icons<br>   <a href="http://www.glyfx.com">http://www.glyfx.com</a></h4>\r
-Icons used in software, license found at; <a href="http://www.glyfx.com/license-toolbar.html">http://www.glyfx.com/license-toolbar.html</a></p>\r
-\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/browser.html b/lib/editor/common/dragmath/doc/browser.html
deleted file mode 100644 (file)
index 585d74f..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Running applet in web browser</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Running applet in web browser</strong></span></h2>\r
-\r
-<p>\r
-Details are given on the file structure of the required files, and &lt;APPLET&gt; tag to enable the applet to run in a web browser.\r
- </p><p>\r
-The applet currently requires Java Runtime Environment (JRE) 1.4 or higher to run, which can be obtained from <A href="http://www.java.com">www.java.com</A>\r
- </p><p>\r
-The recommended file structure is:\r
- </p>\r
-\r
-<dl>\r
-       <dd>applet.html</dd>\r
-       <br>\r
-       <dd>\dragmath</dd>\r
-<br>\r
-       <dl>\r
-               <dd>\Display</dd>\r
-               <dl>\r
-                       <dd>MainApplet.class</dd>\r
-               </dl>\r
-<br>\r
-               <dd>\lang</dd>\r
-               <dl>\r
-                       <dd>en.xml</dd>\r
-               </dl>\r
-<br>\r
-               <dd>\formats</dd>\r
-               <dl>\r
-                       <dd>Maple.xml</dd>\r
-                       <dd>Latex.xml</dd>\r
-                       <dd>MathML.xml</dd>\r
-                       <dd>Maxima.xml</dd>\r
-               </dl>\r
-<br>\r
-               <dd>AbsoluteLayout.jar</dd>\r
-               <dd>swing-layouts-1.0.jar</dd>\r
-               <dd>jdom.jar</dd>\r
-               <dd>jep.jar</dd>\r
-               <dd>Project.jar</dd>\r
-       </dl>\r
-</dl>\r
-<br>\r
-Using this structure the following &lt;APPLET&gt; tag should be used:\r
-</p>\r
- <p>\r
-<STRONG>\r
-<FONT color=#800080>&lt;applet</FONT>\r
-name=</STRONG>\r
-<FONT color=#0000ff>"dragmath"</FONT>\r
-<STRONG>codebase=</STRONG><FONT \r
-color=#0000ff>"classes"</FONT>\r
-<STRONG>code=</STRONG>\r
-<FONT color=#0000ff>"Display.MainApplet.class"</FONT>\r
- <STRONG>archive=</STRONG>\r
-<FONT color=#0000ff>"Project.jar,AbsoluteLayout.jar,swing-layout-1.0.jar,,jdom.jar,,jep.jar"</FONT>\r
-<STRONG> width=</STRONG>\r
-<FONT color=#0000ff>540</FONT>\r
-<STRONG> height=</STRONG>\r
-<FONT color=#0000ff>300</FONT>\r
-<STRONG>&gt;<BR>\r
-<FONT color=#800080>&lt;param</FONT> \r
-name=</STRONG>\r
-<FONT color=#0000ff>language </FONT>\r
-<STRONG>value=</STRONG>\r
-<FONT color=#0000ff>"en"</FONT>\r
-<STRONG> &gt;<BR>\r
-<FONT color=#800080>&lt;/applet &gt;</FONT>\r
-</STRONG>\r
- </p>\r
\r
-All of the .jar files in the \dragmath directory require digitally signing. A tutorial on how to do this can be viewed at,<br>\r
-<A href="http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html#example">http://java.sun.com/developer/onlineTraining/Programming/JDCBook/signed.html#example</A>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/complex.html b/lib/editor/common/dragmath/doc/complex.html
deleted file mode 100644 (file)
index 98317bf..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Creating complex expressions</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Creating complex expressions</strong></span></h2>\r
-\r
-<p>\r
-To apply an object to multiple objects, you will need to select the multiple objects and then click on the object to apply in the toolbar. Selection is performed as it is in any program, by using the mouse to highlight the desired area.\r
-</p>\r
- <p>\r
-Operators and functions can be entered into text boxes using the keyboard with the following syntax:\r
-</p>\r
-<br>\r
-\r
-<table border="1">\r
-<tr>\r
-<th>Name</th>\r
-<th>Syntax</th>\r
-</tr>\r
-<tr>\r
-<td>Addition</td>\r
-<td>+</td>\r
-</tr>\r
-<tr>\r
-<td>Multiplication</td>\r
-<td>*</td>\r
-</tr>\r
-<tr>\r
-<td>Division</td>\r
-<td>/</td>\r
-</tr>\r
-<tr>\r
-<td>Greater than</td>\r
-<td>></td>\r
-</tr>\r
-<tr>\r
-<td>Less than</td>\r
-<td>&lt;</td>\r
-</tr>\r
-<tr>\r
-<td>Equal</td>\r
-<td>=<br>==</td>\r
-</tr>\r
-<tr>\r
-<td>Less than or Equal</td>\r
-<td>&lt;=</td>\r
-</tr>\r
-<tr>\r
-<td>Greater than or Equal</td>\r
-<td>>=</td>\r
-</tr>\r
-<tr>\r
-<td>Power</td>\r
-<td>^</td>\r
-</tr>\r
-<tr>\r
-<td>Sine</td>\r
-<td>sin(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Cosine</td>\r
-<td>cos(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Tangent</td>\r
-<td>tan(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Arc Sine</td>\r
-<td>asin(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Arc Cosine</td>\r
-<td>acos(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Arc Tangent</td>\r
-<td>atan(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Hyperbolic Sine</td>\r
-<td>sinh(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Hyperbolic Cosine</td>\r
-<td>cosh(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Hyperbolic Tangent</td>\r
-<td>tanh(x)</td>\r
-</tr>\r
-<td>Inverse Hyperbolic Sine</td>\r
-<td>asinh(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Inverse Hyperbolic Cosine</td>\r
-<td>acosh(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Inverse Hyperbolic Tangent</td>\r
-<td>atanh(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Natural Logarithm</td>\r
-<td>ln(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Logarithm</td>\r
-<td>log(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Exponential</td>\r
-<td>exp(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Absolute Value</td>\r
-<td>abs(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Square Root</td>\r
-<td>sqrt(x)</td>\r
-</tr>\r
-<tr>\r
-<td>Union</td>\r
-<td>union(a,b)</td>\r
-</tr>\r
-<tr>\r
-<td>Intersection</td>\r
-<td>intersection(a,b)</td>\r
-</tr>\r
-<tr>\r
-<td>Determinant</td>\r
-<td>det(a)</td>\r
-</tr>\r
-<tr>\r
-<td>Trace</td>\r
-<td>trace(a)</td>\r
-</tr>\r
-<tr>\r
-<td>Subset</td>\r
-<td>subset(a,b)</td>\r
-</tr>\r
-<tr>\r
-<td>Integral</td>\r
-<td>integrate(f,x)<br>\r
-int(f,x)</td>\r
-</tr>\r
-<tr>\r
-<td>Definite Integral</td>\r
-<td>integrate(f,x,a,b)<br>\r
-int(f,x,a,b)\r
-</td>\r
-</tr>\r
-<tr>\r
-<td>Differential</td>\r
-<td>diff(f,x)</td>\r
-</tr>\r
-<td>Sum</td>\r
-<td>sum(n^2,n,1,10)</td>\r
-</tr>\r
-<td>Product</td>\r
-<td>product(n^2,n,1,10)</td>\r
-</tr>\r
-\r
-</table>\r
-\r
-<p>\r
-Once the box that you have been typing in has been left then the text is turned into templates automatically for you.\r
-</p>\r
-<br>\r
-<font size=3>\r
-<b>How to use layout templates</b>\r
-</font>\r
-\r
-<p>\r
-There are special templates called layout templates, beause they each take a unique layout. These are:<br>\r
-Fraction<br>\r
-Square Root<br>\r
-N-th Root<br>\r
-Subscript<br>\r
-Superscript<br>\r
-Matrix<br>\r
-Integral<br>\r
-Differential<br>\r
-Product<br>\r
-Sum<br>\r
-Limit<br>\r
-Evaluate at a point<br>\r
-Grouping (round brackets, curly brackets, square brackets, modulus)<br>\r
-</p>\r
- <p>\r
-These layout templates can be used in exactly the same way as the other math templates.\r
-</p>\r
\r
-<br>\r
-<font size=3>\r
-<b>How to add symbols</b>\r
-</font>\r
-<p>\r
-Symbols such as greek letters are added by clicking in the box you wish to insert the symbol, and then clicking on the symbol in the toolbar.\r
-</p>\r
-\r
-</font>\r
-</body>\r
-</html>\r
diff --git a/lib/editor/common/dragmath/doc/cvs.html b/lib/editor/common/dragmath/doc/cvs.html
deleted file mode 100644 (file)
index dc9f607..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Setting up DragMath CVS in NetBeans</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Setting up DragMath CVS in NetBeans</strong></span></h2>\r
-\r
-<p>\r
-Below are the instructions on how to get active as a developer of DragMath and set up NetBeans with the DragMath code versioning system (CVS).</p>\r
-<p>\r
-1. Install NetBeans<br>\r
-2. Get source code from DragMath CVS repository<br>\r
-3. Update and Commiting your local source code copy\r
-</p>\r
-<br>\r
-\r
-<font size=3><b>\r
-1. Install NetBeans\r
-</b></font>\r
-<br>\r
-<p>\r
-NetBeans is the integrated development environment (IDE) used for DragMath.\r
-It is open source and can be downloaded from http://www.netbeans.org.\r
-</p>\r
-<br>\r
-\r
-<font size=3><b>\r
-2. Get source code from DragMath CVS repository\r
-</b></font>\r
-<p>\r
-Start NetBeans and do the following to get the DragMath source code:<br>\r
-<p>\r
-1. File -> New Project\r
-</p><p>\r
-2. Choose the 'General' category, and then 'Java Application' under Projects, then click Next.\r
-</p><p>\r
-3. Set the Project Name as "ddma". Click Browse to choose the location where you would like the code stored. Then click Next.\r
-</p><p>\r
-4. CVS -> Checkout. The click Edit.\r
-</p><p>\r
-5.  Fill in the location information identifying the DragMath CVS repository and click OK.<br>\r
-    <b>Access Method:</b> pserver for anonymous, ext for developer accounts<br>\r
-    <b>User:</b> "anonymous" or your DragMath developer account at SourceForge<br>\r
-    <b>Host:</b> dragmath.cvs.sourceforge.net<br>\r
-    <b>Repository Path:</b> /cvsroot/dragmath\r
-</p><p>\r
-6. Enter your password, none for anonymous login, then click Next\r
-</p><p>\r
-7. Set the Module as "ddma", and the Local Folder to the same location the Project was created. Then click Finish.\r
-</p><p>\r
-8. Once the source code has been downloaded, click Close to the popup message about opening the project.\r
-</p><p>\r
-9. The different packages containing the source code can now be seen in the projects window. The package 'ddma' containing the Main.java class can be deleted, as it was created for the new Project and is not part of the DragMath source code.\r
-</p><p>\r
-10. The libraries used by DragMath must now be added to the Project. Right click on Libraries in the Project window, and go to 'Add JAR/Folder...'. Navigate to the ddma -> lib folder and add all the .jar files from this folder.\r
-</p><p>\r
-11. The code is now ready to work on.\r
-</p>\r
-<br>\r
-<font size=3><b>\r
-3. Update and Commiting your local source code copy\r
-</b></font>\r
-<p>\r
-The code can be updated and commited using the Update and Commit options under the CVS menu in NetBeans.\r
-</p>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/editing.html b/lib/editor/common/dragmath/doc/editing.html
deleted file mode 100644 (file)
index ee79b40..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Editing an expression</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Editing an expression</strong></span></h2>\r
-\r
-<p>\r
-Basic editing options are supplied to edit the expression:\r
-</p>\r
-\r
-<ul>\r
-<li><p>\r
-Select - Selection is performed similar to any program, by dragging the mouse to highlight the desired area. Objects can also be selected by double clicking on them. You can select all the objects on the workspace by using Select All on the menu, or Ctrl+A on the keyboard.\r
-</p>\r
-<li><p>\r
-Cut \96 Select the desired area to cut, then either click the Cut button or use Ctrl+X on the keyboard.\r
-</p>\r
-<li><p>\r
-Copy \96 Select the desired area to copy, then either click the Copy button or use Ctrl+C on the keyboard.\r
-</p>\r
-<li><p>\r
-Paste \96 Once a selection has been copied, it can be pasted into any box, by clicking on the box to select it, and then either clicking the Paste button or using Ctrl+V on the keyboard.\r
-</p>\r
-<li><p>\r
-Delete \96 Delete is performed by selecting the area to delete and pressing delete on the keyboard.\r
-</p>\r
-<li><p>\r
-Undo \96 You can perform an undo by clicking the Undo button\r
-</p>\r
-<li><p>\r
-Redo \96 You can perform a redo by clicking the Redo button\r
-</p>\r
-<li><p>\r
-Open \96 Saved expressions can be opened from a file using the Open button\r
-</p>\r
-<li><p>\r
-Save \96 Expressions can be saved to a file using the Save button \r
-</p>\r
-</ul>\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/img/plus.jpg b/lib/editor/common/dragmath/doc/img/plus.jpg
deleted file mode 100644 (file)
index a3a73c6..0000000
Binary files a/lib/editor/common/dragmath/doc/img/plus.jpg and /dev/null differ
diff --git a/lib/editor/common/dragmath/doc/img/sin on box.jpg b/lib/editor/common/dragmath/doc/img/sin on box.jpg
deleted file mode 100644 (file)
index a8c31dc..0000000
Binary files a/lib/editor/common/dragmath/doc/img/sin on box.jpg and /dev/null differ
diff --git a/lib/editor/common/dragmath/doc/img/sin on plus.jpg b/lib/editor/common/dragmath/doc/img/sin on plus.jpg
deleted file mode 100644 (file)
index 33ae104..0000000
Binary files a/lib/editor/common/dragmath/doc/img/sin on plus.jpg and /dev/null differ
diff --git a/lib/editor/common/dragmath/doc/img/sin.jpg b/lib/editor/common/dragmath/doc/img/sin.jpg
deleted file mode 100644 (file)
index a4ed07d..0000000
Binary files a/lib/editor/common/dragmath/doc/img/sin.jpg and /dev/null differ
diff --git a/lib/editor/common/dragmath/doc/index.html b/lib/editor/common/dragmath/doc/index.html
deleted file mode 100644 (file)
index adcc364..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation</title>\r
-</head>\r
-\r
-\r
-<frameset cols="330,*">\r
-\r
-<frame src="navframe.html">\r
-<frame src="simple.html" \r
-name="showframe">\r
-\r
-</frameset>\r
-\r
-\r
-</html>\r
diff --git a/lib/editor/common/dragmath/doc/integrations.html b/lib/editor/common/dragmath/doc/integrations.html
deleted file mode 100644 (file)
index 73d65b3..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Integrations</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Integrations</strong></span></h2>\r
-\r
- <p>\r
-DragMath has been successfully integrated with a number of different systems. The main method used for extracting the expression in the desired format is by using the getMathExpression() method called from JavaScript within a web page. This method returns the expression in the format specified.\r
-</p>\r
-<br>\r
-\r
-<font size=3>\r
-<b><a href ="http://www.moodle.org/">Moodle</a></b>\r
-</font>\r
-<p>\r
-Moodle is a free, open source course management system (CMS). Also know as a Learning Managment System (LMS) or Virtual Learning Environment (VLE). For further details please see the specific Moodle <a href ="http://docs.moodle.org/en/DragMath_equation_editor">installation instructions</a>.\r
-</p>\r
-<br>\r
-\r
-<font size=3>\r
-<b><a href ="http://stack.bham.ac.uk/">STACK</a></b>\r
-</font>\r
-<p>\r
-STACK is a computer aided assessment (CAA) package for mathematics. It was mainly developed by <a href ="http://web.mat.bham.ac.uk/C.J.Sangwin/">Chris Sangwin</a> (a developer of DragMath).\r
-</p>\r
-<br>\r
-\r
-<font size=3>\r
-<b><a href ="http://www.yourmathstutor.info/">YourMathsTutor Website</a></b>\r
-</font>\r
-<p>\r
-YourMathsTutor is a website created primarily to help students studying the for the UK's Key Stage 3, GCSE, AS and A Level mathematics and physics exams. DragMath has been integrated into the forum on this website. The forum is a <a href ="http://www.simplemachines.org/">Simple Machines Forum</a> (SMF), which is a powerful open source forum. More information on how it was <a href ="http://yourmathstutor.blogspot.com/2007/08/dragmath.html">integrated</a> and how it is <a href ="http://www.yourmathstutor.info/forum/index.php?topic=4.0">used</a> in the forum.\r
-</p>\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/language.html b/lib/editor/common/dragmath/doc/language.html
deleted file mode 100644 (file)
index 88ea005..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Adding a language</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Adding a language</strong></span></h2>\r
-\r
-<p>\r
-The software is supplied with an English language file, \91en.xml\92. This can be used as a template for creating other language files. To change the language data simply change the text within the tags in XML file.\r
-</p>\r
-<p>\r
-For example consider the error message when a file cannot be read,\r
-</p><p>\r
-<strong>\r
-<font color=#800080>&lt;ReadingFile&gt;</font>\r
-Error reading format file: Check file is valid\r
-<font color=#800080>&lt;/ReadingFile&gt;</font>\r
-</strong>\r
- </p><p>\r
-To change the language of this message, simply change the message between the tags (the bold text). The tags should not be changed, otherwise the language file will not work.\r
- </p><p>\r
-Once a new language file has been created it should be placed in the \lang folder where the English file was found, and then an entry corresponding to that file entered in the Config.xml file. To change which language file the software uses see the <A href="options.html">Options</A> section or the <A href="parameters.html">Changing applet parameters</A> section.\r
- </p>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/navframe.html b/lib/editor/common/dragmath/doc/navframe.html
deleted file mode 100644 (file)
index 4ab7ca4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<html>\r
-<body>\r
-<br>\r
-<DIV><FONT face=Arial color=#000080\r
-size=5><STRONG>DragMath</STRONG></FONT></DIV>\r
-<br>\r
-<FONT face=Arial>\r
-<dl>\r
-<dt><b>Basic Usage</b><br></dt>\r
-<dd><a href ="simple.html" target ="showframe">Creating simple expressions</a><br></dd>\r
-<dd><a href ="complex.html" target ="showframe">Creating complex expressions</a><br></dd>\r
-<dd><a href ="editing.html" target ="showframe">Editing an expression</a><br></dd>\r
-<dd><a href ="options.html" target ="showframe">Options</a><br></dd>\r
-<br>\r
-<dt><b>Advanced Usage</b><br></dt>\r
-<dd><a href ="language.html" target ="showframe">Adding a language</a><br></dd>\r
-<dd><a href ="newformat.html" target ="showframe">Adding an output format</a><br></dd>\r
-<dd><a href ="parameters.html" target ="showframe">Changing applet parameters</a></dd>\r
-<dd><a href ="integrations.html" target ="showframe">Integrations</a><br></dd>\r
-<br>\r
-<dt><b>Developer Usage</b><br></dt>\r
-<dd><a href ="cvs.html" target ="showframe">Setting up DragMath CVS in NetBeans</a><br></dd>\r
-<dd><a href ="browser.html" target ="showframe">Running applet in web browser</a><br></dd>\r
-<dd><a href ="newobject.html" target ="showframe">Adding a function/operator</a><br></dd>\r
-<br>\r
-<dt><b>About</b><br></dt>\r
-<dd><a href ="acknowledgments.html" target ="showframe">License</a><br></dd>\r
-<dd><a href ="about.html" target ="showframe">About DragMath</a><br></dd>\r
-</dl>\r
-<br><br/>\r
-<b><center><a href ="http://www.dragmath.bham.ac.uk" target ="_top">www.dragmath.bham.ac.uk</a></center></b>\r
-</FONT>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/newformat.html b/lib/editor/common/dragmath/doc/newformat.html
deleted file mode 100644 (file)
index 20a19a0..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
-<HTML><HEAD><TITLE>DragMath Documentation - Adding an output format</TITLE>\r
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">\r
-<META content="MSHTML 6.00.6000.16525" name=GENERATOR></HEAD>\r
-<BODY>\r
-<DIV><FONT face=Arial color=#000080 size=5><STRONG>Adding an output format</STRONG></FONT></DIV>\r
-<DIV><FONT face=Arial size=2>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2>\r
-<p>\r
-The formats supplied\r
-are Maple,&nbsp;Latex, MathML and Maxima, with the corresponding files found in\r
-the \formats folder. These files can be edited to reflect the syntax you prefer. These\r
-files can also be used as templates for creating files for different formats.\r
-There are a number of rules and options that you need to be aware of to\r
-successfully create an XML file for a new format.</p>Each math object has\r
-its own element in the XML document, with a familiar name describing it, for\r
-example \93Add\94. Within this element there are a number of sub-elements depending\r
-upon how many arguments the object has.</FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><BR>N-ary operators\r
-have a single \91output\92 element e.g. for addition this\r
-is&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <STRONG><FONT\r
-color=#800080>&lt;Add&gt;</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-<FONT color=#800080>&lt;output&gt;</FONT>+<FONT\r
-color=#800080>&lt;/output&gt;<BR></FONT>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080>&lt;/Add&gt;<BR></FONT></STRONG><BR>Binary Operators have 3\r
-\91output\92 elements e.g. for fraction in Latex this is<BR>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080><STRONG>&lt;Divide</STRONG> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>&gt;</STRONG></FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-<STRONG><FONT color=#800080>&lt;output1&gt;</FONT>\frac<FONT color=#800080><FONT\r
-color=#000000>{</FONT>&lt;/output1&gt;</FONT><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-<FONT color=#800080>&lt;output2&gt;</FONT>}{<FONT\r
-color=#800080>&lt;/output2&gt;<BR></FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-<FONT color=#800080>&lt;output3&gt;</FONT>}<FONT\r
-color=#800080>&lt;/output3&gt;<BR></FONT>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080>&lt;/Divide&gt;</FONT><BR></STRONG><BR>Functions have 2 \91output\92\r
-elements e.g. for square root in Latex this is<BR>&nbsp;&nbsp;<STRONG>&nbsp;\r
-</STRONG><FONT color=#800080><STRONG>&lt;SquareRoot</STRONG> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt;<FONT\r
-color=#000000>\sqrt{</FONT>&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output2&gt;<FONT\r
-color=#000000>}</FONT>&lt;/output2&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/SquareRoot&gt;</STRONG></FONT><BR><BR></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2>N-ary functions have 'n' output elements\r
-e.g. for definite integral in Latex it has\r
-5</FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2>&nbsp;&nbsp;&nbsp;\r
-<FONT color=#800080><STRONG>&lt;DefiniteIntegral</STRONG> <FONT\r
-color=#000000>reverse=</FONT><FONT\r
-color=#0000ff>"true"</FONT><STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt;&nbsp;&nbsp;<FONT\r
-color=#000000>\int_{</FONT>&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output2&gt;<FONT\r
-color=#000000>}^{</FONT>&lt;/output2&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output3&gt;<FONT\r
-color=#000000>}</FONT>&lt;/output3&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output4&gt;<FONT\r
-color=#000000>\,\mathrm{d</FONT>&lt;/output4&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output5&gt;<FONT\r
-color=#000000>}</FONT>&lt;/output5&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/DefiniteIntegral&gt;</STRONG></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT\r
-size=2></FONT></FONT></FONT></FONT></FONT></FONT>&nbsp;</DIV></DIV>\r
-<DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2>Symbols have 1 \91output\92 element e.g. for\r
-Infinity in Latex this is<BR>&nbsp;&nbsp;<STRONG>&nbsp;<FONT color=#800080>\r
-&lt;Infinity&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output&gt;<FONT\r
-color=#000000>\infty</FONT>&lt;/output&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/Infinity&gt;</FONT></STRONG><BR><BR>Groupings have 2 \91output\92 elements e.g.\r
-for square brackets in Latex this is<BR>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080><STRONG>&lt;BracketsSq&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt;<FONT\r
-color=#000000>\left[</FONT>&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output2&gt;<FONT\r
-color=#000000>\right]</FONT>&lt;/output2&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/BracketsSq&gt;</STRONG><BR></FONT><BR>Matrix in Latex is as\r
-follows:<BR>&nbsp;&nbsp;&nbsp; <STRONG><FONT\r
-color=#800080>&lt;Matrix&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;matrixStart&gt;<FONT color=#000000>\left(\r
-\begin{array}{ccc}</FONT>&lt;/matrixStart&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;rowStart /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;elementStart /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;elementEnd /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;elementSeparator&gt;<FONT color=#808000>&lt;![CDATA[ &amp;\r
-]]&gt;</FONT>&lt;/elementSeparator&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;rowEnd&gt;&nbsp;<FONT\r
-color=#000000>\\</FONT>&nbsp;&lt;/rowEnd&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;rowSeparator /&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;matrixEnd&gt;<FONT color=#000000>\end{array}\r
-\right)</FONT>&lt;/matrixEnd&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/Matrix&gt;</FONT></STRONG><BR><BR><BR>The syntax within these tags is used\r
-when converting an expression to that particular format. The actual arguments of\r
-the objects appear in the syntax between each pair of tags. For example consider\r
-½ in Latex format.&nbsp; It has 3 \91output\92 elements. So the first part will be\r
-\91\frac{\91, then the first argument will be appended to the string giving us,\r
-\91\frac{1\92, then the 2nd output will be appended, \91\frac{1}{\91, then the 2nd\r
-argment, \frac{1}{2\92 and then the final output, \91\frac{1}{2}\92. A similar process\r
-takes place with all the object types of objects, with the argument being\r
-appended between each pair of output elements.<BR><BR>There are various options\r
-that can be set to allow more control over the\r
-output.</FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT\r
-size=2></FONT></FONT></FONT></FONT></FONT></FONT>&nbsp;</DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2><U>Reverse</U><BR>If you find the arguments\r
-of a binary operator&nbsp;being output in the wrong order for a format, you can\r
-reverse the order of them by setting, reverse=\94true\94. An example of this is with\r
-the N-th root in Latex,<BR>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080><STRONG>&lt;NthRoot</STRONG> <FONT\r
-color=#000000>reverse=</FONT><FONT color=#0000ff>"true"</FONT> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt;<FONT color=#000000>\sqrt[</FONT>\r
-&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output2&gt;<FONT\r
-color=#000000>]{</FONT>&lt;/output2&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output3&gt;<FONT\r
-color=#000000>}</FONT>&lt;/output3&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/NthRoot&gt;</STRONG></FONT><BR><U></U></FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT\r
-size=2><U></U></FONT></FONT></FONT></FONT></FONT></FONT>&nbsp;</DIV>\r
-<DIV><U>Argument Order</U></DIV>\r
-<DIV>If you find the arguments of an N-ary Function being output in the wrong\r
-order for a format, you can re-arrange the order of them by setting,\r
-order=\94#1,#2,#3,...,#n\94. An example of this is with the&nbsp;Sum in Latex.\r
-Obviously, the default order&nbsp;for this is&nbsp;0,1,2,3, and it is being\r
-changed to 1,2,3,0.<BR>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080><STRONG>&lt;Sum</STRONG> <FONT color=#000000>order=</FONT><FONT\r
-color=#0000ff>"1,2,3,0"</FONT><STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt; <FONT\r
-color=#000000>\sum_{{</FONT>&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output2&gt;<FONT\r
-color=#000000>}={</FONT>&lt;/output2&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output3&gt;<FONT\r
-color=#000000>}}^{</FONT>&lt;/output3&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output4&gt;<FONT\r
-color=#000000>}</FONT>&lt;/output4&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output5&gt;&lt;/output5&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/Sum&gt;</STRONG></FONT><BR></DIV><br>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2><U>AutoBrackets</U><BR>By default, round\r
-brackets are placed around n-ary operators and binary operators where necessary\r
-to ensure operator precedence is preserved. For presentational formats, such as\r
-Latex this is often unnecessary, so there is the option to turn automatic\r
-placing of brackets on/off. This is set in the element that specifies the name\r
-of the format. An example of this is shown for\r
-Latex,</FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2>&nbsp;&nbsp;&nbsp; <FONT\r
-color=#800080><STRONG>&lt;name</STRONG> <FONT\r
-color=#000000>AutoBrackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>&gt;<FONT\r
-color=#000000>Latex</FONT>&lt;/name&gt;</STRONG></FONT><BR><U></U></FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT\r
-size=2><U></U></FONT></FONT></FONT></FONT></FONT></FONT>&nbsp;</DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2><U>Brackets on Functions<BR></U>Brackets\r
-are added by default around the argument of a function. For example Sine in\r
-Latex is,<BR>&nbsp;&nbsp;&nbsp; <STRONG><FONT\r
-color=#800080>&lt;Sine&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt;<FONT color=#000000>\sin</FONT>\r
-&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;output2\r
-/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;/Sine&gt;</FONT></STRONG><BR><BR>Brackets are\r
-automatically added after the \91\sin\92 and after the 2nd output, resulting in\r
-"\sin(arg)". This is often the desired result but if you need to turn the\r
-brackets off, they can be set for each individual function. An example of\r
-turning them off is shown here for Square root in\r
-Latex,<BR>&nbsp;&nbsp;<STRONG>&nbsp; </STRONG><FONT\r
-color=#800080><STRONG>&lt;SquareRoot</STRONG> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output1&gt;<FONT\r
-color=#000000>\sqrt{</FONT>&lt;/output1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output2&gt;<FONT\r
-color=#000000>}</FONT>&lt;/output2&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/SquareRoot&gt;</STRONG></FONT><BR><U></U></FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT\r
-size=2><U></U></FONT></FONT></FONT></FONT></FONT></FONT>&nbsp;</DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2><U>Initial</U><BR>As well as the structured\r
-number of output elements for each type of object, there is the option of having\r
-an \91initial\92 element. The data in this element is added to the string before any\r
-other output element is. An example of its use for describing multiplication in\r
-MathML Content is shown below.<BR>&nbsp;&nbsp;&nbsp; <STRONG><FONT\r
-color=#800080>&lt;Add&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;initial&gt;<FONT\r
-color=#000000>&lt;times/&gt;</FONT>&lt;/initial&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output&lt;/output&gt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/Add&gt;<BR></FONT></STRONG><BR>&nbsp;\91a x b x c\92 would then be converted\r
-to,<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;times/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;ci&gt;a&lt;/ci&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;ci&gt;b&lt;/ci&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;ci&gt;c&lt;/ci&gt; </FONT></FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><U><FONT face=Arial\r
-size=2></FONT></U></FONT></FONT></FONT></FONT>&nbsp;</DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><U><FONT face=Arial\r
-size=2>Final</FONT></U></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial size=2>N-ary operators can also have an optional 'final'\r
-element for adding data after everything else. An example of this is with Union\r
-in Maxima.</FONT></FONT></FONT></FONT></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2>&nbsp;&nbsp;&nbsp; <STRONG><FONT\r
-color=#800080>&lt;Union&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;initial&gt;<FONT\r
-color=#000000>union(</FONT>&lt;/initial&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;output&gt;<FONT\r
-color=#000000>,</FONT>&lt;/output&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
-&lt;final&gt;<FONT color=#000000>)</FONT>&lt;/final&gt;<BR>&nbsp;&nbsp;&nbsp;\r
-&lt;/Union&gt;</FONT></STRONG></FONT></FONT></FONT></FONT></DIV></DIV></FONT></FONT></DIV></FONT></DIV></FONT></DIV></FONT></DIV>\r
-<DIV><FONT face=Arial size=2><FONT face=Arial size=2><FONT face=Arial\r
-size=2><FONT face=Arial size=2><FONT face=Arial><FONT size=2><FONT face=Arial\r
-size=2><FONT face=Arial><FONT size=2><FONT face=Arial size=2><SPAN\r
-class=875382513-08082007>&nbsp;</DIV></SPAN></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></BODY></HTML>\r
diff --git a/lib/editor/common/dragmath/doc/newobject.html b/lib/editor/common/dragmath/doc/newobject.html
deleted file mode 100644 (file)
index a5b8897..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Adding a function/operator</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Adding a function/operator</strong></span></h2>\r
-\r
-<p>\r
-The code can be easily modified and recompiled to add additional operators and functions.\r
- </p><p>\r
-However, they must adhere to the standard display layout shown below:\r
-</p><p>\r
-Operator:\r
-<br>\r
-<IMG alt="" hspace=0 src="img/plus.jpg" align=bottom border=0>\r
-</p><p>\r
-Function:\r
-<br>\r
-<IMG alt="" hspace=0 src="img/sin.jpg" align=bottom border=0>\r
-</p><p>\r
-The steps to adding one:\r
-</p>\r
-<ol>\r
-\r
- <LI>A new element in the CompConfig.xml, which is located in the Display package. The element must be given a unique name as the name of the object. A unique ID number, by simply choosing the next available ID number. A group number as follows:\r
-<br>&nbsp;N-ary operator - 1\r
-<br>&nbsp;Binary Operator - 2\r
-<br>&nbsp;Function - 3\r
-<br>&nbsp;The name of the GIF file that holds a transparent image of the object, of size &nbsp;16x16, 24x24 or 32x32 pixels.<BR>&nbsp;The text of the element should hold the \r
-  characters that represent the object. \r
-<LI>A new JButton placed on one of the tabs, in the MainApplet.java file. This button can have Text or an Icon to inform the user what it is. The JButton must have the name field set to 'ID-Name' e.g. for Addition this is '2-Add'. \r
-<LI>A new element in the language file you intend to use, with the same element name as in the CompConfig.xml file. The text of the element should be a description of the object for use in the status bar of the program.\r
-<LI>The array &#8216;inputComponents&#8217; should be initialised to the size of the highest ID number now in CompConfig.xml. This line of code is found near the start of the init() method in the MainApplet.java file, in the Display package.\r
-<LI>The Precedence.java file in the Tree package should be adjusted, so the &#8216;value&#8217; array is initialised to the size of the highest ID number now in CompConfig.xml, and the precedence of the new object should be set if required.\r
-<LI>An entry in each format XML file will be required for the new object. For details on how to do this see <A href="newformat.html">here</A>.\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/options.html b/lib/editor/common/dragmath/doc/options.html
deleted file mode 100644 (file)
index cc91b03..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Options</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Options</strong></span></h2>\r
-\r
-<p>\r
-<font size=3>\r
-<b>Exporting an expression</b>\r
-</font>\r
-</p>\r
-<p>\r
-To choose which format to export to click 'Set export format' under the Options menu, and select a file from the list. The files available will be those in the \formats folder. If no format is specified in an applet paramater the default is LaTeX.\r
-To export an expression click the Export button. Once exported the syntax will be copied to the clipboard, so you can simply paste it into any other program you desire.\r
- </p>\r
-<br>\r
-<font size=3>\r
-<b>Changing the language</b>\r
-</font>\r
-<p>\r
-The language can be changed by clicking 'Set language' under the Options menu, and selected a file from the list. The files available will be those in the \lang folder. If no language is specified in an applet parameter the default is English.\r
- </p> \r
-\r
-<br>\r
-<font size=3>\r
-<b>Help</b>\r
-</font>\r
-<p>\r
-If there appears to be a problem with the way the software is behaving it can be useful to use the two tools under the Debug menu, which is under the Help menu. These can show the current expression as a tree, and outline the borders of all the objects on the workspace.\r
-Under the Help menu there is also a link to the Online Documentation.\r
- </p>\r
-</font>\r
- </body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/parameters.html b/lib/editor/common/dragmath/doc/parameters.html
deleted file mode 100644 (file)
index 6cd54fd..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<html>\r
-<head>\r
-<title>DragMath Documentation - Changing applet parameters</title>\r
-</head>\r
-<body>\r
-\r
-<font size="2"; style="font-family: Arial;">\r
-\r
-<h2><span style=" color: #000099;"><strong>Changing Applet parameters</strong></span></h2>\r
-\r
-<p>\r
-There are various parameters that can be set inside the &lt;APPLET> tag, to change particular options of the applet.\r
-</p>\r
\r
-<font size=3>\r
-<b>Language</b>\r
-</font>\r
-<p>\r
-<strong>\r
-<font color=#800080>&lt;param</font>\r
-name=\r
-</strong>\r
-<font color=#0000ff>language</font>\r
-<strong>\r
-value=\r
-</strong>\r
-<font color=#0000ff>"en"</font>\r
-<strong>\r
-<font color=#800080>&gt;</font>\r
-</strong>\r
-<br>\r
-The value is the name of the XML file, so this example refers to language file en.xml in the \lang folder. If the parameter is not used the default value is "en".\r
- </p>\r
-\r
-<font size=3>\r
-<b>Output Format</b>\r
-</font>\r
-<p>\r
-<strong>\r
-<font color=#800080>&lt;param</font>\r
-name=\r
-</strong>\r
-<font color=#0000ff>outputFormat</font>\r
-<strong>\r
-value=\r
-</strong>\r
-<font color=#0000ff>"MathML"</font>\r
-<strong>\r
-<font color=#800080>&gt;</font>\r
-</strong>\r
-<br>\r
-The value is the name of the XML file, so this example refers to output format file MathML.xml in the \formats folder. The purpose of setting this is to have the default format to use automatically set when the software loads.\r
-</p>\r
-\r
-<font size=3>\r
-<b>Open applet with an expression</b>\r
-</font>\r
-<p>\r
-<strong>\r
-<font color=#800080>&lt;param</font>\r
-name=\r
-</strong>\r
-<font color=#0000ff>openWithExpression</font>\r
-<strong>\r
-value=\r
-</strong>\r
-<font color=#0000ff>"sin(1+x)"</font>\r
-<strong>\r
-<font color=#800080>&gt;</font>\r
-</strong>\r
-<br>\r
-The value can be any expression you would like the applet to be opened with. The Maxima example on the DragMath website gives an example of this being used.\r
-</p>\r
-\r
-</font>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/doc/simple.html b/lib/editor/common/dragmath/doc/simple.html
deleted file mode 100644 (file)
index ec5086f..0000000
Binary files a/lib/editor/common/dragmath/doc/simple.html and /dev/null differ
diff --git a/lib/editor/common/dragmath/index.html b/lib/editor/common/dragmath/index.html
deleted file mode 100644 (file)
index 7d95172..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-\r
-<html>\r
-<head>\r
-<title>DragMath - Home Page</title>\r
-</head>\r
-<body>\r
-\r
-<font size="3"; style="font-family: Arial;">\r
-\r
-<h1 style="text-align: center;"><span style="color: rgb(0, 0, 128);">DragMath</span></h1>\r
-<hr />\r
-\r
-<span style="color: rgb(0, 0, 128);">\r
-<h4 style="text-align: center;">\r
-<a href="index.html">Home</a>&nbsp;&nbsp;&nbsp;\r
-<a href="demo.html">Demonstration</a>&nbsp;&nbsp;&nbsp;\r
-<a href="#Download">Download</a>&nbsp;&nbsp;&nbsp;\r
-<a href="doc/index.html">Documentation</a>&nbsp;&nbsp;&nbsp;\r
-<a href="integrations.html">Integrations</a>&nbsp;&nbsp;&nbsp;\r
-<a href="support.html">Support DragMath</a>&nbsp;&nbsp;&nbsp;\r
-<a href="#Contact">Contact</a>\r
-</h4>\r
-</span>\r
-\r
-<hr />\r
-\r
-<h2><a name="Introduction"><span style="color: rgb(0, 0, 128);">Introduction</span></a></h2>\r
-<p>\r
-DragMath is a free "drag and drop" equation editor.  It is a Java applet which can simply run within a web browser on most computers.<br />\r
-<br />\r
-The editor lets users build up mathematical expressions in a traditional two dimensional way, and then output the results in a correctly formed syntax. This is not so easy: mathematical notation contains some ambiguities. Still, we appear to be stuck with traditional notation for the foreseeable future, see for example this\r
-<a href="http://web.mat.bham.ac.uk/C.J.Sangwin/Publications/2007-Sangwin_Ramsden_Syntax.pdf">article</a> for some comments on notation. This gives some idea of the design of DragMath.<br />\r
-<br />\r
-The supplied output formats are MathML, LaTeX, Maple, Maxima. It is also possible to convert the expression to almost any user defined style by creating an XML file with the correct syntax data in it. Details of how to do this are included in the documentation.<br></br>Although mathematics is less dependent on language than many things, the applet loads a language file which makes it possible to translate DragMath into other languages. DragMath has currently been translated into: Catalan, Czech, Dutch, English, French, German, Norwegian, Polish, Portuguese (Brazilian), Russian, Spanish and Swedish. The latest language files can be downloaded from <a href="http://dragmath.cvs.sourceforge.net/dragmath/ddma/lang/">here</a>.<br />\r
-</p>\r
-<p>\r
-DragMath makes use of the MathTran service to automatically convert expressions to images. More details of MathTran available at <a href="http://www.mathtran.org">www.mathtran.org</a>\r
-</p>\r
-<p>\r
-DragMath has a project on <a href="http://sourceforge.net/projects/dragmath/">SourceForge.net</a>, an open-source software development web site. This allows users to:\r
-<ul>\r
-<li><a href="http://sourceforge.net/tracker/?group_id=201862&atid=979259">Request new features</a></li>\r
-<li><a href="http://sourceforge.net/tracker/?group_id=201862&atid=979256">Submit bugs</a></li>\r
-<li><a href="http://sourceforge.net/project/showfiles.php?group_id=201862">Download the latest release</a></li>\r
-</ul>\r
-<a href="http://sourceforge.net/projects/dragmath/"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=201862&amp;type=5" width="210" height="62" border="0" alt="SourceForge.net Logo" /></a>\r
-</p>\r
-<hr />\r
-\r
-\r
-<h2><span style="color: rgb(0, 0, 128);"><a name="Download">Download</a></span><a name="Download"></a></h2>\r
-<p>\r
-As DragMath is open-source, you are free to download and re-distribute. See the <a href="LICENSE-gpl.txt">DragMath license</a> for details.<br /><br />\r
-DragMath requires Java 1.4.2 or later is installed. If you do not have it, you can download it from <a href="http://www.java.com">www.java.com</a>.<br />\r
-To download the latest version visit our project site on <a href="http://sourceforge.net/project/showfiles.php?group_id=201862">SourceForge.net</a>.<br />\r
-</p>\r
-<hr />\r
-\r
-<h2><a name="Contact"><span style="color: rgb(0, 0, 128);">Contact</span></a></h2>\r
-<p>\r
-<b>Project leader</b><br />\r
-Chris Sangwin<br />\r
-Website: <a href="http://web.mat.bham.ac.uk/C.J.Sangwin/">http://web.mat.bham.ac.uk/C.J.Sangwin/</a><br>\r
-Email: <a href="mailto:C.J.Sangwin@bham.ac.uk?subject=DragMath">C.J.Sangwin@bham.ac.uk</a></p>\r
-<p><br />\r
-<b>Developer</b><br />\r
-Alex Billingsley<br />\r
-Website: <a href="http://www.abillingsley.co.uk/">http://www.abillingsley.co.uk/</a><br>\r
-Email: <a href="mailto:email@abillingsley.co.uk?subject=DragMath">email@abillingsley.co.uk</a></p>\r
-<hr />\r
-\r
-<center>\r
-<p>&copy; 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-\r
-</font>\r
-\r
-</body>\r
-</html> 
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/integrations.html b/lib/editor/common/dragmath/integrations.html
deleted file mode 100644 (file)
index 31c5c80..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-\r
-<html>\r
-<head>\r
-<title>DragMath - Integrations</title>\r
-</head>\r
-<body>\r
-\r
-<font size="3"; style="font-family: Arial;">\r
-\r
-<p></p>\r
-<h1 style="text-align: center;"><span style="color: rgb(0, 0, 128);">DragMath</span></h1>\r
-<hr />\r
-\r
-<span style="color: rgb(0, 0, 128);">\r
-<center>\r
-<h4>\r
-<a href="index.html">Home</a>&nbsp;&nbsp;&nbsp;\r
-<a href="demo.html">Demonstration</a>&nbsp;&nbsp;&nbsp;\r
-<a href="index.html#Download">Download</a>&nbsp;&nbsp;&nbsp;\r
-<a href="doc/index.html">Documentation</a>&nbsp;&nbsp;&nbsp;\r
-<a href="integrations.html">Integrations</a>&nbsp;&nbsp;&nbsp;\r
-<a href="support.html">Support DragMath</a>&nbsp;&nbsp;&nbsp;\r
-<a href="index.html#Contact">Contact</a>\r
-</h4>\r
-</center>\r
-</span>\r
-\r
-<hr />\r
-\r
-\r
-<h2><a name="Integrations"><span style="color: rgb(0, 0, 128);">Integrations</span></a></h2>\r
-\r
-<p>As a Java applet, DragMath can be easily embedded into many other web based systems. It has currently been successfully integrated with:\r
-<p><a href="http://www.moodle.org/"><b>Moodle</b></a><br />\r
-Moodle is a free, open source course management system (CMS). Also know as a Learning Managment System (LMS) or Virtual Learning Environment (VLE). For further details please see the specific Moodle <a href="http://docs.moodle.org/en/DragMath_equation_editor">installation instructions</a>.<br />\r
-<br />\r
-<a href="http://stack.bham.ac.uk/"><b>STACK</b></a><br />\r
-STACK is a computer aided assessment (CAA) package for mathematics, a project by <a href="http://web.mat.bham.ac.uk/C.J.Sangwin/">Chris Sangwin</a> (a developer of DragMath).<br />\r
-<br />\r
-<a href="http://www.yourmathstutor.info/"><b>YourMathsTutor</b></a><br />\r
-YourMathsTutor is a website created primarily to help students studying the for the UK's Key Stage 3, GCSE, AS and A Level mathematics and physics exams. DragMath has been integrated into the forum on this website. The forum is a <a href="http://www.simplemachines.org/">Simple Machines Forum</a> (SMF), which is a powerful open source forum. More information on how it was <a href="http://yourmathstutor.blogspot.com/2007/08/dragmath.html">integrated</a> and how it is <a href="http://www.yourmathstutor.info/forum/index.php?topic=4.0">used</a> in the forum.<br />\r
-</p>\r
-<p>Please let us know if any other successful integrations have occured.<br />\r
-</p>\r
-<br>\r
-\r
-<hr />\r
-<center>\r
-<p>&copy; 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-\r
-</font>\r
-\r
-</body>\r
-</html> 
\ No newline at end of file
diff --git a/lib/editor/common/dragmath/support.html b/lib/editor/common/dragmath/support.html
deleted file mode 100644 (file)
index fd74452..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-\r
-<html>\r
-<head>\r
-<title>DragMath - Home Page</title>\r
-</head>\r
-<body>\r
-\r
-<font size="3"; style="font-family: Arial;">\r
-\r
-<p></p>\r
-<h1 style="text-align: center;"><span style="color: rgb(0, 0, 128);">DragMath</span></h1>\r
-<hr />\r
-\r
-<span style="color: rgb(0, 0, 128);">\r
-<center>\r
-<h4>\r
-<a href="index.html">Home</a>&nbsp;&nbsp;&nbsp;\r
-<a href="demo.html">Demonstration</a>&nbsp;&nbsp;&nbsp;\r
-<a href="index.html#Download">Download</a>&nbsp;&nbsp;&nbsp;\r
-<a href="doc/index.html">Documentation</a>&nbsp;&nbsp;&nbsp;\r
-<a href="integrations.html">Integrations</a>&nbsp;&nbsp;&nbsp;\r
-<a href="support.html">Support DragMath</a>&nbsp;&nbsp;&nbsp;\r
-<a href="index.html#Contact">Contact</a>\r
-</h4>\r
-</center>\r
-</span>\r
-\r
-<hr />\r
-\r
-<h2><span style="color: rgb(0, 0, 128);"><a name="Support_DragMath">Support DragMath</a></span><br /></h2>\r
-<p>DragMath is an open-source project that started as a final-year Computer Science project in 2006 at the <a href ="http://www.bham.ac.uk/">University of Birmingham<a/> by <a href="http://www.abillingsley.co.uk">Alex Billingsley</a> under the supervision of <a href ="http://web.mat.bham.ac.uk/C.J.Sangwin/">Chris Sangwin</a>. It's main application is therefore directed toward an educational one.<br />\r
-</p>\r
-<p>Please make a donation to help support the future development of DragMath. Donations can be securely made through the SourceForge.net website.<br />\r
-<br>\r
-<a href="http://sourceforge.net/project/project_donations.php?group_id=201862"><img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" border="0" alt="Support This Project"/></a>\r
-&nbsp;</p>\r
-<p>We currently need help translating the English language file into many different languages. As new versions of DragMath are created the current language files need updating as well. If you can help, then please contact us.\r
-</p>\r
-<p><b>Contributions by:</b>\r
-<ul>\r
-<li>Miroslava Tihlarikova - Czech language file</li>\r
-<li>Francisco Rivas - Spanish language file</li>\r
-<li>Agnieszka Herczak-Ciara - Polish language file</li>\r
-<li>Philippe Quattrociocchi - French language file</li>\r
-<li>Sedletskiy Nikolay - Russian language file</li>\r
-<li>Andy Tagliani - German language file</li>\r
-<li>Patrick Tydtgat - Dutch language file</li>\r
-<li>Daniel Ureña Zafra (<a href ="http://www.ub.edu/">University of Barcelona<a/>):\r
-<ul>\r
-<li>Additional operators and functions</li>\r
-<li>Catalan language file</li>\r
-</ul>\r
-</li>\r
-<li>Mauricio Chamati - Portuguese (Brazilian) language file</li>\r
-</ul>\r
-\r
-\r
-<h2><span style="color: rgb(0, 0, 128);"><a name="Support_DragMath">Acknowledgements</a></span><br /></h2>\r
-\r
-DragMath has received support from the Higher Education Academy/JISC Development of E-learning projects fund.<br></br>\r
-\r
-\r
-<hr />\r
-<center>\r
-<p>&copy; 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/htmlEditor.class.php b/lib/editor/htmlEditor.class.php
deleted file mode 100644 (file)
index 8871255..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-/**
- *
- * @copyright &copy; 2006 The Open University
- * @author d.t.le@open.ac.uk, a.j.forth@open.ac.uk
- * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
- * @package portfolio
- */
-
-
-class htmlEditor {
-
-    public function __construct() {
-    }
-
-    /**
-     * Does initial configuration for a given html editor.
-     * @param string editor the name of desired html editor, system default will be used if none is passed
-     * @param int courseid the courseid uploaded files should be linked to
-     * @return bool true if an editor was configured, false otherwise.
-     */
-    public function configure($editor = NULL, $courseid = NULL) {
-
-        global $CFG;
-        static $configured = Array();
-
-        if (!isset($CFG->htmleditor) or (!$CFG->htmleditor)) {
-            return;
-        }
-
-        if ($editor == '') {
-            $editor = (isset($CFG->defaulthtmleditor) ? $CFG->defaulthtmleditor : '');
-        }
-
-        if (isset($configured[$editor])) {
-            return $configured[$editor];
-        }
-
-        $configuration = array();
-
-        switch ($editor) {
-
-            case 'tinymce':
-                $editorlanguage = current_language();
-                $configuration[] = $CFG->httpswwwroot ."/lib/editor/tinymce/jscripts/tiny_mce/tiny_mce.js";
-                //$configuration[] = $CFG->httpswwwroot ."/lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_src.js";
-                $configuration[] = $CFG->httpswwwroot ."/lib/editor/tinymce/tinymce.js.php?course=$courseid&amp;editorlanguage=$editorlanguage";
-                $configured['tinymce'] = true;
-                break;
-
-            default:
-                $configured[$editor] = false;
-                break;
-
-        }
-
-        if (isset($CFG->editorsrc) && is_array($CFG->editorsrc)) {
-            $CFG->editorsrc = $configuration + $CFG->editorsrc;
-        } else {
-            $CFG->editorsrc = $configuration;
-        }
-
-        return $configured[$editor];
-    }
-}
-
-?>
diff --git a/lib/editor/textarea/lib.php b/lib/editor/textarea/lib.php
new file mode 100644 (file)
index 0000000..2a12f73
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+class textarea_texteditor extends texteditor {
+    public function supported_by_browser() {
+        return true;
+    }
+
+    public function get_supported_formats() {
+        return array(FORMAT_HTML     => FORMAT_HTML,
+                     FORMAT_MOODLE   => FORMAT_MOODLE,
+                     FORMAT_PLAIN    => FORMAT_PLAIN,
+                     FORMAT_MARKDOWN => FORMAT_MARKDOWN,
+                    );
+    }
+
+    public function get_preferred_format() {
+        return FORMAT_MOODLE;
+    }
+
+    public function supports_repositories() {
+        return true;
+    }
+
+    public function get_editor_element_class() {
+        return 'form-textarea-simple';
+    }
+    
+    public function get_legacy_textarea_class() {
+        return 'form-textarea-legacy';
+    }
+
+    public function header_js() {
+        return '';
+    }    
+}
+
+
diff --git a/lib/editor/textarea/version.php b/lib/editor/textarea/version.php
new file mode 100644 (file)
index 0000000..c87b6fd
--- /dev/null
@@ -0,0 +1,27 @@
+<?PHP
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.com                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards  Martin Dougiamas  http://moodle.com       //
+//                                                                       //
+// 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; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// 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 for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+$plugin->version  = 2009051400;
+$plugin->requires = 2009051200;
similarity index 88%
rename from lib/editor/tinymce/jscripts/patch-tinymce_plugin_media.txt
rename to lib/editor/tinymce/extra/patches/tinymce_plugin_media.patch
index 24d85fc36e88b289fd691cacb55657dc4d92276b..5251ca0cc188d14c5532491bd669d513784c46ce 100644 (file)
@@ -1,6 +1,6 @@
-Index: tiny_mce/plugins/media/js/media.js
+Index: tinymce/plugins/media/js/media.js
 ===================================================================
-RCS file: /cvsroot/moodle/moodle/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/js/media.js,v
+RCS file: /cvsroot/moodle/moodle/lib/editor/tinymce/plugins/media/js/media.js,v
 retrieving revision 1.3
 diff -u -r1.3 media.js
 --- tiny_mce/plugins/media/js/media.js 23 Sep 2008 04:10:42 -0000      1.3
diff --git a/lib/editor/tinymce/extra/strings.php b/lib/editor/tinymce/extra/strings.php
new file mode 100644 (file)
index 0000000..930689a
--- /dev/null
@@ -0,0 +1,124 @@
+<?php
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
+//                                                                       //
+// 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; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// 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 for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+define('NO_MOODLE_COOKIES', true);
+define('NO_UPGRADE_CHECK', true);
+
+require_once('../../../../config.php');
+
+$lang  = optional_param('editorlanguage', 'en', PARAM_SAFEDIR);
+$theme = optional_param('editortheme', 'advanced', PARAM_SAFEDIR);
+
+if (file_exists($CFG->dataroot .'/lang/'. $lang) or file_exists($CFG->dirroot .'/lang/'. $lang)) {
+    //ok
+} else if (file_exists($CFG->dataroot.'/lang/'.$lang.'_utf8') or
+           file_exists($CFG->dirroot .'/lang/'.$lang.'_utf8')) {
+    $lang = $lang.'_utf8';
+} else {
+    $lang = 'en_utf8';
+}
+
+// load english defaults
+$string = array();
+foreach (get_langpack_locations('en_utf8') as $location) {
+    if (!file_exists($location)) {
+        continue;
+    }
+    include_once($location);
+}
+
+// find parent language
+if ($parent = get_parent_language($lang)) {
+    foreach (get_langpack_locations($parent) as $location) {
+        if (!file_exists($location)) {
+            continue;
+        }
+        include_once($location);
+    }
+}
+
+// load wanted language
+if ($lang !== 'en_utf8') {
+    foreach (get_langpack_locations($lang) as $location) {
+        if (!file_exists($location)) {
+            continue;
+        }
+        include_once($location);
+    }
+}
+
+//process the $strings to match expected tinymce lang array stucture
+$result = array('main'=>array(), 'plugins'=>array(), 'themes'=>array());
+
+foreach ($string as $key=>$value) {
+    $parts = preg_split('|[/:]|', $key);
+    if (count($parts) != 3) {
+        // incorrect string - ignore
+        continue;
+    }
+    $result[$parts[0]][$parts[1]][$parts[2]] = $value;
+}
+
+$output = '';
+
+//main
+$output .= 'tinyMCE.addI18n({'.$lang.':'.json_encode($result['main']).'});';
+
+//plugins
+foreach ($result['plugins'] as $pluginname=>$plugin) {
+    $output .= "tinyMCE.addI18n('$lang.$pluginname',".json_encode($plugin).');';
+}
+
+if (!empty($result['themes'][$theme])) {
+    $output .= "tinyMCE.addI18n('$lang.$theme',".json_encode($result['themes'][$theme]).');';
+}
+if (!empty($result['themes'][$theme.'_dlg'])) {
+    $output .= "tinyMCE.addI18n('$lang.{$theme}_dlg',".json_encode($result['themes'][$theme.'_dlg']).');';
+}
+
+
+$lifetime = '10'; // TODO: increase later
+@header('Content-type: text/javascript; charset=utf-8');
+@header('Content-length: '.strlen($output));
+@header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
+@header('Cache-control: max-age='.$lifetime);
+@header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .'GMT');
+@header('Pragma: ');
+
+echo $output;
+
+
+/// ======= Functions =================
+
+function get_langpack_locations($lang) {
+    global $CFG;
+
+    $result = array();
+    $result[] = "$CFG->dirroot/lang/$lang/editor_tinymce.php";
+    $result[] = "$CFG->dataroot/lang/$lang/editor_tinymce.php";
+    $result[] = "$CFG->dataroot/lang/{$lang}_local/editor_tinymce.php";
+
+    return $result;
+}
diff --git a/lib/editor/tinymce/extra/tinymce.js.php b/lib/editor/tinymce/extra/tinymce.js.php
new file mode 100644 (file)
index 0000000..894697f
--- /dev/null
@@ -0,0 +1,184 @@
+<?php
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
+//                                                                       //
+// 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; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// 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 for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+define('NO_MOODLE_COOKIES', true);
+define('NO_UPGRADE_CHECK', true);
+
+require_once('../../../../config.php');
+
+$lang     = optional_param('elanguage', 'en_utf8', PARAM_SAFEDIR);
+$editor   = optional_param('etheme', 'standard', PARAM_SAFEDIR);
+$usehttps = optional_param('eusehttps', 0, PARAM_BOOL);
+
+if (file_exists("$CFG->dataroot/lang/$lang") or file_exists("$CFG->dirroot/lang/$lang")) {
+    $SESSION->lang = $lang;
+} else if (file_exists("$CFG->dataroot/lang/{$lang}_utf8") or file_exists("$CFG->dirroot/lang/{$lang}_utf8")) {
+    $SESSION->lang = $lang.'_utf8';
+}
+
+
+
+//TODO: finish refactorign and improvements of lang string handling
+$lang = 'en';
+$SESSION->lang = 'en_utf8';
+
+
+$xmlruleset = file_get_contents('xhtml_ruleset.txt');
+
+$directionality = get_string('thisdirection');
+
+$strtime = get_string('strftimetime');
+$strdate = get_string('strftimedaydate');
+
+$lang = str_replace('_utf8', '', $lang); // use more standard language codes
+
+if ($usehttps) {
+    $wwwbase = str_replace('http:', 'https:', $CFG->wwwroot);
+} else {
+    $wwwbase = $CFG->wwwroot;
+}
+
+// $contentcss should be customizable, but default to this.
+$contentcss = $CFG->themewww .'/'. current_theme() .'/styles.php'; //TODO add page parameter
+
+$output = <<<EOF
+function mc_init_editors() {
+    tinyMCE.init({
+        mode: "textareas",
+        relative_urls: false,
+        editor_selector: "form-tinymce-legacy",
+        document_base_url: "$wwwbase",
+        content_css: "$contentcss",
+        language: "$lang",
+        directionality: "$directionality",
+        plugin_insertdate_dateFormat : "$strdate",
+        plugin_insertdate_timeFormat : "$strtime",
+        theme: "advanced",
+        skin: "o2k7",
+        skin_variant: "silver",
+        apply_source_formatting: true,
+        remove_script_host: false,
+        entity_encoding: "raw",
+        plugins: "safari,spellchecker,table,style,layer,advhr,advimage,advlink,emoticons,inlinepopups,media,searchreplace,paste,directionality,fullscreen,moodlenolink,dragmath,nonbreaking,contextmenu,insertdatetime,save,iespell,preview,print,noneditable,visualchars,xhtmlxtras,template,pagebreak",
+        theme_advanced_font_sizes: "1,2,3,4,5,6,7",
+        theme_advanced_layout_manager: "SimpleLayout",
+        theme_advanced_toolbar_align : "left",
+        theme_advanced_buttons1: "fontselect,fontsizeselect,formatselect,styleselect",
+        theme_advanced_buttons1_add: "|,undo,redo,|,search,replace,spellchecker,|,fullscreen",
+        theme_advanced_buttons2: "bold,italic,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,justifyfull,|,cite,abbr,acronym",
+        theme_advanced_buttons2_add: "|,selectall,cleanup,removeformat,pastetext,pasteword,|,forecolor,backcolor,|,ltr,rtl",
+        theme_advanced_buttons3: "bullist,numlist,outdent,indent,|,link,unlink,moodlenolink,anchor,|,insertdate,inserttime,|,emoticons,image,advhr,nonbreaking,charmap",
+        theme_advanced_buttons3_add: "|,table,insertlayer,styleprops,visualchars,|,code,preview",
+        theme_advanced_fonts: "Trebuchet=Trebuchet MS,Verdana,Arial,Helvetica,sans-serif;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",
+        theme_advanced_resize_horizontal: true,
+        theme_advanced_resizing: true,
+        theme_advanced_toolbar_location : "top",
+        theme_advanced_statusbar_location : "bottom",
+        $xmlruleset
+    });
+
+    tinyMCE.init({
+        mode: "textareas",
+        relative_urls: false,
+        editor_selector: "form-tinymce-advanced",
+        document_base_url: "$wwwbase",
+        content_css: "$contentcss",
+        language: "$lang",
+        directionality: "$directionality",
+        plugin_insertdate_dateFormat : "$strdate",
+        plugin_insertdate_timeFormat : "$strtime",
+        theme: "advanced",
+        skin: "o2k7",
+        skin_variant: "silver",
+        apply_source_formatting: true,
+        remove_script_host: false,
+        entity_encoding: "raw",
+        plugins: "safari,spellchecker,table,style,layer,advhr,advimage,advlink,emoticons,inlinepopups,media,searchreplace,paste,directionality,fullscreen,moodlenolink,dragmath,nonbreaking,contextmenu,insertdatetime,save,iespell,preview,print,noneditable,visualchars,xhtmlxtras,template,pagebreak",
+        theme_advanced_font_sizes: "1,2,3,4,5,6,7",
+        theme_advanced_layout_manager: "SimpleLayout",
+        theme_advanced_toolbar_align : "left",
+        theme_advanced_buttons1: "fontselect,fontsizeselect,formatselect,styleselect",
+        theme_advanced_buttons1_add: "|,undo,redo,|,search,replace,spellchecker,|,fullscreen",
+        theme_advanced_buttons2: "bold,italic,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,justifyfull,|,cite,abbr,acronym",
+        theme_advanced_buttons2_add: "|,selectall,cleanup,removeformat,pastetext,pasteword,|,forecolor,backcolor,|,ltr,rtl",
+        theme_advanced_buttons3: "bullist,numlist,outdent,indent,|,link,unlink,moodlenolink,anchor,|,insertdate,inserttime,|,emoticons,image,media,dragmath,advhr,nonbreaking,charmap",
+        theme_advanced_buttons3_add: "|,table,insertlayer,styleprops,visualchars,|,code,preview",
+        theme_advanced_fonts: "Trebuchet=Trebuchet MS,Verdana,Arial,Helvetica,sans-serif;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",
+        theme_advanced_resize_horizontal: true,
+        theme_advanced_resizing: true,
+        theme_advanced_toolbar_location : "top",
+        theme_advanced_statusbar_location : "bottom",
+        file_browser_callback : "mce_moodlefilemanager",
+        $xmlruleset
+    });
+}
+
+function mce_toggleEditor(id) {
+    tinyMCE.execCommand('mceToggleEditor',false,id);
+}
+
+function mce_saveOnSubmit(id) {
+    var prevOnSubmit = document.getElementById(id).form.onsubmit;
+    document.getElementById(id).form.onsubmit = function() {
+        tinyMCE.triggerSave();
+        var ret = true;
+        if (prevOnSubmit != undefined) {
+          if (prevOnSubmit()) {
+            ret = true;
+            prevOnSubmit = null;
+          } else {
+            ret = false;
+          }
+        }
+        return ret;
+    };
+}
+
+function mce_moodlefilemanager(field_name, url, type, win) {
+    var client_id = id2clientid[tinyMCE.selectedInstance.editorId];
+    document.body.className += ' yui-skin-sam';
+    var picker = document.createElement('DIV');
+    picker.className = "file-picker";
+    picker.id = 'file-picker-'+client_id;
+    document.body.appendChild(picker);
+    var el = win.document.getElementById(field_name);
+    eval('open_filepicker(client_id, {"env":"editor","target":el,"filetype":type})');
+}
+
+// finally init editors
+mc_init_editors();
+
+EOF;
+
+
+$lifetime = '10'; // TODO: increase later
+header('Content-type: text/javascript; charset=utf-8');
+header('Content-length: '.strlen($output));
+header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
+header('Cache-control: max-age='.$lifetime);
+header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .'GMT');
+header('Pragma: ');
+
+echo $output;
diff --git a/lib/editor/tinymce/images/abbr.gif b/lib/editor/tinymce/images/abbr.gif
deleted file mode 100644 (file)
index 780fdfe..0000000
Binary files a/lib/editor/tinymce/images/abbr.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/absolute.gif b/lib/editor/tinymce/images/absolute.gif
deleted file mode 100644 (file)
index c985029..0000000
Binary files a/lib/editor/tinymce/images/absolute.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/acronym.gif b/lib/editor/tinymce/images/acronym.gif
deleted file mode 100644 (file)
index b504570..0000000
Binary files a/lib/editor/tinymce/images/acronym.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/advhr.gif b/lib/editor/tinymce/images/advhr.gif
deleted file mode 100644 (file)
index 8080fd9..0000000
Binary files a/lib/editor/tinymce/images/advhr.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/advimage.gif b/lib/editor/tinymce/images/advimage.gif
deleted file mode 100644 (file)
index 4780643..0000000
Binary files a/lib/editor/tinymce/images/advimage.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/advlink.gif b/lib/editor/tinymce/images/advlink.gif
deleted file mode 100644 (file)
index b4d9364..0000000
Binary files a/lib/editor/tinymce/images/advlink.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/anchor.gif b/lib/editor/tinymce/images/anchor.gif
deleted file mode 100644 (file)
index cb7df39..0000000
Binary files a/lib/editor/tinymce/images/anchor.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/attribs.gif b/lib/editor/tinymce/images/attribs.gif
deleted file mode 100644 (file)
index 1eca312..0000000
Binary files a/lib/editor/tinymce/images/attribs.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/backcolor.gif b/lib/editor/tinymce/images/backcolor.gif
deleted file mode 100644 (file)
index 0d9bc49..0000000
Binary files a/lib/editor/tinymce/images/backcolor.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/backcolorpicker.gif b/lib/editor/tinymce/images/backcolorpicker.gif
deleted file mode 100644 (file)
index 0d9bc49..0000000
Binary files a/lib/editor/tinymce/images/backcolorpicker.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/bold.gif b/lib/editor/tinymce/images/bold.gif
deleted file mode 100644 (file)
index 52a7801..0000000
Binary files a/lib/editor/tinymce/images/bold.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/bullist.gif b/lib/editor/tinymce/images/bullist.gif
deleted file mode 100644 (file)
index 30ae45a..0000000
Binary files a/lib/editor/tinymce/images/bullist.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/cancel.gif b/lib/editor/tinymce/images/cancel.gif
deleted file mode 100644 (file)
index d38c3db..0000000
Binary files a/lib/editor/tinymce/images/cancel.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/cell_props.gif b/lib/editor/tinymce/images/cell_props.gif
deleted file mode 100644 (file)
index e6c01ef..0000000
Binary files a/lib/editor/tinymce/images/cell_props.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/charmap.gif b/lib/editor/tinymce/images/charmap.gif
deleted file mode 100644 (file)
index 161e727..0000000
Binary files a/lib/editor/tinymce/images/charmap.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/cite.gif b/lib/editor/tinymce/images/cite.gif
deleted file mode 100644 (file)
index aabae37..0000000
Binary files a/lib/editor/tinymce/images/cite.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/cleanup.gif b/lib/editor/tinymce/images/cleanup.gif
deleted file mode 100644 (file)
index b841588..0000000
Binary files a/lib/editor/tinymce/images/cleanup.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/code.gif b/lib/editor/tinymce/images/code.gif
deleted file mode 100644 (file)
index 789ada2..0000000
Binary files a/lib/editor/tinymce/images/code.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/col_after.gif b/lib/editor/tinymce/images/col_after.gif
deleted file mode 100644 (file)
index 11a8d25..0000000
Binary files a/lib/editor/tinymce/images/col_after.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/col_before.gif b/lib/editor/tinymce/images/col_before.gif
deleted file mode 100644 (file)
index 1fcbe0f..0000000
Binary files a/lib/editor/tinymce/images/col_before.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/copy.gif b/lib/editor/tinymce/images/copy.gif
deleted file mode 100644 (file)
index 35f5ca2..0000000
Binary files a/lib/editor/tinymce/images/copy.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/cut.gif b/lib/editor/tinymce/images/cut.gif
deleted file mode 100644 (file)
index 2def6ca..0000000
Binary files a/lib/editor/tinymce/images/cut.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/del.gif b/lib/editor/tinymce/images/del.gif
deleted file mode 100644 (file)
index dbdcbcc..0000000
Binary files a/lib/editor/tinymce/images/del.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/delete_col.gif b/lib/editor/tinymce/images/delete_col.gif
deleted file mode 100644 (file)
index 29ccd92..0000000
Binary files a/lib/editor/tinymce/images/delete_col.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/delete_row.gif b/lib/editor/tinymce/images/delete_row.gif
deleted file mode 100644 (file)
index 1290a28..0000000
Binary files a/lib/editor/tinymce/images/delete_row.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/delete_table.gif b/lib/editor/tinymce/images/delete_table.gif
deleted file mode 100644 (file)
index 57e77bf..0000000
Binary files a/lib/editor/tinymce/images/delete_table.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/emoticons.gif b/lib/editor/tinymce/images/emoticons.gif
deleted file mode 100644 (file)
index 7b68391..0000000
Binary files a/lib/editor/tinymce/images/emoticons.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/emotions.gif b/lib/editor/tinymce/images/emotions.gif
deleted file mode 100644 (file)
index 487a3de..0000000
Binary files a/lib/editor/tinymce/images/emotions.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/forecolor.gif b/lib/editor/tinymce/images/forecolor.gif
deleted file mode 100644 (file)
index c01f757..0000000
Binary files a/lib/editor/tinymce/images/forecolor.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/forecolorpicker.gif b/lib/editor/tinymce/images/forecolorpicker.gif
deleted file mode 100644 (file)
index c01f757..0000000
Binary files a/lib/editor/tinymce/images/forecolorpicker.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/fullpage.gif b/lib/editor/tinymce/images/fullpage.gif
deleted file mode 100644 (file)
index 532a3c7..0000000
Binary files a/lib/editor/tinymce/images/fullpage.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/fullscreen.gif b/lib/editor/tinymce/images/fullscreen.gif
deleted file mode 100644 (file)
index f72a974..0000000
Binary files a/lib/editor/tinymce/images/fullscreen.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/help.gif b/lib/editor/tinymce/images/help.gif
deleted file mode 100644 (file)
index 1b03fe1..0000000
Binary files a/lib/editor/tinymce/images/help.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/hr.gif b/lib/editor/tinymce/images/hr.gif
deleted file mode 100644 (file)
index 0c504d0..0000000
Binary files a/lib/editor/tinymce/images/hr.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/iespell.gif b/lib/editor/tinymce/images/iespell.gif
deleted file mode 100644 (file)
index d64e8db..0000000
Binary files a/lib/editor/tinymce/images/iespell.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/image.gif b/lib/editor/tinymce/images/image.gif
deleted file mode 100644 (file)
index 4780643..0000000
Binary files a/lib/editor/tinymce/images/image.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/indent.gif b/lib/editor/tinymce/images/indent.gif
deleted file mode 100644 (file)
index 1560ed2..0000000
Binary files a/lib/editor/tinymce/images/indent.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/ins.gif b/lib/editor/tinymce/images/ins.gif
deleted file mode 100644 (file)
index 2e803b0..0000000
Binary files a/lib/editor/tinymce/images/ins.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/insertdate.gif b/lib/editor/tinymce/images/insertdate.gif
deleted file mode 100644 (file)
index 80117ee..0000000
Binary files a/lib/editor/tinymce/images/insertdate.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/insertlayer.gif b/lib/editor/tinymce/images/insertlayer.gif
deleted file mode 100644 (file)
index 848dce6..0000000
Binary files a/lib/editor/tinymce/images/insertlayer.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/inserttime.gif b/lib/editor/tinymce/images/inserttime.gif
deleted file mode 100644 (file)
index e2ddfb5..0000000
Binary files a/lib/editor/tinymce/images/inserttime.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/italic.gif b/lib/editor/tinymce/images/italic.gif
deleted file mode 100644 (file)
index feb832f..0000000
Binary files a/lib/editor/tinymce/images/italic.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/justifycenter.gif b/lib/editor/tinymce/images/justifycenter.gif
deleted file mode 100644 (file)
index 73aedae..0000000
Binary files a/lib/editor/tinymce/images/justifycenter.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/justifyfull.gif b/lib/editor/tinymce/images/justifyfull.gif
deleted file mode 100644 (file)
index 0759895..0000000
Binary files a/lib/editor/tinymce/images/justifyfull.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/justifyleft.gif b/lib/editor/tinymce/images/justifyleft.gif
deleted file mode 100644 (file)
index 6326f3d..0000000
Binary files a/lib/editor/tinymce/images/justifyleft.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/justifyright.gif b/lib/editor/tinymce/images/justifyright.gif
deleted file mode 100644 (file)
index c2324f6..0000000
Binary files a/lib/editor/tinymce/images/justifyright.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/kbhelp.gif b/lib/editor/tinymce/images/kbhelp.gif
deleted file mode 100644 (file)
index e82f96e..0000000
Binary files a/lib/editor/tinymce/images/kbhelp.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/link.gif b/lib/editor/tinymce/images/link.gif
deleted file mode 100644 (file)
index b4d9364..0000000
Binary files a/lib/editor/tinymce/images/link.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/ltr.gif b/lib/editor/tinymce/images/ltr.gif
deleted file mode 100644 (file)
index 5fa4086..0000000
Binary files a/lib/editor/tinymce/images/ltr.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/media.gif b/lib/editor/tinymce/images/media.gif
deleted file mode 100644 (file)
index d0b1cce..0000000
Binary files a/lib/editor/tinymce/images/media.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/merge_cells.gif b/lib/editor/tinymce/images/merge_cells.gif
deleted file mode 100644 (file)
index bcaf8b4..0000000
Binary files a/lib/editor/tinymce/images/merge_cells.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/moodleimage.gif b/lib/editor/tinymce/images/moodleimage.gif
deleted file mode 100644 (file)
index 4780643..0000000
Binary files a/lib/editor/tinymce/images/moodleimage.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/moodlelink.gif b/lib/editor/tinymce/images/moodlelink.gif
deleted file mode 100644 (file)
index b4d9364..0000000
Binary files a/lib/editor/tinymce/images/moodlelink.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/movebackward.gif b/lib/editor/tinymce/images/movebackward.gif
deleted file mode 100644 (file)
index 96960b9..0000000
Binary files a/lib/editor/tinymce/images/movebackward.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/moveforward.gif b/lib/editor/tinymce/images/moveforward.gif
deleted file mode 100644 (file)
index 28c4f08..0000000
Binary files a/lib/editor/tinymce/images/moveforward.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/newdocument.gif b/lib/editor/tinymce/images/newdocument.gif
deleted file mode 100644 (file)
index bdee0ca..0000000
Binary files a/lib/editor/tinymce/images/newdocument.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/nonbreaking.gif b/lib/editor/tinymce/images/nonbreaking.gif
deleted file mode 100644 (file)
index df1029a..0000000
Binary files a/lib/editor/tinymce/images/nonbreaking.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/numlist.gif b/lib/editor/tinymce/images/numlist.gif
deleted file mode 100644 (file)
index b3735d9..0000000
Binary files a/lib/editor/tinymce/images/numlist.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/opacity.png b/lib/editor/tinymce/images/opacity.png
deleted file mode 100644 (file)
index 243b35f..0000000
Binary files a/lib/editor/tinymce/images/opacity.png and /dev/null differ
diff --git a/lib/editor/tinymce/images/outdent.gif b/lib/editor/tinymce/images/outdent.gif
deleted file mode 100644 (file)
index d0714df..0000000
Binary files a/lib/editor/tinymce/images/outdent.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/paste.gif b/lib/editor/tinymce/images/paste.gif
deleted file mode 100644 (file)
index 448118e..0000000
Binary files a/lib/editor/tinymce/images/paste.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/pastetext.gif b/lib/editor/tinymce/images/pastetext.gif
deleted file mode 100644 (file)
index 1a31812..0000000
Binary files a/lib/editor/tinymce/images/pastetext.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/pasteword.gif b/lib/editor/tinymce/images/pasteword.gif
deleted file mode 100644 (file)
index 3b720b7..0000000
Binary files a/lib/editor/tinymce/images/pasteword.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/preview.gif b/lib/editor/tinymce/images/preview.gif
deleted file mode 100644 (file)
index bc7d01d..0000000
Binary files a/lib/editor/tinymce/images/preview.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/print.gif b/lib/editor/tinymce/images/print.gif
deleted file mode 100644 (file)
index 82823e2..0000000
Binary files a/lib/editor/tinymce/images/print.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/redo.gif b/lib/editor/tinymce/images/redo.gif
deleted file mode 100644 (file)
index df64ddc..0000000
Binary files a/lib/editor/tinymce/images/redo.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/removeformat.gif b/lib/editor/tinymce/images/removeformat.gif
deleted file mode 100644 (file)
index a0546ba..0000000
Binary files a/lib/editor/tinymce/images/removeformat.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/replace.gif b/lib/editor/tinymce/images/replace.gif
deleted file mode 100644 (file)
index df66bee..0000000
Binary files a/lib/editor/tinymce/images/replace.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/row_after.gif b/lib/editor/tinymce/images/row_after.gif
deleted file mode 100644 (file)
index c729437..0000000
Binary files a/lib/editor/tinymce/images/row_after.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/row_before.gif b/lib/editor/tinymce/images/row_before.gif
deleted file mode 100644 (file)
index 00a3a1f..0000000
Binary files a/lib/editor/tinymce/images/row_before.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/row_props.gif b/lib/editor/tinymce/images/row_props.gif
deleted file mode 100644 (file)
index c4fc84a..0000000
Binary files a/lib/editor/tinymce/images/row_props.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/rtl.gif b/lib/editor/tinymce/images/rtl.gif
deleted file mode 100644 (file)
index 0f3f5a3..0000000
Binary files a/lib/editor/tinymce/images/rtl.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/save.gif b/lib/editor/tinymce/images/save.gif
deleted file mode 100644 (file)
index 174ad61..0000000
Binary files a/lib/editor/tinymce/images/save.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/search.gif b/lib/editor/tinymce/images/search.gif
deleted file mode 100644 (file)
index 5ce6506..0000000
Binary files a/lib/editor/tinymce/images/search.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/selectall.gif b/lib/editor/tinymce/images/selectall.gif
deleted file mode 100644 (file)
index da9c9cc..0000000
Binary files a/lib/editor/tinymce/images/selectall.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/separator.gif b/lib/editor/tinymce/images/separator.gif
deleted file mode 100644 (file)
index f5957df..0000000
Binary files a/lib/editor/tinymce/images/separator.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/spellchecker.gif b/lib/editor/tinymce/images/spellchecker.gif
deleted file mode 100644 (file)
index 0365f16..0000000
Binary files a/lib/editor/tinymce/images/spellchecker.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/split_cells.gif b/lib/editor/tinymce/images/split_cells.gif
deleted file mode 100644 (file)
index 90f797d..0000000
Binary files a/lib/editor/tinymce/images/split_cells.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/strikethrough.gif b/lib/editor/tinymce/images/strikethrough.gif
deleted file mode 100644 (file)
index a810a13..0000000
Binary files a/lib/editor/tinymce/images/strikethrough.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/styleprops.gif b/lib/editor/tinymce/images/styleprops.gif
deleted file mode 100644 (file)
index e66ef9b..0000000
Binary files a/lib/editor/tinymce/images/styleprops.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/sub.gif b/lib/editor/tinymce/images/sub.gif
deleted file mode 100644 (file)
index 9d6e963..0000000
Binary files a/lib/editor/tinymce/images/sub.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/sup.gif b/lib/editor/tinymce/images/sup.gif
deleted file mode 100644 (file)
index f94bc29..0000000
Binary files a/lib/editor/tinymce/images/sup.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/table.gif b/lib/editor/tinymce/images/table.gif
deleted file mode 100644 (file)
index ea8f407..0000000
Binary files a/lib/editor/tinymce/images/table.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/template.gif b/lib/editor/tinymce/images/template.gif
deleted file mode 100644 (file)
index 5682cd5..0000000
Binary files a/lib/editor/tinymce/images/template.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/toggle.gif b/lib/editor/tinymce/images/toggle.gif
deleted file mode 100644 (file)
index 7406991..0000000
Binary files a/lib/editor/tinymce/images/toggle.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/underline.gif b/lib/editor/tinymce/images/underline.gif
deleted file mode 100644 (file)
index cfb962c..0000000
Binary files a/lib/editor/tinymce/images/underline.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/undo.gif b/lib/editor/tinymce/images/undo.gif
deleted file mode 100644 (file)
index 189d5fd..0000000
Binary files a/lib/editor/tinymce/images/undo.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/unlink.gif b/lib/editor/tinymce/images/unlink.gif
deleted file mode 100644 (file)
index edfaa8e..0000000
Binary files a/lib/editor/tinymce/images/unlink.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/visualaid.gif b/lib/editor/tinymce/images/visualaid.gif
deleted file mode 100644 (file)
index 3fd1943..0000000
Binary files a/lib/editor/tinymce/images/visualaid.gif and /dev/null differ
diff --git a/lib/editor/tinymce/images/visualchars.gif b/lib/editor/tinymce/images/visualchars.gif
deleted file mode 100644 (file)
index 571b03e..0000000
Binary files a/lib/editor/tinymce/images/visualchars.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/readme_moodle.txt b/lib/editor/tinymce/jscripts/readme_moodle.txt
deleted file mode 100644 (file)
index 1b09243..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-Description of TinyMCE library import into Moodle
-
-Our changes:
-+ added plugins: dragmath, moodlenolink and customised spellchecker
-* modified string handling: see patch-tinymce_strings.txt
-* modified media plugin: see patch-tinymce_plugin_media.txt (MDL-16650)
-
-TODO:
-* spellchecker integration in spellchecker/config.php (MDL-16639)
-
-
-Detailed information at:
-Please see  http://docs.moodle.org/en/Development:TinyMCE_Upgrade for instructions on how to upgrade.
-
-$Id$
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js
deleted file mode 100644 (file)
index f335004..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js
deleted file mode 100644 (file)
index 3af5057..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif
deleted file mode 100644 (file)
index 03f1e08..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js
deleted file mode 100644 (file)
index 4899f7b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js
deleted file mode 100644 (file)
index 01a994e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js
deleted file mode 100644 (file)
index 88f7ea6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js
deleted file mode 100644 (file)
index 02a1da8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js
deleted file mode 100644 (file)
index f68744d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js
deleted file mode 100644 (file)
index 6966d80..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/img/dragmath.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/img/dragmath.gif
deleted file mode 100644 (file)
index 9e85b9f..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/img/dragmath.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/editor_plugin.js
deleted file mode 100644 (file)
index 59c15bf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create('tinymce.plugins.emoticonsPlugin',{init:function(ed,url){ed.addCommand('mceemoticon',function(){ed.windowManager.open({file:url+'/emoticons.php',width:300+parseInt(ed.getLang('emoticons.delta_width',0)),height:300+parseInt(ed.getLang('emoticons.delta_height',0)),inline:1},{plugin_url:url});});ed.addButton('emoticons',{title:'emoticons.emoticons_desc',cmd:'mceemoticon',image:url+'/img/smiley.gif'});},getInfo:function(){return{longname:'emoticons',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emoticons',version:tinymce.majorVersion+"."+tinymce.minorVersion};}});tinymce.PluginManager.add('emoticons',tinymce.plugins.emoticonsPlugin);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/editor_plugin_src.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/editor_plugin_src.js
deleted file mode 100644 (file)
index 19e89fa..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
-       tinymce.create('tinymce.plugins.emoticonsPlugin', {\r
-               init : function(ed, url) {\r
-                       // Register commands\r
-                       ed.addCommand('mceemoticon', function() {\r
-                               ed.windowManager.open({\r
-                                       file : url + '/emoticons.php',\r
-                                       width : 300 + parseInt(ed.getLang('emoticons.delta_width', 0)),\r
-                                       height : 300 + parseInt(ed.getLang('emoticons.delta_height', 0)),\r
-                                       inline : 1\r
-                               }, {\r
-                                       plugin_url : url\r
-                               });\r
-                       });\r
-\r
-                       // Register buttons\r
-                       ed.addButton('emoticons', {title : 'emoticons.emoticons_desc', cmd : 'mceemoticon', image : url + '/img/smiley.gif'});\r
-               },\r
-\r
-               getInfo : function() {\r
-                       return {\r
-                               longname : 'emoticons',\r
-                               author : 'Moxiecode Systems AB',\r
-                               authorurl : 'http://tinymce.moxiecode.com',\r
-                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emoticons',\r
-                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
-                       };\r
-               }\r
-       });\r
-\r
-       // Register plugin\r
-       tinymce.PluginManager.add('emoticons', tinymce.plugins.emoticonsPlugin);\r
-})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/emoticons.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/emoticons.php
deleted file mode 100644 (file)
index bf3884b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php\r
-\r
-    require("../../../../../../../config.php");\r
-\r
-    $id = optional_param('id', SITEID, PARAM_INT);\r
-\r
-    require_course_login($id);\r
-    @header('Content-Type: text/html; charset=utf-8');\r
-\r
-    $pixpath = "$CFG->pixpath/s";\r
-\r
-    $fullnames = get_list_of_pixnames();\r
-\r
-    $emoticons = array ( 'smiley'     => ':-)',\r
-                         'biggrin'    => ':-D',\r
-                         'wink'       => ';-)',\r
-                         'mixed'      => ':-/',\r
-                         'thoughtful' => 'V-.',\r
-                         'tongueout'  => ':-P',\r
-                         'cool'       => 'B-)',\r
-                         'approve'    => '^-)',\r
-                         'wideeyes'   => '8-)',\r
-                         'clown'      => ':o)',\r
-                         'sad'        => ':-(',\r
-                         'shy'        => '8-.',\r
-                         'blush'      => ':-I',\r
-                         'kiss'       => ':-X',\r
-                         'surprise'   => '8-o',\r
-                         'blackeye'   => 'P-|',\r
-                         'angry'      => '8-[',\r
-                         'dead'       => 'xx-P',\r
-                         'sleepy'     => '|-.',\r
-                         'evil'       => '}-]' );\r
-\r
-?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-       <title>{#emoticons_dlg.title}</title>\r
-       <script type="text/javascript" src="../../tiny_mce_popup.js?v=307"></script>\r
-       <script type="text/javascript" src="js/emoticons.js?v=307"></script>\r
-       <base target="_self" />\r
-</head>\r
-<body style="display: none">\r
-       <div align="center">\r
-<table class="dlg" cellpadding="0" cellspacing="2" width="100%">\r
-<tr><td><table width="100%"><tr><td class="title" nowrap="nowrap"><?php print_string('chooseicon', 'editor'); ?></td></tr></table></td></tr>\r
-<tr>\r
-<td>\r
-    <table border="0" align="center" cellpadding="5">\r
-      <tr valign="top">\r
-        <td>\r
-        <table border="0">\r
-<?php\r
-        $list = array('smiley', 'biggrin', 'wink', 'mixed', 'thoughtful', 'tongueout', 'cool', 'approve', 'wideeyes', 'surprise');\r
-        foreach ($list as $image) {\r
-            $name = $fullnames[$image];\r
-            $icon = $emoticons[$image];\r
-            echo '<tr>';\r
-echo "<td><a href=\"javascript:emoticonsDialog.insert('$pixpath/$image.gif','$name');\"><img alt=\"$name\" class=\"icon\" src=\"$pixpath/$image.gif\" width=\"15\" height=\"15\" border=\"0\" title=\"$name\" /></a></td>";\r
-            echo "<td>$name</td>";\r
-            echo "<td class=\"smile\">$icon</td>";\r
-            echo "</tr>";\r
-        }\r
-?>\r
-        </table>\r
-        </td>\r
-        <td>\r
-        <table border="0" align="center">\r
-\r
-<?php\r
-        $list = array('sad', 'shy', 'blush', 'kiss', 'clown', 'blackeye', 'angry', 'dead', 'sleepy', 'evil');\r
-        foreach ($list as $image) {\r
-            $name = $fullnames[$image];\r
-            $icon = $emoticons[$image];\r
-            echo '<tr>';\r
-echo "<td><a href=\"javascript:emoticonsDialog.insert('$pixpath/$image.gif','$name');\"><img alt=\"$name\" class=\"icon\" src=\"$pixpath/$image.gif\" width=\"15\" height=\"15\" border=\"0\" title=\"$name\" /></a></td>";\r
-            echo "<td>$name</td>";\r
-            echo "<td class=\"smile\">$icon</td>";\r
-            echo "</tr>";\r
-        }\r
-?>\r
-        </table>\r
-        </td>\r
-      </tr>\r
-    </table>\r
-\r
-    </td>\r
-  </tr>\r
-</table>\r
-       </div>\r
-</body>\r
-</html>
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/img/smiley.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/img/smiley.gif
deleted file mode 100644 (file)
index 7b68391..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/img/smiley.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/js/emoticons.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/js/emoticons.js
deleted file mode 100644 (file)
index 16e3435..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-tinyMCEPopup.requireLangPack();\r
-\r
-var emoticonsDialog = {\r
-       init : function(ed) {\r
-               tinyMCEPopup.resizeToInnerSize();\r
-       },\r
-\r
-       insert : function(file, title) {\r
-               var ed = tinyMCEPopup.editor, dom = ed.dom;\r
-\r
-               tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {\r
-                       src : file,\r
-                       alt : title,\r
-                       title : title,\r
-                       border : 0\r
-               }));\r
-\r
-               tinyMCEPopup.close();\r
-       }\r
-};\r
-\r
-tinyMCEPopup.onInit.add(emoticonsDialog.init, emoticonsDialog);\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/langs/en_dlg.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emoticons/langs/en_dlg.js
deleted file mode 100644 (file)
index 9c19ab2..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-tinyMCE.addI18n('en.emoticons_dlg',{\r
-title:"Insert emoticon",\r
-desc:"emoticons",\r
-cool:"Cool",\r
-cry:"Cry",\r
-embarassed:"Embarassed",\r
-foot_in_mouth:"Foot in mouth",\r
-frown:"Frown",\r
-innocent:"Innocent",\r
-kiss:"Kiss",\r
-laughing:"Laughing",\r
-money_mouth:"Money mouth",\r
-sealed:"Sealed",\r
-smile:"Smile",\r
-surprised:"Surprised",\r
-tongue_out:"Tongue out",\r
-undecided:"Undecided",\r
-wink:"Wink",\r
-yell:"Yell"\r
-});
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js
deleted file mode 100644 (file)
index 87fac10..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
deleted file mode 100644 (file)
index 206e2ed..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif
deleted file mode 100644 (file)
index d610886..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js
deleted file mode 100644 (file)
index cb7010d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif
deleted file mode 100644 (file)
index dd1880b..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js
deleted file mode 100644 (file)
index 727beb5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);if(bdattr){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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js
deleted file mode 100644 (file)
index fbcec59..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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(tinymce.isIE&&(s.fullscreen_html_overflow=='visible'||s.fullscreen_html_overflow=='scroll'))s.fullscreen_html_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:'+(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel)?'absolute':'fixed')+';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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js
deleted file mode 100644 (file)
index 06dae75..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js
deleted file mode 100644 (file)
index b4fffe5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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;t.windows={};},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);}}});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')=='modal'){DOM.add(DOM.doc.body,'div',{id:'mceModalBlocker','class':(t.editor.settings.inlinepopups_skin||'clearlooks2')+'_modalBlocker',style:{zIndex:t.zIndex-1}});DOM.show('mceModalBlocker');}else DOM.setStyle('mceModalBlocker','z-index',t.zIndex-1);if(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel))DOM.setStyles('mceModalBlocker',{position:'absolute',width:vp.w-2,height:vp.h-2});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;if(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:{zIndex:t.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!DOM.boxModel))DOM.setStyles('mceEventBlocker',{position:'absolute',width:vp.w-2,height:vp.h-2});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);if(!t.windows[id]){t.parent(win);return;}t.count--;if(t.count==0)DOM.remove('mceModalBlocker');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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
deleted file mode 100644 (file)
index 0591f71..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
deleted file mode 100644 (file)
index 110a7ae..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
deleted file mode 100644 (file)
index 090447d..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
deleted file mode 100644 (file)
index f291c73..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
deleted file mode 100644 (file)
index 1bc957b..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js
deleted file mode 100644 (file)
index 34d4cec..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js
deleted file mode 100644 (file)
index 4cd9427..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js
deleted file mode 100644 (file)
index 5986493..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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.onPreInit.add(function(){ed.serializer.addRules('param[name|value|_value]');});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'};ed.selection.onSetContent.add(function(){t._spansToImgs(ed.getBody());});ed.selection.onBeforeSetContent.add(t._objectsToSpans,t);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(t._objectsToSpans,t);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};},_objectsToSpans:function(ed,o){var t=this,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="'+t.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></span>');h=h.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');h=h.replace(/<\/(object)([^>]*)>/gi,'</span>');h=h.replace(/<\/embed>/gi,'');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;},_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|_cx|_cy)$/.test(k)){if(o.type=='application/x-mplayer2'&&k=='src')k='url';if(v)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','allowfullscreen','quality'],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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif
deleted file mode 100644 (file)
index de33e76..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif
deleted file mode 100644 (file)
index f61ddc8..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif
deleted file mode 100644 (file)
index 66952ac..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif
deleted file mode 100644 (file)
index e98dd57..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js
deleted file mode 100644 (file)
index 4fce503..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js
deleted file mode 100644 (file)
index 8a1b8f0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js
deleted file mode 100644 (file)
index 177ea95..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif
deleted file mode 100644 (file)
index e98dd57..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/blank.htm b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/blank.htm
deleted file mode 100644 (file)
index 7ba26bd..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<title>blank_page</title>\r
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<link href="css/blank.css" rel="stylesheet" type="text/css" />\r
-<base target="_self" />\r
-<script type="text/javascript">\r
-function init() {\r
-       if (parent.tinymce.isIE)\r
-               document.body.contentEditable = true;\r
-       else\r
-               document.designMode = 'on';\r
-\r
-       parent.initIframe(document);\r
-       window.focus();\r
-}\r
-</script>\r
-</head>\r
-<body onload="init();">\r
-\r
-</body>\r
-</html>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css
deleted file mode 100644 (file)
index 6b16bac..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-html, body {height:98%}\r
-body {\r
-background-color: #FFFFFF;\r
-font-family: Verdana, Arial, Helvetica, sans-serif;\r
-font-size: 10px;\r
-scrollbar-3dlight-color: #F0F0EE;\r
-scrollbar-arrow-color: #676662;\r
-scrollbar-base-color: #F0F0EE;\r
-scrollbar-darkshadow-color: #DDDDDD;\r
-scrollbar-face-color: #E0E0DD;\r
-scrollbar-highlight-color: #F0F0EE;\r
-scrollbar-shadow-color: #F0F0EE;\r
-scrollbar-track-color: #F5F5F5;\r
-}\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css
deleted file mode 100644 (file)
index b3be627..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-.sourceIframe {\r
-       border: 1px solid #808080;\r
-}\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js
deleted file mode 100644 (file)
index eeeebd5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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){content=this.editor.dom.encode(content);if(content&&content.length>0){if(!this.editor.selection.isCollapsed())this.editor.execCommand("Delete");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,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,...,\x93|\x94|\u201c|\u201d,",\x60|\x91|\x92|\u2018|\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(/<!--([\s\S]*?)-->|<style>[\s\S]*?<\/style>/g,"");content=content.replace(/<(meta|link)[^>]+>/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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js
deleted file mode 100644 (file)
index 1809bb1..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-(function() {\r
-       var Event = tinymce.dom.Event;\r
-\r
-       tinymce.create('tinymce.plugins.PastePlugin', {\r
-               init : function(ed, url) {\r
-                       var t = this;\r
-\r
-                       t.editor = ed; \r
-\r
-                       // Register commands\r
-                       ed.addCommand('mcePasteText', function(ui, v) {\r
-                               if (ui) {\r
-                                       if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {\r
-                                               ed.windowManager.open({\r
-                                                       file : url + '/pastetext.htm',\r
-                                                       width : 450,\r
-                                                       height : 400,\r
-                                                       inline : 1\r
-                                               }, {\r
-                                                       plugin_url : url\r
-                                               });\r
-                                       } else\r
-                                               t._insertText(clipboardData.getData("Text"), true);\r
-                               } else\r
-                                       t._insertText(v.html, v.linebreaks);\r
-                       });\r
-\r
-                       ed.addCommand('mcePasteWord', function(ui, v) {\r
-                               if (ui) {\r
-                                       if ((ed.getParam('paste_use_dialog', true)) || (!tinymce.isIE)) {\r
-                                               ed.windowManager.open({\r
-                                                       file : url + '/pasteword.htm',\r
-                                                       width : 450,\r
-                                                       height : 400,\r
-                                                       inline : 1\r
-                                               }, {\r
-                                                       plugin_url : url\r
-                                               });\r
-                                       } else\r
-                                               t._insertText(t._clipboardHTML());\r
-                               } else\r
-                                       t._insertWordContent(v);\r
-                       });\r
-\r
-                       ed.addCommand('mceSelectAll', function() {\r
-                               ed.execCommand('selectall'); \r
-                       });\r
-\r
-                       // Register buttons\r
-                       ed.addButton('pastetext', {title : 'paste.paste_text_desc', cmd : 'mcePasteText', ui : true});\r
-                       ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord', ui : true});\r
-                       ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'mceSelectAll'});\r
-\r
-                       if (ed.getParam("paste_auto_cleanup_on_paste", false)) {\r
-                               ed.onPaste.add(function(ed, e) {\r
-                                       return t._handlePasteEvent(e)\r
-                               });\r
-                       }\r
-\r
-                       if (!tinymce.isIE && ed.getParam("paste_auto_cleanup_on_paste", false)) {\r
-                               // Force paste dialog if non IE browser\r
-                               ed.onKeyDown.add(function(ed, e) {\r
-                                       if (e.ctrlKey && e.keyCode == 86) {\r
-                                               window.setTimeout(function() {\r
-                                                       ed.execCommand("mcePasteText", true);\r
-                                               }, 1);\r
-\r
-                                               Event.cancel(e);\r
-                                       }\r
-                               });\r
-                       }\r
-               },\r
-\r
-               getInfo : function() {\r
-                       return {\r
-                               longname : 'Paste text/word',\r
-                               author : 'Moxiecode Systems AB',\r
-                               authorurl : 'http://tinymce.moxiecode.com',\r
-                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',\r
-                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
-                       };\r
-               },\r
-\r
-               // Private methods\r
-\r
-               _handlePasteEvent : function(e) {\r
-                       var html = this._clipboardHTML(), ed = this.editor, sel = ed.selection, r;\r
-\r
-                       // Removes italic, strong etc, the if was needed due to bug #1437114\r
-                       if (ed && (r = sel.getRng()) && r.text.length > 0)\r
-                               ed.execCommand('delete');\r
-\r
-                       if (html && html.length > 0)\r
-                               ed.execCommand('mcePasteWord', false, html);\r
-\r
-                       return Event.cancel(e);\r
-               },\r
-\r
-               _insertText : function(content, bLinebreaks) {\r
-                       content = this.editor.dom.encode(content);\r
-\r
-                       if (content && content.length > 0) {\r
-                               // Delete any highlighted text before pasting\r
-                               if (!this.editor.selection.isCollapsed())\r
-                                       this.editor.execCommand("Delete"); \r
-\r
-                               if (bLinebreaks) { \r
-                                       // Special paragraph treatment \r
-                                       if (this.editor.getParam("paste_create_paragraphs", true)) {\r
-                                               var rl = this.editor.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');\r
-                                               for (var i=0; i<rl.length; i+=2)\r
-                                                       content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);\r
-\r
-                                               content = content.replace(/\r\n\r\n/g, '</p><p>');\r
-                                               content = content.replace(/\r\r/g, '</p><p>');\r
-                                               content = content.replace(/\n\n/g, '</p><p>');\r
-\r
-                                               // Has paragraphs \r
-                                               if ((pos = content.indexOf('</p><p>')) != -1) { \r
-                                                       this.editor.execCommand("Delete"); \r
-\r
-                                                       var node = this.editor.selection.getNode(); \r
-\r
-                                                       // Get list of elements to break \r
-                                                       var breakElms = [];\r
-\r
-                                                       do { \r
-                                                               if (node.nodeType == 1) { \r
-                                                                       // Don't break tables and break at body \r
-                                                                       if (node.nodeName == "TD" || node.nodeName == "BODY") \r
-                                                                               break; \r
-                       \r
-                                                                       breakElms[breakElms.length] = node; \r
-                                                               } \r
-                                                       } while(node = node.parentNode); \r
-\r
-                                                       var before = "", after = "</p>"; \r
-                                                       before += content.substring(0, pos); \r
-\r
-                                                       for (var i=0; i<breakElms.length; i++) { \r
-                                                               before += "</" + breakElms[i].nodeName + ">"; \r
-                                                               after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; \r
-                                                       } \r
-\r
-                                                       before += "<p>"; \r
-                                                       content = before + content.substring(pos+7) + after; \r
-                                               } \r
-                                       } \r
-\r
-                                       if (this.editor.getParam("paste_create_linebreaks", true)) {\r
-                                               content = content.replace(/\r\n/g, '<br />');\r
-                                               content = content.replace(/\r/g, '<br />');\r
-                                               content = content.replace(/\n/g, '<br />');\r
-                                       }\r
-                               } \r
-\r
-                               this.editor.execCommand("mceInsertRawHTML", false, content); \r
-                       }\r
-               },\r
-\r
-               _insertWordContent : function(content) { \r
-                       var t = this, ed = t.editor;\r
-\r
-                       if (content && content.length > 0) {\r
-                               // Cleanup Word content\r
-                               var bull = String.fromCharCode(8226);\r
-                               var middot = String.fromCharCode(183);\r
-\r
-                               if (ed.getParam('paste_insert_word_content_callback'))\r
-                                       content = ed.execCallback('paste_insert_word_content_callback', 'before', content);\r
-\r
-                               var rl = ed.getParam("paste_replace_list", '\u2122,<sup>TM</sup>,\u2026,...,\x93|\x94|\u201c|\u201d,",\x60|\x91|\x92|\u2018|\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');\r
-                               for (var i=0; i<rl.length; i+=2)\r
-                                       content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);\r
-\r
-                               if (this.editor.getParam("paste_convert_headers_to_strong", false)) {\r
-                                       content = content.replace(new RegExp('<p class=MsoHeading.*?>(.*?)<\/p>', 'gi'), '<p><b>$1</b></p>');\r
-                               }\r
-\r
-                               content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--");\r
-                               content = content.replace(new RegExp(bull + "(.*?)<BR>", "gi"), "<p>" + middot + "$1</p>");\r
-                               content = content.replace(new RegExp('<SPAN style="mso-list: Ignore">', 'gi'), "<span>" + bull); // Covert to bull list\r
-                               content = content.replace(/<o:p><\/o:p>/gi, "");\r
-                               content = content.replace(new RegExp('<br style="page-break-before: always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks\r
-                               content = content.replace(/<!--([\s\S]*?)-->|<style>[\s\S]*?<\/style>/g, "");  // Word comments\r
-                               content = content.replace(/<(meta|link)[^>]+>/g, ""); // Header elements\r
-\r
-                               if (this.editor.getParam("paste_remove_spans", true))\r
-                                       content = content.replace(/<\/?span[^>]*>/gi, "");\r
-\r
-                               if (this.editor.getParam("paste_remove_styles", true))\r
-                                       content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3");\r
-\r
-                               content = content.replace(/<\/?font[^>]*>/gi, "");\r
-\r
-                               // Strips class attributes.\r
-                               switch (this.editor.getParam("paste_strip_class_attributes", "all")) {\r
-                                       case "all":\r
-                                               content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");\r
-                                               break;\r
-\r
-                                       case "mso":\r
-                                               content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3");\r
-                                               break;\r
-                               }\r
-\r
-                               content = content.replace(new RegExp('href="?' + this._reEscape("" + document.location) + '', 'gi'), 'href="' + this.editor.documentBaseURI.getURI());\r
-                               content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");\r
-                               content = content.replace(/<\\?\?xml[^>]*>/gi, "");\r
-                               content = content.replace(/<\/?\w+:[^>]*>/gi, "");\r
-                               content = content.replace(/-- page break --\s*<p>&nbsp;<\/p>/gi, ""); // Remove pagebreaks\r
-                               content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks\r
-\r
-               //              content = content.replace(/\/?&nbsp;*/gi, ""); &nbsp;\r
-               //              content = content.replace(/<p>&nbsp;<\/p>/gi, '');\r
-\r
-                               if (!this.editor.getParam('force_p_newlines')) {\r
-                                       content = content.replace('', '' ,'gi');\r
-                                       content = content.replace('</p>', '<br /><br />' ,'gi');\r
-                               }\r
-\r
-                               if (!tinymce.isIE && !this.editor.getParam('force_p_newlines')) {\r
-                                       content = content.replace(/<\/?p[^>]*>/gi, "");\r
-                               }\r
-\r
-                               content = content.replace(/<\/?div[^>]*>/gi, "");\r
-\r
-                               // Convert all middlot lists to UL lists\r
-                               if (this.editor.getParam("paste_convert_middot_lists", true)) {\r
-                                       var div = ed.dom.create("div", null, content);\r
-\r
-                                       // Convert all middot paragraphs to li elements\r
-                                       var className = this.editor.getParam("paste_unindented_list_class", "unIndentedList");\r
-\r
-                                       while (this._convertMiddots(div, "--list--")) ; // bull\r
-                                       while (this._convertMiddots(div, middot, className)) ; // Middot\r
-                                       while (this._convertMiddots(div, bull)) ; // bull\r
-\r
-                                       content = div.innerHTML;\r
-                               }\r
-\r
-                               // Replace all headers with strong and fix some other issues\r
-                               if (this.editor.getParam("paste_convert_headers_to_strong", false)) {\r
-                                       content = content.replace(/<h[1-6]>&nbsp;<\/h[1-6]>/gi, '<p>&nbsp;&nbsp;</p>');\r
-                                       content = content.replace(/<h[1-6]>/gi, '<p><b>');\r
-                                       content = content.replace(/<\/h[1-6]>/gi, '</b></p>');\r
-                                       content = content.replace(/<b>&nbsp;<\/b>/gi, '<b>&nbsp;&nbsp;</b>');\r
-                                       content = content.replace(/^(&nbsp;)*/gi, '');\r
-                               }\r
-\r
-                               content = content.replace(/--list--/gi, ""); // Remove --list--\r
-\r
-                               if (ed.getParam('paste_insert_word_content_callback'))\r
-                                       content = ed.execCallback('paste_insert_word_content_callback', 'after', content);\r
-\r
-                               // Insert cleaned content\r
-                               this.editor.execCommand("mceInsertContent", false, content);\r
-\r
-                               if (this.editor.getParam('paste_force_cleanup_wordpaste', true)) {\r
-                                       var ed = this.editor;\r
-\r
-                                       window.setTimeout(function() {\r
-                                               ed.execCommand("mceCleanup");\r
-                                       }, 1); // Do normal cleanup detached from this thread\r
-                               }\r
-                       }\r
-               },\r
-\r
-               _reEscape : function(s) {\r
-                       var l = "?.\\*[](){}+^$:";\r
-                       var o = "";\r
-\r
-                       for (var i=0; i<s.length; i++) {\r
-                               var c = s.charAt(i);\r
-\r
-                               if (l.indexOf(c) != -1)\r
-                                       o += '\\' + c;\r
-                               else\r
-                                       o += c;\r
-                       }\r
-\r
-                       return o;\r
-               },\r
-\r
-               _convertMiddots : function(div, search, class_name) {\r
-                       var ed = this.editor, mdot = String.fromCharCode(183), bull = String.fromCharCode(8226);\r
-                       var nodes, prevul, i, p, ul, li, np, cp, li;\r
-\r
-                       nodes = div.getElementsByTagName("p");\r
-                       for (i=0; i<nodes.length; i++) {\r
-                               p = nodes[i];\r
-\r
-                               // Is middot\r
-                               if (p.innerHTML.indexOf(search) == 0) {\r
-                                       ul = ed.dom.create("ul");\r
-\r
-                                       if (class_name)\r
-                                               ul.className = class_name;\r
-\r
-                                       // Add the first one\r
-                                       li = ed.dom.create("li");\r
-                                       li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');\r
-                                       ul.appendChild(li);\r
-\r
-                                       // Add the rest\r
-                                       np = p.nextSibling;\r
-                                       while (np) {\r
-                                               // If the node is whitespace, then\r
-                                               // ignore it and continue on.\r
-                                               if (np.nodeType == 3 && new RegExp('^\\s$', 'm').test(np.nodeValue)) {\r
-                                                               np = np.nextSibling;\r
-                                                               continue;\r
-                                               }\r
-\r
-                                               if (search == mdot) {\r
-                                                               if (np.nodeType == 1 && new RegExp('^o(\\s+|&nbsp;)').test(np.innerHTML)) {\r
-                                                                               // Second level of nesting\r
-                                                                               if (!prevul) {\r
-                                                                                               prevul = ul;\r
-                                                                                               ul = ed.dom.create("ul");\r
-                                                                                               prevul.appendChild(ul);\r
-                                                                               }\r
-                                                                               np.innerHTML = np.innerHTML.replace(/^o/, '');\r
-                                                               } else {\r
-                                                                               // Pop the stack if we're going back up to the first level\r
-                                                                               if (prevul) {\r
-                                                                                               ul = prevul;\r
-                                                                                               prevul = null;\r
-                                                                               }\r
-                                                                               // Not element or middot paragraph\r
-                                                                               if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)\r
-                                                                                               break;\r
-                                                               }\r
-                                               } else {\r
-                                                               // Not element or middot paragraph\r
-                                                               if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)\r
-                                                                               break;\r
-                                                       }\r
-\r
-                                               cp = np.nextSibling;\r
-                                               li = ed.dom.create("li");\r
-                                               li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' + bull + '|--list--|&nbsp;', "gi"), '');\r
-                                               np.parentNode.removeChild(np);\r
-                                               ul.appendChild(li);\r
-                                               np = cp;\r
-                                       }\r
-\r
-                                       p.parentNode.replaceChild(ul, p);\r
-\r
-                                       return true;\r
-                               }\r
-                       }\r
-\r
-                       return false;\r
-               },\r
-\r
-               _clipboardHTML : function() {\r
-                       var div = document.getElementById('_TinyMCE_clipboardHTML');\r
-\r
-                       if (!div) {\r
-                               var div = document.createElement('DIV');\r
-                               div.id = '_TinyMCE_clipboardHTML';\r
-\r
-                               with (div.style) {\r
-                                       visibility = 'hidden';\r
-                                       overflow = 'hidden';\r
-                                       position = 'absolute';\r
-                                       width = 1;\r
-                                       height = 1;\r
-                               }\r
-\r
-                               document.body.appendChild(div);\r
-                       }\r
-\r
-                       div.innerHTML = '';\r
-                       var rng = document.body.createTextRange();\r
-                       rng.moveToElementText(div);\r
-                       rng.execCommand('Paste');\r
-                       var html = div.innerHTML;\r
-                       div.innerHTML = '';\r
-                       return html;\r
-               }\r
-       });\r
-\r
-       // Register plugin\r
-       tinymce.PluginManager.add('paste', tinymce.plugins.PastePlugin);\r
-})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js
deleted file mode 100644 (file)
index 326bb16..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-tinyMCEPopup.requireLangPack();\r
-\r
-function saveContent() {\r
-       if (document.forms[0].htmlSource.value == '') {\r
-               tinyMCEPopup.close();\r
-               return false;\r
-       }\r
-\r
-       tinyMCEPopup.execCommand('mcePasteText', false, {\r
-               html : document.forms[0].htmlSource.value,\r
-               linebreaks : document.forms[0].linebreaks.checked\r
-       });\r
-\r
-       tinyMCEPopup.close();\r
-}\r
-\r
-function onLoadInit() {\r
-       tinyMCEPopup.resizeToInnerSize();\r
-\r
-       // Remove Gecko spellchecking\r
-       if (tinymce.isGecko)\r
-               document.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");\r
-\r
-       resizeInputs();\r
-}\r
-\r
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
-\r
-function resizeInputs() {\r
-       if (!tinymce.isIE) {\r
-               wHeight = self.innerHeight-80;\r
-               wWidth = self.innerWidth-17;\r
-       } else {\r
-               wHeight = document.body.clientHeight-80;\r
-               wWidth = document.body.clientWidth-17;\r
-       }\r
-\r
-       document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';\r
-       document.forms[0].htmlSource.style.width  = Math.abs(wWidth) + 'px';\r
-}\r
-\r
-tinyMCEPopup.onInit.add(onLoadInit);
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js
deleted file mode 100644 (file)
index 6701b99..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-tinyMCEPopup.requireLangPack();\r
-\r
-function saveContent() {\r
-       var html = document.getElementById("frmData").contentWindow.document.body.innerHTML;\r
-\r
-       if (html == ''){\r
-               tinyMCEPopup.close();\r
-               return false;\r
-       }\r
-\r
-       tinyMCEPopup.execCommand('mcePasteWord', false, html);\r
-       tinyMCEPopup.close();\r
-}\r
-\r
-function onLoadInit() {\r
-       tinyMCEPopup.resizeToInnerSize();\r
-\r
-       // Fix for endless reloading in FF\r
-       window.setTimeout(createIFrame, 10);\r
-}\r
-\r
-function createIFrame() {\r
-       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>';\r
-}\r
-\r
-var wHeight=0, wWidth=0, owHeight=0, owWidth=0;\r
-\r
-function initIframe(doc) {\r
-       var dir = tinyMCEPopup.editor.settings.directionality;\r
-\r
-       doc.body.dir = dir;\r
-\r
-       // Remove Gecko spellchecking\r
-       if (tinymce.isGecko)\r
-               doc.body.spellcheck = tinyMCEPopup.getParam("gecko_spellcheck");\r
-\r
-       resizeInputs();\r
-}\r
-\r
-function resizeInputs() {\r
-       if (!tinymce.isIE) {\r
-               wHeight = self.innerHeight - 80;\r
-               wWidth = self.innerWidth - 18;\r
-       } else {\r
-               wHeight = document.body.clientHeight - 80;\r
-               wWidth = document.body.clientWidth - 18;\r
-       }\r
-\r
-       var elm = document.getElementById('frmData');\r
-       if (elm) {\r
-               elm.style.height = Math.abs(wHeight) + 'px';\r
-               elm.style.width  = Math.abs(wWidth) + 'px';\r
-       }\r
-}\r
-\r
-tinyMCEPopup.onInit.add(onLoadInit);\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm b/lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm
deleted file mode 100644 (file)
index 2f2b341..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-       <title>{#paste.paste_text_desc}</title>\r
-       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
-       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
-       <script type="text/javascript" src="js/pastetext.js"></script>\r
-       <base target="_self" />\r
-</head>\r
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
-<form name="source" onsubmit="saveContent();return false;" action="#">\r
-       <div style="float: left" class="title">{#paste.paste_text_desc}</div>\r
-\r
-       <div style="float: right">\r
-               <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>\r
-       </div>\r
-\r
-       <br style="clear: both" />\r
-\r
-       <div>{#paste_dlg.text_title}</div>\r
-\r
-       <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>\r
-\r
-       <div class="mceActionPanel">\r
-               <div style="float: left">\r
-                       <input type="submit" name="insert" value="{#insert}" id="insert" />\r
-               </div>\r
-\r
-               <div style="float: right">\r
-                       <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />\r
-               </div>\r
-       </div>\r
-</form>\r
-</body> \r
-</html>
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js
deleted file mode 100644 (file)
index deb4bce..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create('tinymce.plugins.Preview',{init:function(ed,url){var t=this,css=tinymce.explode(ed.settings.content_css);t.editor=ed;tinymce.each(css,function(u,k){css[k]=ed.documentBaseURI.toAbsolute(u);});ed.addCommand('mcePreview',function(){ed.windowManager.open({file:ed.getParam("plugin_preview_pageurl",url+"/preview.html"),width:parseInt(ed.getParam("plugin_preview_width","550")),height:parseInt(ed.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:css.join(','),inline:ed.getParam("plugin_preview_inline",1)},{base:ed.documentBaseURI.getURI()});});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};}});tinymce.PluginManager.add('preview',tinymce.plugins.Preview);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js
deleted file mode 100644 (file)
index 7d09a87..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js
deleted file mode 100644 (file)
index 4e1a680..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var Event=tinymce.dom.Event,grep=tinymce.grep,each=tinymce.each,inArray=tinymce.inArray,isOldWebKit=tinymce.isOldWebKit;function isEmpty(d,e,f){var w,n;w=d.createTreeWalker(e,NodeFilter.SHOW_ALL,null,false);while(n=w.nextNode()){if(f){if(!f(n))return false;}if(n.nodeType==3&&n.nodeValue&&/[^\s\u00a0]+/.test(n.nodeValue))return false;if(n.nodeType==1&&/^(HR|IMG|TABLE)$/.test(n.nodeName))return false;}return true;};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.addCommand('CreateLink',function(u,v){var n=ed.selection.getNode(),dom=ed.dom,a;if(n&&(/^(left|right)$/i.test(dom.getStyle(n,'float',1))||/^(left|right)$/i.test(dom.getAttrib(n,'align')))){a=dom.create('a',{href:v},n.cloneNode());n.parentNode.replaceChild(a,n);ed.selection.select(a);}else ed.getDoc().execCommand("CreateLink",false,v);});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){var se,li,lic,r1,r2,n,sel,doc,be,af,pa;if(e.keyCode==13){sel=ed.selection;se=sel.getNode();if(e.shiftKey||ed.settings.force_br_newlines&&se.nodeName!='LI'){t._insertBR(ed);Event.cancel(e);}if(li=dom.getParent(se,'LI')){lic=dom.getParent(li,'OL,UL');doc=ed.getDoc();pa=dom.create('p');dom.add(pa,'br',{mce_bogus:"1"});if(isEmpty(doc,li)){if(n=dom.getParent(lic.parentNode,'LI,OL,UL'))return;n=dom.getParent(lic,'p,h1,h2,h3,h4,h5,h6,div')||lic;r1=doc.createRange();r1.setStartBefore(n);r1.setEndBefore(li);r2=doc.createRange();r2.setStartAfter(li);r2.setEndAfter(n);be=r1.cloneContents();af=r2.cloneContents();if(!isEmpty(doc,af))dom.insertAfter(af,n);dom.insertAfter(pa,n);if(!isEmpty(doc,be))dom.insertAfter(be,n);dom.remove(n);n=pa.firstChild;r1=doc.createRange();r1.setStartBefore(n);r1.setEndBefore(n);sel.setRng(r1);return Event.cancel(e);}}}});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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js
deleted file mode 100644 (file)
index 8a13e7d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js
deleted file mode 100644 (file)
index 7fd913b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/changelog b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/changelog
deleted file mode 100644 (file)
index c21f2f4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Version 2.0.2 (2008-04-30)\r
-       Added new EnchantSpell engine class contributed by Michel Weimerskirch.\r
-       Added new general.remote_rpc_url option, enables you to proxy requests to another server.\r
-       Fixed security hole in PSpellShell.php file if PSpellShell engine was used.\r
-Version 2.0.1 (2008-03-07)\r
-       Fixed bug where spellchecker was auto focusing the editor in IE.\r
-Version 2.0 (2008-01-30)\r
-       Fixed bug where the suggestions menu was placed at an incorrect location.\r
-Version 2.0rc1 (2008-01-14)\r
-       Moved package from beta to release candidate.\r
-Version 2.0b3 (2007-12-xx)\r
-       Fixed bug where the suggestions menu could appear at the wrong location.\r
-Version 2.0b2 (2007-11-29)\r
-       Fixed bug where the spellchecker was removing the word when it was ignored.\r
-Version 2.0b1 (2007-11-21)\r
-       Moved spellchecker from alpha to beta status.\r
-Version 2.0a2 (2007-11-13)\r
-       Updated plugin so it works correctly with the TinyMCE 3.0a3 version.\r
-Version 2.0a1 (2007-11-01)\r
-       Rewritten version for TinyMCE 3.0 this new version uses JSON RPC.\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/EnchantSpell.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/EnchantSpell.php
deleted file mode 100644 (file)
index d37a030..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * This class was contributed by Michel Weimerskirch.\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-class EnchantSpell extends SpellChecker {\r
-       /**\r
-        * Spellchecks an array of words.\r
-        *\r
-        * @param String $lang Selected language code (like en_US or de_DE). Shortcodes like "en" and "de" work with enchant >= 1.4.1\r
-        * @param Array $words Array of words to check.\r
-        * @return Array of misspelled words.\r
-        */\r
-       function &checkWords($lang, $words) {\r
-               $r = enchant_broker_init();\r
-               \r
-               if (enchant_broker_dict_exists($r,$lang)) {\r
-                       $d = enchant_broker_request_dict($r, $lang);\r
-                       \r
-                       $returnData = array();\r
-                       foreach($words as $key => $value) {\r
-                               $correct = enchant_dict_check($d, $value);\r
-                               if(!$correct) {\r
-                                       $returnData[] = trim($value);\r
-                               }\r
-                       }\r
-       \r
-                       return $returnData;\r
-                       enchant_broker_free_dict($d);\r
-               } else {\r
-\r
-               }\r
-               enchant_broker_free($r);\r
-       }\r
-\r
-       /**\r
-        * Returns suggestions for a specific word.\r
-        *\r
-        * @param String $lang Selected language code (like en_US or de_DE). Shortcodes like "en" and "de" work with enchant >= 1.4.1\r
-        * @param String $word Specific word to get suggestions for.\r
-        * @return Array of suggestions for the specified word.\r
-        */\r
-       function &getSuggestions($lang, $word) {\r
-               $r = enchant_broker_init();\r
-               $suggs = array();\r
-\r
-               if (enchant_broker_dict_exists($r,$lang)) {\r
-                       $d = enchant_broker_request_dict($r, $lang);\r
-                       $suggs = enchant_dict_suggest($d, $word);\r
-\r
-                       enchant_broker_free_dict($d);\r
-               } else {\r
-\r
-               }\r
-               enchant_broker_free($r);\r
-\r
-               return $suggs;\r
-       }\r
-}\r
-\r
-?>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/GoogleSpell.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/GoogleSpell.php
deleted file mode 100644 (file)
index 72ad776..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-class GoogleSpell extends SpellChecker {\r
-       /**\r
-        * Spellchecks an array of words.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {Array} $words Array of words to spellcheck.\r
-        * @return {Array} Array of misspelled words.\r
-        */\r
-       function &checkWords($lang, $words) {\r
-               $wordstr = implode(' ', $words);\r
-               $matches = $this->_getMatches($lang, $wordstr);\r
-               $words = array();\r
-\r
-               for ($i=0; $i<count($matches); $i++)\r
-                       $words[] = $this->_unhtmlentities(mb_substr($wordstr, $matches[$i][1], $matches[$i][2], "UTF-8"));\r
-\r
-               return $words;\r
-       }\r
-\r
-       /**\r
-        * Returns suggestions of for a specific word.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {String} $word Specific word to get suggestions for.\r
-        * @return {Array} Array of suggestions for the specified word.\r
-        */\r
-       function &getSuggestions($lang, $word) {\r
-               $sug = array();\r
-               $osug = array();\r
-               $matches = $this->_getMatches($lang, $word);\r
-\r
-               if (count($matches) > 0)\r
-                       $sug = explode("\t", utf8_encode($this->_unhtmlentities($matches[0][4])));\r
-\r
-               // Remove empty\r
-               foreach ($sug as $item) {\r
-                       if ($item)\r
-                               $osug[] = $item;\r
-               }\r
-\r
-               return $osug;\r
-       }\r
-\r
-       function &_getMatches($lang, $str) {\r
-               $server = "www.google.com";\r
-               $port = 443;\r
-               $path = "/tbproxy/spell?lang=" . $lang . "&hl=en";\r
-               $host = "www.google.com";\r
-               $url = "https://" . $server;\r
-\r
-               // Setup XML request\r
-               $xml = '<?xml version="1.0" encoding="utf-8" ?><spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1"><text>' . $str . '</text></spellrequest>';\r
-\r
-               $header  = "POST ".$path." HTTP/1.0 \r\n";\r
-               $header .= "MIME-Version: 1.0 \r\n";\r
-               $header .= "Content-type: application/PTI26 \r\n";\r
-               $header .= "Content-length: ".strlen($xml)." \r\n";\r
-               $header .= "Content-transfer-encoding: text \r\n";\r
-               $header .= "Request-number: 1 \r\n";\r
-               $header .= "Document-type: Request \r\n";\r
-               $header .= "Interface-Version: Test 1.4 \r\n";\r
-               $header .= "Connection: close \r\n\r\n";\r
-               $header .= $xml;\r
-\r
-               // Use curl if it exists\r
-               if (function_exists('curl_init')) {\r
-                       // Use curl\r
-                       $ch = curl_init();\r
-                       curl_setopt($ch, CURLOPT_URL,$url);\r
-                       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\r
-                       curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);\r
-                       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\r
-                       $xml = curl_exec($ch);\r
-                       curl_close($ch);\r
-               } else {\r
-                       // Use raw sockets\r
-                       $fp = fsockopen("ssl://" . $server, $port, $errno, $errstr, 30);\r
-                       if ($fp) {\r
-                               // Send request\r
-                               fwrite($fp, $header);\r
-\r
-                               // Read response\r
-                               $xml = "";\r
-                               while (!feof($fp))\r
-                                       $xml .= fgets($fp, 128);\r
-\r
-                               fclose($fp);\r
-                       } else\r
-                               echo "Could not open SSL connection to google.";\r
-               }\r
-\r
-               // Grab and parse content\r
-               $matches = array();\r
-               preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $xml, $matches, PREG_SET_ORDER);\r
-\r
-               return $matches;\r
-       }\r
-\r
-       function _unhtmlentities($string) {\r
-               $string = preg_replace('~&#x([0-9a-f]+);~ei', 'chr(hexdec("\\1"))', $string);\r
-               $string = preg_replace('~&#([0-9]+);~e', 'chr(\\1)', $string);\r
-\r
-               $trans_tbl = get_html_translation_table(HTML_ENTITIES);\r
-               $trans_tbl = array_flip($trans_tbl);\r
-\r
-               return strtr($string, $trans_tbl);\r
-       }\r
-}\r
-\r
-// Patch in multibyte support\r
-if (!function_exists('mb_substr')) {\r
-       function mb_substr($str, $start, $len = '', $encoding="UTF-8"){\r
-               $limit = strlen($str);\r
-\r
-               for ($s = 0; $start > 0;--$start) {// found the real start\r
-                       if ($s >= $limit)\r
-                               break;\r
-\r
-                       if ($str[$s] <= "\x7F")\r
-                               ++$s;\r
-                       else {\r
-                               ++$s; // skip length\r
-\r
-                               while ($str[$s] >= "\x80" && $str[$s] <= "\xBF")\r
-                                       ++$s;\r
-                       }\r
-               }\r
-\r
-               if ($len == '')\r
-                       return substr($str, $s);\r
-               else\r
-                       for ($e = $s; $len > 0; --$len) {//found the real end\r
-                               if ($e >= $limit)\r
-                                       break;\r
-\r
-                               if ($str[$e] <= "\x7F")\r
-                                       ++$e;\r
-                               else {\r
-                                       ++$e;//skip length\r
-\r
-                                       while ($str[$e] >= "\x80" && $str[$e] <= "\xBF" && $e < $limit)\r
-                                               ++$e;\r
-                               }\r
-                       }\r
-\r
-               return substr($str, $s, $e - $s);\r
-       }\r
-}\r
-\r
-?>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/PSpell.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/PSpell.php
deleted file mode 100644 (file)
index 2512378..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-class PSpell extends SpellChecker {\r
-       /**\r
-        * Spellchecks an array of words.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {Array} $words Array of words to spellcheck.\r
-        * @return {Array} Array of misspelled words.\r
-        */\r
-       function &checkWords($lang, $words) {\r
-               $plink = $this->_getPLink($lang);\r
-\r
-               $outWords = array();\r
-               foreach ($words as $word) {\r
-                       if (!pspell_check($plink, trim($word)))\r
-                               $outWords[] = utf8_encode($word);\r
-               }\r
-\r
-               return $outWords;\r
-       }\r
-\r
-       /**\r
-        * Returns suggestions of for a specific word.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {String} $word Specific word to get suggestions for.\r
-        * @return {Array} Array of suggestions for the specified word.\r
-        */\r
-       function &getSuggestions($lang, $word) {\r
-               $words = pspell_suggest($this->_getPLink($lang), $word);\r
-\r
-               for ($i=0; $i<count($words); $i++)\r
-                       $words[$i] = utf8_encode($words[$i]);\r
-\r
-               return $words;\r
-       }\r
-\r
-       /**\r
-        * Opens a link for pspell.\r
-        */\r
-       function &_getPLink($lang) {\r
-               // Check for native PSpell support\r
-               if (!function_exists("pspell_new"))\r
-                       $this->throwError("PSpell support not found in PHP installation.");\r
-\r
-               // Setup PSpell link\r
-               $plink = pspell_new(\r
-                       $lang,\r
-                       $this->_config['PSpell.spelling'],\r
-                       $this->_config['PSpell.jargon'],\r
-                       $this->_config['PSpell.encoding'],\r
-                       $this->_config['PSpell.mode']\r
-               );\r
-\r
-               // Setup PSpell link\r
-/*             if (!$plink) {\r
-                       $pspellConfig = pspell_config_create(\r
-                               $lang,\r
-                               $this->_config['PSpell.spelling'],\r
-                               $this->_config['PSpell.jargon'],\r
-                               $this->_config['PSpell.encoding']\r
-                       );\r
-\r
-                       $plink = pspell_new_config($pspell_config);\r
-               }*/\r
-\r
-               if (!$plink)\r
-                       $this->throwError("No PSpell link found opened.");\r
-\r
-               return $plink;\r
-       }\r
-}\r
-\r
-?>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/PSpellShell.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/PSpellShell.php
deleted file mode 100644 (file)
index 1b1569b..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-class PSpellShell extends SpellChecker {\r
-       /**\r
-        * Spellchecks an array of words.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {Array} $words Array of words to spellcheck.\r
-        * @return {Array} Array of misspelled words.\r
-        */\r
-       function &checkWords($lang, $words) {\r
-               $cmd = $this->_getCMD($lang);\r
-\r
-               if ($fh = fopen($this->_tmpfile, "w")) {\r
-                       fwrite($fh, "!\n");\r
-\r
-                       foreach($words as $key => $value)\r
-                               fwrite($fh, "^" . $value . "\n");\r
-\r
-                       fclose($fh);\r
-               } else\r
-                       $this->throwError("PSpell support was not found.");\r
-\r
-               $data = shell_exec($cmd);\r
-               @unlink($this->_tmpfile);\r
-\r
-               $returnData = array();\r
-               $dataArr = preg_split("/[\r\n]/", $data, -1, PREG_SPLIT_NO_EMPTY);\r
-\r
-               foreach ($dataArr as $dstr) {\r
-                       $matches = array();\r
-\r
-                       // Skip this line.\r
-                       if (strpos($dstr, "@") === 0)\r
-                               continue;\r
-\r
-                       preg_match("/\& ([^ ]+) .*/i", $dstr, $matches);\r
-\r
-                       if (!empty($matches[1]))\r
-                               $returnData[] = utf8_encode(trim($matches[1]));\r
-               }\r
-\r
-               return $returnData;\r
-       }\r
-\r
-       /**\r
-        * Returns suggestions of for a specific word.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {String} $word Specific word to get suggestions for.\r
-        * @return {Array} Array of suggestions for the specified word.\r
-        */\r
-       function &getSuggestions($lang, $word) {\r
-               $cmd = $this->_getCMD($lang);\r
-\r
-        if (function_exists("mb_convert_encoding"))\r
-            $word = mb_convert_encoding($word, "ISO-8859-1", mb_detect_encoding($word, "UTF-8"));\r
-        else\r
-            $word = utf8_encode($word);\r
-\r
-               if ($fh = fopen($this->_tmpfile, "w")) {\r
-                       fwrite($fh, "!\n");\r
-                       fwrite($fh, "^$word\n");\r
-                       fclose($fh);\r
-               } else\r
-                       $this->throwError("Error opening tmp file.");\r
-\r
-               $data = shell_exec($cmd);\r
-               @unlink($this->_tmpfile);\r
-\r
-               $returnData = array();\r
-               $dataArr = preg_split("/\n/", $data, -1, PREG_SPLIT_NO_EMPTY);\r
-\r
-               foreach($dataArr as $dstr) {\r
-                       $matches = array();\r
-\r
-                       // Skip this line.\r
-                       if (strpos($dstr, "@") === 0)\r
-                               continue;\r
-\r
-                       preg_match("/\&[^:]+:(.*)/i", $dstr, $matches);\r
-\r
-                       if (!empty($matches[1])) {\r
-                               $words = array_slice(explode(',', $matches[1]), 0, 10);\r
-\r
-                               for ($i=0; $i<count($words); $i++)\r
-                                       $words[$i] = trim($words[$i]);\r
-\r
-                               return $words;\r
-                       }\r
-               }\r
-\r
-               return array();\r
-       }\r
-\r
-       function _getCMD($lang) {\r
-               $this->_tmpfile = tempnam($this->_config['PSpellShell.tmp'], "tinyspell");\r
-\r
-               if(preg_match("#win#i", php_uname()))\r
-                       return $this->_config['PSpellShell.aspell'] . " -a --lang=". escapeshellarg($lang) . " --encoding=utf-8 -H < " . $this->_tmpfile . " 2>&1";\r
-\r
-               return "cat ". $this->_tmpfile ." | " . $this->_config['PSpellShell.aspell'] . " -a --encoding=utf-8 -H --lang=". escapeshellarg($lang);\r
-       }\r
-}\r
-\r
-?>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/SpellChecker.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/SpellChecker.php
deleted file mode 100644 (file)
index 2e48c35..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright � 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-class SpellChecker {\r
-       /**\r
-        * Constructor.\r
-        *\r
-        * @param $config Configuration name/value array.\r
-        */\r
-       function SpellChecker(&$config) {\r
-               $this->_config = $config;\r
-       }\r
-\r
-       /**\r
-        * Simple loopback function everything that gets in will be send back.\r
-        *\r
-        * @param $args.. Arguments.\r
-        * @return {Array} Array of all input arguments. \r
-        */\r
-       function &loopback(/* args.. */) {\r
-               return func_get_args();\r
-       }\r
-\r
-       /**\r
-        * Spellchecks an array of words.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {Array} $words Array of words to spellcheck.\r
-        * @return {Array} Array of misspelled words.\r
-        */\r
-       function &checkWords($lang, $words) {\r
-               return $words;\r
-       }\r
-\r
-       /**\r
-        * Returns suggestions of for a specific word.\r
-        *\r
-        * @param {String} $lang Language code like sv or en.\r
-        * @param {String} $word Specific word to get suggestions for.\r
-        * @return {Array} Array of suggestions for the specified word.\r
-        */\r
-       function &getSuggestions($lang, $word) {\r
-               return array();\r
-       }\r
-\r
-       /**\r
-        * Throws an error message back to the user. This will stop all execution.\r
-        *\r
-        * @param {String} $str Message to send back to user.\r
-        */\r
-       function throwError($str) {\r
-               die('{"result":null,"id":null,"error":{"errstr":"' . addslashes_js($str) . '","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}');\r
-       }\r
-}\r
-\r
-?>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/utils/JSON.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/utils/JSON.php
deleted file mode 100644 (file)
index e676840..0000000
+++ /dev/null
@@ -1,595 +0,0 @@
-<?php
-/**
- * $Id$
- *
- * @package MCManager.utils
- * @author Moxiecode
- * @copyright Copyright © 2007, Moxiecode Systems AB, All rights reserved.
- */
-
-define('JSON_BOOL', 1);
-define('JSON_INT', 2);
-define('JSON_STR', 3);
-define('JSON_FLOAT', 4);
-define('JSON_NULL', 5);
-define('JSON_START_OBJ', 6);
-define('JSON_END_OBJ', 7);
-define('JSON_START_ARRAY', 8);
-define('JSON_END_ARRAY', 9);
-define('JSON_KEY', 10);
-define('JSON_SKIP', 11);
-
-define('JSON_IN_ARRAY', 30);
-define('JSON_IN_OBJECT', 40);
-define('JSON_IN_BETWEEN', 50);
-
-class Moxiecode_JSONReader {
-       var $_data, $_len, $_pos;
-       var $_value, $_token;
-       var $_location, $_lastLocations;
-       var $_needProp;
-
-       function Moxiecode_JSONReader($data) {
-               $this->_data = $data;
-               $this->_len = strlen($data);
-               $this->_pos = -1;
-               $this->_location = JSON_IN_BETWEEN;
-               $this->_lastLocations = array();
-               $this->_needProp = false;
-       }
-
-       function getToken() {
-               return $this->_token;
-       }
-
-       function getLocation() {
-               return $this->_location;
-       }
-
-       function getTokenName() {
-               switch ($this->_token) {
-                       case JSON_BOOL:
-                               return 'JSON_BOOL';
-
-                       case JSON_INT:
-                               return 'JSON_INT';
-
-                       case JSON_STR:
-                               return 'JSON_STR';
-
-                       case JSON_FLOAT:
-                               return 'JSON_FLOAT';
-
-                       case JSON_NULL:
-                               return 'JSON_NULL';
-
-                       case JSON_START_OBJ:
-                               return 'JSON_START_OBJ';
-
-                       case JSON_END_OBJ:
-                               return 'JSON_END_OBJ';
-
-                       case JSON_START_ARRAY:
-                               return 'JSON_START_ARRAY';
-
-                       case JSON_END_ARRAY:
-                               return 'JSON_END_ARRAY';
-
-                       case JSON_KEY:
-                               return 'JSON_KEY';
-               }
-
-               return 'UNKNOWN';
-       }
-
-       function getValue() {
-               return $this->_value;
-       }
-
-       function readToken() {
-               $chr = $this->read();
-
-               if ($chr != null) {
-                       switch ($chr) {
-                               case '[':
-                                       $this->_lastLocation[] = $this->_location;
-                                       $this->_location = JSON_IN_ARRAY;
-                                       $this->_token = JSON_START_ARRAY;
-                                       $this->_value = null;
-                                       $this->readAway();
-                                       return true;
-
-                               case ']':
-                                       $this->_location = array_pop($this->_lastLocation);
-                                       $this->_token = JSON_END_ARRAY;
-                                       $this->_value = null;
-                                       $this->readAway();
-
-                                       if ($this->_location == JSON_IN_OBJECT)
-                                               $this->_needProp = true;
-
-                                       return true;
-
-                               case '{':
-                                       $this->_lastLocation[] = $this->_location;
-                                       $this->_location = JSON_IN_OBJECT;
-                                       $this->_needProp = true;
-                                       $this->_token = JSON_START_OBJ;
-                                       $this->_value = null;
-                                       $this->readAway();
-                                       return true;
-
-                               case '}':
-                                       $this->_location = array_pop($this->_lastLocation);
-                                       $this->_token = JSON_END_OBJ;
-                                       $this->_value = null;
-                                       $this->readAway();
-
-                                       if ($this->_location == JSON_IN_OBJECT)
-                                               $this->_needProp = true;
-
-                                       return true;
-
-                               // String
-                               case '"':
-                               case '\'':
-                                       return $this->_readString($chr);
-
-                               // Null
-                               case 'n':
-                                       return $this->_readNull();
-
-                               // Bool
-                               case 't':
-                               case 'f':
-                                       return $this->_readBool($chr);
-
-                               default:
-                                       // Is number
-                                       if (is_numeric($chr) || $chr == '-' || $chr == '.')
-                                               return $this->_readNumber($chr);
-
-                                       return true;
-                       }
-               }
-
-               return false;
-       }
-
-       function _readBool($chr) {
-               $this->_token = JSON_BOOL;
-               $this->_value = $chr == 't';
-
-               if ($chr == 't')
-                       $this->skip(3); // rue
-               else
-                       $this->skip(4); // alse
-
-               $this->readAway();
-
-               if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
-                       $this->_needProp = true;
-
-               return true;
-       }
-
-       function _readNull() {
-               $this->_token = JSON_NULL;
-               $this->_value = null;
-
-               $this->skip(3); // ull
-               $this->readAway();
-
-               if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
-                       $this->_needProp = true;
-
-               return true;
-       }
-
-       function _readString($quote) {
-               $output = "";
-               $this->_token = JSON_STR;
-               $endString = false;
-
-               while (($chr = $this->peek()) != -1) {
-                       switch ($chr) {
-                               case '\\':
-                                       // Read away slash
-                                       $this->read();
-
-                                       // Read escape code
-                                       $chr = $this->read();
-                                       switch ($chr) {
-                                                       case 't':
-                                                               $output .= "\t";
-                                                               break;
-
-                                                       case 'b':
-                                                               $output .= "\b";
-                                                               break;
-
-                                                       case 'f':
-                                                               $output .= "\f";
-                                                               break;
-
-                                                       case 'r':
-                                                               $output .= "\r";
-                                                               break;
-
-                                                       case 'n':
-                                                               $output .= "\n";
-                                                               break;
-
-                                                       case 'u':
-                                                               $output .= $this->_int2utf8(hexdec($this->read(4)));
-                                                               break;
-
-                                                       default:
-                                                               $output .= $chr;
-                                                               break;
-                                       }
-
-                                       break;
-
-                                       case '\'':
-                                       case '"':
-                                               if ($chr == $quote)
-                                                       $endString = true;
-
-                                               $chr = $this->read();
-                                               if ($chr != -1 && $chr != $quote)
-                                                       $output .= $chr;
-
-                                               break;
-
-                                       default:
-                                               $output .= $this->read();
-                       }
-
-                       // String terminated
-                       if ($endString)
-                               break;
-               }
-
-               $this->readAway();
-               $this->_value = $output;
-
-               // Needed a property
-               if ($this->_needProp) {
-                       $this->_token = JSON_KEY;
-                       $this->_needProp = false;
-                       return true;
-               }
-
-               if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
-                       $this->_needProp = true;
-
-               return true;
-       }
-
-       function _int2utf8($int) {
-               $int = intval($int);
-
-               switch ($int) {
-                       case 0:
-                               return chr(0);
-
-                       case ($int & 0x7F):
-                               return chr($int);
-
-                       case ($int & 0x7FF):
-                               return chr(0xC0 | (($int >> 6) & 0x1F)) . chr(0x80 | ($int & 0x3F));
-
-                       case ($int & 0xFFFF):
-                               return chr(0xE0 | (($int >> 12) & 0x0F)) . chr(0x80 | (($int >> 6) & 0x3F)) . chr (0x80 | ($int & 0x3F));
-
-                       case ($int & 0x1FFFFF):
-                               return chr(0xF0 | ($int >> 18)) . chr(0x80 | (($int >> 12) & 0x3F)) . chr(0x80 | (($int >> 6) & 0x3F)) . chr(0x80 | ($int & 0x3F));
-               }
-       }
-
-       function _readNumber($start) {
-               $value = "";
-               $isFloat = false;
-
-               $this->_token = JSON_INT;
-               $value .= $start;
-
-               while (($chr = $this->peek()) != -1) {
-                       if (is_numeric($chr) || $chr == '-' || $chr == '.') {
-                               if ($chr == '.')
-                                       $isFloat = true;
-
-                               $value .= $this->read();
-                       } else
-                               break;
-               }
-
-               $this->readAway();
-
-               if ($isFloat) {
-                       $this->_token = JSON_FLOAT;
-                       $this->_value = floatval($value);
-               } else
-                       $this->_value = intval($value);
-
-               if ($this->_location == JSON_IN_OBJECT && !$this->_needProp)
-                       $this->_needProp = true;
-
-               return true;
-       }
-
-       function readAway() {
-               while (($chr = $this->peek()) != null) {
-                       if ($chr != ':' && $chr != ',' && $chr != ' ')
-                               return;
-
-                       $this->read();
-               }
-       }
-
-       function read($len = 1) {
-               if ($this->_pos < $this->_len) {
-                       if ($len > 1) {
-                               $str = substr($this->_data, $this->_pos + 1, $len);
-                               $this->_pos += $len;
-
-                               return $str;
-                       } else
-                               return $this->_data[++$this->_pos];
-               }
-
-               return null;
-       }
-
-       function skip($len) {
-               $this->_pos += $len;
-       }
-
-       function peek() {
-               if ($this->_pos < $this->_len)
-                       return $this->_data[$this->_pos + 1];
-
-               return null;
-       }
-}
-
-/**
- * This class handles JSON stuff.
- *
- * @package MCManager.utils
- */
-class Moxiecode_JSON {
-       function Moxiecode_JSON() {
-       }
-
-       function decode($input) {
-               $reader = new Moxiecode_JSONReader($input);
-
-               return $this->readValue($reader);
-       }
-
-       function readValue(&$reader) {
-               $this->data = array();
-               $this->parents = array();
-               $this->cur =& $this->data;
-               $key = null;
-               $loc = JSON_IN_ARRAY;
-
-               while ($reader->readToken()) {
-                       switch ($reader->getToken()) {
-                               case JSON_STR:
-                               case JSON_INT:
-                               case JSON_BOOL:
-                               case JSON_FLOAT:
-                               case JSON_NULL:
-                                       switch ($reader->getLocation()) {
-                                               case JSON_IN_OBJECT:
-                                                       $this->cur[$key] = $reader->getValue();
-                                                       break;
-
-                                               case JSON_IN_ARRAY:
-                                                       $this->cur[] = $reader->getValue();
-                                                       break;
-
-                                               default:
-                                                       return $reader->getValue();
-                                       }
-                                       break;
-
-                               case JSON_KEY:
-                                       $key = $reader->getValue();
-                                       break;
-
-                               case JSON_START_OBJ:
-                               case JSON_START_ARRAY:
-                                       if ($loc == JSON_IN_OBJECT)
-                                               $this->addArray($key);
-                                       else
-                                               $this->addArray(null);
-
-                                       $cur =& $obj;
-
-                                       $loc = $reader->getLocation();
-                                       break;
-
-                               case JSON_END_OBJ:
-                               case JSON_END_ARRAY:
-                                       $loc = $reader->getLocation();
-
-                                       if (count($this->parents) > 0) {
-                                               $this->cur =& $this->parents[count($this->parents) - 1];
-                                               array_pop($this->parents);
-                                       }
-                                       break;
-                       }
-               }
-
-               return $this->data[0];
-       }
-
-       // This method was needed since PHP is crapy and doesn't have pointers/references
-       function addArray($key) {
-               $this->parents[] =& $this->cur;
-               $ar = array();
-
-               if ($key)
-                       $this->cur[$key] =& $ar;
-               else
-                       $this->cur[] =& $ar;
-
-               $this->cur =& $ar;
-       }
-
-       function getDelim($index, &$reader) {
-               switch ($reader->getLocation()) {
-                       case JSON_IN_ARRAY:
-                       case JSON_IN_OBJECT:
-                               if ($index > 0)
-                                       return ",";
-                               break;
-               }
-
-               return "";
-       }
-
-       function encode($input) {
-               switch (gettype($input)) {
-                       case 'boolean':
-                               return $input ? 'true' : 'false';
-
-                       case 'integer':
-                               return (int) $input;
-
-                       case 'float':
-                       case 'double':
-                               return (float) $input;
-
-                       case 'NULL':
-                               return 'null';
-
-                       case 'string':
-                               return $this->encodeString($input);
-
-                       case 'array':
-                               return $this->_encodeArray($input);
-
-                       case 'object':
-                               return $this->_encodeArray(get_object_vars($input));
-               }
-
-               return '';
-       }
-
-       function encodeString($input) {
-               // Needs to be escaped
-               if (preg_match('/[^a-zA-Z0-9]/', $input)) {
-                       $output = '';
-
-                       for ($i=0; $i<strlen($input); $i++) {
-                               switch ($input[$i]) {
-                                       case "\b":
-                                               $output .= "\\b";
-                                               break;
-
-                                       case "\t":
-                                               $output .= "\\t";
-                                               break;
-
-                                       case "\f":
-                                               $output .= "\\f";
-                                               break;
-
-                                       case "\r":
-                                               $output .= "\\r";
-                                               break;
-
-                                       case "\n":
-                                               $output .= "\\n";
-                                               break;
-
-                                       case '\\':
-                                               $output .= "\\\\";
-                                               break;
-
-                                       case '\'':
-                                               $output .= "\\'";
-                                               break;
-
-                                       case '"':
-                                               $output .= '\"';
-                                               break;
-
-                                       default:
-                                               $byte = ord($input[$i]);
-
-                                               if (($byte & 0xE0) == 0xC0) {
-                                                       $char = pack('C*', $byte, ord($input[$i + 1]));
-                                                       $i += 1;
-                                                       $output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
-                                               } if (($byte & 0xF0) == 0xE0) {
-                                                       $char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2]));
-                                                       $i += 2;
-                                                       $output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
-                                               } if (($byte & 0xF8) == 0xF0) {
-                                                       $char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2], ord($input[$i + 3])));
-                                                       $i += 3;
-                                                       $output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
-                                               } if (($byte & 0xFC) == 0xF8) {
-                                                       $char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2], ord($input[$i + 3]), ord($input[$i + 4])));
-                                                       $i += 4;
-                                                       $output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
-                                               } if (($byte & 0xFE) == 0xFC) {
-                                                       $char = pack('C*', $byte, ord($input[$i + 1]), ord($input[$i + 2], ord($input[$i + 3]), ord($input[$i + 4]), ord($input[$i + 5])));
-                                                       $i += 5;
-                                                       $output .= sprintf('\u%04s', bin2hex($this->_utf82utf16($char)));
-                                               } else if ($byte < 128)
-                                                       $output .= $input[$i];
-                               }
-                       }
-
-                       return '"' . $output . '"';
-               }
-
-               return '"' . $input . '"';
-       }
-
-       function _utf82utf16($utf8) {
-               if (function_exists('mb_convert_encoding'))
-                       return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
-
-               switch (strlen($utf8)) {
-                       case 1:
-                               return $utf8;
-
-                       case 2:
-                               return chr(0x07 & (ord($utf8[0]) >> 2)) . chr((0xC0 & (ord($utf8[0]) << 6)) | (0x3F & ord($utf8[1])));
-
-                       case 3:
-                               return chr((0xF0 & (ord($utf8[0]) << 4)) | (0x0F & (ord($utf8[1]) >> 2))) . chr((0xC0 & (ord($utf8[1]) << 6)) | (0x7F & ord($utf8[2])));
-               }
-
-               return '';
-       }
-
-       function _encodeArray($input) {
-               $output = '';
-               $isIndexed = true;
-
-               $keys = array_keys($input);
-               for ($i=0; $i<count($keys); $i++) {
-                       if (!is_int($keys[$i])) {
-                               $output .= $this->encodeString($keys[$i]) . ':' . $this->encode($input[$keys[$i]]);
-                               $isIndexed = false;
-                       } else
-                               $output .= $this->encode($input[$keys[$i]]);
-
-                       if ($i != count($keys) - 1)
-                               $output .= ',';
-               }
-
-               return $isIndexed ? '[' . $output . ']' : '{' . $output . '}';
-       }
-}
-
-?>
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/utils/Logger.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/classes/utils/Logger.php
deleted file mode 100644 (file)
index 46a1c15..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * @package MCFileManager.filesystems\r
- * @author Moxiecode\r
- * @copyright Copyright © 2005, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-// File type contstants\r
-define('MC_LOGGER_DEBUG', 0);\r
-define('MC_LOGGER_INFO', 10);\r
-define('MC_LOGGER_WARN', 20);\r
-define('MC_LOGGER_ERROR', 30);\r
-define('MC_LOGGER_FATAL', 40);\r
-\r
-/**\r
- * Logging utility class. This class handles basic logging with levels, log rotation and custom log formats. It's\r
- * designed to be compact but still powerful and flexible.\r
- */\r
-class Moxiecode_Logger {\r
-       // Private fields\r
-       var $_path;\r
-       var $_filename;\r
-       var $_maxSize;\r
-       var $_maxFiles;\r
-       var $_maxSizeBytes;\r
-       var $_level;\r
-       var $_format;\r
-\r
-       /**\r
-        * Constructs a new logger instance.\r
-        */\r
-       function Moxiecode_Logger() {\r
-               $this->_path = "";\r
-               $this->_filename = "{level}.log";\r
-               $this->setMaxSize("100k");\r
-               $this->_maxFiles = 10;\r
-               $this->_level = MC_LOGGER_DEBUG;\r
-               $this->_format = "[{time}] [{level}] {message}";\r
-       }\r
-\r
-       /**\r
-        * Sets the current log level, use the MC_LOGGER constants.\r
-        *\r
-        * @param int $level Log level instance for example MC_LOGGER_DEBUG.\r
-        */\r
-       function setLevel($level) {\r
-               if (is_string($level)) {\r
-                       switch (strtolower($level)) {\r
-                               case "debug":\r
-                                       $level = MC_LOGGER_DEBUG;\r
-                                       break;\r
-\r
-                               case "info":\r
-                                       $level = MC_LOGGER_INFO;\r
-                                       break;\r
-\r
-                               case "warn":\r
-                               case "warning":\r
-                                       $level = MC_LOGGER_WARN;\r
-                                       break;\r
-\r
-                               case "error":\r
-                                       $level = MC_LOGGER_ERROR;\r
-                                       break;\r
-\r
-                               case "fatal":\r
-                                       $level = MC_LOGGER_FATAL;\r
-                                       break;\r
-\r
-                               default:\r
-                                       $level = MC_LOGGER_FATAL;\r
-                       }\r
-               }\r
-\r
-               $this->_level = $level;\r
-       }\r
-\r
-       /**\r
-        * Returns the current log level for example MC_LOGGER_DEBUG.\r
-        *\r
-        * @return int Current log level for example MC_LOGGER_DEBUG.\r
-        */\r
-       function getLevel() {\r
-               return $this->_level;\r
-       }\r
-\r
-       function setPath($path) {\r
-               $this->_path = $path;\r
-       }\r
-\r
-       function getPath() {\r
-               return $this->_path;\r
-       }\r
-\r
-       function setFileName($file_name) {\r
-               $this->_filename = $file_name;\r
-       }\r
-\r
-       function getFileName() {\r
-               return $this->_filename;\r
-       }\r
-\r
-       function setFormat($format) {\r
-               $this->_format = $format;\r
-       }\r
-\r
-       function getFormat() {\r
-               return $this->_format;\r
-       }\r
-\r
-       function setMaxSize($size) {\r
-               // Fix log max size\r
-               $logMaxSizeBytes = intval(preg_replace("/[^0-9]/", "", $size));\r
-\r
-               // Is KB\r
-               if (strpos((strtolower($size)), "k") > 0)\r
-                       $logMaxSizeBytes *= 1024;\r
-\r
-               // Is MB\r
-               if (strpos((strtolower($size)), "m") > 0)\r
-                       $logMaxSizeBytes *= (1024 * 1024);\r
-\r
-               $this->_maxSizeBytes = $logMaxSizeBytes;\r
-               $this->_maxSize = $size;\r
-       }\r
-\r
-       function getMaxSize() {\r
-               return $this->_maxSize;\r
-       }\r
-\r
-       function setMaxFiles($max_files) {\r
-               $this->_maxFiles = $max_files;\r
-       }\r
-\r
-       function getMaxFiles() {\r
-               return $this->_maxFiles;\r
-       }\r
-\r
-       function debug($msg) {\r
-               $args = func_get_args();\r
-               $this->_logMsg(MC_LOGGER_DEBUG, implode(', ', $args));\r
-       }\r
-\r
-       function info($msg) {\r
-               $args = func_get_args();\r
-               $this->_logMsg(MC_LOGGER_INFO, implode(', ', $args));\r
-       }\r
-\r
-       function warn($msg) {\r
-               $args = func_get_args();\r
-               $this->_logMsg(MC_LOGGER_WARN, implode(', ', $args));\r
-       }\r
-\r
-       function error($msg) {\r
-               $args = func_get_args();\r
-               $this->_logMsg(MC_LOGGER_ERROR, implode(', ', $args));\r
-       }\r
-\r
-       function fatal($msg) {\r
-               $args = func_get_args();\r
-               $this->_logMsg(MC_LOGGER_FATAL, implode(', ', $args));\r
-       }\r
-\r
-       function isDebugEnabled() {\r
-               return $this->_level >= MC_LOGGER_DEBUG;\r
-       }\r
-\r
-       function isInfoEnabled() {\r
-               return $this->_level >= MC_LOGGER_INFO;\r
-       }\r
-\r
-       function isWarnEnabled() {\r
-               return $this->_level >= MC_LOGGER_WARN;\r
-       }\r
-\r
-       function isErrorEnabled() {\r
-               return $this->_level >= MC_LOGGER_ERROR;\r
-       }\r
-\r
-       function isFatalEnabled() {\r
-               return $this->_level >= MC_LOGGER_FATAL;\r
-       }\r
-\r
-       function _logMsg($level, $message) {\r
-               $roll = false;\r
-\r
-               if ($level < $this->_level)\r
-                       return;\r
-\r
-               $logFile = $this->toOSPath($this->_path . "/" . $this->_filename);\r
-\r
-               switch ($level) {\r
-                       case MC_LOGGER_DEBUG:\r
-                               $levelName = "DEBUG";\r
-                               break;\r
-\r
-                       case MC_LOGGER_INFO:\r
-                               $levelName = "INFO";\r
-                               break;\r
-\r
-                       case MC_LOGGER_WARN:\r
-                               $levelName = "WARN";\r
-                               break;\r
-\r
-                       case MC_LOGGER_ERROR:\r
-                               $levelName = "ERROR";\r
-                               break;\r
-\r
-                       case MC_LOGGER_FATAL:\r
-                               $levelName = "FATAL";\r
-                               break;\r
-               }\r
-\r
-               $logFile = str_replace('{level}', strtolower($levelName), $logFile);\r
-\r
-               $text = $this->_format;\r
-               $text = str_replace('{time}', date("Y-m-d H:i:s"), $text);\r
-               $text = str_replace('{level}', strtolower($levelName), $text);\r
-               $text = str_replace('{message}', $message, $text);\r
-               $message = $text . "\r\n";\r
-\r
-               // Check filesize\r
-               if (file_exists($logFile)) {\r
-                       $size = @filesize($logFile);\r
-\r
-                       if ($size + strlen($message) > $this->_maxSizeBytes)\r
-                               $roll = true;\r
-               }\r
-\r
-               // Roll if the size is right\r
-               if ($roll) {\r
-                       for ($i=$this->_maxFiles-1; $i>=1; $i--) {\r
-                               $rfile = $this->toOSPath($logFile . "." . $i);\r
-                               $nfile = $this->toOSPath($logFile . "." . ($i+1));\r
-\r
-                               if (@file_exists($rfile))\r
-                                       @rename($rfile, $nfile);\r
-                       }\r
-\r
-                       @rename($logFile, $this->toOSPath($logFile . ".1"));\r
-\r
-                       // Delete last logfile\r
-                       $delfile = $this->toOSPath($logFile . "." . ($this->_maxFiles + 1));\r
-                       if (@file_exists($delfile))\r
-                               @unlink($delfile);\r
-               }\r
-\r
-               // Append log line\r
-               if (($fp = @fopen($logFile, "a")) != null) {\r
-                       @fputs($fp, $message);\r
-                       @fflush($fp);\r
-                       @fclose($fp);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Converts a Unix path to OS specific path.\r
-        *\r
-        * @param String $path Unix path to convert.\r
-        */\r
-       function toOSPath($path) {\r
-               return str_replace("/", DIRECTORY_SEPARATOR, $path);\r
-       }\r
-}\r
-\r
-?>
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/config.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/config.php
deleted file mode 100644 (file)
index 5097cfd..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php\r
-\r
-    die('TODO implement moodle integration using CFG->aspell see MDL-16639');\r
-\r
-       // General settings\r
-       $config['general.engine'] = 'GoogleSpell';\r
-       //$config['general.engine'] = 'PSpell';\r
-       //$config['general.engine'] = 'PSpellShell';\r
-       //$config['general.remote_rpc_url'] = 'http://some.other.site/some/url/rpc.php';\r
-\r
-       // PSpell settings\r
-       $config['PSpell.mode'] = PSPELL_FAST;\r
-       $config['PSpell.spelling'] = "";\r
-       $config['PSpell.jargon'] = "";\r
-       $config['PSpell.encoding'] = "";\r
-\r
-       // PSpellShell settings\r
-       $config['PSpellShell.mode'] = PSPELL_FAST;\r
-       $config['PSpellShell.aspell'] = '/usr/bin/aspell';\r
-       $config['PSpellShell.tmp'] = '/tmp';\r
-\r
-       // Windows PSpellShell settings\r
-       //$config['PSpellShell.aspell'] = '"c:\Program Files\Aspell\bin\aspell.exe"';\r
-       //$config['PSpellShell.tmp'] = 'c:/temp';\r
-?>\r
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js
deleted file mode 100644 (file)
index 9cb6799..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif
deleted file mode 100644 (file)
index 1735e00..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/includes/general.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/includes/general.php
deleted file mode 100644 (file)
index 9a12145..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * general.php
- *
- * @package MCManager.includes
- * @author Moxiecode
- * @copyright Copyright © 2007, Moxiecode Systems AB, All rights reserved.
- */
-
-@error_reporting(E_ALL ^ E_NOTICE);
-$config = array();
-
-require_once(dirname(__FILE__) . "/../classes/utils/Logger.php");
-require_once(dirname(__FILE__) . "/../classes/utils/JSON.php");
-require_once(dirname(__FILE__) . "/../config.php");
-require_once(dirname(__FILE__) . "/../classes/SpellChecker.php");
-
-if (isset($config['general.engine']))
-       require_once(dirname(__FILE__) . "/../classes/" . $config["general.engine"] . ".php");
-
-/**
- * Returns an request value by name without magic quoting.
- *
- * @param String $name Name of parameter to get.
- * @param String $default_value Default value to return if value not found.
- * @return String request value by name without magic quoting or default value.
- */
-function getRequestParam($name, $default_value = false, $sanitize = false) {
-       if (!isset($_REQUEST[$name]))
-               return $default_value;
-
-       if (is_array($_REQUEST[$name])) {
-               $newarray = array();
-
-               foreach ($_REQUEST[$name] as $name => $value)
-                       $newarray[formatParam($name, $sanitize)] = formatParam($value, $sanitize);
-
-               return $newarray;
-       }
-
-       return formatParam($_REQUEST[$name], $sanitize);
-}
-
-function &getLogger() {
-       global $mcLogger, $man;
-
-       if (isset($man))
-               $mcLogger = $man->getLogger();
-
-       if (!$mcLogger) {
-               $mcLogger = new Moxiecode_Logger();
-
-               // Set logger options
-               $mcLogger->setPath(dirname(__FILE__) . "/../logs");
-               $mcLogger->setMaxSize("100kb");
-               $mcLogger->setMaxFiles("10");
-               $mcLogger->setFormat("{time} - {message}");
-       }
-
-       return $mcLogger;
-}
-
-function debug($msg) {
-       $args = func_get_args();
-
-       $log = getLogger();
-       $log->debug(implode(', ', $args));
-}
-
-function info($msg) {
-       $args = func_get_args();
-
-       $log = getLogger();
-       $log->info(implode(', ', $args));
-}
-
-function error($msg) {
-       $args = func_get_args();
-
-       $log = getLogger();
-       $log->error(implode(', ', $args));
-}
-
-function warn($msg) {
-       $args = func_get_args();
-
-       $log = getLogger();
-       $log->warn(implode(', ', $args));
-}
-
-function fatal($msg) {
-       $args = func_get_args();
-
-       $log = getLogger();
-       $log->fatal(implode(', ', $args));
-}
-
-?>
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/rpc.php b/lib/editor/tinymce/jscripts/tiny_mce/plugins/spellchecker/rpc.php
deleted file mode 100644 (file)
index cc8d0f2..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php\r
-/**\r
- * $Id$\r
- *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.\r
- */\r
-\r
-require_once("./includes/general.php");\r
-\r
-// Set RPC response headers\r
-header('Content-Type: text/plain');\r
-header('Content-Encoding: UTF-8');\r
-header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");\r
-header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");\r
-header("Cache-Control: no-store, no-cache, must-revalidate");\r
-header("Cache-Control: post-check=0, pre-check=0", false);\r
-header("Pragma: no-cache");\r
-\r
-$raw = "";\r
-\r
-// Try param\r
-if (isset($_POST["json_data"]))\r
-       $raw = getRequestParam("json_data");\r
-\r
-// Try globals array\r
-if (!$raw && isset($_GLOBALS) && isset($_GLOBALS["HTTP_RAW_POST_DATA"]))\r
-       $raw = $_GLOBALS["HTTP_RAW_POST_DATA"];\r
-\r
-// Try globals variable\r
-if (!$raw && isset($HTTP_RAW_POST_DATA))\r
-       $raw = $HTTP_RAW_POST_DATA;\r
-\r
-// Try stream\r
-if (!$raw) {\r
-       if (!function_exists('file_get_contents')) {\r
-               $fp = fopen("php://input", "r");\r
-               if ($fp) {\r
-                       $raw = "";\r
-\r
-                       while (!feof($fp))\r
-                               $raw = fread($fp, 1024);\r
-\r
-                       fclose($fp);\r
-               }\r
-       } else\r
-               $raw = "" . file_get_contents("php://input");\r
-}\r
-\r
-// No input data\r
-if (!$raw)\r
-       die('{"result":null,"id":null,"error":{"errstr":"Could not get raw post data.","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}');\r
-\r
-// Passthrough request to remote server\r
-if (isset($config['general.remote_rpc_url'])) {\r
-       $url = parse_url($config['general.remote_rpc_url']);\r
-\r
-       // Setup request\r
-       $req = "POST " . $url["path"] . " HTTP/1.0\r\n";\r
-       $req .= "Connection: close\r\n";\r
-       $req .= "Host: " . $url['host'] . "\r\n";\r
-       $req .= "Content-Length: " . strlen($raw) . "\r\n";\r
-       $req .= "\r\n" . $raw;\r
-\r
-       if (!isset($url['port']) || !$url['port'])\r
-               $url['port'] = 80;\r
-\r
-       $errno = $errstr = "";\r
-\r
-       $socket = fsockopen($url['host'], intval($url['port']), $errno, $errstr, 30);\r
-       if ($socket) {\r
-               // Send request headers\r
-               fputs($socket, $req);\r
-\r
-               // Read response headers and data\r
-               $resp = "";\r
-               while (!feof($socket))\r
-                               $resp .= fgets($socket, 4096);\r
-\r
-               fclose($socket);\r
-\r
-               // Split response header/data\r
-               $resp = explode("\r\n\r\n", $resp);\r
-               echo $resp[1]; // Output body\r
-       }\r
-\r
-       die();\r
-}\r
-\r
-// Get JSON data\r
-$json = new Moxiecode_JSON();\r
-$input = $json->decode($raw);\r
-\r
-// Execute RPC\r
-if (isset($config['general.engine'])) {\r
-       $spellchecker = new $config['general.engine']($config);\r
-       $result = call_user_func_array(array($spellchecker, $input['method']), $input['params']);\r
-} else\r
-       die('{"result":null,"id":null,"error":{"errstr":"You must choose an spellchecker engine in the config.php file.","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}');\r
-\r
-// Request and response id should always be the same\r
-$output = array(\r
-       "id" => $input->id,\r
-       "result" => $result,\r
-       "error" => null\r
-);\r
-\r
-// Return JSON encoded string\r
-echo $json->encode($output);\r
-\r
-?>
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js
deleted file mode 100644 (file)
index 6ebaa91..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js
deleted file mode 100644 (file)
index a7ef113..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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(inst.dom.getParent(tableElm,"table"));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(inst.dom.getParent(tableElm,"table"));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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js
deleted file mode 100644 (file)
index 0f7fb01..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js
deleted file mode 100644 (file)
index e1e4238..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
deleted file mode 100644 (file)
index 00c178e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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');cm.setActive('cite',0);cm.setActive('acronym',0);cm.setActive('abbr',0);cm.setActive('del',0);cm.setActive('ins',0);if(n){do{cm.setDisabled(n.nodeName.toLowerCase(),0);cm.setActive(n.nodeName.toLowerCase(),1);}while(n=n.parentNode);}});},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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js
deleted file mode 100644 (file)
index 045a81b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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',{sizes:[8,10,12,14,18,24,36],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,o;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_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:ed.settings.readonly},ed.settings);if(!s.font_size_style_values)s.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt";if(tinymce.is(s.theme_advanced_font_sizes,'string')){s.font_size_style_values=tinymce.explode(s.font_size_style_values);s.font_size_classes=tinymce.explode(s.font_size_classes||'');o={};ed.settings.theme_advanced_font_sizes=s.theme_advanced_font_sizes;each(ed.getParam('theme_advanced_font_sizes','','hash'),function(v,k){var cl;if(k==v&&v>=1&&v<=7){k=v+' ('+t.sizes[v-1]+'pt)';if(ed.settings.convert_fonts_to_spans){cl=s.font_size_classes[v-1];v=s.font_size_style_values[v-1]||(t.sizes[v-1]+'pt');}}if(/\s*\./.test(v))cl=v.replace(/\./g,'');o[k]=cl?{'class':cl}:{fontSize:v};});s.theme_advanced_font_sizes=o;}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(s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):url+"/skins/"+ed.settings.skin+"/ui.css");if(s.skin_variant)DOM.loadCSS(url+"/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){if(!c.NativeListBox){Event.add(n.id+'_text','focus',t._importClasses,t);Event.add(n.id+'_text','mousedown',t._importClasses,t);Event.add(n.id+'_open','focus',t._importClasses,t);Event.add(n.id+'_open','mousedown',t._importClasses,t);}else Event.add(n.id,'focus',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,i=0,cl=[];c=ed.controlManager.createListBox('fontsizeselect',{title:'advanced.font_size',onselect:function(v){if(v.fontSize)ed.execCommand('FontSize',false,v.fontSize);else{each(t.settings.theme_advanced_font_sizes,function(v,k){if(v['class'])cl.push(v['class']);});ed.editorCommands._applyInlineStyle('span',{'class':v['class']},{check_classes:cl});}}});if(c){each(t.settings.theme_advanced_font_sizes,function(v,k){var fz=v.fontSize;if(fz>=1&&fz<=7)fz=t.sizes[parseInt(fz)-1]+'pt';c.add(k,v,{'style':'font-size:'+fz,'class':'mceFontSize'+(i++)+(' '+(v['class']||''))});});}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(s.readonly){n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});return ic;}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,cl,fz,fn;if(s.readonly)return;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(ed.settings.convert_fonts_to_spans){ed.dom.getParent(n,function(n){if(n.nodeName==='SPAN'){if(!cl&&n.className)cl=n.className;if(!fz&&n.style.fontSize)fz=n.style.fontSize;if(!fn&&n.style.fontFamily)fn=n.style.fontFamily.replace(/[\"\']+/g,'').replace(/^([^,]+).*/,'$1').toLowerCase();}return false;});if(c=cm.get('fontselect')){c.select(function(v){return v.replace(/^([^,]+).*/,'$1').toLowerCase()==fn;});}if(c=cm.get('fontsizeselect')){c.select(function(v){if(v.fontSize&&v.fontSize===fz)return true;if(v['class']&&v['class']===cl)return true;});}}else{if(c=cm.get('fontselect'))c.select(ed.queryCommandValue('FontName'));if(c=cm.get('fontsizeselect')){v=ed.queryCommandValue('FontSize');c.select(function(iv){return iv.fontSize==v;});}}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||n.nodeName==='BR'||(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);}());
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg
deleted file mode 100644 (file)
index d7f6624..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif
deleted file mode 100644 (file)
index d2f9367..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
deleted file mode 100644 (file)
index 02ac86c..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
deleted file mode 100644 (file)
index cc8e669..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
deleted file mode 100644 (file)
index 6358163..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
deleted file mode 100644 (file)
index 80d8751..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
deleted file mode 100644 (file)
index 13a5cb0..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
deleted file mode 100644 (file)
index dd7557b..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
deleted file mode 100644 (file)
index 980300b..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js b/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js
deleted file mode 100644 (file)
index d19fb53..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(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.documentBaseURI.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);})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif b/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif
deleted file mode 100644 (file)
index 5df22db..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png b/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
deleted file mode 100644 (file)
index 66e7d53..0000000
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png and /dev/null differ
diff --git a/lib/editor/tinymce/jscripts/tiny_mce/tiny_mce.js b/lib/editor/tinymce/jscripts/tiny_mce/tiny_mce.js
deleted file mode 100644 (file)
index e5407fb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-var tinymce={majorVersion:"3",minorVersion:"2.0.1",releaseDate:"2008-09-17",_init:function(){var L=this,I=document,J=window,H=navigator,B=H.userAgent,G,A,F,E,D,K;L.isOpera=J.opera&&opera.buildNumber;L.isWebKit=/WebKit/.test(B);L.isOldWebKit=L.isWebKit&&!J.getSelection().getRangeAt;L.isIE=!L.isWebKit&&!L.isOpera&&(/MSIE/gi).test(B)&&(/Explorer/gi).test(H.appName);L.isIE6=L.isIE&&/MSIE [56]/.test(B);L.isGecko=!L.isWebKit&&/Gecko/.test(B);L.isMac=B.indexOf("Mac")!=-1;L.isAir=/adobeair/i.test(B);if(J.tinyMCEPreInit){L.suffix=tinyMCEPreInit.suffix;L.baseURL=tinyMCEPreInit.base;L.query=tinyMCEPreInit.query;return }L.suffix="";A=I.getElementsByTagName("base");for(G=0;G<A.length;G++){if(K=A[G].href){if(/^https?:\/\/[^\/]+$/.test(K)){K+="/"}E=K?K.match(/.*\//)[0]:""}}function C(M){if(M.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(M.src)){if(/_(src|dev)\.js/g.test(M.src)){L.suffix="_src"}if((D=M.src.indexOf("?"))!=-1){L.query=M.src.substring(D+1)}L.baseURL=M.src.substring(0,M.src.lastIndexOf("/"));if(E&&L.baseURL.indexOf("://")==-1){L.baseURL=E+L.baseURL}return L.baseURL}return null}A=I.getElementsByTagName("script");for(G=0;G<A.length;G++){if(C(A[G])){return }}F=I.getElementsByTagName("head")[0];if(F){A=F.getElementsByTagName("script");for(G=0;G<A.length;G++){if(C(A[G])){return }}}return },is:function(B,A){var C=typeof (B);if(!A){return C!="undefined"}if(A=="array"&&(B instanceof Array)){return true}return C==A},each:function(D,A,C){var E,B;if(!D){return 0}C=C||D;if(typeof (D.length)!="undefined"){for(E=0,B=D.length;E<B;E++){if(A.call(C,D[E],E,D)===false){return 0}}}else{for(E in D){if(D.hasOwnProperty(E)){if(A.call(C,D[E],E,D)===false){return 0}}}}return 1},map:function(A,B){var C=[];tinymce.each(A,function(D){C.push(B(D))});return C},grep:function(A,B){var C=[];tinymce.each(A,function(D){if(!B||B(D)){C.push(D)}});return C},inArray:function(B,C){var D,A;if(B){for(D=0,A=B.length;D<A;D++){if(B[D]===C){return D}}}return -1},extend:function(D,C){var B,A=arguments;for(B=1;B<A.length;B++){C=A[B];tinymce.each(C,function(E,F){if(typeof (E)!=="undefined"){D[F]=E}})}return D},trim:function(A){return(A?""+A:"").replace(/^\s*|\s*$/g,"")},create:function(I,A){var H=this,B,D,E,F,C,G=0;I=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(I);E=I[3].match(/(^|\.)(\w+)$/i)[2];D=H.createNS(I[3].replace(/\.\w+$/,""));if(D[E]){return }if(I[2]=="static"){D[E]=A;if(this.onCreate){this.onCreate(I[2],I[3],D[E])}return }if(!A[E]){A[E]=function(){};G=1}D[E]=A[E];H.extend(D[E].prototype,A);if(I[5]){B=H.resolve(I[5]).prototype;F=I[5].match(/\.(\w+)$/i)[1];C=D[E];if(G){D[E]=function(){return B[F].apply(this,arguments)}}else{D[E]=function(){this.parent=B[F];return C.apply(this,arguments)}}D[E].prototype[E]=D[E];H.each(B,function(J,K){D[E].prototype[K]=B[K]});H.each(A,function(J,K){if(B[K]){D[E].prototype[K]=function(){this.parent=B[K];return J.apply(this,arguments)}}else{if(K!=E){D[E].prototype[K]=J}}})}H.each(A["static"],function(J,K){D[E][K]=J});if(this.onCreate){this.onCreate(I[2],I[3],D[E].prototype)}},walk:function(C,B,D,A){A=A||this;if(C){if(D){C=C[D]}tinymce.each(C,function(F,E){if(B.call(A,F,E,D)===false){return false}tinymce.walk(F,B,D,A)})}},createNS:function(D,C){var B,A;C=C||window;D=D.split(".");for(B=0;B<D.length;B++){A=D[B];if(!C[A]){C[A]={}}C=C[A]}return C},resolve:function(D,C){var B,A;C=C||window;D=D.split(".");for(B=0,A=D.length;B<A;B++){C=C[D[B]];if(!C){break}}return C},addUnload:function(E,D){var C=this,A=window;E={func:E,scope:D||this};if(!C.unloads){function B(){var G=C.unloads,H,I;if(G){for(I in G){H=G[I];if(H&&H.func){H.func.call(H.scope,1)}}if(A.detachEvent){A.detachEvent("onbeforeunload",F);A.detachEvent("onunload",B)}else{if(A.removeEventListener){A.removeEventListener("unload",B,false)}}C.unloads=H=G=A=B=null;if(window.CollectGarbage){window.CollectGarbage()}}}function F(){var H=document;if(H.readyState=="interactive"){function G(){H.detachEvent("onstop",G);B();H=null}H.attachEvent("onstop",G);window.setTimeout(function(){H.detachEvent("onstop",G)},0)}}if(A.attachEvent){A.attachEvent("onunload",B);A.attachEvent("onbeforeunload",F)}else{if(A.addEventListener){A.addEventListener("unload",B,false)}}C.unloads=[E]}else{C.unloads.push(E)}return E},removeUnload:function(C){var A=this.unloads,B=null;tinymce.each(A,function(E,D){if(E&&E.func==C){A.splice(D,1);B=C;return false}});return B},explode:function(A,B){return A?tinymce.map(A.split(B||","),tinymce.trim):A},_addVer:function(B){var A;if(!this.query){return B}A=(B.indexOf("?")==-1?"?":"&")+this.query;if(B.indexOf("#")==-1){return B+A}return B.replace("#",A+"#")}};window.tinymce=tinymce;tinymce._init();tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(A){this.scope=A||this;this.listeners=[]},add:function(A,B){this.listeners.push({cb:A,scope:B||this.scope});return A},addToTop:function(A,B){this.listeners.unshift({cb:A,scope:B||this.scope});return A},remove:function(A){var B=this.listeners,C=null;tinymce.each(B,function(E,D){if(A==E.cb){C=A;B.splice(D,1);return false}});return C},dispatch:function(){var D,B=arguments,C,A=this.listeners,E;for(C=0;C<A.length;C++){E=A[C];D=E.cb.apply(E.scope,B);if(D===false){break}}return D}});(function(){var A=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(D,F){var E=this,G,C,B;F=E.settings=F||{};if(/^(mailto|news|javascript|about):/i.test(D)||/^\s*#/.test(D)){E.source=D;return }if(D.indexOf("/")===0&&D.indexOf("//")!==0){D=(F.base_uri?F.base_uri.protocol||"http":"http")+"://mce_host"+D}if(D.indexOf(":/")===-1&&D.indexOf("//")!==0){D=(F.base_uri.protocol||"http")+"://mce_host"+E.toAbsPath(F.base_uri.path,D)}D=D.replace(/@@/g,"(mce_at)");D=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(D);A(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(H,I){var J=D[I];if(J){J=J.replace(/\(mce_at\)/g,"@@")}E[H]=J});if(B=F.base_uri){if(!E.protocol){E.protocol=B.protocol}if(!E.userInfo){E.userInfo=B.userInfo}if(!E.port&&E.host=="mce_host"){E.port=B.port}if(!E.host||E.host=="mce_host"){E.host=B.host}E.source=""}},setPath:function(C){var B=this;C=/^(.*?)\/?(\w+)?$/.exec(C);B.path=C[0];B.directory=C[1];B.file=C[2];B.source="";B.getURI()},toRelative:function(B){var C=this,D;if(B==="./"){return B}B=new tinymce.util.URI(B,{base_uri:C});if((B.host!="mce_host"&&C.host!=B.host&&B.host)||C.port!=B.port||C.protocol!=B.protocol){return B.getURI()}D=C.toRelPath(C.path,B.path);if(B.query){D+="?"+B.query}if(B.anchor){D+="#"+B.anchor}return D},toAbsolute:function(B,C){var B=new tinymce.util.URI(B,{base_uri:this});return B.getURI(this.host==B.host?C:0)},toRelPath:function(G,H){var C,F=0,D="",E,B;G=G.substring(0,G.lastIndexOf("/"));G=G.split("/");C=H.split("/");if(G.length>=C.length){for(E=0,B=G.length;E<B;E++){if(E>=C.length||G[E]!=C[E]){F=E+1;break}}}if(G.length<C.length){for(E=0,B=C.length;E<B;E++){if(E>=G.length||G[E]!=C[E]){F=E+1;break}}}if(F==1){return H}for(E=0,B=G.length-(F-1);E<B;E++){D+="../"}for(E=F-1,B=C.length;E<B;E++){if(E!=F-1){D+="/"+C[E]}else{D+=C[E]}}return D},toAbsPath:function(D,E){var C,B=0,F=[];D=D.split("/");E=E.split("/");A(D,function(G){if(G){F.push(G)}});D=F;for(C=E.length-1,F=[];C>=0;C--){if(E[C].length==0||E[C]=="."){continue}if(E[C]==".."){B++;continue}if(B>0){B--;continue}F.push(E[C])}C=D.length-B;if(C<=0){return"/"+F.reverse().join("/")}return"/"+D.slice(0,C).join("/")+"/"+F.reverse().join("/")},getURI:function(D){var C,B=this;if(!B.source||D){C="";if(!D){if(B.protocol){C+=B.protocol+"://"}if(B.userInfo){C+=B.userInfo+"@"}if(B.host){C+=B.host}if(B.port){C+=":"+B.port}}if(B.path){C+=B.path}if(B.query){C+="?"+B.query}if(B.anchor){C+="#"+B.anchor}B.source=C}return B.source}})})();(function(){var A=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(D){var B=this.get(D),C;if(B){A(B.split("&"),function(E){E=E.split("=");C=C||{};C[unescape(E[0])]=unescape(E[1])})}return C},setHash:function(H,B,E,D,G,C){var F="";A(B,function(J,I){F+=(!F?"":"&")+escape(I)+"="+escape(J)});this.set(H,F,E,D,G,C)},get:function(F){var E=document.cookie,D,C=F+"=",B;if(!E){return }B=E.indexOf("; "+C);if(B==-1){B=E.indexOf(C);if(B!=0){return null}}else{B+=2}D=E.indexOf(";",B);if(D==-1){D=E.length}return unescape(E.substring(B+C.length,D))},set:function(G,B,E,D,F,C){document.cookie=G+"="+escape(B)+((E)?"; expires="+E.toGMTString():"")+((D)?"; path="+escape(D):"")+((F)?"; domain="+F:"")+((C)?"; secure":"")},remove:function(D,B){var C=new Date();C.setTime(C.getTime()-1000);this.set(D,"",C,B,C)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(E){var C,A,D=tinymce.util.JSON.serialize,B;if(E==null){return"null"}B=typeof E;if(B=="string"){A="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+E.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(G,F){C=A.indexOf(F);if(C+1){return"\\"+A.charAt(C+1)}G=F.charCodeAt().toString(16);return"\\u"+"0000".substring(G.length)+G})+'"'}if(B=="object"){if(E instanceof Array){for(C=0,A="[";C<E.length;C++){A+=(C>0?",":"")+D(E[C])}return A+"]"}A="{";for(C in E){A+=typeof E[C]!="function"?(A.length>1?',"':'"')+C+'":'+D(E[C]):""}return A+"}"}return""+E},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(F){var A,D,B=window,G=0;F.scope=F.scope||this;F.success_scope=F.success_scope||F.scope;F.error_scope=F.error_scope||F.scope;F.async=F.async===false?false:true;F.data=F.data||"";function C(I){A=0;try{A=new ActiveXObject(I)}catch(H){}return A}A=B.XMLHttpRequest?new XMLHttpRequest():C("Microsoft.XMLHTTP")||C("Msxml2.XMLHTTP");if(A){if(A.overrideMimeType){A.overrideMimeType(F.content_type)}A.open(F.type||(F.data?"POST":"GET"),F.url,F.async);if(F.content_type){A.setRequestHeader("Content-Type",F.content_type)}A.send(F.data);function E(){if(!F.async||A.readyState==4||G++>10000){if(F.success&&G<10000&&A.status==200){F.success.call(F.success_scope,""+A.responseText,A,F)}else{if(F.error){F.error.call(F.error_scope,G>10000?"TIMED_OUT":"GENERAL",A,F)}}A=null}else{B.setTimeout(E,10)}}if(!F.async){return E()}D=B.setTimeout(E,10)}}});(function(){var C=tinymce.extend,B=tinymce.util.JSON,A=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(D){this.settings=C({},D);this.count=0},send:function(F){var E=F.error,D=F.success;F=C(this.settings,F);F.success=function(H,G){H=B.parse(H);if(typeof (H)=="undefined"){H={error:"JSON Parse error."}}if(H.error){E.call(F.error_scope||F.scope,H.error,G)}else{D.call(F.success_scope||F.scope,H.result)}};F.error=function(H,G){E.call(F.error_scope||F.scope,H,G)};F.data=B.serialize({id:F.id||"c"+(this.count++),method:F.method,params:F.params});F.content_type="application/json";A.send(F)},"static":{sendRPC:function(D){return new tinymce.util.JSONRequest().send(D)}}})}());(function(){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_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value"},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,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h}},getSize:function(e){var t=this,w,h;e=t.get(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{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,xp;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.selectorRe){t.selectorRe=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i}if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp="";each(v.split(" "),function(v){v=t.selectorRe.exec(v);xp+=v[1]?"//"+v[1]:"//*";if(v[2]){xp+="[@id='"+v[2]+"']"}if(v[3]){each(v[3].split("."),function(n){xp+="[@class = '"+n+"' or contains(concat(' ', @class, ' '), ' "+n+" ')]"})}});t.cache[v]=xp}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext()){o.push(n)}});return o}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=t.selectorRe.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;t.setAttribs(e,a);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(!e||!n){return }if(t.settings.strict){n=n.toLowerCase()}return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(!is(v,"string")){each(v,function(v,n){t.setStyle(e,n,v)});return }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;case"shape":e.setAttribute("mce_style",v);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|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v){return v}}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v}if(!v){v=e.getAttribute(n,2)}if(n==="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)}}}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===20){v=""}break;case"width":case"height":case"vspace":if(v===0){v=""}break;case"hspace":if(v===-1){v=""}break;case"maxlength":case"tabindex":if(v===32768||v===2147483647){v=""}break;case"compact":case"noshade":if(v===65535){return n}return dv;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!==undefined&&v!==null&&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]}st=st.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");each(st.split(";"),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,";");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("+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){if(tinymce.isGecko&&k.indexOf("-moz-")===0){return }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){h=h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,"<!--[CDATA[$1]]-->");if(/<script|style/.test(h)){function trim(s){s=s.replace(/^[\r\n]*|[\r\n]*$/g,"");s=s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<\[CDATA\[|<!--|<\[CDATA\[)[\r\n]*/g,"");s=s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->)\s*$/g,"");return s}h=h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a){a=' type="text/javascript"'}if(b){b="<!--\n"+b+"\n// -->"}return"<mce:script"+a+">"+b+"</mce:script>"});h=h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return"<mce:style"+a+"><!--\n"+b+"\n--></mce:style><style"+a+' mce_bogus="1">'+b+"</style>"})}h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|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"&&b!="shape"){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|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\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|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.get(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 E=tinymce.each,C=tinymce.DOM,B=tinymce.isIE,D=tinymce.isWebKit,A;tinymce.create("static tinymce.dom.Event",{inits:[],events:[],add:function(L,M,K,I){var F,G=this,H=G.events,J;if(L&&L instanceof Array){J=[];E(L,function(N){N=C.get(N);J.push(G.add(N,M,K,I))});return J}L=C.get(L);if(!L){return }F=function(N){N=N||window.event;if(N&&!N.target&&B){N.target=N.srcElement}if(!I){return K(N)}return K.call(I,N)};if(M=="unload"){tinymce.unloads.unshift({func:F});return F}if(M=="init"){if(G.domLoaded){F()}else{G.inits.push(F)}return F}H.push({obj:L,name:M,func:K,cfunc:F,scope:I});G._add(L,M,F);return K},remove:function(K,L,J){var G=this,F=G.events,H=false,I;if(K&&K instanceof Array){I=[];E(K,function(M){M=C.get(M);I.push(G.remove(M,L,J))});return I}K=C.get(K);E(F,function(N,M){if(N.obj==K&&N.name==L&&(!J||(N.func==J||N.cfunc==J))){F.splice(M,1);G._remove(K,L,N.cfunc);H=true;return false}});return H},clear:function(J){var H=this,F=H.events,G,I;if(J){J=C.get(J);for(G=F.length-1;G>=0;G--){I=F[G];if(I.obj===J){H._remove(I.obj,I.name,I.cfunc);I.obj=I.cfunc=null;F.splice(G,1)}}}},cancel:function(F){if(!F){return false}this.stop(F);return this.prevent(F)},stop:function(F){if(F.stopPropagation){F.stopPropagation()}else{F.cancelBubble=true}return false},prevent:function(F){if(F.preventDefault){F.preventDefault()}else{F.returnValue=false}return false},_unload:function(){var F=A;E(F.events,function(H,G){F._remove(H.obj,H.name,H.cfunc);H.obj=H.cfunc=null});F.events=[];F=null},_add:function(G,H,F){if(G.attachEvent){G.attachEvent("on"+H,F)}else{if(G.addEventListener){G.addEventListener(H,F,false)}else{G["on"+H]=F}}},_remove:function(H,I,G){if(H){try{if(H.detachEvent){H.detachEvent("on"+I,G)}else{if(H.removeEventListener){H.removeEventListener(I,G,false)}else{H["on"+I]=null}}}catch(F){}}},_pageInit:function(){var F=A;F._remove(window,"DOMContentLoaded",F._pageInit);F.domLoaded=true;E(F.inits,function(G){G()});F.inits=[]},_wait:function(){var F;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){A.domLoaded=1;return }if(B&&document.location.protocol!="https:"){document.write("<script id=__ie_onload defer src='javascript:\"\"';><\/script>");C.get("__ie_onload").onreadystatechange=function(){if(this.readyState=="complete"){A._pageInit();C.get("__ie_onload").onreadystatechange=null}}}else{A._add(window,"DOMContentLoaded",A._pageInit,A);if(B||D){F=setInterval(function(){if(/loaded|complete/.test(document.readyState)){clearInterval(F);A._pageInit()}},10)}}}});A=tinymce.dom.Event;A._wait();tinymce.addUnload(A._unload)})();(function(){var A=tinymce.each;tinymce.create("tinymce.dom.Element",{Element:function(F,D){var B=this,E,C;D=D||{};B.id=F;B.dom=E=D.dom||tinymce.DOM;B.settings=D;if(!tinymce.isIE){C=B.dom.get(B.id)}A(["getPos","getRect","getParent","add","setStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","addClass","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","show","hide","isHidden","setHTML","get"],function(G){B[G]=function(){var H=arguments,I;if(tinymce.isOpera){H=[F];A(arguments,function(J){H.push(J)})}else{Array.prototype.unshift.call(H,C||F)}I=E[G].apply(E,H);B.update(G);return I}})},on:function(D,C,B){return tinymce.dom.Event.add(this.id,D,C,B)},getXY:function(){return{x:parseInt(this.getStyle("left")),y:parseInt(this.getStyle("top"))}},getSize:function(){var B=this.dom.get(this.id);return{w:parseInt(this.getStyle("width")||B.clientWidth),h:parseInt(this.getStyle("height")||B.clientHeight)}},moveTo:function(B,C){this.setStyles({left:B,top:C})},moveBy:function(B,D){var C=this.getXY();this.moveTo(C.x+B,C.y+D)},resizeTo:function(B,C){this.setStyles({width:B,height:C})},resizeBy:function(B,D){var C=this.getSize();this.resizeTo(C.w+B,C.h+D)},update:function(C){var D=this,B,E=D.dom;if(tinymce.isIE6&&D.settings.blocker){C=C||"";if(C.indexOf("get")===0||C.indexOf("has")===0||C.indexOf("is")===0){return }if(C=="remove"){E.remove(D.blocker);return }if(!D.blocker){D.blocker=E.uniqueId();B=E.add(D.settings.container||E.getRoot(),"iframe",{id:D.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});E.setStyle(B,"opacity",0)}else{B=E.get(D.blocker)}E.setStyle(B,"left",D.getStyle("left",1));E.setStyle(B,"top",D.getStyle("top",1));E.setStyle(B,"width",D.getStyle("width",1));E.setStyle(B,"height",D.getStyle("height",1));E.setStyle(B,"display",D.getStyle("display",1));E.setStyle(B,"zIndex",parseInt(D.getStyle("zIndex",1)||0)-1)}}})})();(function(){function D(E){return E.replace(/[\n\r]+/g,"")}var B=tinymce.is,A=tinymce.isIE,C=tinymce.each;tinymce.create("tinymce.dom.Selection",{Selection:function(H,G,F){var E=this;E.dom=H;E.win=G;E.serializer=F;C(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(I){E[I]=new tinymce.util.Dispatcher(E)});tinymce.addUnload(E.destroy,E)},getContent:function(F){var E=this,G=E.getRng(),K=E.dom.create("body"),I=E.getSel(),H,J,L;F=F||{};H=J="";F.get=true;F.format=F.format||"html";E.onBeforeGetContent.dispatch(E,F);if(F.format=="text"){return E.isCollapsed()?"":(G.text||(I.toString?I.toString():""))}if(G.cloneContents){L=G.cloneContents();if(L){K.appendChild(L)}}else{if(B(G.item)||B(G.htmlText)){K.innerHTML=G.item?G.item(0).outerHTML:G.htmlText}else{K.innerHTML=G.toString()}}if(/^\s/.test(K.innerHTML)){H=" "}if(/\s+$/.test(K.innerHTML)){J=" "}F.getInner=true;F.content=E.isCollapsed()?"":H+E.serializer.serialize(K,F)+J;E.onGetContent.dispatch(E,F);return F.content},setContent:function(G,F){var E=this,H=E.getRng(),J,I=E.win.document;F=F||{format:"html"};F.set=true;G=F.content=E.dom.processHTML(G);E.onBeforeSetContent.dispatch(E,F);G=F.content;if(H.insertNode){G+='<span id="__caret">_</span>';H.deleteContents();H.insertNode(E.getRng().createContextualFragment(G));J=E.dom.get("__caret");H=I.createRange();H.setStartBefore(J);H.setEndAfter(J);E.setRng(H);I.execCommand("Delete",false,null);E.dom.remove("__caret")}else{if(H.item){I.execCommand("Delete",false,null);H=E.getRng()}H.pasteHTML(G)}E.onSetContent.dispatch(E,F)},getStart:function(){var E=this,F=E.getRng(),G;if(A){if(F.item){return F.item(0)}F=F.duplicate();F.collapse(1);G=F.parentElement();if(G&&G.nodeName=="BODY"){return G.firstChild}return G}else{G=F.startContainer;if(G.nodeName=="BODY"){return G.firstChild}return E.dom.getParent(G,function(H){return H.nodeType==1})}},getEnd:function(){var E=this,F=E.getRng(),G;if(A){if(F.item){return F.item(0)}F=F.duplicate();F.collapse(0);G=F.parentElement();if(G&&G.nodeName=="BODY"){return G.lastChild}return G}else{G=F.endContainer;if(G.nodeName=="BODY"){return G.lastChild}return E.dom.getParent(G,function(H){return H.nodeType==1})}},getBookmark:function(T){var I=this,L=I.getRng(),E,M,K,Q=I.dom.getViewPort(I.win),R,O,V,N,S=-16777215,J,G=I.dom.getRoot(),F=0,H=0,U;M=Q.x;K=Q.y;if(T=="simple"){return{rng:L,scrollX:M,scrollY:K}}if(A){if(L.item){R=L.item(0);C(I.dom.select(R.nodeName),function(X,W){if(R==X){O=W;return false}});return{tag:R.nodeName,index:O,scrollX:M,scrollY:K}}E=I.dom.doc.body.createTextRange();E.moveToElementText(G);E.collapse(true);V=Math.abs(E.move("character",S));E=L.duplicate();E.collapse(true);O=Math.abs(E.move("character",S));E=L.duplicate();E.collapse(false);N=Math.abs(E.move("character",S))-O;return{start:O-V,length:N,scrollX:M,scrollY:K}}R=I.getNode();J=I.getSel();if(!J){return null}if(R&&R.nodeName=="IMG"){return{scrollX:M,scrollY:K}}function P(Y,b,X){var W=I.dom.doc.createTreeWalker(Y,NodeFilter.SHOW_TEXT,null,false),c,Z=0,a={};while((c=W.nextNode())!=null){if(c==b){a.start=Z}if(c==X){a.end=Z;return a}Z+=D(c.nodeValue||"").length}return null}if(J.anchorNode==J.focusNode&&J.anchorOffset==J.focusOffset){R=P(G,J.anchorNode,J.focusNode);if(!R){return{scrollX:M,scrollY:K}}D(J.anchorNode.nodeValue||"").replace(/^\s+/,function(W){F=W.length});return{start:Math.max(R.start+J.anchorOffset-F,0),end:Math.max(R.end+J.focusOffset-F,0),scrollX:M,scrollY:K,beg:J.anchorOffset-F==0}}else{R=P(G,L.startContainer,L.endContainer);if(!R){return{scrollX:M,scrollY:K}}return{start:Math.max(R.start+L.startOffset-F,0),end:Math.max(R.end+L.endOffset-H,0),scrollX:M,scrollY:K,beg:L.startOffset-F==0}}},moveToBookmark:function(M){var N=this,F=N.getRng(),O=N.getSel(),I=N.dom.getRoot(),L,G,J;function H(P,R,Z){var X=N.dom.doc.createTreeWalker(P,NodeFilter.SHOW_TEXT,null,false),T,Q=0,W={},S,Y,V,U;while((T=X.nextNode())!=null){V=U=0;J=T.nodeValue||"";G=D(J).length;Q+=G;if(Q>=R&&!W.startNode){S=R-(Q-G);if(M.beg&&S>=G){continue}W.startNode=T;W.startOffset=S+U}if(Q>=Z){W.endNode=T;W.endOffset=Z-(Q-G)+U;return W}}return null}if(!M){return false}N.win.scrollTo(M.scrollX,M.scrollY);if(A){if(F=M.rng){try{F.select()}catch(K){}return true}N.win.focus();if(M.tag){F=I.createControlRange();C(N.dom.select(M.tag),function(Q,P){if(P==M.index){F.addElement(Q)}})}else{try{if(M.start<0){return true}F=O.createRange();F.moveToElementText(I);F.collapse(true);F.moveStart("character",M.start);F.moveEnd("character",M.length)}catch(E){return true}}try{F.select()}catch(K){}return true}if(!O){return false}if(M.rng){O.removeAllRanges();O.addRange(M.rng)}else{if(B(M.start)&&B(M.end)){try{L=H(I,M.start,M.end);if(L){F=N.dom.doc.createRange();F.setStart(L.startNode,L.startOffset);F.setEnd(L.endNode,L.endOffset);O.removeAllRanges();O.addRange(F)}if(!tinymce.isOpera){N.win.focus()}}catch(K){}}}},select:function(F,K){var O=this,E=O.getRng(),P=O.getSel(),M,L,J,I=O.win.document;function G(Q){return Q?I.createTreeWalker(Q,NodeFilter.SHOW_TEXT,null,false).nextNode():null}function N(T){var S,R,Q;if(!T){return null}Q=I.createTreeWalker(T,NodeFilter.SHOW_TEXT,null,false);while(S=Q.nextNode()){R=S}return R}if(A){try{M=I.body;if(/^(IMG|TABLE)$/.test(F.nodeName)){E=M.createControlRange();E.addElement(F)}else{E=M.createTextRange();E.moveToElementText(F)}E.select()}catch(H){}}else{if(K){L=G(F);J=N(F);if(L&&J){E=I.createRange();E.setStart(L,0);E.setEnd(J,J.nodeValue.length)}else{E.selectNode(F)}}else{E.selectNode(F)}O.setRng(E)}return F},isCollapsed:function(){var E=this,G=E.getRng(),F=E.getSel();if(!G||G.item){return false}return !F||G.boundingWidth==0||G.collapsed},collapse:function(E){var F=this,G=F.getRng(),H;if(G.item){H=G.item(0);G=this.win.document.body.createTextRange();G.moveToElementText(H)}G.collapse(!!E);F.setRng(G)},getSel:function(){var F=this,E=this.win;return E.getSelection?E.getSelection():E.document.selection},getRng:function(){var F=this,G=F.getSel(),H;try{if(G){H=G.rangeCount>0?G.getRangeAt(0):(G.createRange?G.createRange():F.win.document.createRange())}}catch(E){}if(!H){H=A?F.win.document.body.createTextRange():F.win.document.createRange()}return H},setRng:function(G){var F;if(!A){F=this.getSel();if(F){F.removeAllRanges();F.addRange(G)}}else{try{G.select()}catch(E){}}},setNode:function(F){var E=this;E.setContent(E.dom.getOuterHTML(F));return F},getNode:function(){var E=this,G=E.getRng(),F=E.getSel(),H;if(!A){if(!G){return E.dom.getRoot()}H=G.commonAncestorContainer;if(!G.collapsed){if(tinymce.isWebKit&&F.anchorNode&&F.anchorNode.nodeType==1){return F.anchorNode.childNodes[F.anchorOffset]}if(G.startContainer==G.endContainer){if(G.startOffset-G.endOffset<2){if(G.startContainer.hasChildNodes()){H=G.startContainer.childNodes[G.startOffset]}}}}return E.dom.getParent(H,function(I){return I.nodeType==1})}return G.item?G.item(0):G.parentElement()},destroy:function(F){var E=this;E.win=null;if(!F){tinymce.removeUnload(E.destroy)}}})})();(function(){tinymce.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(B){function A(){var D=document.implementation;if(!D||!D.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(C){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(C){}}else{return D.createDocument("","",null)}}this.doc=A();this.valid=tinymce.isOpera||tinymce.isWebKit;this.reset()},reset:function(){var A=this,B=A.doc;if(B.firstChild){B.removeChild(B.firstChild)}A.node=B.appendChild(B.createElement("html"))},writeStartElement:function(B){var A=this;A.node=A.node.appendChild(A.doc.createElement(B))},writeAttribute:function(B,A){if(this.valid){A=A.replace(/>/g,"%MCGT%")}this.node.setAttribute(B,A)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var A=this,B=A.node;B.appendChild(A.doc.createTextNode(""));A.node=B.parentNode},writeText:function(A){if(this.valid){A=A.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(A))},writeCDATA:function(A){this.node.appendChild(this.doc.createCDATA(A))},writeComment:function(A){if(tinymce.isIE){A=A.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(A.replace(/\-\-/g," ")))},getContent:function(){var A;A=this.doc.xml||new XMLSerializer().serializeToString(this.doc);A=A.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");A=A.replace(/ ?\/>/g," />");if(this.valid){A=A.replace(/\%MCGT%/g,"&gt;")}return A}})})();(function(){tinymce.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(A){this.settings=tinymce.extend({indent_char:" ",indentation:1},A);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(A){this._writeAttributesEnd();this.writeRaw("<"+A);this.tags.push(A);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(C,A){var B=this;B.writeRaw(" "+B.encode(C)+'="'+B.encode(A)+'"')},writeEndElement:function(){var A;if(this.tags.length>0){A=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("</"+A+">")}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(A){this._writeAttributesEnd();this.writeRaw(this.encode(A));this.count++},writeCDATA:function(A){this._writeAttributesEnd();this.writeRaw("<![CDATA["+A+"]]>");this.count++},writeComment:function(A){this._writeAttributesEnd();this.writeRaw("<!-- "+A+"-->");this.count++},writeRaw:function(A){this.str+=A},encode:function(A){return A.replace(/[<>&"]/g,function(B){switch(B){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case'"':return"&quot;"}return B})},getContent:function(){return this.str},_writeAttributesEnd:function(A){if(!this.inAttr){return }this.inAttr=false;if(A&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})();(function(){var G=tinymce.extend,E=tinymce.each,B=tinymce.util.Dispatcher,D=tinymce.isIE,A=tinymce.isGecko;function F(I){var H=[];if(I.nodeName=="OBJECT"){return I.attributes}I.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(K,J){H.push({specified:1,nodeName:J})});return H}function C(H){return H.replace(/([?+*])/g,".$1")}tinymce.create("tinymce.dom.Serializer",{Serializer:function(J){var I=this;I.key=0;I.onPreProcess=new B(I);I.onPostProcess=new B(I);if(tinymce.relaxedDomain&&tinymce.isGecko){I.writer=new tinymce.dom.StringWriter()}else{try{I.writer=new tinymce.dom.XMLWriter()}catch(H){I.writer=new tinymce.dom.StringWriter()}}I.settings=J=G({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,remove_redundant_brs:1,element_format:"xhtml"},J);I.dom=J.dom;if(J.remove_redundant_brs){I.onPostProcess.add(function(K,L){L.content=L.content.replace(/<br \/>(\s*<\/li>)/g,"$1")})}if(J.element_format=="html"){I.onPostProcess.add(function(K,L){L.content=L.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(J.fix_list_elements){I.onPreProcess.add(function(R,O){var L,T,S=["ol","ul"],Q,P,N,K=/^(OL|UL)$/,U;function M(X,Y){var V=Y.split(","),W;while((X=X.previousSibling)!=null){for(W=0;W<V.length;W++){if(X.nodeName==V[W]){return X}}}return null}for(T=0;T<S.length;T++){L=I.dom.select(S[T],O.node);for(Q=0;Q<L.length;Q++){P=L[Q];N=P.parentNode;if(K.test(N.nodeName)){U=M(P,"LI");if(!U){U=I.dom.create("li");U.innerHTML="&nbsp;";U.appendChild(P);N.insertBefore(U,N.firstChild)}else{U.appendChild(P)}}}}})}if(J.fix_table_elements){I.onPreProcess.add(function(K,L){E(I.dom.select("table",L.node),function(S){var R=I.dom.getParent(S,"H1,H2,H3,H4,H5,H6,P"),N,T,M,Q=[],O,P;if(R){N=R.cloneNode(false);Q.push(S);for(T=S;T=T.parentNode;){Q.push(T);if(T==R){break}}M=N;for(O=Q.length-1;O>=0;O--){if(O==Q.length-1){while(P=Q[O-1].nextSibling){M.appendChild(P.parentNode.removeChild(P))}}else{T=Q[O].cloneNode(false);if(O!=0){while(P=Q[O-1].nextSibling){T.appendChild(P.parentNode.removeChild(P))}}M=M.appendChild(T)}}S=I.dom.insertAfter(S.parentNode.removeChild(S),R);I.dom.insertAfter(S,R);I.dom.insertAfter(N,S)}})})}},setEntities:function(N){var L=this,I,K,H={},M="",J;if(L.entityLookup){return }I=N.split(",");for(K=0;K<I.length;K+=2){J=I[K];if(J==34||J==38||J==60||J==62){continue}H[String.fromCharCode(I[K])]=I[K+1];J=parseInt(I[K]).toString(16);M+="\\u"+"0000".substring(J.length)+J}if(!M){L.settings.entity_encoding="raw";return }L.entitiesRE=new RegExp("["+M+"]","g");L.entityLookup=H},setValidChildRules:function(H){this.childRules=null;this.addValidChildRules(H)},addValidChildRules:function(K){var J=this,L,H,I;if(!K){return }L="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";H="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";I="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";E(K.split(","),function(N){var O=N.split(/\[|\]/),M;N="";E(O[1].split("|"),function(P){if(N){N+="|"}switch(P){case"%itrans":P=H;break;case"%itrans_na":P=H.substring(2);break;case"%istrict":P=L;break;case"%istrict_na":P=L.substring(2);break;case"%btrans":P=I;break;case"%bstrict":P=I;break}N+=P});M=new RegExp("^("+N.toLowerCase()+")$","i");E(O[0].split("/"),function(P){J.childRules=J.childRules||{};J.childRules[P]=M})});K="";E(J.childRules,function(N,M){if(K){K+="|"}K+=M});J.parentElementsRE=new RegExp("^("+K.toLowerCase()+")$","i")},setRules:function(I){var H=this;H._setup();H.rules={};H.wildRules=[];H.validElements={};return H.addRules(I)},addRules:function(I){var H=this,J;if(!I){return }H._setup();E(I.split(","),function(M){var P=M.split(/\[|\]/),L=P[0].split("/"),Q,K,O,N=[];if(J){K=tinymce.extend([],J.attribs)}if(P.length>1){E(P[1].split("|"),function(T){var R={},S;K=K||[];T=T.replace(/::/g,"~");T=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(T);T[2]=T[2].replace(/~/g,":");if(T[1]=="!"){Q=Q||[];Q.push(T[2])}if(T[1]=="-"){for(S=0;S<K.length;S++){if(K[S].name==T[2]){K.splice(S,1);return }}}switch(T[3]){case"=":R.defaultVal=T[4]||"";break;case":":R.forcedVal=T[4];break;case"<":R.validVals=T[4].split("?");break}if(/[*.?]/.test(T[2])){O=O||[];R.nameRE=new RegExp("^"+C(T[2])+"$");O.push(R)}else{R.name=T[2];K.push(R)}N.push(T[2])})}E(L,function(U,T){var V=U.charAt(0),S=1,R={};if(J){if(J.noEmpty){R.noEmpty=J.noEmpty}if(J.fullEnd){R.fullEnd=J.fullEnd}if(J.padd){R.padd=J.padd}}switch(V){case"-":R.noEmpty=true;break;case"+":R.fullEnd=true;break;case"#":R.padd=true;break;default:S=0}L[T]=U=U.substring(S);H.validElements[U]=1;if(/[*.?]/.test(L[0])){R.nameRE=new RegExp("^"+C(L[0])+"$");H.wildRules=H.wildRules||{};H.wildRules.push(R)}else{R.name=L[0];if(L[0]=="@"){J=R}H.rules[U]=R}R.attribs=K;if(Q){R.requiredAttribs=Q}if(O){U="";E(N,function(W){if(U){U+="|"}U+="("+C(W)+")"});R.validAttribsRE=new RegExp("^"+U.toLowerCase()+"$");R.wildAttribs=O}})});I="";E(H.validElements,function(L,K){if(I){I+="|"}if(K!="@"){I+=K}});H.validElementsRE=new RegExp("^("+C(I.toLowerCase())+")$")},findRule:function(L){var I=this,K=I.rules,H,J;I._setup();J=K[L];if(J){return J}K=I.wildRules;for(H=0;H<K.length;H++){if(K[H].nameRE.test(L)){return K[H]}}return null},findAttribRule:function(H,K){var I,J=H.wildAttribs;for(I=0;I<J.length;I++){if(J[I].nameRE.test(K)){return J[I]}}return null},serialize:function(K,J){var I,H=this;H._setup();J=J||{};J.format=J.format||"html";H.processObj=J;K=K.cloneNode(true);H.key=""+(parseInt(H.key)+1);if(!J.no_events){J.node=K;H.onPreProcess.dispatch(H,J)}H.writer.reset();H._serializeNode(K,J.getInner);J.content=H.writer.getContent();if(!J.no_events){H.onPostProcess.dispatch(H,J)}H._postProcess(J);J.node=null;return tinymce.trim(J.content)},_postProcess:function(M){var H=this,J=H.settings,I=M.content,L=[],K;if(M.format=="html"){K=H._protect({content:I,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});I=K.content;if(J.entity_encoding!=="raw"){I=H._encode(I)}if(!M.set){I=I.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,J.entity_encoding=="numeric"?"<p$1>&#160;</p>":"<p$1>&nbsp;</p>");if(J.remove_linebreaks){I=I.replace(/\r?\n|\r/g," ");I=I.replace(/(<[^>]+>)\s+/g,"$1 ");I=I.replace(/\s+(<\/[^>]+>)/g," $1");I=I.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>");I=I.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>");I=I.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(J.apply_source_formatting&&J.indent_mode=="simple"){I=I.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");I=I.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");I=I.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"</$1>\n");I=I.replace(/\n\n/g,"\n")}}I=H._unprotect(I,K);I=I.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,"<![CDATA[$1]]>");if(J.entity_encoding=="raw"){I=I.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,"<p$1>\u00a0</p>")}}M.content=I},_serializeNode:function(V,K){var R=this,S=R.settings,P=R.writer,M,I,O,X,W,Y,T,H,Q,J,N,U,L;if(!S.node_filter||S.node_filter(V)){switch(V.nodeType){case 1:if(V.hasAttribute?V.hasAttribute("mce_bogus"):V.getAttribute("mce_bogus")){return }L=false;M=V.hasChildNodes();J=V.getAttribute("mce_name")||V.nodeName.toLowerCase();if(D){if(V.scopeName!=="HTML"&&V.scopeName!=="html"){J=V.scopeName+":"+J}}if(J.indexOf("mce:")===0){J=J.substring(4)}if(!R.validElementsRE.test(J)||(R.invalidElementsRE&&R.invalidElementsRE.test(J))||K){L=true;break}if(D){if(S.fix_content_duplication){if(V.mce_serialized==R.key){return }V.mce_serialized=R.key}if(J.charAt(0)=="/"){J=J.substring(1)}}else{if(A){if(V.nodeName==="BR"&&V.getAttribute("type")=="_moz"){return }}}if(R.childRules){if(R.parentElementsRE.test(R.elementName)){if(!R.childRules[R.elementName].test(J)){L=true;break}}R.elementName=J}N=R.findRule(J);J=N.name||J;if((!M&&N.noEmpty)||(D&&!J)){L=true;break}if(N.requiredAttribs){Y=N.requiredAttribs;for(X=Y.length-1;X>=0;X--){if(this.dom.getAttrib(V,Y[X])!==""){break}}if(X==-1){L=true;break}}P.writeStartElement(J);if(N.attribs){for(X=0,T=N.attribs,W=T.length;X<W;X++){Y=T[X];Q=R._getAttrib(V,Y);if(Q!==null){P.writeAttribute(Y.name,Q)}}}if(N.validAttribsRE){T=D?F(V):V.attributes;for(X=T.length-1;X>-1;X--){H=T[X];if(H.specified){Y=H.nodeName.toLowerCase();if(S.invalid_attrs.test(Y)||!N.validAttribsRE.test(Y)){continue}U=R.findAttribRule(N,Y);Q=R._getAttrib(V,U,Y);if(Q!==null){P.writeAttribute(Y,Q)}}}}if(N.padd){if(M&&(O=V.firstChild)&&O.nodeType===1&&V.childNodes.length===1){if(O.hasAttribute?O.hasAttribute("mce_bogus"):O.getAttribute("mce_bogus")){P.writeText("\u00a0")}}else{if(!M){P.writeText("\u00a0")}}}break;case 3:if(R.childRules&&R.parentElementsRE.test(R.elementName)){if(!R.childRules[R.elementName].test(V.nodeName)){return }}return P.writeText(V.nodeValue);case 4:return P.writeCDATA(V.nodeValue);case 8:return P.writeComment(V.nodeValue)}}else{if(V.nodeType==1){M=V.hasChildNodes()}}if(M){O=V.firstChild;while(O){R._serializeNode(O);R.elementName=J;O=O.nextSibling}}if(!L){if(M||!S.closed.test(J)){P.writeFullEndElement()}else{P.writeEndElement()}}},_protect:function(J){var I=this;J.items=J.items||[];function H(L){return L.replace(/[\r\n\\]/g,function(M){if(M==="\n"){return"\\n"}else{if(M==="\\"){return"\\\\"}}return"\\r"})}function K(L){return L.replace(/\\[\\rn]/g,function(M){if(M==="\\n"){return"\n"}else{if(M==="\\\\"){return"\\"}}return"\r"})}E(J.patterns,function(L){J.content=K(H(J.content).replace(L.pattern,function(N,O,M,P){M=K(M);if(L.encode){M=I._encode(M)}J.items.push(M);return O+"<!--mce:"+(J.items.length-1)+"-->"+P}))});return J},_unprotect:function(H,I){H=H.replace(/\<!--mce:([0-9]+)--\>/g,function(K,J){return I.items[parseInt(J)]});I.items=[];return H},_encode:function(K){var I=this,J=I.settings,H;if(J.entity_encoding!=="raw"){if(J.entity_encoding.indexOf("named")!=-1){I.setEntities(J.entities);H=I.entityLookup;K=K.replace(I.entitiesRE,function(L){var M;if(M=H[L]){L="&"+M+";"}return L})}if(J.entity_encoding.indexOf("numeric")!=-1){K=K.replace(/[\u007E-\uFFFF]/g,function(L){return"&#"+L.charCodeAt(0)+";"})}}return K},_setup:function(){var H=this,I=this.settings;if(H.done){return }H.done=1;H.setRules(I.valid_elements);H.addRules(I.extended_valid_elements);H.addValidChildRules(I.valid_child_elements);if(I.invalid_elements){H.invalidElementsRE=new RegExp("^("+C(I.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}if(I.attrib_value_filter){H.attribValueFilter=I.attribValueFilter}},_getAttrib:function(L,I,H){var K,J;H=H||I.name;if(I.forcedVal&&(J=I.forcedVal)){if(J==="{$uid}"){return this.dom.uniqueId()}return J}J=this.dom.getAttrib(L,H);switch(H){case"rowspan":case"colspan":if(J=="1"){J=""}break}if(this.attribValueFilter){J=this.attribValueFilter(H,J,L)}if(I.validVals){for(K=I.validVals.length-1;K>=0;K--){if(J==I.validVals[K]){break}}if(K==-1){return null}}if(J===""&&typeof (I.defaultVal)!="undefined"){J=I.defaultVal;if(J==="{$uid}"){return this.dom.uniqueId()}return J}else{if(H=="class"&&this.processObj.get){J=J.replace(/\s?mceItem\w+\s?/g,"")}}if(J===""){return null}return J}})})();(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 B=tinymce.DOM,A=tinymce.is;tinymce.create("tinymce.ui.Control",{Control:function(D,C){this.id=D;this.settings=C=C||{};this.rendered=false;this.onRender=new tinymce.util.Dispatcher(this);this.classPrefix="";this.scope=C.scope||this;this.disabled=0;this.active=0},setDisabled:function(C){var D;if(C!=this.disabled){D=B.get(this.id);if(D&&this.settings.unavailable_prefix){if(C){this.prevTitle=D.title;D.title=this.settings.unavailable_prefix+": "+D.title}else{D.title=this.prevTitle}}this.setState("Disabled",C);this.setState("Enabled",!C);this.disabled=C}},isDisabled:function(){return this.disabled},setActive:function(C){if(C!=this.active){this.setState("Active",C);this.active=C}},isActive:function(){return this.active},setState:function(E,C){var D=B.get(this.id);E=this.classPrefix+E;if(C){B.addClass(D,E)}else{B.removeClass(D,E)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(C){B.setHTML(C,this.renderHTML())},postRender:function(){var D=this,C;if(A(D.disabled)){C=D.disabled;D.disabled=-1;D.setDisabled(C)}if(A(D.active)){C=D.active;D.active=-1;D.setActive(C)}},remove:function(){B.remove(this.id);this.destroy()},destroy:function(){tinymce.dom.Event.clear(this.id)}})})();tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(B,A){this.parent(B,A);this.controls=[];this.lookup={}},add:function(A){this.lookup[A.id]=A;this.controls.push(A);return A},get:function(A){return this.lookup[A]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(B,A){this.parent(B,A);this.classPrefix="mceSeparator"},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(){var C=tinymce.is,B=tinymce.DOM,D=tinymce.each,A=tinymce.walk;tinymce.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(F,E){this.parent(F,E);this.classPrefix="mceMenuItem"},setSelected:function(E){this.setState("Selected",E);this.selected=E},isSelected:function(){return this.selected},postRender:function(){var E=this;E.parent();if(C(E.selected)){E.setSelected(E.selected)}}})})();(function(){var C=tinymce.is,B=tinymce.DOM,D=tinymce.each,A=tinymce.walk;tinymce.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(G,F){var E=this;E.parent(G,F);E.items={};E.collapsed=false;E.menuCount=0;E.onAddItem=new tinymce.util.Dispatcher(this)},expand:function(F){var E=this;if(F){A(E,function(G){if(G.expand){G.expand()}},"items",E)}E.collapsed=false},collapse:function(F){var E=this;if(F){A(E,function(G){if(G.collapse){G.collapse()}},"items",E)}E.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(E){if(!E.settings){E=new tinymce.ui.MenuItem(E.id||B.uniqueId(),E)}this.onAddItem.dispatch(this,E);return this.items[E.id]=E},addSeparator:function(){return this.add({separator:true})},addMenu:function(E){if(!E.collapse){E=this.createMenu(E)}this.menuCount++;return this.add(E)},hasMenus:function(){return this.menuCount!==0},remove:function(E){delete this.items[E.id]},removeAll:function(){var E=this;A(E,function(F){if(F.removeAll){F.removeAll()}else{F.remove()}F.destroy()},"items",E);E.items={}},createMenu:function(F){var E=new tinymce.ui.Menu(F.id||B.uniqueId(),F);E.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return E}})})();(function(){var D=tinymce.is,C=tinymce.DOM,E=tinymce.each,A=tinymce.dom.Event,B=tinymce.dom.Element;tinymce.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(G,F){F=F||{};F.container=F.container||C.doc.body;F.offset_x=F.offset_x||0;F.offset_y=F.offset_y||0;F.vp_offset_x=F.vp_offset_x||0;F.vp_offset_y=F.vp_offset_y||0;if(D(F.icons)&&!F.icons){F["class"]+=" mceNoIcons"}this.parent(G,F);this.onShowMenu=new tinymce.util.Dispatcher(this);this.onHideMenu=new tinymce.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(I){var G=this,H=G.settings,F;I.container=I.container||H.container;I.parent=G;I.constrain=I.constrain||H.constrain;I["class"]=I["class"]||H["class"];I.vp_offset_x=I.vp_offset_x||H.vp_offset_x;I.vp_offset_y=I.vp_offset_y||H.vp_offset_y;F=new tinymce.ui.DropMenu(I.id||C.uniqueId(),I);F.onAddItem.add(G.onAddItem.dispatch,G.onAddItem);return F},update:function(){var H=this,I=H.settings,F=C.get("menu_"+H.id+"_tbl"),K=C.get("menu_"+H.id+"_co"),G,J;G=I.max_width?Math.min(F.clientWidth,I.max_width):F.clientWidth;J=I.max_height?Math.min(F.clientHeight,I.max_height):F.clientHeight;if(!C.boxModel){H.element.setStyles({width:G+2,height:J+2})}else{H.element.setStyles({width:G,height:J})}if(I.max_width){C.setStyle(K,"width",G)}if(I.max_height){C.setStyle(K,"height",J);if(F.clientHeight<I.max_height){C.setStyle(K,"overflow","hidden")}}},showMenu:function(N,L,P){var S=this,T=S.settings,M,F=C.getViewPort(),Q,J,R,O,G=2,I,H,K=S.classPrefix;S.collapse(1);if(S.isMenuVisible){return }if(!S.rendered){M=C.add(S.settings.container,S.renderNode());E(S.items,function(U){U.postRender()});S.element=new B("menu_"+S.id,{blocker:1,container:T.container})}else{M=C.get("menu_"+S.id)}if(!tinymce.isOpera){C.setStyles(M,{left:-65535,top:-65535})}C.show(M);S.update();N+=T.offset_x||0;L+=T.offset_y||0;F.w-=4;F.h-=4;if(T.constrain){Q=M.clientWidth-G;J=M.clientHeight-G;R=F.x+F.w;O=F.y+F.h;if((N+T.vp_offset_x+Q)>R){N=P?P-Q:Math.max(0,(R-T.vp_offset_x)-Q)}if((L+T.vp_offset_y+J)>O){L=Math.max(0,(O-T.vp_offset_y)-J)}}C.setStyles(M,{left:N,top:L});S.element.update();S.isMenuVisible=1;S.mouseClickFunc=A.add(M,"click",function(V){var U;V=V.target;if(V&&(V=C.getParent(V,"TR"))&&!C.hasClass(V,K+"ItemSub")){U=S.items[V.id];if(U.isDisabled()){return }I=S;while(I){if(I.hideMenu){I.hideMenu()}I=I.settings.parent}if(U.settings.onclick){U.settings.onclick(V)}return A.cancel(V)}});if(S.hasMenus()){S.mouseOverFunc=A.add(M,"mouseover",function(X){var U,W,V;X=X.target;if(X&&(X=C.getParent(X,"TR"))){U=S.items[X.id];if(S.lastMenu){S.lastMenu.collapse(1)}if(U.isDisabled()){return }if(X&&C.hasClass(X,K+"ItemSub")){W=C.getRect(X);U.showMenu((W.x+W.w-G),W.y-G,W.x);S.lastMenu=U;C.addClass(C.get(U.id).firstChild,K+"ItemActive")}}})}S.onShowMenu.dispatch(S);if(T.keyboard_focus){A.add(M,"keydown",S._keyHandler,S);C.select("a","menu_"+S.id)[0].focus();S._focusIdx=0}},hideMenu:function(I){var F=this,H=C.get("menu_"+F.id),G;if(!F.isMenuVisible){return }A.remove(H,"mouseover",F.mouseOverFunc);A.remove(H,"click",F.mouseClickFunc);A.remove(H,"keydown",F._keyHandler);C.hide(H);F.isMenuVisible=0;if(!I){F.collapse(1)}if(F.element){F.element.hide()}if(G=C.get(F.id)){C.removeClass(G.firstChild,F.classPrefix+"ItemActive")}F.onHideMenu.dispatch(F)},add:function(H){var F=this,G;H=F.parent(H);if(F.isRendered&&(G=C.get("menu_"+F.id))){F._add(C.select("tbody",G)[0],H)}return H},collapse:function(F){this.parent(F);this.hideMenu(1)},remove:function(F){C.remove(F.id);this.destroy();return this.parent(F)},destroy:function(){var F=this,G=C.get("menu_"+F.id);A.remove(G,"mouseover",F.mouseOverFunc);A.remove(G,"click",F.mouseClickFunc);if(F.element){F.element.remove()}C.remove(G)},renderNode:function(){var H=this,I=H.settings,K,G,J,F;F=C.create("div",{id:"menu_"+H.id,"class":I["class"],style:"position:absolute;left:0;top:0;z-index:200000"});J=C.add(F,"div",{id:"menu_"+H.id+"_co","class":H.classPrefix+(I["class"]?" "+I["class"]:"")});H.element=new B("menu_"+H.id,{blocker:1,container:I.container});if(I.menu_line){C.add(J,"span",{"class":H.classPrefix+"Line"})}K=C.add(J,"table",{id:"menu_"+H.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});G=C.add(K,"tbody");E(H.items,function(L){H._add(G,L)});H.rendered=true;return F},_keyHandler:function(I){var H=this,G=I.keyCode;function F(L){var J=H._focusIdx+L,K=C.select("a","menu_"+H.id)[J];if(K){H._focusIdx=J;K.focus()}}switch(G){case 38:F(-1);return ;case 40:F(1);return ;case 13:return ;case 27:return this.hideMenu()}},_add:function(G,L){var M,I=L.settings,F,J,H,K=this.classPrefix;if(I.separator){J=C.add(G,"tr",{id:L.id,"class":K+"ItemSeparator"});C.add(J,"td",{"class":K+"ItemSeparator"});if(M=J.previousSibling){C.addClass(M,"mceLast")}return }M=J=C.add(G,"tr",{id:L.id,"class":K+"Item "+K+"ItemEnabled"});M=H=C.add(M,"td");M=F=C.add(M,"a",{href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});C.addClass(H,I["class"]);C.add(M,"span",{"class":"mceIcon"+(I.icon?" mce_"+I.icon:"")});M=C.add(M,I.element||"span",{"class":"mceText",title:L.settings.title},L.settings.title);if(L.settings.style){C.setAttrib(M,"style",L.settings.style)}if(G.childNodes.length==1){C.addClass(J,"mceFirst")}if((M=J.previousSibling)&&C.hasClass(M,K+"ItemSeparator")){C.addClass(J,"mceFirst")}if(L.collapse){C.addClass(J,K+"ItemSub")}if(M=J.previousSibling){C.removeClass(M,"mceLast")}C.addClass(J,"mceLast")}})})();(function(){var A=tinymce.DOM;tinymce.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(C,B){this.parent(C,B);this.classPrefix="mceButton"},renderHTML:function(){var E=this.classPrefix,D=this.settings,C,B;B=A.encode(D.label||"");C='<a id="'+this.id+'" href="javascript:;" class="'+E+" "+E+"Enabled "+D["class"]+(B?" "+E+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" title="'+A.encode(D.title)+'">';if(D.image){C+='<img class="mceIcon" src="'+D.image+'" />'+B+"</a>"}else{C+='<span class="mceIcon '+D["class"]+'"></span>'+(B?'<span class="'+E+'Label">'+B+"</span>":"")+"</a>"}return C},postRender:function(){var B=this,C=B.settings;tinymce.dom.Event.add(B.id,"click",function(D){if(!B.isDisabled()){return C.onclick.call(C.scope,D)}})}})})();(function(){var C=tinymce.DOM,B=tinymce.dom.Event,D=tinymce.each,A=tinymce.util.Dispatcher;tinymce.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(G,F){var E=this;E.parent(G,F);E.items=[];E.onChange=new A(E);E.onPostRender=new A(E);E.onAdd=new A(E);E.onRenderMenu=new tinymce.util.Dispatcher(this);E.classPrefix="mceListBox"},select:function(F){var E=this,H,G;if(F==undefined){return }if(F&&F.call){G=F}else{G=function(I){return I==F}}if(F!=E.selectedValue){D(E.items,function(J,I){if(G(J.value)){H=1;E.selectByIndex(I);return false}});if(!H){E.selectByIndex(-1)}}},selectByIndex:function(E){var F=this,G,H;if(E!=F.selectedIndex){G=C.get(F.id+"_text");H=F.items[E];if(H){F.selectedValue=H.value;F.selectedIndex=E;C.setHTML(G,C.encode(H.title));C.removeClass(G,"mceTitle")}else{C.setHTML(G,C.encode(F.settings.title));C.addClass(G,"mceTitle");F.selectedValue=F.selectedIndex=null}G=0}else{F.selectedValue=F.selectedIndex=null}},add:function(H,E,G){var F=this;G=G||{};G=tinymce.extend(G,{title:H,value:E});F.items.push(G);F.onAdd.dispatch(F,G)},getLength:function(){return this.items.length},renderHTML:function(){var G="",E=this,F=E.settings,H=E.classPrefix;G='<table id="'+E.id+'" cellpadding="0" cellspacing="0" class="'+H+" "+H+"Enabled"+(F["class"]?(" "+F["class"]):"")+'"><tbody><tr>';G+="<td>"+C.createHTML("a",{id:E.id+"_text",href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},C.encode(E.settings.title))+"</td>";G+="<td>"+C.createHTML("a",{id:E.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},"<span></span>")+"</td>";G+="</tr></tbody></table>";return G},showMenu:function(){var F=this,I,H,G=C.get(this.id),E;if(F.isDisabled()||F.items.length==0){return }if(F.menu&&F.menu.isMenuVisible){return F.hideMenu()}if(!F.isMenuRendered){F.renderMenu();F.isMenuRendered=true}I=C.getPos(this.settings.menu_container);H=C.getPos(G);E=F.menu;E.settings.offset_x=H.x;E.settings.offset_y=H.y;E.settings.keyboard_focus=!tinymce.isOpera;if(F.oldID){E.items[F.oldID].setSelected(0)}D(F.items,function(J){if(J.value===F.selectedValue){E.items[J.id].setSelected(1);F.oldID=J.id}});E.showMenu(0,G.clientHeight);B.add(C.doc,"mousedown",F.hideMenu,F);C.addClass(F.id,F.classPrefix+"Selected")},hideMenu:function(F){var E=this;if(F&&F.type=="mousedown"&&(F.target.id==E.id+"_text"||F.target.id==E.id+"_open")){return }if(!F||!C.getParent(F.target,function(G){return C.hasClass(G,"mceMenu")})){C.removeClass(E.id,E.classPrefix+"Selected");B.remove(C.doc,"mousedown",E.hideMenu,E);if(E.menu){E.menu.hideMenu()}}},renderMenu:function(){var F=this,E;E=F.settings.control_manager.createDropMenu(F.id+"_menu",{menu_line:1,"class":F.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});E.onHideMenu.add(F.hideMenu,F);E.add({title:F.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(F.settings.onselect("")!==false){F.select("")}}});D(F.items,function(G){G.id=C.uniqueId();G.onclick=function(){if(F.settings.onselect(G.value)!==false){F.select(G.value)}};E.add(G)});F.onRenderMenu.dispatch(F,E);F.menu=E},postRender:function(){var E=this,F=E.classPrefix;B.add(E.id,"click",E.showMenu,E);B.add(E.id+"_text","focus",function(G){if(!E._focused){E.keyDownHandler=B.add(E.id+"_text","keydown",function(K){var H=-1,I,J=K.keyCode;D(E.items,function(L,M){if(E.selectedValue==L.value){H=M}});if(J==38){I=E.items[H-1]}else{if(J==40){I=E.items[H+1]}else{if(J==13){I=E.selectedValue;E.selectedValue=null;E.settings.onselect(I);return B.cancel(K)}}}if(I){E.hideMenu();E.select(I.value)}})}E._focused=1});B.add(E.id+"_text","blur",function(){B.remove(E.id+"_text","keydown",E.keyDownHandler);E._focused=0});if(tinymce.isIE6||!C.boxModel){B.add(E.id,"mouseover",function(){if(!C.hasClass(E.id,F+"Disabled")){C.addClass(E.id,F+"Hover")}});B.add(E.id,"mouseout",function(){if(!C.hasClass(E.id,F+"Disabled")){C.removeClass(E.id,F+"Hover")}})}E.onPostRender.dispatch(E,C.get(E.id))},destroy:function(){this.parent();B.clear(this.id+"_text")}})})();(function(){var C=tinymce.DOM,B=tinymce.dom.Event,D=tinymce.each,A=tinymce.util.Dispatcher;tinymce.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(F,E){this.parent(F,E);this.classPrefix="mceNativeListBox"},setDisabled:function(E){C.get(this.id).disabled=E},isDisabled:function(){return C.get(this.id).disabled},select:function(F){var E=this,H,G;if(F==undefined){return }if(F&&F.call){G=F}else{G=function(I){return I==F}}if(F!=E.selectedValue){D(E.items,function(J,I){if(G(J.value)){H=1;E.selectByIndex(I);return false}});if(!H){E.selectByIndex(-1)}}},selectByIndex:function(E){C.get(this.id).selectedIndex=E+1;this.selectedValue=this.items[E]?this.items[E].value:null},add:function(I,F,E){var H,G=this;E=E||{};E.value=F;if(G.isRendered()){C.add(C.get(this.id),"option",E,I)}H={title:I,value:F,attribs:E};G.items.push(H);G.onAdd.dispatch(G,H)},getLength:function(){return C.get(this.id).options.length-1},renderHTML:function(){var F,E=this;F=C.createHTML("option",{value:""},"-- "+E.settings.title+" --");D(E.items,function(G){F+=C.createHTML("option",{value:G.value},G.title)});F=C.createHTML("select",{id:E.id,"class":"mceNativeListBox"},F);return F},postRender:function(){var F=this,G;F.rendered=true;function E(I){var H=F.items[I.target.selectedIndex-1];if(H=H.value){F.onChange.dispatch(F,H);if(F.settings.onselect){F.settings.onselect(H)}}}B.add(F.id,"change",E);B.add(F.id,"keydown",function(I){var H;B.remove(F.id,"change",G);H=B.add(F.id,"blur",function(){B.add(F.id,"change",E);B.remove(F.id,"blur",H)});if(I.keyCode==13||I.keyCode==32){E(I);return B.cancel(I)}});F.onPostRender.dispatch(F,C.get(F.id))}})})();(function(){var B=tinymce.DOM,A=tinymce.dom.Event,C=tinymce.each;tinymce.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(E,D){this.parent(E,D);this.onRenderMenu=new tinymce.util.Dispatcher(this);D.menu_container=D.menu_container||B.doc.body},showMenu:function(){var E=this,H,G,F=B.get(E.id),D;if(E.isDisabled()){return }if(!E.isMenuRendered){E.renderMenu();E.isMenuRendered=true}if(E.isMenuVisible){return E.hideMenu()}H=B.getPos(E.settings.menu_container);G=B.getPos(F);D=E.menu;D.settings.offset_x=G.x;D.settings.offset_y=G.y;D.settings.vp_offset_x=G.x;D.settings.vp_offset_y=G.y;D.settings.keyboard_focus=E._focused;D.showMenu(0,F.clientHeight);A.add(B.doc,"mousedown",E.hideMenu,E);E.setState("Selected",1);E.isMenuVisible=1},renderMenu:function(){var E=this,D;D=E.settings.control_manager.createDropMenu(E.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:E.settings.icons});D.onHideMenu.add(E.hideMenu,E);E.onRenderMenu.dispatch(E,D);E.menu=D},hideMenu:function(E){var D=this;if(E&&E.type=="mousedown"&&B.getParent(E.target,function(F){return F.id===D.id||F.id===D.id+"_open"})){return }if(!E||!B.getParent(E.target,function(F){return B.hasClass(F,"mceMenu")})){D.setState("Selected",0);A.remove(B.doc,"mousedown",D.hideMenu,D);if(D.menu){D.menu.hideMenu()}}D.isMenuVisible=0},postRender:function(){var D=this,E=D.settings;A.add(D.id,"click",function(){if(!D.isDisabled()){if(E.onclick){E.onclick(D.value)}D.showMenu()}})}})})();(function(){var B=tinymce.DOM,A=tinymce.dom.Event,C=tinymce.each;tinymce.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(E,D){this.parent(E,D);this.classPrefix="mceSplitButton"},renderHTML:function(){var G,E=this,F=E.settings,D;G="<tbody><tr>";if(F.image){D=B.createHTML("img ",{src:F.image,"class":"mceAction "+F["class"]})}else{D=B.createHTML("span",{"class":"mceAction "+F["class"]},"")}G+="<td>"+B.createHTML("a",{id:E.id+"_action",href:"javascript:;","class":"mceAction "+F["class"],onclick:"return false;",onmousedown:"return false;",title:F.title},D)+"</td>";D=B.createHTML("span",{"class":"mceOpen "+F["class"]});G+="<td>"+B.createHTML("a",{id:E.id+"_open",href:"javascript:;","class":"mceOpen "+F["class"],onclick:"return false;",onmousedown:"return false;",title:F.title},D)+"</td>";G+="</tr></tbody>";return B.createHTML("table",{id:E.id,"class":"mceSplitButton mceSplitButtonEnabled "+F["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return false;",title:F.title},G)},postRender:function(){var D=this,E=D.settings;if(E.onclick){A.add(D.id+"_action","click",function(){if(!D.isDisabled()){E.onclick(D.value)}})}A.add(D.id+"_open","click",D.showMenu,D);A.add(D.id+"_open","focus",function(){D._focused=1});A.add(D.id+"_open","blur",function(){D._focused=0});if(tinymce.isIE6||!B.boxModel){A.add(D.id,"mouseover",function(){if(!B.hasClass(D.id,"mceSplitButtonDisabled")){B.addClass(D.id,"mceSplitButtonHover")}});A.add(D.id,"mouseout",function(){if(!B.hasClass(D.id,"mceSplitButtonDisabled")){B.removeClass(D.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();A.clear(this.id+"_action");A.clear(this.id+"_open")}})})();(function(){var C=tinymce.DOM,A=tinymce.dom.Event,B=tinymce.is,D=tinymce.each;tinymce.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(G,F){var E=this;E.parent(G,F);E.settings=F=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"},E.settings);E.onShowMenu=new tinymce.util.Dispatcher(E);E.onHideMenu=new tinymce.util.Dispatcher(E);E.value=F.default_color},showMenu:function(){var E=this,F,I,H,G;if(E.isDisabled()){return }if(!E.isMenuRendered){E.renderMenu();E.isMenuRendered=true}if(E.isMenuVisible){return E.hideMenu()}H=C.get(E.id);C.show(E.id+"_menu");C.addClass(H,"mceSplitButtonSelected");G=C.getPos(H);C.setStyles(E.id+"_menu",{left:G.x,top:G.y+H.clientHeight,zIndex:200000});H=0;A.add(C.doc,"mousedown",E.hideMenu,E);if(E._focused){E._keyHandler=A.add(E.id+"_menu","keydown",function(J){if(J.keyCode==27){E.hideMenu()}});C.select("a",E.id+"_menu")[0].focus()}E.onShowMenu.dispatch(E);E.isMenuVisible=1},hideMenu:function(F){var E=this;if(F&&F.type=="mousedown"&&C.getParent(F.target,function(G){return G.id===E.id+"_open"})){return }if(!F||!C.getParent(F.target,function(G){return C.hasClass(G,"mceSplitButtonMenu")})){C.removeClass(E.id,"mceSplitButtonSelected");A.remove(C.doc,"mousedown",E.hideMenu,E);A.remove(E.id+"_menu","keydown",E._keyHandler);C.hide(E.id+"_menu")}E.onHideMenu.dispatch(E);E.isMenuVisible=0},renderMenu:function(){var I=this,E,H=0,J=I.settings,L,G,K,F;F=C.add(J.menu_container,"div",{id:I.id+"_menu","class":J.menu_class+" "+J["class"],style:"position:absolute;left:0;top:-1000px;"});E=C.add(F,"div",{"class":J["class"]+" mceSplitButtonMenu"});C.add(E,"span",{"class":"mceMenuLine"});L=C.add(E,"table",{"class":"mceColorSplitMenu"});G=C.add(L,"tbody");H=0;D(B(J.colors,"array")?J.colors:J.colors.split(","),function(M){M=M.replace(/^#/,"");if(!H--){K=C.add(G,"tr");H=J.grid_width-1}L=C.add(K,"td");L=C.add(L,"a",{href:"javascript:;",style:{backgroundColor:"#"+M},mce_color:"#"+M})});if(J.more_colors_func){L=C.add(G,"tr");L=C.add(L,"td",{colspan:J.grid_width,"class":"mceMoreColors"});L=C.add(L,"a",{id:I.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},J.more_colors_title);A.add(L,"click",function(M){J.more_colors_func.call(J.more_colors_scope||this);return A.cancel(M)})}C.addClass(E,"mceColorSplitMenu");A.add(I.id+"_menu","click",function(M){var N;M=M.target;if(M.nodeName=="A"&&(N=M.getAttribute("mce_color"))){I.setColor(N)}return A.cancel(M)});return F},setColor:function(F){var E=this;C.setStyle(E.id+"_preview","backgroundColor",F);E.value=F;E.hideMenu();E.settings.onselect(F)},postRender:function(){var E=this,F=E.id;E.parent();C.add(F+"_action","div",{id:F+"_preview","class":"mceColorPreview"})},destroy:function(){this.parent();A.clear(this.id+"_menu");A.clear(this.id+"_more");C.remove(this.id+"_menu")}})})();tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var I=this,D="",F,G,B=tinymce.DOM,J=I.settings,C,A,E,H;H=I.controls;for(C=0;C<H.length;C++){G=H[C];A=H[C-1];E=H[C+1];if(C===0){F="mceToolbarStart";if(G.Button){F+=" mceToolbarStartButton"}else{if(G.SplitButton){F+=" mceToolbarStartSplitButton"}else{if(G.ListBox){F+=" mceToolbarStartListBox"}}}D+=B.createHTML("td",{"class":F},B.createHTML("span",null,"<!-- IE -->"))}if(A&&G.ListBox){if(A.Button||A.SplitButton){D+=B.createHTML("td",{"class":"mceToolbarEnd"},B.createHTML("span",null,"<!-- IE -->"))}}if(B.stdMode){D+='<td style="position: relative">'+G.renderHTML()+"</td>"}else{D+="<td>"+G.renderHTML()+"</td>"}if(E&&G.ListBox){if(E.Button||E.SplitButton){D+=B.createHTML("td",{"class":"mceToolbarStart"},B.createHTML("span",null,"<!-- IE -->"))}}}F="mceToolbarEnd";if(G.Button){F+=" mceToolbarEndButton"}else{if(G.SplitButton){F+=" mceToolbarEndSplitButton"}else{if(G.ListBox){F+=" mceToolbarEndListBox"}}}D+=B.createHTML("td",{"class":F},B.createHTML("span",null,"<!-- IE -->"));return B.createHTML("table",{id:I.id,"class":"mceToolbar"+(J["class"]?" "+J["class"]:""),cellpadding:"0",cellspacing:"0",align:I.settings.align||""},"<tbody><tr>"+D+"</tr></tbody>")}});(function(){var A=tinymce.util.Dispatcher,B=tinymce.each;tinymce.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new A(this),get:function(C){return this.lookup[C]},requireLangPack:function(E){var C,D=tinymce.EditorManager.settings;if(D&&D.language){l=tinyMCE.settings.language;C=tinyMCE.settings.document_base_url+"/lib/editor/tinymce/strings.php?lang="+l+"&dlg=0&context="+this.urls[E];if(!tinymce.dom.Event.domLoaded&&!D.strict_mode){tinymce.ScriptLoader.load(C)}else{tinymce.ScriptLoader.add(C)}}},add:function(D,C){this.items.push(C);this.lookup[D]=C;this.onAdd.dispatch(this,D,C);return C},load:function(G,D,C,F){var E=this;if(E.urls[G]){return }if(D.indexOf("/")!=0&&D.indexOf("://")==-1){D=tinymce.baseURL+"/"+D}E.urls[G]=D.substring(0,D.lastIndexOf("/"));tinymce.ScriptLoader.add(D,C,F)}});tinymce.PluginManager=new tinymce.AddOnManager();tinymce.ThemeManager=new tinymce.AddOnManager()}());(function(){var F=tinymce.each,G=tinymce.extend,E=tinymce.DOM,A=tinymce.dom.Event,C=tinymce.ThemeManager,B=tinymce.PluginManager,D=tinymce.explode;tinymce.create("static tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:function(){var H=this,I=window.location;tinymce.documentBaseURL=I.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(tinymce.documentBaseURL)){tinymce.documentBaseURL+="/"}tinymce.baseURL=new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);tinymce.EditorManager.baseURI=new tinymce.util.URI(tinymce.baseURL);if(document.domain&&I.hostname!=document.domain){tinymce.relaxedDomain=document.domain}if(!tinymce.relaxedDomain&&tinymce.EditorManager.baseURI.host!=I.hostname&&I.hostname){document.domain=tinymce.relaxedDomain=I.hostname.replace(/.*\.(.+\..+)$/,"$1")}H.onBeforeUnload=new tinymce.util.Dispatcher(H);A.add(window,"beforeunload",function(J){H.onBeforeUnload.dispatch(H,J)})},init:function(P){var O=this,K,J=tinymce.ScriptLoader,N,M,H=[],L;function I(S,T,Q){var R=S[T];if(!R){return }if(tinymce.is(R,"string")){Q=R.replace(/\.\w+$/,"");Q=Q?tinymce.resolve(Q):0;R=tinymce.resolve(R)}return R.apply(Q||this,Array.prototype.slice.call(arguments,2))}P=G({theme:"simple",language:"en",strict_loading_mode:document.contentType=="application/xhtml+xml"},P);O.settings=P;if(!A.domLoaded&&!P.strict_loading_mode){if(P.language){l=tinyMCE.settings.language;J.add(tinyMCE.settings.document_base_url+"/lib/editor/tinymce/strings.php?lang="+l+"&dlg=0")}if(P.theme&&P.theme.charAt(0)!="-"&&!C.urls[P.theme]){C.load(P.theme,"themes/"+P.theme+"/editor_template"+tinymce.suffix+".js")}if(P.plugins){K=D(P.plugins);if(tinymce.inArray(K,"compat2x")!=-1){B.load("compat2x","plugins/compat2x/editor_plugin"+tinymce.suffix+".js")}F(K,function(Q){if(Q&&Q.charAt(0)!="-"&&!B.urls[Q]){if(!tinymce.isWebKit&&Q=="safari"){return }B.load(Q,"plugins/"+Q+"/editor_plugin"+tinymce.suffix+".js")}})}J.loadQueue()}A.add(document,"init",function(){var Q,S;I(P,"onpageload");if(P.browsers){Q=false;F(D(P.browsers),function(T){switch(T){case"ie":case"msie":if(tinymce.isIE){Q=true}break;case"gecko":if(tinymce.isGecko){Q=true}break;case"safari":case"webkit":if(tinymce.isWebKit){Q=true}break;case"opera":if(tinymce.isOpera){Q=true}break}});if(!Q){return }}switch(P.mode){case"exact":Q=P.elements||"";if(Q.length>0){F(D(Q),function(T){if(E.get(T)){L=new tinymce.Editor(T,P);H.push(L);L.render(1)}else{N=0;F(document.forms,function(U){F(U.elements,function(V){if(V.name===T){T="mce_editor_"+N;E.setAttrib(V,"id",T);L=new tinymce.Editor(T,P);H.push(L);L.render(1)}})})}})}break;case"textareas":case"specific_textareas":function R(U,T){return T.constructor===RegExp?T.test(U.className):E.hasClass(U,T)}F(E.select("textarea"),function(T){if(P.editor_deselector&&R(T,P.editor_deselector)){return }if(!P.editor_selector||R(T,P.editor_selector)){M=E.get(T.name);if(!T.id&&!M){T.id=T.name}if(!T.id||O.get(T.id)){T.id=E.uniqueId()}L=new tinymce.Editor(T.id,P);H.push(L);L.render(1)}});break}if(P.oninit){Q=S=0;F(H,function(T){S++;if(!T.initialized){T.onInit.add(function(){Q++;if(Q==S){I(P,"oninit")}})}else{Q++}if(Q==S){I(P,"oninit")}})}})},get:function(H){return this.editors[H]},getInstanceById:function(H){return this.get(H)},add:function(H){this.editors[H.id]=H;this._setActive(H);return H},remove:function(I){var H=this;if(!H.editors[I.id]){return null}delete H.editors[I.id];if(H.activeEditor==I){F(H.editors,function(J){H._setActive(J);return false})}I.destroy();return I},execCommand:function(N,L,K){var M=this,J=M.get(K),H;switch(N){case"mceFocus":J.focus();return true;case"mceAddEditor":case"mceAddControl":if(!M.get(K)){new tinymce.Editor(K,M.settings).render()}return true;case"mceAddFrameControl":H=K.window;H.tinyMCE=tinyMCE;H.tinymce=tinymce;tinymce.DOM.doc=H.document;tinymce.DOM.win=H;J=new tinymce.Editor(K.element_id,K);J.render();if(tinymce.isIE){function I(){J.destroy();H.detachEvent("onunload",I);H=H.tinyMCE=H.tinymce=null}H.attachEvent("onunload",I)}K.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(J){J.remove()}return true;case"mceToggleEditor":if(!J){M.execCommand("mceAddControl",0,K);return true}if(J.isHidden()){J.show()}else{J.hide()}return true}if(M.activeEditor){return M.activeEditor.execCommand(N,L,K)}return false},execInstanceCommand:function(L,K,J,I){var H=this.get(L);if(H){return H.execCommand(K,J,I)}return false},triggerSave:function(){F(this.editors,function(H){H.save()})},addI18n:function(J,K){var H,I=this.i18n;if(!tinymce.is(J,"string")){F(J,function(M,L){F(M,function(O,N){F(O,function(Q,P){if(N==="common"){I[L+"."+P]=Q}else{I[L+"."+N+"."+P]=Q}})})})}else{F(K,function(M,L){I[J+"."+L]=M})}},_setActive:function(H){this.selectedInstance=this.activeEditor=H}});tinymce.EditorManager.preInit()})();var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(){var N=tinymce.DOM,K=tinymce.dom.Event,F=tinymce.extend,L=tinymce.util.Dispatcher;var J=tinymce.each,A=tinymce.isGecko,B=tinymce.isIE,E=tinymce.isWebKit;var D=tinymce.is,H=tinymce.ThemeManager,C=tinymce.PluginManager,I=tinymce.EditorManager;var O=tinymce.inArray,M=tinymce.grep,G=tinymce.explode;tinymce.create("tinymce.Editor",{Editor:function(R,Q){var P=this;P.id=P.editorId=R;P.execCommands={};P.queryStateCommands={};P.queryValueCommands={};P.plugins={};J(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(S){P[S]=new L(P)});P.settings=Q=F({id:R,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url: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],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1},Q);P.documentBaseURI=new tinymce.util.URI(Q.document_base_url||tinymce.documentBaseURL,{base_uri:tinyMCE.baseURI});P.baseURI=I.baseURI;P.execCallback("setup",P)},render:function(R){var S=this,T=S.settings,U=S.id,P=tinymce.ScriptLoader;if(!K.domLoaded){K.add(document,"init",function(){S.render()});return }if(!R){T.strict_loading_mode=1;tinyMCE.settings=T}if(!S.getElement()){return }if(T.strict_loading_mode){P.settings.strict_mode=T.strict_loading_mode;tinymce.DOM.settings.strict=1}if(!/TEXTAREA|INPUT/i.test(S.getElement().nodeName)&&T.hidden_input&&N.getParent(U,"form")){N.insertAfter(N.create("input",{type:"hidden",name:U}),U)}S.windowManager=new tinymce.WindowManager(S);if(T.encoding=="xml"){S.onGetContent.add(function(V,W){if(W.save){W.content=N.encode(W.content)}})}if(T.add_form_submit_trigger){S.onSubmit.addToTop(function(){if(S.initialized){S.save();S.isNotDirty=1}})}if(T.add_unload_trigger&&!T.ask){S._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(S.initialized&&!S.destroyed&&!S.isHidden()){S.save({format:"raw",no_events:true})}})}tinymce.addUnload(S.destroy,S);if(T.submit_patch){S.onBeforeRenderUI.add(function(){var V=S.getElement().form;if(!V){return }if(V._mceOldSubmit){return }if(!V.submit.nodeType&&!V.submit.length){S.formElement=V;V._mceOldSubmit=V.submit;V.submit=function(){I.triggerSave();S.isNotDirty=1;return this._mceOldSubmit(this)}}V=null})}function Q(){if(T.language){l=tinyMCE.settings.language;P.add(tinyMCE.settings.document_base_url+"/lib/editor/tinymce/strings.php?lang="+l+"&dlg=0")}if(T.theme.charAt(0)!="-"&&!H.urls[T.theme]){H.load(T.theme,"themes/"+T.theme+"/editor_template"+tinymce.suffix+".js")}J(G(T.plugins),function(V){if(V&&V.charAt(0)!="-"&&!C.urls[V]){if(!E&&V=="safari"){return }C.load(V,"plugins/"+V+"/editor_plugin"+tinymce.suffix+".js")}});P.loadQueue(function(){if(T.ask){function V(){window.setTimeout(function(){K.remove(S.id,"focus",V);S.windowManager.confirm(S.getLang("edit_confirm"),function(W){if(W){S.init()}})},0)}K.add(S.id,"focus",V);return }if(!S.removed){S.init()}})}if(T.plugins.indexOf("compat2x")!=-1){C.load("compat2x","plugins/compat2x/editor_plugin"+tinymce.suffix+".js");P.loadQueue(Q)}else{Q()}},init:function(){var R,a=this,b=a.settings,X,U,W=a.getElement(),Q,P,Y,T,V,Z;I.add(a);b.theme=b.theme.replace(/-/,"");Q=H.get(b.theme);a.theme=new Q();if(a.theme.init&&b.init_theme){a.theme.init(a,H.urls[b.theme]||tinymce.documentBaseURL.replace(/\/$/,""))}J(G(b.plugins.replace(/\-/g,"")),function(f){var g=C.get(f),e=C.urls[f]||tinymce.documentBaseURL.replace(/\/$/,""),d;if(g){d=new g(a,e);a.plugins[f]=d;if(d.init){d.init(a,e)}}});if(b.popup_css){b.popup_css=a.documentBaseURI.toAbsolute(b.popup_css)}else{b.popup_css=a.baseURI.toAbsolute("themes/"+b.theme+"/skins/"+b.skin+"/dialog.css")}if(b.popup_css_add){b.popup_css+=","+a.documentBaseURI.toAbsolute(b.popup_css_add)}a.controlManager=new tinymce.ControlManager(a);a.undoManager=new tinymce.UndoManager(a);a.undoManager.onAdd.add(function(d,c){if(!c.initial){return a.onChange.dispatch(a,c,d)}});a.undoManager.onUndo.add(function(d,c){return a.onUndo.dispatch(a,c,d)});a.undoManager.onRedo.add(function(d,c){return a.onRedo.dispatch(a,c,d)});if(b.custom_undo_redo){a.onExecCommand.add(function(d,f,e,g,c){if(f!="Undo"&&f!="Redo"&&f!="mceRepaint"&&(!c||!c.skip_undo)){a.undoManager.add()}})}a.onExecCommand.add(function(d,e){if(!/^(FontName|FontSize)$/.test(e)){a.nodeChanged()}});if(A){function S(c,d){if(!d||!d.initial){a.execCommand("mceRepaint")}}a.onUndo.add(S);a.onRedo.add(S);a.onSetContent.add(S)}a.onBeforeRenderUI.dispatch(a,a.controlManager);if(b.render_ui){X=b.width||W.style.width||W.offsetWidth;U=b.height||W.style.height||W.offsetHeight;a.orgDisplay=W.style.display;Z=/^[0-9\.]+(|px)$/i;if(Z.test(""+X)){X=Math.max(parseInt(X)+(Q.deltaWidth||0),100)}if(Z.test(""+U)){U=Math.max(parseInt(U)+(Q.deltaHeight||0),100)}Q=a.theme.renderUI({targetNode:W,width:X,height:U,deltaWidth:b.delta_width,deltaHeight:b.delta_height});a.editorContainer=Q.editorContainer}N.setStyles(Q.sizeContainer||Q.editorContainer,{width:X,height:U});U=(Q.iframeHeight||U)+((U+"").indexOf("%")==-1?(Q.deltaHeight||0):"");if(U<100){U=100}a.iframeHTML=b.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+a.documentBaseURI.getURI()+'" />';a.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(tinymce.relaxedDomain){a.iframeHTML+='<script type="text/javascript">document.domain = "'+tinymce.relaxedDomain+'";<\/script>'}T=b.body_id||"tinymce";if(T.indexOf("=")!=-1){T=a.getParam("body_id","","hash");T=T[a.id]||T}V=b.body_class||"";if(V.indexOf("=")!=-1){V=a.getParam("body_class","","hash");V=V[a.id]||""}a.iframeHTML+='</head><body id="'+T+'" class="mceContentBody '+V+'"></body></html>';if(tinymce.relaxedDomain){if(B||(tinymce.isOpera&&parseFloat(opera.version())>=9.5)){Y='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+a.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}else{if(tinymce.isOpera){Y='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()'}}}R=N.add(Q.iframeContainer,"iframe",{id:a.id+"_ifr",src:Y||'javascript:""',frameBorder:"0",style:{width:"100%",height:U}});a.contentAreaContainer=Q.iframeContainer;N.get(Q.editorContainer).style.display=a.orgDisplay;N.get(a.id).style.display="none";if(tinymce.isOldWebKit){K.add(R,"load",a.setupIframe,a);R.src=tinymce.baseURL+"/plugins/safari/blank.htm"}else{if(!B||!tinymce.relaxedDomain){a.setupIframe()}W=R=Q=null}},setupIframe:function(){var S=this,U=S.settings,V=N.get(S.id),W=S.getDoc(),T,Q;if(!B||!tinymce.relaxedDomain){W.open();W.write(S.iframeHTML);W.close()}if(!B){try{if(!U.readonly){W.designMode="On"}}catch(R){}}if(B){Q=S.getBody();N.hide(Q);if(!U.readonly){Q.contentEditable=true}N.show(Q)}S.dom=new tinymce.DOM.DOMUtils(S.getDoc(),{keep_values:true,url_converter:S.convertURL,url_converter_scope:S,hex_colors:U.force_hex_style_colors,class_filter:U.class_filter,update_styles:1,fix_ie_paragraphs:1});S.serializer=new tinymce.dom.Serializer({entity_encoding:U.entity_encoding,entities:U.entities,valid_elements:U.verify_html===false?"*[*]":U.valid_elements,extended_valid_elements:U.extended_valid_elements,valid_child_elements:U.valid_child_elements,invalid_elements:U.invalid_elements,fix_table_elements:U.fix_table_elements,fix_list_elements:U.fix_list_elements,fix_content_duplication:U.fix_content_duplication,convert_fonts_to_spans:U.convert_fonts_to_spans,font_size_classes:U.font_size_classes,font_size_style_values:U.font_size_style_values,apply_source_formatting:U.apply_source_formatting,remove_linebreaks:U.remove_linebreaks,element_format:U.element_format,dom:S.dom});S.selection=new tinymce.dom.Selection(S.dom,S.getWin(),S.serializer);S.forceBlocks=new tinymce.ForceBlocks(S,{forced_root_block:U.forced_root_block});S.editorCommands=new tinymce.EditorCommands(S);S.serializer.onPreProcess.add(function(X,Y){return S.onPreProcess.dispatch(S,Y,X)});S.serializer.onPostProcess.add(function(X,Y){return S.onPostProcess.dispatch(S,Y,X)});S.onPreInit.dispatch(S);if(!U.gecko_spellcheck){S.getBody().spellcheck=0}if(!U.readonly){S._addEvents()}S.controlManager.onPostRender.dispatch(S,S.controlManager);S.onPostRender.dispatch(S);if(U.directionality){S.getBody().dir=U.directionality}if(U.nowrap){S.getBody().style.whiteSpace="nowrap"}if(U.auto_resize){S.onNodeChange.add(S.resizeToContent,S)}if(U.custom_elements){function P(X,Y){J(G(U.custom_elements),function(Z){var a;if(Z.indexOf("~")===0){Z=Z.substring(1);a="span"}else{a="div"}Y.content=Y.content.replace(new RegExp("<("+Z+")([^>]*)>","g"),"<"+a+' mce_name="$1"$2>');Y.content=Y.content.replace(new RegExp("</("+Z+")>","g"),"</"+a+">")})}S.onBeforeSetContent.add(P);S.onPostProcess.add(function(X,Y){if(Y.set){P(X,Y)}})}if(U.handle_node_change_callback){S.onNodeChange.add(function(Y,X,Z){S.execCallback("handle_node_change_callback",S.id,Z,-1,-1,true,S.selection.isCollapsed())})}if(U.save_callback){S.onSaveContent.add(function(X,Z){var Y=S.execCallback("save_callback",S.id,Z.content,S.getBody());if(Y){Z.content=Y}})}if(U.onchange_callback){S.onChange.add(function(Y,X){S.execCallback("onchange_callback",S,X)})}if(U.convert_newlines_to_brs){S.onBeforeSetContent.add(function(X,Y){if(Y.initial){Y.content=Y.content.replace(/\r?\n/g,"<br />")}})}if(U.fix_nesting&&B){S.onBeforeSetContent.add(function(X,Y){Y.content=S._fixNesting(Y.content)})}if(U.preformatted){S.onPostProcess.add(function(X,Y){Y.content=Y.content.replace(/^\s*<pre.*?>/,"");Y.content=Y.content.replace(/<\/pre>\s*$/,"");if(Y.set){Y.content='<pre class="mceItemHidden">'+Y.content+"</pre>"}})}if(U.verify_css_classes){S.serializer.attribValueFilter=function(a,Y){var Z,X;if(a=="class"){if(!S.classesRE){X=S.dom.getClasses();if(X.length>0){Z="";J(X,function(b){Z+=(Z?"|":"")+b["class"]});S.classesRE=new RegExp("("+Z+")","gi")}}return !S.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(Y)||S.classesRE.test(Y)?Y:""}return Y}}if(U.convert_fonts_to_spans){S._convertFonts()}if(U.inline_styles){S._convertInlineElements()}if(U.cleanup_callback){S.onBeforeSetContent.add(function(X,Y){Y.content=S.execCallback("cleanup_callback","insert_to_editor",Y.content,Y)});S.onPreProcess.add(function(X,Y){if(Y.set){S.execCallback("cleanup_callback","insert_to_editor_dom",Y.node,Y)}if(Y.get){S.execCallback("cleanup_callback","get_from_editor_dom",Y.node,Y)}});S.onPostProcess.add(function(X,Y){if(Y.set){Y.content=S.execCallback("cleanup_callback","insert_to_editor",Y.content,Y)}if(Y.get){Y.content=S.execCallback("cleanup_callback","get_from_editor",Y.content,Y)}})}if(U.save_callback){S.onGetContent.add(function(X,Y){if(Y.save){Y.content=S.execCallback("save_callback",S.id,Y.content,S.getBody())}})}if(U.handle_event_callback){S.onEvent.add(function(X,Y,Z){if(S.execCallback("handle_event_callback",Y,X,Z)===false){K.cancel(Y)}})}S.onSetContent.add(function(){S.addVisual(S.getBody())});if(U.padd_empty_editor){S.onPostProcess.add(function(X,Y){Y.content=Y.content.replace(/^(<p>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(A&&!U.readonly){try{W.designMode="Off";W.designMode="On"}catch(R){}}setTimeout(function(){if(S.removed){return }S.load({initial:true,format:(U.cleanup_on_startup?"html":"raw")});S.startContent=S.getContent({format:"raw"});S.undoManager.add({initial:true});S.initialized=true;S.onInit.dispatch(S);S.execCallback("setupcontent_callback",S.id,S.getBody(),S.getDoc());S.execCallback("init_instance_callback",S);S.focus(true);S.nodeChanged({initial:1});if(U.content_css){tinymce.each(G(U.content_css),function(X){S.dom.loadCSS(S.documentBaseURI.toAbsolute(X))})}if(U.auto_focus){setTimeout(function(){var X=I.get(U.auto_focus);X.selection.select(X.getBody(),1);X.selection.collapse(1);X.getWin().focus()},100)}},1);V=null},focus:function(Q){var S,P=this,R=P.settings.content_editable;if(!Q){if(!R&&(!B||P.selection.getNode().ownerDocument!=P.getDoc())){P.getWin().focus()}}if(I.activeEditor!=P){if((S=I.activeEditor)!=null){S.onDeactivate.dispatch(S,P)}P.onActivate.dispatch(P,S)}I._setActive(P)},execCallback:function(S){var P=this,R=P.settings[S],Q;if(!R){return }if(P.callbackLookup&&(Q=P.callbackLookup[S])){R=Q.func;Q=Q.scope}if(D(R,"string")){Q=R.replace(/\.\w+$/,"");Q=Q?tinymce.resolve(Q):0;R=tinymce.resolve(R);P.callbackLookup=P.callbackLookup||{};P.callbackLookup[S]={func:R,scope:Q}}return R.apply(Q||P,Array.prototype.slice.call(arguments,1))},translate:function(P){var R=this.settings.language||"en",Q=I.i18n;if(!P){return""}return Q[R+"."+P]||P.replace(/{\#([^}]+)\}/g,function(T,S){return Q[R+"."+S]||"{#"+S+"}"})},getLang:function(Q,P){return I.i18n[(this.settings.language||"en")+"."+Q]||(D(P)?P:"{#"+Q+"}")},getParam:function(U,R,P){var S=tinymce.trim,Q=D(this.settings[U])?this.settings[U]:R,T;if(P==="hash"){T={};if(D(Q,"string")){J(Q.indexOf("=")>0?Q.split(/[;,](?![^=;,]*(?:[;,]|$))/):Q.split(","),function(V){V=V.split("=");if(V.length>1){T[S(V[0])]=S(V[1])}else{T[S(V[0])]=S(V)}})}else{T=Q}return T}return Q},nodeChanged:function(R){var P=this,Q=P.selection,S=Q.getNode()||P.getBody();if(P.initialized){P.onNodeChange.dispatch(P,R?R.controlManager||P.controlManager:P.controlManager,B&&S.ownerDocument!=P.getDoc()?P.getBody():S,Q.isCollapsed(),R)}},addButton:function(R,Q){var P=this;P.buttons=P.buttons||{};P.buttons[R]=Q},addCommand:function(R,Q,P){this.execCommands[R]={func:Q,scope:P||this}},addQueryStateHandler:function(R,Q,P){this.queryStateCommands[R]={func:Q,scope:P||this}},addQueryValueHandler:function(R,Q,P){this.queryValueCommands[R]={func:Q,scope:P||this}},addShortcut:function(R,T,P,S){var Q=this,U;if(!Q.settings.custom_shortcuts){return false}Q.shortcuts=Q.shortcuts||{};if(D(P,"string")){U=P;P=function(){Q.execCommand(U,false,null)}}if(D(P,"object")){U=P;P=function(){Q.execCommand(U[0],U[1],U[2])}}J(G(R),function(V){var W={func:P,scope:S||this,desc:T,alt:false,ctrl:false,shift:false};J(G(V,"+"),function(X){switch(X){case"alt":case"ctrl":case"shift":W[X]=true;break;default:W.charCode=X.charCodeAt(0);W.keyCode=X.toUpperCase().charCodeAt(0)}});Q.shortcuts[(W.ctrl?"ctrl":"")+","+(W.alt?"alt":"")+","+(W.shift?"shift":"")+","+W.keyCode]=W});return true},execCommand:function(U,T,W,P){var R=this,S=0,V,Q;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(U)&&(!P||!P.skip_focus)){R.focus()}V={};R.onBeforeExecCommand.dispatch(R,U,T,W,V);if(V.terminate){return false}if(R.execCallback("execcommand_callback",R.id,R.selection.getNode(),U,T,W)){R.onExecCommand.dispatch(R,U,T,W,P);return true}if(V=R.execCommands[U]){Q=V.func.call(V.scope,T,W);if(Q!==true){R.onExecCommand.dispatch(R,U,T,W,P);return Q}}J(R.plugins,function(X){if(X.execCommand&&X.execCommand(U,T,W)){R.onExecCommand.dispatch(R,U,T,W,P);S=1;return false}});if(S){return true}if(R.theme.execCommand&&R.theme.execCommand(U,T,W)){R.onExecCommand.dispatch(R,U,T,W,P);return true}if(R.editorCommands.execCommand(U,T,W)){R.onExecCommand.dispatch(R,U,T,W,P);return true}R.getDoc().execCommand(U,T,W);R.onExecCommand.dispatch(R,U,T,W,P)},queryCommandState:function(T){var Q=this,S,R;if(Q._isHidden()){return }if(S=Q.queryStateCommands[T]){R=S.func.call(S.scope);if(R!==true){return R}}S=Q.editorCommands.queryCommandState(T);if(S!==-1){return S}try{return this.getDoc().queryCommandState(T)}catch(P){}},queryCommandValue:function(T){var Q=this,S,R;if(Q._isHidden()){return }if(S=Q.queryValueCommands[T]){R=S.func.call(S.scope);if(R!==true){return R}}S=Q.editorCommands.queryCommandValue(T);if(D(S)){return S}try{return this.getDoc().queryCommandValue(T)}catch(P){}},show:function(){var P=this;N.show(P.getContainer());N.hide(P.id);P.load()},hide:function(){var P=this,Q=P.getDoc();if(B&&Q){Q.execCommand("SelectAll")}P.save();N.hide(P.getContainer());N.setStyle(P.id,"display",P.orgDisplay)},isHidden:function(){return !N.isHidden(this.id)},setProgressState:function(P,Q,R){this.onSetProgressState.dispatch(this,P,Q,R);return P},resizeToContent:function(){var P=this;N.setStyle(P.id+"_ifr","height",P.getBody().scrollHeight)},load:function(S){var P=this,R=P.getElement(),Q;S=S||{};S.load=true;Q=P.setContent(D(R.value)?R.value:R.innerHTML,S);S.element=R;if(!S.no_events){P.onLoadContent.dispatch(P,S)}S.element=R=null;return Q},save:function(T){var P=this,S=P.getElement(),Q,R;if(!P.initialized){return }T=T||{};T.save=true;if(!T.no_events){P.undoManager.typing=0;P.undoManager.add()}T.element=S;Q=T.content=P.getContent(T);if(!T.no_events){P.onSaveContent.dispatch(P,T)}Q=T.content;if(!/TEXTAREA|INPUT/i.test(S.nodeName)){S.innerHTML=Q;if(R=N.getParent(P.id,"form")){J(R.elements,function(U){if(U.name==P.id){U.value=Q;return false}})}}else{S.value=Q}T.element=S=null;return Q},setContent:function(Q,R){var P=this;R=R||{};R.format=R.format||"html";R.set=true;R.content=Q;if(!R.no_events){P.onBeforeSetContent.dispatch(P,R)}if(!tinymce.isIE&&(Q.length===0||/^\s+$/.test(Q))){R.content=P.dom.setHTML(P.getBody(),'<br mce_bogus="1" />');R.format="raw"}R.content=P.dom.setHTML(P.getBody(),tinymce.trim(R.content));if(R.format!="raw"&&P.settings.cleanup){R.getInner=true;R.content=P.dom.setHTML(P.getBody(),P.serializer.serialize(P.getBody(),R))}if(!R.no_events){P.onSetContent.dispatch(P,R)}return R.content},getContent:function(R){var P=this,Q;R=R||{};R.format=R.format||"html";R.get=true;if(!R.no_events){P.onBeforeGetContent.dispatch(P,R)}if(R.format!="raw"&&P.settings.cleanup){R.getInner=true;Q=P.serializer.serialize(P.getBody(),R)}else{Q=P.getBody().innerHTML}Q=Q.replace(/^\s*|\s*$/g,"");R.content=Q;if(!R.no_events){P.onGetContent.dispatch(P,R)}return R.content},isDirty:function(){var P=this;return tinymce.trim(P.startContent)!=tinymce.trim(P.getContent({format:"raw",no_events:1}))&&!P.isNotDirty},getContainer:function(){var P=this;if(!P.container){P.container=N.get(P.editorContainer||P.id+"_parent")}return P.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return N.get(this.settings.content_element||this.id)},getWin:function(){var P=this,Q;if(!P.contentWindow){Q=N.get(P.id+"_ifr");if(Q){P.contentWindow=Q.contentWindow}}return P.contentWindow},getDoc:function(){var Q=this,P;if(!Q.contentDocument){P=Q.getWin();if(P){Q.contentDocument=P.document}}return Q.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(P,T,S){var Q=this,R=Q.settings;if(R.urlconverter_callback){return Q.execCallback("urlconverter_callback",P,S,true,T)}if(!R.convert_urls||(S&&S.nodeName=="LINK")||P.indexOf("file:")===0){return P}if(R.relative_urls){return Q.documentBaseURI.toRelative(P)}P=Q.documentBaseURI.toAbsolute(P,R.remove_script_host);return P},addVisual:function(R){var P=this,Q=P.settings;R=R||P.getBody();if(!D(P.hasVisual)){P.hasVisual=Q.visual}J(P.dom.select("table,a",R),function(T){var S;switch(T.nodeName){case"TABLE":S=P.dom.getAttrib(T,"border");if(!S||S=="0"){if(P.hasVisual){P.dom.addClass(T,Q.visual_table_class)}else{P.dom.removeClass(T,Q.visual_table_class)}}return ;case"A":S=P.dom.getAttrib(T,"name");if(S){if(P.hasVisual){P.dom.addClass(T,"mceItemAnchor")}else{P.dom.removeClass(T,"mceItemAnchor")}}return }});P.onVisualAid.dispatch(P,R,P.hasVisual)},remove:function(){var P=this,Q=P.getContainer();P.removed=1;P.hide();P.execCallback("remove_instance_callback",P);P.onRemove.dispatch(P);P.onExecCommand.listeners=[];I.remove(P);N.remove(Q)},destroy:function(Q){var P=this;if(P.destroyed){return }if(!Q){tinymce.removeUnload(P.destroy);tinyMCE.onBeforeUnload.remove(P._beforeUnload);if(P.theme.destroy){P.theme.destroy()}P.controlManager.destroy();P.selection.destroy();P.dom.destroy();if(!P.settings.content_editable){K.clear(P.getWin());K.clear(P.getDoc())}K.clear(P.getBody());K.clear(P.formElement)}if(P.formElement){P.formElement.submit=P.formElement._mceOldSubmit;P.formElement._mceOldSubmit=null}P.contentAreaContainer=P.formElement=P.container=P.settings.content_element=P.bodyElement=P.contentDocument=P.contentWindow=null;if(P.selection){P.selection=P.selection.win=P.selection.dom=P.selection.dom.doc=null}P.destroyed=1},_addEvents:function(){var W=this,Q,X=W.settings,T={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function P(a,b){var Z=a.type;if(W.removed){return }if(W.onEvent.dispatch(W,a,b)!==false){W[T[a.fakeType||a.type]].dispatch(W,a,b)}}J(T,function(a,Z){switch(Z){case"contextmenu":if(tinymce.isOpera){K.add(W.getBody(),"mousedown",function(b){if(b.ctrlKey){b.fakeType="contextmenu";P(b)}})}else{K.add(W.getBody(),Z,P)}break;case"paste":K.add(W.getBody(),Z,function(g){var b,d,c,f;if(g.clipboardData){b=g.clipboardData.getData("text/plain")}else{if(tinymce.isIE){b=W.getWin().clipboardData.getData("Text")}}P(g,{text:b,html:d})});break;case"submit":case"reset":K.add(W.getElement().form||N.getParent(W.id,"form"),Z,P);break;default:K.add(X.content_editable?W.getBody():W.getDoc(),Z,P)}});K.add(X.content_editable?W.getBody():(A?W.getDoc():W.getWin()),"focus",function(Z){W.focus(true)});if(tinymce.isGecko){K.add(W.getDoc(),"DOMNodeInserted",function(a){var Z;a=a.target;if(a.nodeType===1&&a.nodeName==="IMG"&&(Z=a.getAttribute("mce_src"))){a.src=W.documentBaseURI.toAbsolute(Z)}})}if(A){function R(){var a=this,c=a.getDoc(),b=a.settings;if(A&&!b.readonly){if(a._isHidden()){try{if(!b.content_editable){c.designMode="On"}}catch(Z){}}try{c.execCommand("styleWithCSS",0,false)}catch(Z){if(!a._isHidden()){try{c.execCommand("useCSS",0,true)}catch(Z){}}}if(!b.table_inline_editing){try{c.execCommand("enableInlineTableEditing",false,false)}catch(Z){}}if(!b.object_resizing){try{c.execCommand("enableObjectResizing",false,false)}catch(Z){}}}}W.onBeforeExecCommand.add(R);W.onMouseDown.add(R)}W.onMouseUp.add(W.nodeChanged);W.onClick.add(W.nodeChanged);W.onKeyUp.add(function(Z,a){var b=a.keyCode;if((b>=33&&b<=36)||(b>=37&&b<=40)||b==13||b==45||b==46||b==8||(tinymce.isMac&&(b==91||b==93))||a.ctrlKey){W.nodeChanged()}});W.onReset.add(function(){W.setContent(W.startContent,{format:"raw"})});if(W.getParam("tab_focus")){function Y(Z,a){if(a.keyCode===9){return K.cancel(a)}}function U(b,h){var Z,c,g,d,a;function j(e){g=N.getParent(b.id,"form");d=g.elements;if(g){J(d,function(k,f){if(k.id==b.id){Z=f;return false}});if(e>0){for(c=Z+1;c<d.length;c++){if(d[c].type!="hidden"){return d[c]}}}else{for(c=Z-1;c>=0;c--){if(d[c].type!="hidden"){return d[c]}}}}return null}if(h.keyCode===9){a=G(b.getParam("tab_focus"));if(a.length==1){a[1]=a[0];a[0]=":prev"}if(h.shiftKey){if(a[0]==":prev"){d=j(-1)}else{d=N.get(a[0])}}else{if(a[1]==":next"){d=j(1)}else{d=N.get(a[1])}}if(d){if(b=I.get(d.id||d.name)){b.focus()}else{window.setTimeout(function(){window.focus();d.focus()},10)}return K.cancel(h)}}}W.onKeyUp.add(Y);if(A){W.onKeyPress.add(U);W.onKeyDown.add(Y)}else{W.onKeyDown.add(U)}}if(X.custom_shortcuts){if(X.custom_undo_redo_keyboard_shortcuts){W.addShortcut("ctrl+z",W.getLang("undo_desc"),"Undo");W.addShortcut("ctrl+y",W.getLang("redo_desc"),"Redo")}if(A){W.addShortcut("ctrl+b",W.getLang("bold_desc"),"Bold");W.addShortcut("ctrl+i",W.getLang("italic_desc"),"Italic");W.addShortcut("ctrl+u",W.getLang("underline_desc"),"Underline")}for(Q=1;Q<=6;Q++){W.addShortcut("ctrl+"+Q,"",["FormatBlock",false,"<h"+Q+">"])}W.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);W.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);W.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function S(a){var Z=null;if(!a.altKey&&!a.ctrlKey&&!a.metaKey){return Z}J(W.shortcuts,function(b){if(b.ctrl!=a.ctrlKey&&(!tinymce.isMac||b.ctrl==a.metaKey)){return }if(b.alt!=a.altKey){return }if(b.shift!=a.shiftKey){return }if(a.keyCode==b.keyCode||(a.charCode&&a.charCode==b.charCode)){Z=b;return false}});return Z}W.onKeyUp.add(function(Z,a){var b=S(a);if(b){return K.cancel(a)}});W.onKeyPress.add(function(Z,a){var b=S(a);if(b){return K.cancel(a)}});W.onKeyDown.add(function(Z,a){var b=S(a);if(b){b.func.call(b.scope);return K.cancel(a)}})}if(tinymce.isIE){K.add(W.getDoc(),"controlselect",function(b){var a=W.resizeInfo,Z;b=b.target;if(b.nodeName!=="IMG"){return }if(a){K.remove(a.node,a.ev,a.cb)}if(!W.dom.hasClass(b,"mceItemNoResize")){ev="resizeend";Z=K.add(b,ev,function(d){var c;d=d.target;if(c=W.dom.getStyle(d,"width")){W.dom.setAttrib(d,"width",c.replace(/[^0-9%]+/g,""));W.dom.setStyle(d,"width","")}if(c=W.dom.getStyle(d,"height")){W.dom.setAttrib(d,"height",c.replace(/[^0-9%]+/g,""));W.dom.setStyle(d,"height","")}})}else{ev="resizestart";Z=K.add(b,"resizestart",K.cancel,K)}a=W.resizeInfo={node:b,ev:ev,cb:Z}});W.onKeyDown.add(function(Z,a){switch(a.keyCode){case 8:if(W.selection.getRng().item){W.selection.getRng().item(0).removeNode();return K.cancel(a)}}})}if(tinymce.isOpera){W.onClick.add(function(Z,a){K.prevent(a)})}if(X.custom_undo_redo){function V(){W.undoManager.typing=0;W.undoManager.add()}if(tinymce.isIE){K.add(W.getWin(),"blur",function(Z){var a;if(W.selection){a=W.selection.getNode();if(!W.removed&&a.ownerDocument&&a.ownerDocument!=W.getDoc()){V()}}})}else{K.add(W.getDoc(),"blur",function(){if(W.selection&&!W.removed){V()}})}W.onMouseDown.add(V);W.onKeyUp.add(function(Z,a){if((a.keyCode>=33&&a.keyCode<=36)||(a.keyCode>=37&&a.keyCode<=40)||a.keyCode==13||a.keyCode==45||a.ctrlKey){W.undoManager.typing=0;W.undoManager.add()}});W.onKeyDown.add(function(Z,a){if((a.keyCode>=33&&a.keyCode<=36)||(a.keyCode>=37&&a.keyCode<=40)||a.keyCode==13||a.keyCode==45){if(W.undoManager.typing){W.undoManager.add();W.undoManager.typing=0}return }if(!W.undoManager.typing){W.undoManager.add();W.undoManager.typing=1}})}},_convertInlineElements:function(){var V=this,X=V.settings,Q=V.dom,U,S,R,W,P;function T(Y,Z){if(!X.inline_styles){return }if(Z.get){J(V.dom.select("table,u,strike",Z.node),function(a){switch(a.nodeName){case"TABLE":if(U=Q.getAttrib(a,"height")){Q.setStyle(a,"height",U);Q.setAttrib(a,"height","")}break;case"U":case"STRIKE":a.style.textDecoration=a.nodeName=="U"?"underline":"line-through";Q.setAttrib(a,"mce_style","");Q.setAttrib(a,"mce_name","span");break}})}else{if(Z.set){J(V.dom.select("table,span",Z.node).reverse(),function(a){if(a.nodeName=="TABLE"){if(U=Q.getStyle(a,"height")){Q.setAttrib(a,"height",U.replace(/[^0-9%]+/g,""))}}else{if(a.style.textDecoration=="underline"){R="u"}else{if(a.style.textDecoration=="line-through"){R="strike"}else{R=""}}if(R){a.style.textDecoration="";Q.setAttrib(a,"mce_style","");S=Q.create(R,{style:Q.getAttrib(a,"style")});Q.replace(S,a,1)}}})}}}V.onPreProcess.add(T);if(!X.cleanup_on_startup){V.onSetContent.add(function(Y,Z){if(Z.initial){T(V,{node:V.getBody(),set:1})}})}},_convertFonts:function(){var T=this,U=T.settings,V=T.dom,S,Q,P,R;if(!U.inline_styles){return }S=[8,10,12,14,18,24,36];Q=["xx-small","x-small","small","medium","large","x-large","xx-large"];if(P=U.font_size_style_values){P=G(P)}if(R=U.font_size_classes){R=G(R)}T.onPreProcess.add(function(Y,a){var b,Z,X,W;if(!U.inline_styles){return }if(a.get){X=T.dom.select("font",a.node);for(W=X.length-1;W>=0;W--){b=X[W];Z=V.create("span",{style:V.getAttrib(b,"style"),"class":V.getAttrib(b,"class")});V.setStyles(Z,{fontFamily:V.getAttrib(b,"face"),color:V.getAttrib(b,"color"),backgroundColor:b.style.backgroundColor});if(b.size){if(P){V.setStyle(Z,"fontSize",P[parseInt(b.size)-1])}else{V.setAttrib(Z,"class",R[parseInt(b.size)-1])}}V.setAttrib(Z,"mce_style","");V.replace(Z,b,1)}}})},_isHidden:function(){var P;if(!A){return 0}P=this.selection.getSel();return(!P||!P.rangeCount||P.rangeCount==0)},_fixNesting:function(Q){var R=[],P;Q=Q.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(T,S,V){var U;if(S==="/"){if(!R.length){return""}if(V!==R[R.length-1].tag){for(P=R.length-1;P>=0;P--){if(R[P].tag===V){R[P].close=1;break}}return""}else{R.pop();if(R.length&&R[R.length-1].close){T=T+"</"+R[R.length-1].tag+">";R.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(V)){return T}if(/\/>$/.test(T)){return T}R.push({tag:V})}return T});for(P=R.length-1;P>=0;P--){Q+="</"+R[P].tag+">"}return Q}})})();(function(){var F=tinymce.each,D=tinymce.isIE,B=tinymce.isGecko,C=tinymce.isOpera,E=tinymce.isWebKit;function A(G){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(G.nodeName)}tinymce.create("tinymce.EditorCommands",{EditorCommands:function(G){this.editor=G},execCommand:function(L,K,M){var I=this,G=I.editor,J;switch(L){case"Cut":case"Copy":case"Paste":try{G.getDoc().execCommand(L,K,M)}catch(H){if(B){G.windowManager.confirm(G.getLang("clipboard_msg"),function(N){if(N){window.open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","mceExternal")}})}else{G.windowManager.alert(G.getLang("clipboard_no_support"))}}return true;case"mceResetDesignMode":case"mceBeginUndoLevel":return true;case"unlink":I.UnLink();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":I.mceJustify(L,L.substring(7).toLowerCase());return true;case"mceEndUndoLevel":case"mceAddUndoLevel":G.undoManager.add();return true;default:J=this[L];if(J){J.call(this,K,M);return true}}return false},Indent:function(){var G=this.editor,L=G.dom,J=G.selection,K,H,I;H=G.settings.indentation;I=/[a-z%]+$/i.exec(H);H=parseInt(H);if(G.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){F(this._getSelectedBlocks(),function(M){L.setStyle(M,"paddingLeft",(parseInt(M.style.paddingLeft||0)+H)+I)});return }G.getDoc().execCommand("Indent",false,null);if(D){L.getParent(J.getNode(),function(M){if(M.nodeName=="BLOCKQUOTE"){M.dir=M.style.cssText=""}})}},Outdent:function(){var H=this.editor,M=H.dom,K=H.selection,L,G,I,J;I=H.settings.indentation;J=/[a-z%]+$/i.exec(I);I=parseInt(I);if(H.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){F(this._getSelectedBlocks(),function(N){G=Math.max(0,parseInt(N.style.paddingLeft||0)-I);M.setStyle(N,"paddingLeft",G?G+J:"")});return }H.getDoc().execCommand("Outdent",false,null)},mceSetAttribute:function(I,H){var G=this.editor,K=G.dom,J;if(J=K.getParent(G.selection.getNode(),K.isBlock)){K.setAttrib(J,H.name,H.value)}},mceSetContent:function(H,G){this.editor.setContent(G)},mceToggleVisualAid:function(){var G=this.editor;G.hasVisual=!G.hasVisual;G.addVisual()},mceReplaceContent:function(H,G){var I=this.editor.selection;I.setContent(G.replace(/\{\$selection\}/g,I.getContent({format:"text"})))},mceInsertLink:function(I,H){var G=this.editor,J=G.selection,K=G.dom.getParent(J.getNode(),"A");if(tinymce.is(H,"string")){H={href:H}}function L(M){F(H,function(O,N){G.dom.setAttrib(M,N,O)})}if(!K){G.execCommand("CreateLink",false,"javascript:mctmp(0);");F(G.dom.select("a"),function(M){if(M.href=="javascript:mctmp(0);"){L(M)}})}else{if(H.href){L(K)}else{G.dom.remove(K,1)}}},UnLink:function(){var G=this.editor,H=G.selection;if(H.isCollapsed()){H.select(H.getNode())}G.getDoc().execCommand("unlink",false,null);H.collapse(0)},FontName:function(I,H){var J=this,G=J.editor,K=G.selection,L;if(!H){if(K.isCollapsed()){K.select(K.getNode())}J.RemoveFormat()}else{if(G.settings.convert_fonts_to_spans){J._applyInlineStyle("span",{style:{fontFamily:H}})}else{G.getDoc().execCommand("FontName",false,H)}}},FontSize:function(J,I){var H=this.editor,L=H.settings,K,G;if(L.convert_fonts_to_spans&&I>=1&&I<=7){G=tinymce.explode(L.font_size_style_values);K=tinymce.explode(L.font_size_classes);if(K){I=K[I-1]||I}else{I=G[I-1]||I}}if(I>=1&&I<=7){H.getDoc().execCommand("FontSize",false,I)}else{this._applyInlineStyle("span",{style:{fontSize:I}})}},queryCommandValue:function(H){var G=this["queryValue"+H];if(G){return G.call(this,H)}return false},queryCommandState:function(H){var G;switch(H){case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":return this.queryStateJustify(H,H.substring(7).toLowerCase());default:if(G=this["queryState"+H]){return G.call(this,H)}}return -1},_queryState:function(H){try{return this.editor.getDoc().queryCommandState(H)}catch(G){}},_queryVal:function(H){try{return this.editor.getDoc().queryCommandValue(H)}catch(G){}},queryValueFontSize:function(){var H=this.editor,G=0,I;if(I=H.dom.getParent(H.selection.getNode(),"SPAN")){G=I.style.fontSize}if(!G&&(C||E)){if(I=H.dom.getParent(H.selection.getNode(),"FONT")){G=I.size}return G}return G||this._queryVal("FontSize")},queryValueFontName:function(){var H=this.editor,G=0,I;if(I=H.dom.getParent(H.selection.getNode(),"FONT")){G=I.face}if(I=H.dom.getParent(H.selection.getNode(),"SPAN")){G=I.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}if(!G){G=this._queryVal("FontName")}return G},mceJustify:function(N,O){var K=this.editor,M=K.selection,G=M.getNode(),P=G.nodeName,H,J,I=K.dom,L;if(K.settings.inline_styles&&this.queryStateJustify(N,O)){L=1}H=I.getParent(G,K.dom.isBlock);if(P=="IMG"){if(O=="full"){return }if(L){if(O=="center"){I.setStyle(H||G.parentNode,"textAlign","")}I.setStyle(G,"float","");this.mceRepaint();return }if(O=="center"){if(H&&/^(TD|TH)$/.test(H.nodeName)){H=0}if(!H||H.childNodes.length>1){J=I.create("p");J.appendChild(G.cloneNode(false));if(H){I.insertAfter(J,H)}else{I.insertAfter(J,G)}I.remove(G);G=J.firstChild;H=J}I.setStyle(H,"textAlign",O);I.setStyle(G,"float","")}else{I.setStyle(G,"float",O);I.setStyle(H||G.parentNode,"textAlign","")}this.mceRepaint();return }if(K.settings.inline_styles&&K.settings.forced_root_block){if(L){O=""}F(this._getSelectedBlocks(I.getParent(M.getStart(),I.isBlock),I.getParent(M.getEnd(),I.isBlock)),function(Q){I.setAttrib(Q,"align","");I.setStyle(Q,"textAlign",O=="full"?"justify":O)});return }else{if(!L){K.getDoc().execCommand(N,false,null)}}if(K.settings.inline_styles){if(L){I.getParent(K.selection.getNode(),function(Q){if(Q.style&&Q.style.textAlign){I.setStyle(Q,"textAlign","")}});return }F(I.select("*"),function(R){var Q=R.align;if(Q){if(Q=="full"){Q="justify"}I.setStyle(R,"textAlign",Q);I.setAttrib(R,"align","")}})}},mceSetCSSClass:function(H,G){this.mceSetStyleInfo(0,{command:"setattrib",name:"class",value:G})},getSelectedElement:function(){var U=this,O=U.editor,N=O.dom,R=O.selection,H=R.getRng(),L,K,S,P,J,G,Q,I,V,T;if(R.isCollapsed()||H.item){return R.getNode()}T=O.settings.merge_styles_invalid_parents;if(tinymce.is(T,"string")){T=new RegExp(T,"i")}if(D){L=H.duplicate();L.collapse(true);S=L.parentElement();K=H.duplicate();K.collapse(false);P=K.parentElement();if(S!=P){L.move("character",1);S=L.parentElement()}if(S==P){L=H.duplicate();L.moveToElementText(S);if(L.compareEndPoints("StartToStart",H)==0&&L.compareEndPoints("EndToEnd",H)==0){return T&&T.test(S.nodeName)?null:S}}}else{function M(W){return N.getParent(W,function(X){return X.nodeType==1})}S=H.startContainer;P=H.endContainer;J=H.startOffset;G=H.endOffset;if(!H.collapsed){if(S==P){if(J-G<2){if(S.hasChildNodes()){I=S.childNodes[J];return T&&T.test(I.nodeName)?null:I}}}}if(S.nodeType!=3||P.nodeType!=3){return null}if(J==0){I=M(S);if(I&&I.firstChild!=S){I=null}}if(J==S.nodeValue.length){Q=S.nextSibling;if(Q&&Q.nodeType==1){I=S.nextSibling}}if(G==0){Q=P.previousSibling;if(Q&&Q.nodeType==1){V=Q}}if(G==P.nodeValue.length){V=M(P);if(V&&V.lastChild!=P){V=null}}if(I==V){return T&&I&&T.test(I.nodeName)?null:I}}return null},InsertHorizontalRule:function(){if(B||D){this.editor.selection.setContent("<hr />")}else{this.editor.getDoc().execCommand("InsertHorizontalRule",false,"")}},RemoveFormat:function(){var I=this,H=I.editor,J=H.selection,G;if(E){J.setContent(J.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{H.getDoc().execCommand("RemoveFormat",false,null)}I.mceSetStyleInfo(0,{command:"removeformat"});H.addVisual()},mceSetStyleInfo:function(N,M){var Q=this,H=Q.editor,J=H.getDoc(),G=H.dom,I,K,R=H.selection,P=M.wrapper||"span",K=R.getBookmark(),O;function L(T,S){if(T.nodeType==1){switch(M.command){case"setattrib":return G.setAttrib(T,M.name,M.value);case"setstyle":return G.setStyle(T,M.name,M.value);case"removeformat":return G.setAttrib(T,"class","")}}}O=H.settings.merge_styles_invalid_parents;if(tinymce.is(O,"string")){O=new RegExp(O,"i")}if((I=Q.getSelectedElement())&&!H.settings.force_span_wrappers){L(I,1)}else{J.execCommand("FontName",false,"__");F(E?G.select("span"):G.select("font"),function(U){var S,T;if(G.getAttrib(U,"face")=="__"||U.style.fontFamily==="__"){S=G.create(P,{mce_new:"1"});L(S);F(U.childNodes,function(V){S.appendChild(V.cloneNode(true))});G.replace(S,U)}})}F(G.select(P).reverse(),function(T){var S=T.parentNode;if(!G.getAttrib(T,"mce_new")){S=G.getParent(T,function(U){return U.nodeType==1&&G.getAttrib(U,"mce_new")});if(S){G.remove(T,1)}}});F(G.select(P).reverse(),function(T){var S=T.parentNode;if(!S||!G.getAttrib(T,"mce_new")){return }if(H.settings.force_span_wrappers&&S.nodeName!="SPAN"){return }if(S.nodeName==P.toUpperCase()&&S.childNodes.length==1){return G.remove(S,1)}if(T.nodeType==1&&(!O||!O.test(S.nodeName))&&S.childNodes.length==1){L(S);G.setAttrib(T,"class","")}});F(G.select(P).reverse(),function(S){if(G.getAttrib(S,"mce_new")||(G.getAttribs(S).length<=1&&S.className==="")){if(!G.getAttrib(S,"class")&&!G.getAttrib(S,"style")){return G.remove(S,1)}G.setAttrib(S,"mce_new","")}});R.moveToBookmark(K)},queryStateJustify:function(K,H){var G=this.editor,J=G.selection.getNode(),I=G.dom;if(J&&J.nodeName=="IMG"){if(I.getStyle(J,"float")==H){return 1}return J.parentNode.style.textAlign==H}J=I.getParent(G.selection.getStart(),function(L){return L.nodeType==1&&L.style.textAlign});if(H=="full"){H="justify"}if(G.settings.inline_styles){return(J&&J.style.textAlign==H)}return this._queryState(K)},ForeColor:function(I,H){var G=this.editor;if(G.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{color:H}});return }else{G.getDoc().execCommand("ForeColor",false,H)}},HiliteColor:function(I,K){var H=this,G=H.editor,J=G.getDoc();if(G.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{backgroundColor:K}});return }function L(N){if(!B){return }try{J.execCommand("styleWithCSS",0,N)}catch(M){J.execCommand("useCSS",0,!N)}}if(B||C){L(true);J.execCommand("hilitecolor",false,K);L(false)}else{J.execCommand("BackColor",false,K)}},Undo:function(){var G=this.editor;if(G.settings.custom_undo_redo){G.undoManager.undo();G.nodeChanged()}else{G.getDoc().execCommand("Undo",false,null)}},Redo:function(){var G=this.editor;if(G.settings.custom_undo_redo){G.undoManager.redo();G.nodeChanged()}else{G.getDoc().execCommand("Redo",false,null)}},FormatBlock:function(N,H){var O=this,L=O.editor,P=L.selection,J=L.dom,G,K,M;function I(Q){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(Q.nodeName)}G=J.getParent(P.getNode(),function(Q){return I(Q)});if(G){if((D&&I(G.parentNode))||G.nodeName=="DIV"){K=L.dom.create(H);F(J.getAttribs(G),function(Q){J.setAttrib(K,Q.nodeName,J.getAttrib(G,Q.nodeName))});M=P.getBookmark();J.replace(K,G,1);P.moveToBookmark(M);L.nodeChanged();return }}H=L.settings.forced_root_block?(H||"<p>"):H;if(H.indexOf("<")==-1){H="<"+H+">"}if(tinymce.isGecko){H=H.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,"$1")}L.getDoc().execCommand("FormatBlock",false,H)},mceCleanup:function(){var H=this.editor,I=H.selection,G=I.getBookmark();H.setContent(H.getContent());I.moveToBookmark(G)},mceRemoveNode:function(J,K){var H=this.editor,I=H.selection,G,L=K||I.getNode();if(L==H.getBody()){return }G=I.getBookmark();H.dom.remove(L,1);I.moveToBookmark(G);H.nodeChanged()},mceSelectNodeDepth:function(I,J){var G=this.editor,H=G.selection,K=0;G.dom.getParent(H.getNode(),function(L){if(L.nodeType==1&&K++==J){H.select(L);G.nodeChanged();return false}},G.getBody())},mceSelectNode:function(H,G){this.editor.selection.select(G)},mceInsertContent:function(G,H){this.editor.selection.setContent(H)},mceInsertRawHTML:function(H,I){var G=this.editor;G.selection.setContent("tiny_mce_marker");G.setContent(G.getContent().replace(/tiny_mce_marker/g,I))},mceRepaint:function(){var I,G,J=this.editor;if(tinymce.isGecko){try{I=J.selection;G=I.getBookmark(true);if(I.getSel()){I.getSel().selectAllChildren(J.getBody())}I.collapse(true);I.moveToBookmark(G)}catch(H){}}},queryStateUnderline:function(){var G=this.editor,H=G.selection.getNode();if(H&&H.nodeName=="A"){return false}return this._queryState("Underline")},queryStateOutdent:function(){var G=this.editor,H;if(G.settings.inline_styles){if((H=G.dom.getParent(G.selection.getStart(),G.dom.isBlock))&&parseInt(H.style.paddingLeft)>0){return true}if((H=G.dom.getParent(G.selection.getEnd(),G.dom.isBlock))&&parseInt(H.style.paddingLeft)>0){return true}}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!G.settings.inline_styles&&!!G.dom.getParent(G.selection.getNode(),"BLOCKQUOTE"))},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(G){return G.nodeName==="BLOCKQUOTE"})},mceBlockQuote:function(){var R=this,N=R.editor,T=N.selection,K=N.dom,P,O,J,I,S,H,Q,M,G;function L(U){return K.getParent(U,function(V){return V.nodeName==="BLOCKQUOTE"})}P=K.getParent(T.getStart(),A);O=K.getParent(T.getEnd(),A);if(S=L(P)){if(P!=O||P.childNodes.length>1||(P.childNodes.length==1&&P.firstChild.nodeName!="BR")){I=T.getBookmark()}if(L(O)){Q=S.cloneNode(false);while(J=O.nextSibling){Q.appendChild(J.parentNode.removeChild(J))}}if(Q){K.insertAfter(Q,S)}G=R._getSelectedBlocks(P,O);for(M=G.length-1;M>=0;M--){K.insertAfter(G[M],S)}if(/^\s*$/.test(S.innerHTML)){K.remove(S,1)}if(Q&&/^\s*$/.test(Q.innerHTML)){K.remove(Q,1)}if(!I){if(!D){H=N.getDoc().createRange();H.setStart(P,0);H.setEnd(P,0);T.setRng(H)}else{T.select(P);T.collapse(0);if(K.getParent(T.getStart(),A)!=P){H=T.getRng();H.move("character",-1);H.select()}}}else{R.editor.selection.moveToBookmark(I)}return }if(D&&!P&&!O){R.editor.getDoc().execCommand("Indent");J=L(T.getNode());J.style.margin=J.dir="";return }if(!P||!O){return }if(P!=O||P.childNodes.length>1||(P.childNodes.length==1&&P.firstChild.nodeName!="BR")){I=T.getBookmark()}F(R._getSelectedBlocks(L(T.getStart()),L(T.getEnd())),function(U){if(U.nodeName=="BLOCKQUOTE"&&!S){S=U;return }if(!S){S=K.create("blockquote");U.parentNode.insertBefore(S,U)}if(U.nodeName=="BLOCKQUOTE"&&S){J=U.firstChild;while(J){S.appendChild(J.cloneNode(true));J=J.nextSibling}K.remove(U);return }S.appendChild(K.remove(U))});if(!I){if(!D){H=N.getDoc().createRange();H.setStart(P,0);H.setEnd(P,0);T.setRng(H)}else{T.select(P);T.collapse(1)}}else{T.moveToBookmark(I)}},_applyInlineStyle:function(N,I,L){var P=this,M=P.editor,K=M.dom,H,O={},J;N=N.toUpperCase();if(L&&L.check_classes&&I["class"]){L.check_classes.push(I["class"])}function G(){var Q;F(K.select(tinymce.isWebKit?"span":"font"),function(R){if(R.style.fontFamily=="mceinline"||R.face=="mceinline"){if(!Q){Q=M.selection.getBookmark()}I._mce_new="1";K.replace(K.create(N,I),R,1)}});F(K.select(N),function(S){if(S.getAttribute("_mce_new")){function R(T){if(T.nodeType==1){F(I.style,function(V,U){K.setStyle(T,U,"")});if(I["class"]&&T.className&&L){F(L.check_classes,function(U){if(K.hasClass(T,U)){K.removeClass(T,U)}})}}}F(K.select(N,S),R);if(S.parentNode&&S.parentNode.nodeType==1&&S.parentNode.childNodes.length==1){R(S.parentNode)}K.getParent(S.parentNode,function(T){if(T.nodeType==1){if(I.style){F(I.style,function(W,V){var U;if(!O[V]&&(U=K.getStyle(T,V))){if(U===W){K.setStyle(S,V,"")}O[V]=1}})}if(I["class"]&&T.className&&L){F(L.check_classes,function(U){if(K.hasClass(T,U)){K.removeClass(S,U)}})}}return false});S.removeAttribute("_mce_new")}});F(K.select(N).reverse(),function(S){var R=0;F(K.getAttribs(S),function(T){if(T.nodeName.substring(0,1)!="_"&&K.getAttrib(S,T.nodeName)!=""){R++}});if(R==0){K.remove(S,1)}});M.selection.moveToBookmark(Q);return !!Q}M.focus();M.getDoc().execCommand("FontName",false,"mceinline");G();if(J=P._applyInlineStyle.keyhandler){M.onKeyUp.remove(J);M.onKeyDown.remove(J)}if(M.selection.isCollapsed()){P._applyInlineStyle.keyhandler=J=function(Q){if(G()){M.onKeyDown.remove(P._applyInlineStyle.keyhandler);M.onKeyPress.remove(P._applyInlineStyle.keyhandler)}if(Q.type=="keyup"){M.onKeyUp.remove(P._applyInlineStyle.keyhandler)}};M.onKeyDown.add(J);M.onKeyPress.add(J);M.onKeyUp.add(J)}},_getSelectedBlocks:function(N,G){var K=this.editor,J=K.dom,O=K.selection,M,L,I,H=[];M=J.getParent(N||O.getStart(),A);L=J.getParent(G||O.getEnd(),A);if(M){H.push(M)}if(M&&L&&M!=L){I=M;while((I=I.nextSibling)&&I!=L){if(A(I)){H.push(I)}}}if(L&&M!=L){H.push(L)}return H}})})();tinymce.create("tinymce.UndoManager",{index:0,data:null,typing:0,UndoManager:function(B){var C=this,A=tinymce.util.Dispatcher;C.editor=B;C.data=[];C.onAdd=new A(this);C.onUndo=new A(this);C.onRedo=new A(this)},add:function(B){var E=this,D,C=E.editor,A,F=C.settings,G;B=B||{};B.content=B.content||C.getContent({format:"raw",no_events:1});B.content=B.content.replace(/^\s*|\s*$/g,"");G=E.data[E.index>0&&(E.index==0||E.index==E.data.length)?E.index-1:E.index];if(!B.initial&&G&&B.content==G.content){return null}if(F.custom_undo_redo_levels){if(E.data.length>F.custom_undo_redo_levels){for(D=0;D<E.data.length-1;D++){E.data[D]=E.data[D+1]}E.data.length--;E.index=E.data.length}}if(F.custom_undo_redo_restore_selection&&!B.initial){B.bookmark=A=B.bookmark||C.selection.getBookmark()}if(E.index<E.data.length){E.index++}if(E.data.length===0&&!B.initial){return null}E.data.length=E.index+1;E.data[E.index++]=B;if(B.initial){E.index=0}if(E.data.length==2&&E.data[0].initial){E.data[0].bookmark=A}E.onAdd.dispatch(E,B);C.isNotDirty=0;return B},undo:function(){var D=this,B=D.editor,A=A,C;if(D.typing){D.add();D.typing=0}if(D.index>0){if(D.index==D.data.length&&D.index>1){C=D.index;D.typing=0;if(!D.add()){D.index=C}--D.index}A=D.data[--D.index];B.setContent(A.content,{format:"raw"});B.selection.moveToBookmark(A.bookmark);D.onUndo.dispatch(D,A)}return A},redo:function(){var C=this,B=C.editor,A=null;if(C.index<C.data.length-1){A=C.data[++C.index];B.setContent(A.content,{format:"raw"});B.selection.moveToBookmark(A.bookmark);C.onRedo.dispatch(C,A)}return A},clear:function(){var A=this;A.data=[];A.index=0;A.typing=0;A.add({initial:true})},hasUndo:function(){return this.index!=0||this.typing},hasRedo:function(){return this.index<this.data.length-1}});(function(){var B,D,A,C,E,F;B=tinymce.dom.Event;D=tinymce.isIE;A=tinymce.isGecko;C=tinymce.isOpera;E=tinymce.each;F=tinymce.extend;tinymce.create("tinymce.ForceBlocks",{ForceBlocks:function(H){var I=this,J=H.settings,K;I.editor=H;I.dom=H.dom;K=(J.forced_root_block||"p").toLowerCase();J.element=K.toUpperCase();H.onPreInit.add(I.setup,I);I.reOpera=new RegExp("(\\u00a0|&#160;|&nbsp;)</"+K+">","gi");I.rePadd=new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,K),"gi");I.reNbsp2BR1=new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,K),"gi");I.reNbsp2BR2=new RegExp("<p( )([^>]+)>(&nbsp;|&#160;)<\\/p>|<p>(&nbsp;|&#160;)<\\/p>".replace(/p/g,K),"gi");I.reBR2Nbsp=new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,K),"gi");I.reTrailBr=new RegExp("\\s*<br \\/>\\s*<\\/p>".replace(/p/g,K),"gi");function G(L,M){if(C){M.content=M.content.replace(I.reOpera,"</"+K+">")}M.content=M.content.replace(I.rePadd,"<"+K+"$1$2$3$4$5$6>\u00a0</"+K+">");if(!D&&!C&&M.set){M.content=M.content.replace(I.reNbsp2BR1,"<"+K+"$1$2><br /></"+K+">");M.content=M.content.replace(I.reNbsp2BR2,"<"+K+"$1$2><br /></"+K+">")}else{M.content=M.content.replace(I.reBR2Nbsp,"<"+K+"$1$2>\u00a0</"+K+">");M.content=M.content.replace(I.reTrailBr,"</"+K+">")}}H.onBeforeSetContent.add(G);H.onPostProcess.add(G);if(J.forced_root_block){H.onInit.add(I.forceRoots,I);H.onSetContent.add(I.forceRoots,I);H.onBeforeGetContent.add(I.forceRoots,I)}},setup:function(){var H=this,G=H.editor,I=G.settings;if(I.forced_root_block){G.onKeyUp.add(H.forceRoots,H);G.onPreProcess.add(H.forceRoots,H)}if(I.force_br_newlines){if(D){G.onKeyPress.add(function(K,M){var N,L=K.selection;if(M.keyCode==13&&L.getNode().nodeName!="LI"){L.setContent('<br id="__" /> ',{format:"raw"});N=K.dom.get("__");N.removeAttribute("id");L.select(N);L.collapse();return B.cancel(M)}})}return }if(!D&&I.force_p_newlines){G.onKeyPress.add(function(K,L){if(L.keyCode==13&&!L.shiftKey){if(!H.insertPara(L)){B.cancel(L)}}});if(A){G.onKeyDown.add(function(K,L){if((L.keyCode==8||L.keyCode==46)&&!L.shiftKey){H.backspaceDelete(L,L.keyCode==8)}})}}function J(L,K){var M=G.dom.create(K);E(L.attributes,function(N){if(N.specified&&N.nodeValue){M.setAttribute(N.nodeName.toLowerCase(),N.nodeValue)}});E(L.childNodes,function(N){M.appendChild(N.cloneNode(true))});L.parentNode.replaceChild(M,L);return M}if(D&&I.element!="P"){G.onKeyPress.add(function(K,L){H.lastElm=K.selection.getNode().nodeName});G.onKeyUp.add(function(L,N){var P,M=L.selection,O=M.getNode(),K=L.getBody();if(K.childNodes.length===1&&O.nodeName=="P"){O=J(O,I.element);M.select(O);M.collapse();L.nodeChanged()}else{if(N.keyCode==13&&!N.shiftKey&&H.lastElm!="P"){P=L.dom.getParent(O,"P");if(P){J(P,I.element);L.nodeChanged()}}}})}},find:function(L,I,J){var H=this.editor,G=H.getDoc().createTreeWalker(L,4,null,false),K=-1;while(L=G.nextNode()){K++;if(I==0&&L==J){return K}if(I==1&&K==J){return L}}return -1},forceRoots:function(L,V){var M=this,L=M.editor,Z=L.getBody(),W=L.getDoc(),g=L.selection,N=g.getSel(),O=g.getRng(),a=-2,K,T,G,H,X=-16777215;var Y,I,f,S,P,J=Z.childNodes,R,Q;for(R=J.length-1;R>=0;R--){Y=J[R];if(Y.nodeType==3||(!M.dom.isBlock(Y)&&Y.nodeType!=8)){if(!I){if(Y.nodeType!=3||/[^\s]/g.test(Y.nodeValue)){if(a==-2&&O){if(!D){if(O.startContainer.nodeType==1&&(Q=O.startContainer.childNodes[O.startOffset])&&Q.nodeType==1){Q.setAttribute("id","__mce")}else{if(L.dom.getParent(O.startContainer,function(b){return b===Z})){T=O.startOffset;G=O.endOffset;a=M.find(Z,0,O.startContainer);K=M.find(Z,0,O.endContainer)}}}else{H=W.body.createTextRange();H.moveToElementText(Z);H.collapse(1);f=H.move("character",X)*-1;H=O.duplicate();H.collapse(1);S=H.move("character",X)*-1;H=O.duplicate();H.collapse(0);P=(H.move("character",X)*-1)-S;a=S-f;K=P}}I=L.dom.create(L.settings.forced_root_block);I.appendChild(Y.cloneNode(1));Y.parentNode.replaceChild(I,Y)}}else{if(I.hasChildNodes()){I.insertBefore(Y,I.firstChild)}else{I.appendChild(Y)}}}else{I=null}}if(a!=-2){if(!D){I=Z.getElementsByTagName(L.settings.element)[0];O=W.createRange();if(a!=-1){O.setStart(M.find(Z,1,a),T)}else{O.setStart(I,0)}if(K!=-1){O.setEnd(M.find(Z,1,K),G)}else{O.setEnd(I,0)}if(N){N.removeAllRanges();N.addRange(O)}}else{try{O=N.createRange();O.moveToElementText(Z);O.collapse(1);O.moveStart("character",a);O.moveEnd("character",K);O.select()}catch(U){}}}else{if(!D&&(Q=L.dom.get("__mce"))){Q.removeAttribute("id");O=W.createRange();O.setStartBefore(Q);O.setEndBefore(Q);g.setRng(O)}}},getParentBlock:function(H){var G=this.dom;return G.getParent(H,G.isBlock)},insertPara:function(j){var T=this,L=T.editor,f=L.dom,k=L.getDoc(),q=L.settings,V=L.selection.getSel(),W=V.getRangeAt(0),p=k.body;var Z,a,X,h,g,J,H,K,N,G,R,o,I,M,Y,c=f.getViewPort(L.getWin()),Q,S,P;function U(b){b=b.innerHTML;b=b.replace(/<(img|hr|table)/gi,"-");b=b.replace(/<[^>]+>/g,"");return b.replace(/[ \t\r\n]+/g,"")==""}Z=k.createRange();Z.setStart(V.anchorNode,V.anchorOffset);Z.collapse(true);a=k.createRange();a.setStart(V.focusNode,V.focusOffset);a.collapse(true);X=Z.compareBoundaryPoints(Z.START_TO_END,a)<0;h=X?V.anchorNode:V.focusNode;g=X?V.anchorOffset:V.focusOffset;J=X?V.focusNode:V.anchorNode;H=X?V.focusOffset:V.anchorOffset;if(h===J&&/^(TD|TH)$/.test(h.nodeName)){f.remove(h.firstChild);L.dom.add(h,q.element,null,"<br />");o=L.dom.add(h,q.element,null,"<br />");W=k.createRange();W.selectNodeContents(o);W.collapse(1);L.selection.setRng(W);return false}if(h==p&&J==p&&p.firstChild&&L.dom.isBlock(p.firstChild)){h=J=h.firstChild;g=H=0;Z=k.createRange();Z.setStart(h,0);a=k.createRange();a.setStart(J,0)}h=h.nodeName=="HTML"?k.body:h;h=h.nodeName=="BODY"?h.firstChild:h;J=J.nodeName=="HTML"?k.body:J;J=J.nodeName=="BODY"?J.firstChild:J;K=T.getParentBlock(h);N=T.getParentBlock(J);G=K?K.nodeName:q.element;if(T.dom.getParent(K,function(b){return/OL|UL|PRE/.test(b.nodeName)})){return true}if(K&&(K.nodeName=="CAPTION"||/absolute|relative|static/gi.test(K.style.position))){G=q.element;K=null}if(N&&(N.nodeName=="CAPTION"||/absolute|relative|static/gi.test(N.style.position))){G=q.element;N=null}if(/(TD|TABLE|TH|CAPTION)/.test(G)||(K&&G=="DIV"&&/left|right/gi.test(K.style.cssFloat))){G=q.element;K=N=null}R=(K&&K.nodeName==G)?K.cloneNode(0):L.dom.create(G);o=(N&&N.nodeName==G)?N.cloneNode(0):L.dom.create(G);o.removeAttribute("id");if(/^(H[1-6])$/.test(G)&&h.nodeValue&&g==h.nodeValue.length){o=L.dom.create(q.element)}Y=I=h;do{if(Y==p||Y.nodeType==9||T.dom.isBlock(Y)||/(TD|TABLE|TH|CAPTION)/.test(Y.nodeName)){break}I=Y}while((Y=Y.previousSibling?Y.previousSibling:Y.parentNode));Y=M=J;do{if(Y==p||Y.nodeType==9||T.dom.isBlock(Y)||/(TD|TABLE|TH|CAPTION)/.test(Y.nodeName)){break}M=Y}while((Y=Y.nextSibling?Y.nextSibling:Y.parentNode));if(I.nodeName==G){Z.setStart(I,0)}else{Z.setStartBefore(I)}Z.setEnd(h,g);R.appendChild(Z.cloneContents()||k.createTextNode(""));try{a.setEndAfter(M)}catch(i){}a.setStart(J,H);o.appendChild(a.cloneContents()||k.createTextNode(""));W=k.createRange();if(!I.previousSibling&&I.parentNode.nodeName==G){W.setStartBefore(I.parentNode)}else{if(Z.startContainer.nodeName==G&&Z.startOffset==0){W.setStartBefore(Z.startContainer)}else{W.setStart(Z.startContainer,Z.startOffset)}}if(!M.nextSibling&&M.parentNode.nodeName==G){W.setEndAfter(M.parentNode)}else{W.setEnd(a.endContainer,a.endOffset)}W.deleteContents();if(C){L.getWin().scrollTo(0,c.y)}if(R.firstChild&&R.firstChild.nodeName==G){R.innerHTML=R.firstChild.innerHTML}if(o.firstChild&&o.firstChild.nodeName==G){o.innerHTML=o.firstChild.innerHTML}if(U(R)){R.innerHTML="<br />"}function m(s,d){var b=[],u,t,r;s.innerHTML="";if(q.keep_styles){t=d;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(t.nodeName)){u=t.cloneNode(false);f.setAttrib(u,"id","");b.push(u)}}while(t=t.parentNode)}if(b.length>0){for(r=b.length-1,u=s;r>=0;r--){u=u.appendChild(b[r])}b[0].innerHTML=C?"&nbsp;":"<br />";return b[0]}else{s.innerHTML=C?"&nbsp;":"<br />"}}if(U(o)){P=m(o,J)}if(C&&parseFloat(opera.version())<9.5){W.insertNode(R);W.insertNode(o)}else{W.insertNode(o);W.insertNode(R)}o.normalize();R.normalize();function O(b){return k.createTreeWalker(b,NodeFilter.SHOW_TEXT,null,false).nextNode()||b}W=k.createRange();W.selectNodeContents(A?O(P||o):P||o);W.collapse(1);V.removeAllRanges();V.addRange(W);Q=L.dom.getPos(o).y;S=o.clientHeight;if(Q<c.y||Q+S>c.y+c.h){L.getWin().scrollTo(0,Q<c.y?Q:Q-c.h+25)}return false},backspaceDelete:function(J,P){var R=this,I=R.editor,M=I.getBody(),H,K=I.selection,G=K.getRng(),L=G.startContainer,H,N,O;if(L&&I.dom.isBlock(L)&&!/^(TD|TH)$/.test(L.nodeName)&&P){if(L.childNodes.length==0||(L.childNodes.length==1&&L.firstChild.nodeName=="BR")){H=L;while((H=H.previousSibling)&&!I.dom.isBlock(H)){}if(H){if(L!=M.firstChild){N=I.dom.doc.createTreeWalker(H,NodeFilter.SHOW_TEXT,null,false);while(O=N.nextNode()){H=O}G=I.getDoc().createRange();G.setStart(H,H.nodeValue?H.nodeValue.length:0);G.setEnd(H,H.nodeValue?H.nodeValue.length:0);K.setRng(G);I.dom.remove(L)}return B.cancel(J)}}}function Q(S){var T;S=S.target;if(S&&S.parentNode&&S.nodeName=="BR"&&(H=R.getParentBlock(S))){T=S.previousSibling;B.remove(M,"DOMNodeInserted",Q);if(T&&T.nodeType==3&&/\s+$/.test(T.nodeValue)){return }if(S.previousSibling||S.nextSibling){I.dom.remove(S)}}}B._add(M,"DOMNodeInserted",Q);window.setTimeout(function(){B._remove(M,"DOMNodeInserted",Q)},1)}})})();(function(){var B=tinymce.DOM,A=tinymce.dom.Event,C=tinymce.each,D=tinymce.extend;tinymce.create("tinymce.ControlManager",{ControlManager:function(E,H){var G=this,F;H=H||{};G.editor=E;G.controls={};G.onAdd=new tinymce.util.Dispatcher(G);G.onPostRender=new tinymce.util.Dispatcher(G);G.prefix=H.prefix||E.id+"_";G._cls={};G.onPostRender.add(function(){C(G.controls,function(I){I.postRender()})})},get:function(E){return this.controls[this.prefix+E]||this.controls[E]},setActive:function(G,E){var F=null;if(F=this.get(G)){F.setActive(E)}return F},setDisabled:function(G,E){var F=null;if(F=this.get(G)){F.setDisabled(E)}return F},add:function(F){var E=this;if(F){E.controls[F.id]=F;E.onAdd.dispatch(F,E)}return F},createControl:function(H){var G,F=this,E=F.editor;C(E.plugins,function(I){if(I.createControl){G=I.createControl(H,F);if(G){return false}}});switch(H){case"|":case"separator":return F.createSeparator()}if(!G&&E.buttons&&(G=E.buttons[H])){return F.createButton(H,G)}return F.add(G)},createDropMenu:function(E,M,G){var L=this,H=L.editor,I,F,J,K;M=D({"class":"mceDropDown",constrain:H.settings.constrain_menus},M);M["class"]=M["class"]+" "+H.getParam("skin")+"Skin";if(J=H.getParam("skin_variant")){M["class"]+=" "+H.getParam("skin")+"Skin"+J.substring(0,1).toUpperCase()+J.substring(1)}E=L.prefix+E;K=G||L._cls.dropmenu||tinymce.ui.DropMenu;I=L.controls[E]=new K(E,M);I.onAddItem.add(function(P,O){var N=O.settings;N.title=H.getLang(N.title,N.title);if(!N.onclick){N.onclick=function(Q){H.execCommand(N.cmd,N.ui||false,N.value)}}});H.onRemove.add(function(){I.destroy()});if(tinymce.isIE){I.onShowMenu.add(function(){F=H.selection.getBookmark(1)});I.onHideMenu.add(function(){if(F){H.selection.moveToBookmark(F)}})}return L.add(I)},createListBox:function(L,H,K){var G=this,F=G.editor,I,J,E;if(G.get(L)){return null}H.title=F.translate(H.title);H.scope=H.scope||F;if(!H.onselect){H.onselect=function(M){F.execCommand(H.cmd,H.ui||false,M||H.value)}}H=D({title:H.title,"class":"mce_"+L,scope:H.scope,control_manager:G},H);L=G.prefix+L;if(F.settings.use_native_selects){J=new tinymce.ui.NativeListBox(L,H)}else{E=K||G._cls.listbox||tinymce.ui.ListBox;J=new E(L,H)}G.controls[L]=J;if(tinymce.isWebKit){J.onPostRender.add(function(N,M){A.add(M,"mousedown",function(){F.bookmark=F.selection.getBookmark("simple")});A.add(M,"focus",function(){F.selection.moveToBookmark(F.bookmark);F.bookmark=null})})}if(J.hideMenu){F.onMouseDown.add(J.hideMenu,J)}return G.add(J)},createButton:function(L,H,K){var G=this,F=G.editor,I,J,E;if(G.get(L)){return null}H.title=F.translate(H.title);H.label=F.translate(H.label);H.scope=H.scope||F;if(!H.onclick&&!H.menu_button){H.onclick=function(){F.execCommand(H.cmd,H.ui||false,H.value)}}H=D({title:H.title,"class":"mce_"+L,unavailable_prefix:F.getLang("unavailable",""),scope:H.scope,control_manager:G},H);L=G.prefix+L;if(H.menu_button){E=K||G._cls.menubutton||tinymce.ui.MenuButton;J=new E(L,H);F.onMouseDown.add(J.hideMenu,J)}else{E=G._cls.button||tinymce.ui.Button;J=new E(L,H)}return G.add(J)},createMenuButton:function(G,E,F){E=E||{};E.menu_button=1;return this.createButton(G,E,F)},createSplitButton:function(L,H,K){var G=this,F=G.editor,I,J,E;if(G.get(L)){return null}H.title=F.translate(H.title);H.scope=H.scope||F;if(!H.onclick){H.onclick=function(M){F.execCommand(H.cmd,H.ui||false,M||H.value)}}if(!H.onselect){H.onselect=function(M){F.execCommand(H.cmd,H.ui||false,M||H.value)}}H=D({title:H.title,"class":"mce_"+L,scope:H.scope,control_manager:G},H);L=G.prefix+L;E=K||G._cls.splitbutton||tinymce.ui.SplitButton;J=G.add(new E(L,H));F.onMouseDown.add(J.hideMenu,J);return J},createColorSplitButton:function(E,M,G){var K=this,I=K.editor,H,J,L,F;if(K.get(E)){return null}M.title=I.translate(M.title);M.scope=M.scope||I;if(!M.onclick){M.onclick=function(N){I.execCommand(M.cmd,M.ui||false,N||M.value)}}if(!M.onselect){M.onselect=function(N){I.execCommand(M.cmd,M.ui||false,N||M.value)}}M=D({title:M.title,"class":"mce_"+E,menu_class:I.getParam("skin")+"Skin",scope:M.scope,more_colors_title:I.getLang("more_colors")},M);E=K.prefix+E;L=G||K._cls.colorsplitbutton||tinymce.ui.ColorSplitButton;J=new L(E,M);I.onMouseDown.add(J.hideMenu,J);I.onRemove.add(function(){J.destroy()});if(tinymce.isIE){J.onShowMenu.add(function(){F=I.selection.getBookmark(1)});J.onHideMenu.add(function(){if(F){I.selection.moveToBookmark(F);F=0}})}return K.add(J)},createToolbar:function(J,G,I){var H,F=this,E;J=F.prefix+J;E=I||F._cls.toolbar||tinymce.ui.Toolbar;H=new E(J,G);if(F.get(J)){return null}return F.add(H)},createSeparator:function(F){var E=F||this._cls.separator||tinymce.ui.Separator;return new E()},setControlType:function(F,E){return this._cls[F.toLowerCase()]=E},destroy:function(){C(this.controls,function(E){E.destroy()});this.controls=null}})})();(function(){var A=tinymce.util.Dispatcher,D=tinymce.each,C=tinymce.isIE,B=tinymce.isOpera;tinymce.create("tinymce.WindowManager",{WindowManager:function(E){var F=this;F.editor=E;F.onOpen=new A(F);F.onClose=new A(F);F.params={};F.features={}},open:function(Q,F){var P=this,I="",L,K,G=P.editor.settings.dialog_type=="modal",N,M,H,E=tinymce.DOM.getViewPort(),O;Q=Q||{};F=F||{};M=B?E.w:screen.width;H=B?E.h:screen.height;Q.name=Q.name||"mc_"+new Date().getTime();Q.width=parseInt(Q.width||320);Q.height=parseInt(Q.height||240);Q.resizable=true;Q.left=Q.left||parseInt(M/2)-(Q.width/2);Q.top=Q.top||parseInt(H/2)-(Q.height/2);F.inline=false;F.mce_width=Q.width;F.mce_height=Q.height;F.mce_auto_focus=Q.auto_focus;if(G){if(C){Q.center=true;Q.help=false;Q.dialogWidth=Q.width+"px";Q.dialogHeight=Q.height+"px";Q.scroll=Q.scrollbars||false}}D(Q,function(S,R){if(tinymce.is(S,"boolean")){S=S?"yes":"no"}if(!/^(name|url)$/.test(R)){if(C&&G){I+=(I?";":"")+R+":"+S}else{I+=(I?",":"")+R+"="+S}}});P.features=Q;P.params=F;P.onOpen.dispatch(P,Q,F);O=Q.url||Q.file;if(tinymce.relaxedDomain){O+=(O.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}O=tinymce._addVer(O);try{if(C&&G){N=1;window.showModalDialog(O,window,I)}else{N=window.open(O,Q.name,I)}}catch(J){}if(!N){alert(P.editor.getLang("popup_blocked"))}},close:function(E){E.close();this.onClose.dispatch(this)},createInstance:function(G,F,E,K,J,I){var H=tinymce.resolve(G);return new H(F,E,K,J,I)},confirm:function(G,E,H,F){F=F||window;E.call(H||this,F.confirm(this._decode(this.editor.getLang(G,G))))},alert:function(G,E,I,F){var H=this;F=F||window;F.alert(H._decode(H.editor.getLang(G,G)));if(E){E.call(I||H)}},_decode:function(E){return tinymce.DOM.decode(E).replace(/\\n/g,"\n")}})}());
\ No newline at end of file
diff --git a/lib/editor/tinymce/lib.php b/lib/editor/tinymce/lib.php
new file mode 100644 (file)
index 0000000..4f55349
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
+//                                                                       //
+// 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; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// 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 for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+class tinymce_texteditor extends texteditor {
+    public function supported_by_browser() {
+        if (check_browser_version('MSIE', 5.5)) {
+            return true;
+        } else if (check_browser_version('Gecko', 20030516)) {
+            return true;
+        } else if (check_browser_version('Safari', 3)) {
+            return true;
+        } else if (check_browser_version('Opera', 9)) {
+            return true;
+        }
+        
+        return true;
+    }
+
+    public function get_supported_formats() {
+        return array(FORMAT_HTML => FORMAT_HTML);
+    }
+
+    public function get_preferred_format() {
+        return FORMAT_HTML;
+    }
+
+    public function supports_repositories() {
+        return true;
+    }
+
+    public function get_editor_element_class() {
+        return 'form-tinymce-advanced';
+    }
+    
+    public function get_legacy_textarea_class() {
+        return 'form-tinymce-legacy';
+    }
+
+    public function header_js() {
+        global $CFG;
+
+        $usehttps = (int)($CFG->httpswwwroot === $CFG->wwwroot); //hmm, is there a better test?
+        
+        $js = '<script type="text/javascript" src="'.$CFG->httpswwwroot.'/lib/editor/tinymce/tiny_mce_src.js"></script>'."\n".
+              '<script type="text/javascript" src="'.$CFG->httpswwwroot.'/lib/editor/tinymce/extra/tinymce.js.php?elanguage='.current_language().'&amp;etheme='.current_theme().'&amp;eusehttps='.$usehttps.'"></script>'."\n";
+        return $js;
+    }
+    
+}
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/advhr/editor_plugin.js b/lib/editor/tinymce/plugins/advhr/editor_plugin.js
new file mode 100644 (file)
index 0000000..4d3b062
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},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)})();
\ No newline at end of file
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm
rename to lib/editor/tinymce/plugins/advhr/rule.htm
index 8f20f7fa854bfd2aa029e3b5cd8d689b2d2db6b3..75ca3392f78506e5a92dde1f780cd2fbd7d0dc19 100644 (file)
@@ -7,7 +7,6 @@
        <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <link href="css/advhr.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body>\r
 <form onsubmit="AdvHRDialog.update();return false;" action="#">\r
@@ -22,7 +21,7 @@
                        <table border="0" cellpadding="4" cellspacing="0">\r
                     <tr>\r
                         <td><label for="width">{#advhr_dlg.width}</label></td>\r
-                        <td nowrap="nowrap">\r
+                        <td class="nowrap">\r
                             <input id="width" name="width" type="text" value="" class="mceFocus" />\r
                             <select name="width2" id="width2">\r
                                 <option value="">px</option>\r
diff --git a/lib/editor/tinymce/plugins/advimage/editor_plugin.js b/lib/editor/tinymce/plugins/advimage/editor_plugin.js
new file mode 100644 (file)
index 0000000..4c7a9c3
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.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)})();
\ No newline at end of file
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm
rename to lib/editor/tinymce/plugins/advimage/image.htm
index dd84083f40ecd9ba8398b64b1398cd980f81e2c1..5d261504674aab55a22c2d3a4c735592f638903f 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <script type="text/javascript" src="js/image.js"></script>\r
        <link href="css/advimage.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="advimage" style="display: none">\r
     <form onsubmit="ImageDialog.insert();return false;" action="#"> \r
@@ -38,7 +37,7 @@
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><label for="src_list">{#advimage_dlg.image_list}</label></td>\r
-                                                               <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>\r
+                                                               <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);"><option value=""></option></select></td>\r
                                                        </tr>\r
                                                        <tr> \r
                                                                <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td> \r
@@ -89,7 +88,7 @@
 \r
                                                <tr>\r
                                                        <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>\r
-                                                       <td nowrap="nowrap">\r
+                                                       <td class="nowrap">\r
                                                                <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" /> x \r
                                                                <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" /> px\r
                                                        </td>\r
 \r
                                                <tr>\r
                                                        <td><label for="class_list">{#class_name}</label></td>\r
-                                                       <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"></select></td>\r
+                                                       <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>\r
                                                </tr>\r
 \r
                                                <tr>\r
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><label for="over_list">{#advimage_dlg.image_list}</label></td>\r
-                                                               <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"></select></td>\r
+                                                               <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>\r
                                                        </tr>\r
                                                        <tr> \r
                                                                <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td> \r
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><label for="out_list">{#advimage_dlg.image_list}</label></td>\r
-                                                               <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"></select></td>\r
+                                                               <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>\r
                                                        </tr>\r
                                        </table>\r
                                </fieldset>\r
diff --git a/lib/editor/tinymce/plugins/advimage/img/sample.gif b/lib/editor/tinymce/plugins/advimage/img/sample.gif
new file mode 100644 (file)
index 0000000..53bf689
Binary files /dev/null and b/lib/editor/tinymce/plugins/advimage/img/sample.gif differ
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js
rename to lib/editor/tinymce/plugins/advimage/js/image.js
index 64fc6f677b3fa9722d4ef9d1e283e6ddccb752a3..347722661b970a0328d4d1167208347b1e06b501 100644 (file)
@@ -272,6 +272,7 @@ var ImageDialog = {
                        cl = tinyMCEPopup.editor.dom.getClasses();\r
 \r
                if (cl.length > 0) {\r
+                       lst.options.length = 0;\r
                        lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');\r
 \r
                        tinymce.each(cl, function(o) {\r
@@ -285,6 +286,7 @@ var ImageDialog = {
                var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;\r
 \r
                l = window[l];\r
+               lst.options.length = 0;\r
 \r
                if (l && l.length > 0) {\r
                        lst.options[lst.options.length] = new Option('', '');\r
diff --git a/lib/editor/tinymce/plugins/advlink/editor_plugin.js b/lib/editor/tinymce/plugins/advlink/editor_plugin.js
new file mode 100644 (file)
index 0000000..983fe5a
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.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)})();
\ No newline at end of file
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js
rename to lib/editor/tinymce/plugins/advlink/js/advlink.js
index a89625014a404d81203c5b429dc191787a4923c8..bb7922a6e1e12c832509fbc6348777df77a767d1 100644 (file)
@@ -116,7 +116,7 @@ function checkPrefix(n) {
        if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))\r
                n.value = 'mailto:' + n.value;\r
 \r
-       if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))\r
+       if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))\r
                n.value = 'http://' + n.value;\r
 }\r
 \r
@@ -402,6 +402,7 @@ function insertAction() {
 \r
        // Create new anchor elements\r
        if (elm == null) {\r
+               inst.getDoc().execCommand("unlink", false, null);\r
                tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
 \r
                elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});\r
similarity index 84%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm
rename to lib/editor/tinymce/plugins/advlink/link.htm
index f46e8f8324d5315cfba905d3af818c2f4437026f..cc8b0b87c163065ea8de1affb26f82d370c1ad20 100644 (file)
@@ -8,7 +8,6 @@
        <script type="text/javascript" src="../../utils/validate.js"></script>\r
        <script type="text/javascript" src="js/advlink.js"></script>\r
        <link href="css/advlink.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="advlink" style="display: none">\r
     <form onsubmit="insertAction();return false;" action="#">\r
@@ -28,7 +27,7 @@
 \r
                                        <table border="0" cellpadding="4" cellspacing="0">\r
                                                <tr>\r
-                                                 <td nowrap="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>\r
+                                                 <td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>\r
                                                  <td><table border="0" cellspacing="0" cellpadding="0">\r
                                                                <tr>\r
                                                                  <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>\r
                                                </tr>\r
                                                <tr id="linklisthrefrow">\r
                                                        <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>\r
-                                                       <td colspan="2" id="linklisthrefcontainer">&nbsp;</td>\r
+                                                       <td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>\r
                                                </tr>\r
                                                <tr>\r
                                                        <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>\r
-                                                       <td colspan="2" id="anchorlistcontainer">&nbsp;</td>\r
+                                                       <td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>\r
                                                </tr>\r
                                                <tr>\r
                                                        <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>\r
-                                                       <td id="targetlistcontainer">&nbsp;</td>\r
+                                                       <td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>\r
+                                                       <td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>\r
                                                        <td><input id="title" name="title" type="text" value="" /></td>\r
                                                </tr>\r
                                                <tr>\r
                                                        <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
                                                        <td>\r
                                                                 <select id="classlist" name="classlist" onchange="changeClass();">\r
-                                                                       <option value="" selected>{#not_set}</option>\r
+                                                                       <option value="" selected="selected">{#not_set}</option>\r
                                                                 </select>\r
                                                        </td>\r
                                                </tr>\r
@@ -73,7 +72,7 @@
 \r
                                        <table border="0" cellpadding="0" cellspacing="4">\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>\r
                                                        <td>\r
                                                                <table border="0" cellspacing="0" cellpadding="0">\r
                                                                        <tr>\r
                                                        </td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>\r
                                                        <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label>{#advlink_dlg.popup_size}</label>&nbsp;</td>\r
-                                                       <td nowrap="nowrap">\r
+                                                       <td class="nowrap"><label>{#advlink_dlg.popup_size}</label>&nbsp;</td>\r
+                                                       <td class="nowrap">\r
                                                                <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x\r
                                                                <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px\r
                                                        </td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label>&nbsp;</td>\r
-                                                       <td nowrap="nowrap">\r
+                                                       <td class="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label>&nbsp;</td>\r
+                                                       <td class="nowrap">\r
                                                                <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /                                \r
                                                                <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)\r
                                                        </td>\r
                                                <table border="0" cellpadding="0" cellspacing="4">\r
                                                        <tr>\r
                                                                <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>\r
+                                                               <td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>\r
                                                                <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>\r
+                                                               <td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>\r
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>\r
+                                                               <td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>\r
                                                                <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>\r
+                                                               <td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>\r
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>\r
+                                                               <td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>\r
                                                                <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>\r
+                                                               <td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>\r
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>\r
+                                                               <td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>\r
                                                                <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>\r
-                                                               <td nowrap="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>\r
+                                                               <td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>\r
                                                        </tr>\r
                                                </table>\r
                                        </fieldset>\r
diff --git a/lib/editor/tinymce/plugins/autosave/editor_plugin.js b/lib/editor/tinymce/plugins/autosave/editor_plugin.js
new file mode 100644 (file)
index 0000000..091a063
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.AutoSavePlugin",{init:function(a,b){var c=this;c.editor=a;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 a;tinymce.each(tinyMCE.editors,function(b){if(b.getParam("fullscreen_is_enabled")){return}if(b.isDirty()){a=b.getLang("autosave.unload_msg");return false}});return a}}});tinymce.PluginManager.add("autosave",tinymce.plugins.AutoSavePlugin)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/bbcode/editor_plugin.js b/lib/editor/tinymce/plugins/bbcode/editor_plugin.js
new file mode 100644 (file)
index 0000000..930fdff
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.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(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/<font>(.*?)<\/font>/gi,"$1");b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");b(/<u>/gi,"[u]");b(/<blockquote[^>]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/<br \/>/gi,"\n");b(/<br\/>/gi,"\n");b(/<br>/gi,"\n");b(/<p>/gi,"");b(/<\/p>/gi,"\n");b(/&nbsp;/gi," ");b(/&quot;/gi,'"');b(/&lt;/gi,"<");b(/&gt;/gi,">");b(/&amp;/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"<br />");b(/\[b\]/gi,"<strong>");b(/\[\/b\]/gi,"</strong>");b(/\[i\]/gi,"<em>");b(/\[\/i\]/gi,"</em>");b(/\[u\]/gi,"<u>");b(/\[\/u\]/gi,"</u>");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>');b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/compat2x/editor_plugin.js b/lib/editor/tinymce/plugins/compat2x/editor_plugin.js
new file mode 100644 (file)
index 0000000..d921728
--- /dev/null
@@ -0,0 +1 @@
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=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(f,e){d(e,function(h,g){tinyMCE.i18n[(tinyMCE.settings.language||"en")+"."+(f?f+"_":"")+g]=h})},getInstanceById:function(e){return this.get(e)}})})();(function(){var e=tinymce.EditorManager;tinyMCE.instances={};tinyMCE.plugins={};tinymce.PluginManager.onAdd.add(function(f,h,g){tinyMCE.plugins[h]=g});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(g,f){return this.activeEditor.getParam(g,f)},addEvent:function(i,g,h,j){tinymce.dom.Event.add(i,g,h,j||this)},getControlHTML:function(f){return e.activeEditor.controlManager.createControl(f)},loadCSS:function(f){tinymce.DOM.loadCSS(f)},importCSS:function(g,f){if(g==document){this.loadCSS(f)}else{new tinymce.dom.DOMUtils(g).loadCSS(f)}},log:function(){console.debug.apply(console,arguments)},getLang:function(h,g){var f=e.activeEditor.getLang(h.replace(/^lang_/g,""),g);if(/^[0-9\-.]+$/g.test(f)){return parseInt(f)}return f},isInstance:function(f){return f!=null&&typeof(f)=="object"&&f.execCommand},triggerNodeChange:function(){e.activeEditor.nodeChanged()},regexpReplace:function(j,f,h,i){var g;if(j==null){return j}if(typeof(i)=="undefined"){i="g"}g=new RegExp(f,i);return j.replace(g,h)},trim:function(f){return tinymce.trim(f)},xmlEncode:function(f){return tinymce.DOM.encode(f)},explode:function(f,h){var g=[];tinymce.each(f.split(h),function(i){if(i!=""){g.push(i)}});return g},switchClass:function(h,g){var f;if(/^mceButton/.test(g)){f=e.activeEditor.controlManager.get(h);if(!f){return}switch(g){case"mceButtonNormal":f.setDisabled(false);f.setActive(false);return;case"mceButtonDisabled":f.setDisabled(true);return;case"mceButtonSelected":f.setActive(true);f.setDisabled(false);return}}},addCSSClass:function(g,h,f){return tinymce.DOM.addClass(g,h,f)},hasCSSClass:function(f,g){return tinymce.DOM.hasClass(f,g)},removeCSSClass:function(f,g){return tinymce.DOM.removeClass(f,g)},getCSSClasses:function(){var f=e.activeEditor.dom.getClasses(),g=[];d(f,function(h){g.push(h["class"])});return g},setWindowArg:function(g,f){e.activeEditor.windowManager.params[g]=f},getWindowArg:function(i,g){var h=e.activeEditor.windowManager,f;f=h.getParam(i);if(f===""){return""}return f||h.getFeature(i)||g},getParentNode:function(h,g){return this._getDOM().getParent(h,g)},selectElements:function(o,k,m){var l,j=[],h,g;for(g=0,k=k.split(",");g<k.length;g++){for(l=0,h=o.getElementsByTagName(k[g]);l<h.length;l++){(!m||m(h[l]))&&j.push(h[l])}}return j},getNodeTree:function(i,f,g,h){return this.selectNodes(i,function(j){return(!g||j.nodeType==g)&&(!h||j.nodeName==h)},f?f:[])},getAttrib:function(g,h,f){return this._getDOM().getAttrib(g,h,f)},setAttrib:function(g,h,f){return this._getDOM().setAttrib(g,h,f)},getElementsByAttributeValue:function(m,k,g,h){var j,f=m.getElementsByTagName(k),l=[];for(j=0;j<f.length;j++){if(tinyMCE.getAttrib(f[j],g).indexOf(h)!=-1){l[l.length]=f[j]}}return l},selectNodes:function(k,j,g){var h;if(!g){g=[]}if(j(k)){g[g.length]=k}if(k.hasChildNodes()){for(h=0;h<k.childNodes.length;h++){tinyMCE.selectNodes(k.childNodes[h],j,g)}}return g},getContent:function(){return e.activeEditor.getContent()},getParentElement:function(i,g,h){if(g){g=new RegExp("^("+g.toUpperCase().replace(/,/g,"|")+")$","g")}return this._getDOM().getParent(i,function(f){return f.nodeType==1&&(!g||g.test(f.nodeName))&&(!h||h(f))},this.activeEditor.getBody())},importPluginLanguagePack:function(f){tinymce.PluginManager.requireLangPack(f)},getButtonHTML:function(l,j,h,k,i,g){var f=e.activeEditor;h=h.replace(/\{\$pluginurl\}/g,tinyMCE.pluginURL);h=h.replace(/\{\$themeurl\}/g,tinyMCE.themeURL);j=j.replace(/^lang_/g,"");return f.controlManager.createButton(l,{title:j,command:k,ui:i,value:g,scope:this,"class":"compat",image:h})},addSelectAccessibility:function(h,g,f){if(!g._isAccessible){g.onkeydown=tinyMCE.accessibleEventHandler;g.onblur=tinyMCE.accessibleEventHandler;g._isAccessible=true;g._win=f}return false},accessibleEventHandler:function(g){var h,f=this._win;g=tinymce.isIE?f.event:g;h=tinymce.isIE?g.srcElement:g.target;if(g.type=="blur"){if(h.oldonchange){h.onchange=h.oldonchange;h.oldonchange=null}return true}if(h.nodeName=="SELECT"&&!h.oldonchange){h.oldonchange=h.onchange;h.onchange=null}if(g.keyCode==13||g.keyCode==32){h.onchange=h.oldonchange;h.onchange();h.oldonchange=null;tinyMCE.cancelEvent(g);return false}return true},cancelEvent:function(f){return tinymce.dom.Event.cancel(f)},handleVisualAid:function(f){e.activeEditor.addVisual(f)},getAbsPosition:function(g,f){return tinymce.DOM.getPos(g,f)},cleanupEventStr:function(f){f=""+f;f=f.replace("function anonymous()\n{\n","");f=f.replace("\n}","");f=f.replace(/^return true;/gi,"");return f},getVisualAidClass:function(f){return f},parseStyle:function(f){return this._getDOM().parseStyle(f)},serializeStyle:function(f){return this._getDOM().serializeStyle(f)},openWindow:function(h,g){var f=e.activeEditor,i={},j;for(j in h){i[j]=h[j]}h=i;g=g||{};h.url=new tinymce.util.URI(tinymce.ThemeManager.themeURLs[f.settings.theme]).toAbsolute(h.file);h.inline=h.inline||g.inline;f.windowManager.open(h,g)},closeWindow:function(f){e.activeEditor.windowManager.close(f)},getOuterHTML:function(f){return tinymce.DOM.getOuterHTML(f)},setOuterHTML:function(g,f,i){return tinymce.DOM.setOuterHTML(g,f,i)},hasPlugin:function(f){return tinymce.PluginManager.get(f)!=null},_setEventsEnabled:function(){},addPlugin:function(g,i){var h=this;function j(f){tinyMCE.selectedInstance=f;f.onInit.add(function(){h.settings=f.settings;h.settings.base_href=tinyMCE.documentBasePath;tinyMCE.settings=h.settings;tinyMCE.documentBasePath=f.documentBasePath;if(i.initInstance){i.initInstance(f)}f.contentDocument=f.getDoc();f.contentWindow=f.getWin();f.undoRedo=f.undoManager;f.startContent=f.getContent({format:"raw"});tinyMCE.instances[f.id]=f;tinyMCE.loadedFiles=[]});f.onActivate.add(function(){tinyMCE.settings=f.settings;tinyMCE.selectedInstance=f});if(i.handleNodeChange){f.onNodeChange.add(function(l,k,m){i.handleNodeChange(l.id,m,0,0,false,!l.selection.isCollapsed())})}if(i.onChange){f.onChange.add(function(k,l){return i.onChange(k)})}if(i.cleanup){f.onGetContent.add(function(){})}this.getInfo=function(){return i.getInfo()};this.createControl=function(k){tinyMCE.pluginURL=tinymce.baseURL+"/plugins/"+g;tinyMCE.themeURL=tinymce.baseURL+"/themes/"+tinyMCE.activeEditor.settings.theme;if(i.getControlHTML){return i.getControlHTML(k)}return null};this.execCommand=function(l,k,m){if(i.execCommand){return i.execCommand(f.id,f.getBody(),l,k,m)}return false}}tinymce.PluginManager.add(g,j)},_getDOM:function(){return tinyMCE.activeEditor?tinyMCE.activeEditor.dom:tinymce.DOM},convertRelativeToAbsoluteURL:function(f,g){return new tinymce.util.URI(f).toAbsolute(g)},convertAbsoluteURLToRelativeURL:function(f,g){return new tinymce.util.URI(f).toRelative(g)}});tinymce.extend(tinymce.Editor.prototype,{getFocusElement:function(){return this.selection.getNode()},getData:function(f){if(!this.data){this.data=[]}if(!this.data[f]){this.data[f]=[]}return this.data[f]},hasPlugin:function(f){return this.plugins[f]!=null},getContainerWin:function(){return window},getHTML:function(f){return this.getContent({format:f?"raw":"html"})},setHTML:function(f){this.setContent(f)},getSel:function(){return this.selection.getSel()},getRng:function(){return this.selection.getRng()},isHidden:function(){var f;if(!tinymce.isGecko){return false}f=this.getSel();return(!f||!f.rangeCount||f.rangeCount==0)},translate:function(f){var h=this.settings.language,g;if(!f){return f}g=tinymce.EditorManager.i18n[h+"."+f]||f.replace(/{\#([^}]+)\}/g,function(j,i){return tinymce.EditorManager.i18n[h+"."+i]||"{#"+i+"}"});g=g.replace(/{\$lang_([^}]+)\}/g,function(j,i){return tinymce.EditorManager.i18n[h+"."+i]||"{$lang_"+i+"}"});return g},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(i,j,g,f){var h=this;h.select(i,g||0);if(!b(j)){j=true}if(j){if(!b(f)){f=true}h.collapse(f)}}})}).call(this);tinymce.PluginManager.add("compat2x",tinymce.plugins.Compat2x)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/contextmenu/editor_plugin.js b/lib/editor/tinymce/plugins/contextmenu/editor_plugin.js
new file mode 100644 (file)
index 0000000..24ee2eb
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(d){var f=this;f.editor=d;f.onContextMenu=new tinymce.util.Dispatcher(this);d.onContextMenu.add(function(g,h){if(!h.ctrlKey){f._getMenu(g).showMenu(h.clientX,h.clientY);a.add(g.getDoc(),"click",e);a.cancel(h)}});function e(){if(f._menu){f._menu.removeAll();f._menu.destroy();a.remove(d.getDoc(),"click",e)}}d.onMouseDown.add(e);d.onKeyDown.add(e)},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(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/directionality/editor_plugin.js b/lib/editor/tinymce/plugins/directionality/editor_plugin.js
new file mode 100644 (file)
index 0000000..bce8e73
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},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(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
\ No newline at end of file
similarity index 87%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/dragmath/dragmath.php
rename to lib/editor/tinymce/plugins/dragmath/dragmath.php
index eed40bb3715bac9c7e12f008b14a532465398f17..510658e6eacc9f52e6e4315786438df513c712cf 100644 (file)
@@ -6,7 +6,7 @@
 ##\r
 #################################################################################\r
 \r
-    require("../../../../../../../config.php");\r
+    require("../../../../../config.php");\r
 \r
     $id = optional_param('id', SITEID, PARAM_INT);\r
 \r
@@ -27,7 +27,7 @@
 \r
 <applet \r
        name="dragmath" \r
-       codebase="<?php echo $CFG->httpswwwroot.'/lib/editor/common/dragmath/applet/classes' ?>" \r
+       codebase="<?php echo $CFG->httpswwwroot.'/lib/dragmath/applet/classes' ?>" \r
        code="Display/MainApplet.class" \r
        archive="Project.jar,AbsoluteLayout.jar,swing-layout-1.0.jar,jdom.jar,jep.jar" \r
        width=540 height=300\r
diff --git a/lib/editor/tinymce/plugins/emotions/editor_plugin.js b/lib/editor/tinymce/plugins/emotions/editor_plugin.js
new file mode 100644 (file)
index 0000000..4783bc3
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.EmotionsPlugin",{init:function(a,b){a.addCommand("mceEmotion",function(){a.windowManager.open({file:b+"/emotions.htm",width:250+parseInt(a.getLang("emotions.delta_width",0)),height:160+parseInt(a.getLang("emotions.delta_height",0)),inline:1},{plugin_url:b})});a.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)})();
\ No newline at end of file
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm
rename to lib/editor/tinymce/plugins/emotions/emotions.htm
index 8110ee029a668ad024cbfb8e5a40ab34ada41117..55a1d72fa7f87cf051eaf6e45e4a00af8578a609 100644 (file)
@@ -1,10 +1,9 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
        <title>{#emotions_dlg.title}</title>\r
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/emotions.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
        <div align="center">\r
similarity index 63%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-cool.gif
index 90433302096d628996abbf122c27122132aa5c52..ba90cc36fb0415d0273d1cd206bff63fd9c91fde 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-cool.gif differ
similarity index 51%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-cry.gif
index d9c170bb09870e78b4b5de17629b61001d1747cf..74d897a4f6d22e814e2b054e98b8a75fb464b4be 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-cry.gif differ
diff --git a/lib/editor/tinymce/plugins/emotions/img/smiley-embarassed.gif b/lib/editor/tinymce/plugins/emotions/img/smiley-embarassed.gif
new file mode 100644 (file)
index 0000000..963a96b
Binary files /dev/null and b/lib/editor/tinymce/plugins/emotions/img/smiley-embarassed.gif differ
similarity index 66%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif
index cac4126f9f16e192dc4aa6bdc2112ea4c03472e2..16f68cc1e91a9b8ec6cfa0ba4e0c86f94b177f1a 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-foot-in-mouth.gif differ
similarity index 58%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-frown.gif
index 1cfa0cb24b8eb002bfd288b8d750387d59b3c531..716f55e161bfebb1c3d34f0b0f40c177fc82c30b 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-frown.gif differ
similarity index 55%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-innocent.gif
index 622d18953dc783d4c2331fef59655491d2807bd7..334d49e0e60f2997c9ba24071764f95d9e08a5cc 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-innocent.gif differ
similarity index 64%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-kiss.gif
index 70efffaa5b13538299fbe177b6b15b338ffc5dd6..4efd549ed31c44b1faac17ed34bb67abeb42baf8 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-kiss.gif differ
similarity index 51%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-laughing.gif
index afe2f13bd64050d34b26a0a11bf0a5bf3393d31b..1606c119e75678c4031f384e0d50849906e8f533 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-laughing.gif differ
similarity index 58%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-money-mouth.gif
index c64831139ee559476ea88ebc371bc54267ae66d8..ca2451e102722e12e131ae53ea76989acbf191e2 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-money-mouth.gif differ
similarity index 50%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-sealed.gif
index 5b870bbe40c406ff8b56cab0096c3885b809f7f2..b33d3cca1e7b8e62dc689880074d5c61f619520d 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-sealed.gif differ
similarity index 72%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-smile.gif
index d54183f14e54f45d57d2c0e40af67bbe65a9a699..e6a9e60d5ddd1243fbbf2197b4dc6cd9c1b58b93 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-smile.gif differ
similarity index 50%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-surprised.gif
index afa4b4d34265bfe648b4fddf6eeb41c76579cf2e..cb99cdd9136fa30462a9f57aa6a0adeb7e4124e7 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-surprised.gif differ
similarity index 60%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-tongue-out.gif
index f7ff1357854f36b7ab69d7c233d221fc9a8a1c1b..2075dc16058f1f17912167675ce5cfb9986fc71d 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-tongue-out.gif differ
diff --git a/lib/editor/tinymce/plugins/emotions/img/smiley-undecided.gif b/lib/editor/tinymce/plugins/emotions/img/smiley-undecided.gif
new file mode 100644 (file)
index 0000000..bef7e25
Binary files /dev/null and b/lib/editor/tinymce/plugins/emotions/img/smiley-undecided.gif differ
similarity index 57%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-wink.gif
index 33550d880cb40d7218f7b69f781b7d1622742d41..9faf1aff8f4b28e02f4f414975fe1859c43b6b54 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-wink.gif differ
similarity index 57%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif
rename to lib/editor/tinymce/plugins/emotions/img/smiley-yell.gif
index 2a065399f7f4cdcf2faf7baa7994a7cd058bb5eb..648e6e879123fe49beebbc1f3635141864a79a9c 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif and b/lib/editor/tinymce/plugins/emotions/img/smiley-yell.gif differ
diff --git a/lib/editor/tinymce/plugins/example/editor_plugin.js b/lib/editor/tinymce/plugins/example/editor_plugin.js
new file mode 100644 (file)
index 0000000..ec1f81e
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){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)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/example/img/example.gif b/lib/editor/tinymce/plugins/example/img/example.gif
new file mode 100644 (file)
index 0000000..1ab5da4
Binary files /dev/null and b/lib/editor/tinymce/plugins/example/img/example.gif differ
diff --git a/lib/editor/tinymce/plugins/fullpage/editor_plugin.js b/lib/editor/tinymce/plugins/fullpage/editor_plugin.js
new file mode 100644 (file)
index 0000000..8e11bfc
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceFullPageProperties",function(){a.windowManager.open({file:b+"/fullpage.htm",width:430+parseInt(a.getLang("fullpage.delta_width",0)),height:495+parseInt(a.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:b,head_html:c.head})});a.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});a.onBeforeSetContent.add(c._setContent,c);a.onSetContent.add(c._setBodyAttribs,c);a.onGetContent.add(c._getContent,c)},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(d,a){var l,c,e,g,b,h,j,f=this.head.match(/body(.*?)>/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c<e;c++){g=l[c].split("=");b=g[0].replace(/\s/,"");h=g[1];if(h){h=h.replace(/^\s+/,"").replace(/\s+$/,"");j=h.match(/^["'](.*)["']$/);if(j){h=j[1]}}else{h=b}d.dom.setAttrib(d.getBody(),"style",h)}}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true})},_setContent:function(d,b){var h=this,a,j,f=b.content,g,i="";if(b.source_view&&d.getParam("fullpage_hide_in_source_view")){return}f=f.replace(/<(\/?)BODY/gi,"<$1body");a=f.indexOf("<body");if(a!=-1){a=f.indexOf(">",a);h.head=f.substring(0,a+1);j=f.indexOf("</body",a);if(j==-1){j=f.indexOf("</body",j)}b.content=f.substring(a+1,j);h.foot=f.substring(j);function e(c){return c.replace(/<\/?[A-Z]+/g,function(k){return k.toLowerCase()})}h.head=e(h.head);h.foot=e(h.foot)}else{h.head="";if(d.getParam("fullpage_default_xml_pi")){h.head+='<?xml version="1.0" encoding="'+d.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}h.head+=d.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');h.head+="\n<html>\n<head>\n<title>"+d.getParam("fullpage_default_title","Untitled document")+"</title>\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='<meta http-equiv="Content-Type" content="'+g+'" />\n'}if(g=d.getParam("fullpage_default_font_family")){i+="font-family: "+g+";"}if(g=d.getParam("fullpage_default_font_size")){i+="font-size: "+g+";"}if(g=d.getParam("fullpage_default_text_color")){i+="color: "+g+";"}h.head+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n";h.foot="\n</body>\n</html>"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})();
\ No newline at end of file
similarity index 90%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
rename to lib/editor/tinymce/plugins/fullpage/editor_plugin_src.js
index b88fef2d0f4290c3207bb150e389ddcaf91a2f93..eacf910fdbf0a3db989c02eb4ed3b0b78e255d2c 100644 (file)
@@ -82,6 +82,9 @@
                _setContent : function(ed, o) {\r
                        var t = this, sp, ep, c = o.content, v, st = '';\r
 \r
+                       if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))\r
+                               return;\r
+\r
                        // Parse out head, body and footer\r
                        c = c.replace(/<(\/?)BODY/gi, '<$1body');\r
                        sp = c.indexOf('<body');\r
                _getContent : function(ed, o) {\r
                        var t = this;\r
 \r
-                       o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);\r
+                       if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))\r
+                               o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);\r
                }\r
        });\r
 \r
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm
rename to lib/editor/tinymce/plugins/fullpage/fullpage.htm
index d74da0d767650a35b5d7a24ffdf8cdffe679517b..3ea40810ab7d95e9d0532aa3324a172bc298de51 100644 (file)
@@ -7,7 +7,6 @@
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <script type="text/javascript" src="js/fullpage.js"></script>\r
        <link href="css/fullpage.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="advlink" style="display: none">\r
     <form onsubmit="updateAction();return false;" name="fullpage" action="#">\r
 \r
                                        <table border="0" cellpadding="4" cellspacing="0">\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>\r
                                                        <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>\r
                                                        <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>\r
                                                        <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>\r
                                                        <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>\r
                                                        <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>\r
                                                        <td>\r
                                                                <select id="metarobots" name="metarobots">\r
                                                                                        <option value="">{#not_set}</option> \r
@@ -73,7 +72,7 @@
                                                        </td> \r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label>&nbsp;</td>\r
                                                        <td>\r
                                                                <select id="doctypes" name="doctypes">\r
                                                                                <option value="">{#not_set}</option>\r
@@ -81,7 +80,7 @@
                                                        </td>\r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>\r
                                                        <td><input type="text" id="langcode" name="langcode" value="" /></td>\r
                                                </tr>\r
                                                <tr>\r
@@ -95,7 +94,7 @@
                                                        </td> \r
                                                </tr>\r
                                                <tr>\r
-                                                       <td nowrap="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>\r
+                                                       <td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>\r
                                                        <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>\r
                                                </tr>\r
                                        </table>\r
diff --git a/lib/editor/tinymce/plugins/fullscreen/editor_plugin.js b/lib/editor/tinymce/plugins/fullscreen/editor_plugin.js
new file mode 100644 (file)
index 0000000..dfb3f16
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();tinyMCE.add(e.fullscreenEditor);e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var j=tinymce.DOM.getViewPort();e.fullscreenEditor.theme.resizeTo(j.w,j.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.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)})();
\ No newline at end of file
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm
rename to lib/editor/tinymce/plugins/fullscreen/fullscreen.htm
index 4b081cac1cdd96a5a0ba9ed93cd7a141ad14bcf6..6ec4f26f1ccdd86e6cbb6a4042e9318c899822fb 100644 (file)
@@ -96,7 +96,6 @@
                // Add onunload\r
                tinymce.dom.Event.add(window, "beforeunload", unloadHandler);\r
        </script>\r
-       <base target="_self" />\r
 </head>\r
 <body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">\r
 <form onsubmit="doParentSubmit();">\r
diff --git a/lib/editor/tinymce/plugins/iespell/editor_plugin.js b/lib/editor/tinymce/plugins/iespell/editor_plugin.js
new file mode 100644 (file)
index 0000000..e9cba10
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.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)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/inlinepopups/editor_plugin.js b/lib/editor/tinymce/plugins/inlinepopups/editor_plugin.js
new file mode 100644 (file)
index 0000000..4affad4
--- /dev/null
@@ -0,0 +1 @@
+(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.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(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(r,j){var y=this,i,k="",q=y.editor,g=0,s=0,h,m,n,o,l,v,x;r=r||{};j=j||{};if(!r.inline){return y.parent(r,j)}if(!r.type){y.bookmark=q.selection.getBookmark("simple")}i=d.uniqueId();h=d.getViewPort();r.width=parseInt(r.width||320);r.height=parseInt(r.height||240)+(tinymce.isIE?8:0);r.min_width=parseInt(r.min_width||150);r.min_height=parseInt(r.min_height||100);r.max_width=parseInt(r.max_width||2000);r.max_height=parseInt(r.max_height||2000);r.left=r.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(r.width/2)));r.top=r.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(r.height/2)));r.movable=r.resizable=true;j.mce_width=r.width;j.mce_height=r.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=r.auto_focus;y.features=r;y.params=j;y.onOpen.dispatch(y,r,j);if(r.type){k+=" mceModal";if(r.type){k+=" mce"+r.type.substring(0,1).toUpperCase()+r.type.substring(1)}r.resizable=false}if(r.statusbar){k+=" mceStatusbar"}if(r.resizable){k+=" mceResizable"}if(r.minimizable){k+=" mceMinimizable"}if(r.maximizable){k+=" mceMaximizable"}if(r.movable){k+=" mceMovable"}y._addAll(d.doc.body,["div",{id:i,"class":q.settings.inlinepopups_skin||"clearlooks2",style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},r.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_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:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!r.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;s+=d.get(i+"_top").clientHeight;s+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:r.top,left:r.left,width:r.width+g,height:r.height+s});x=r.url||r.file;if(x){if(tinymce.relaxedDomain){x+=(x.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}x=tinymce._addVer(x)}if(!r.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:r.width,height:r.height});d.setAttrib(i+"_ifr","src",x)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(r.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",r.content.replace("\n","<br />"))}n=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=y.windows[i];y.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return y._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return y._startDrag(i,t,u.className.substring(13))}}}}}});o=a.add(i,"click",function(f){var p=f.target;y.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":y.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":r.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});v=y.windows[i]={id:i,mousedown_func:n,click_func:o,element:new b(i,{blocker:1,container:q.getContainer()}),iframeElement:new b(i+"_ifr"),features:r,deltaWidth:g,deltaHeight:s};v.iframeElement.on("focus",function(){y.focus(i)});if(y.count==0&&y.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(y.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:y.zIndex-1}});d.show("mceModalBlocker")}else{d.setStyle("mceModalBlocker","z-index",y.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}y.focus(i);y._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}y.count++;return v},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(j,l){var h=this,g,k=d.doc,f=0,i,l;l=h._findId(l||j);if(!h.windows[l]){h.parent(j);return}h.count--;if(h.count==0){d.remove("mceModalBlocker")}if(g=h.windows[l]){h.onClose.dispatch(h);a.remove(k,"mousedown",g.mousedownFunc);a.remove(k,"click",g.clickFunc);a.clear(l);a.clear(l+"_ifr");d.setAttrib(l+"_ifr","src",'javascript:""');g.element.remove();delete h.windows[l];e(h.windows,function(m){if(m.zIndex>f){i=m;f=m.zIndex}});if(i){h.focus(i.id)}}},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})();
\ No newline at end of file
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
rename to lib/editor/tinymce/plugins/inlinepopups/editor_plugin_src.js
index 55c816e7b56d3e5226123c4194dea9dde201b226..ca0c90fde4266ac7945bde90dad806610cf9c850 100644 (file)
                        } else\r
                                DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);\r
 \r
-                       if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
-                               DOM.setStyles('mceModalBlocker', {position : 'absolute', width : vp.w - 2, height : vp.h - 2});\r
+                       if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))\r
+                               DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});\r
 \r
                        t.focus(id);\r
                        t._fixIELayout(id, 1);\r
                                });\r
 \r
                                if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))\r
-                                       DOM.setStyles('mceEventBlocker', {position : 'absolute', width : vp.w - 2, height : vp.h - 2});\r
+                                       DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});\r
 \r
                                eb = new Element('mceEventBlocker');\r
                                eb.update();\r
diff --git a/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
new file mode 100644 (file)
index 0000000..94abd08
Binary files /dev/null and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif differ
diff --git a/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
new file mode 100644 (file)
index 0000000..e671094
Binary files /dev/null and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/button.gif differ
similarity index 87%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
rename to lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
index f2258ef54f8104b08d43f227ce62b01aeccc8587..6baf64ad321ab3d35330f2aaae7504aa519644bd 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif differ
diff --git a/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
new file mode 100644 (file)
index 0000000..497307a
Binary files /dev/null and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif differ
similarity index 77%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
rename to lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
index 05a199d9f921c44885109fc1ee9abcefa788bd80..c894b2e83522ae29d32e0ed57007d1285c715a7f 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif differ
diff --git a/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
new file mode 100644 (file)
index 0000000..c2a2ad4
Binary files /dev/null and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif differ
diff --git a/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
new file mode 100644 (file)
index 0000000..43a735f
Binary files /dev/null and b/lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif differ
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
rename to lib/editor/tinymce/plugins/inlinepopups/skins/clearlooks2/window.css
index f844aba0d4e50ebab415e87280dc6bddd9c9b3f5..5e6fd7d3cfff5bdbe30cc8c63e05d82e061ab3ab 100644 (file)
@@ -7,8 +7,8 @@
 .clearlooks2 {position:absolute; direction:ltr}
 .clearlooks2 .mceWrapper {position:static}
 .mceEventBlocker {position:fixed; 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:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; filter:alpha(opacity=60); display:none}
+.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)}
+.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none}
 
 /* Top */
 .clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
diff --git a/lib/editor/tinymce/plugins/insertdatetime/editor_plugin.js b/lib/editor/tinymce/plugins/insertdatetime/editor_plugin.js
new file mode 100644 (file)
index 0000000..938ce6b
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.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(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length<d){for(var f=0;f<(d-g.length);f++){g="0"+g}}return g}a=a.replace("%D","%m/%d/%y");a=a.replace("%r","%I:%M:%S %p");a=a.replace("%Y",""+e.getFullYear());a=a.replace("%y",""+e.getYear());a=a.replace("%m",b(e.getMonth()+1,2));a=a.replace("%d",b(e.getDate(),2));a=a.replace("%H",""+b(e.getHours(),2));a=a.replace("%M",""+b(e.getMinutes(),2));a=a.replace("%S",""+b(e.getSeconds(),2));a=a.replace("%I",""+((e.getHours()+11)%12+1));a=a.replace("%p",""+(e.getHours()<12?"AM":"PM"));a=a.replace("%B",""+c.getLang("insertdatetime.months_long").split(",")[e.getMonth()]);a=a.replace("%b",""+c.getLang("insertdatetime.months_short").split(",")[e.getMonth()]);a=a.replace("%A",""+c.getLang("insertdatetime.day_long").split(",")[e.getDay()]);a=a.replace("%a",""+c.getLang("insertdatetime.day_short").split(",")[e.getDay()]);a=a.replace("%%","%");return a}});tinymce.PluginManager.add("insertdatetime",tinymce.plugins.InsertDateTime)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/layer/editor_plugin.js b/lib/editor/tinymce/plugins/layer/editor_plugin.js
new file mode 100644 (file)
index 0000000..f88a6dd
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.Layer",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertLayer",c._insertLayer,c);a.addCommand("mceMoveForward",function(){c._move(1)});a.addCommand("mceMoveBackward",function(){c._move(-1)});a.addCommand("mceMakeAbsolute",function(){c._toggleAbsolute()});a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});a.onInit.add(function(){if(tinymce.isIE){a.getDoc().execCommand("2D-Position",false,true)}});a.onNodeChange.add(c._nodeChange,c);a.onVisualAid.add(c._visualAid,c)},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(b,a,e){var c,d;c=this._getParentLayer(e);d=b.dom.getParent(e,"DIV,P,IMG");if(!d){a.setDisabled("absolute",1);a.setDisabled("moveforward",1);a.setDisabled("movebackward",1)}else{a.setDisabled("absolute",0);a.setDisabled("moveforward",!c);a.setDisabled("movebackward",!c);a.setActive("absolute",c&&c.style.position.toLowerCase()=="absolute")}},_visualAid:function(a,c,b){var d=a.dom;tinymce.each(d.select("div,p",c),function(f){if(/^(absolute|relative|static)$/i.test(f.style.position)){if(b){d.addClass(f,"mceItemVisualAid")}else{d.removeClass(f,"mceItemVisualAid")}}})},_move:function(h){var b=this.editor,f,g=[],e=this._getParentLayer(b.selection.getNode()),c=-1,j=-1,a;a=[];tinymce.walk(b.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){a.push(d)}},"childNodes");for(f=0;f<a.length;f++){g[f]=a[f].style.zIndex?parseInt(a[f].style.zIndex):0;if(c<0&&a[f]==e){c=f}}if(h<0){for(f=0;f<g.length;f++){if(g[f]<g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{if(g[c]>0){a[c].style.zIndex=g[c]-1}}}else{for(f=0;f<g.length;f++){if(g[f]>g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{a[c].style.zIndex=g[c]+1}}b.execCommand("mceRepaint")},_getParentLayer:function(a){return this.editor.dom.getParent(a,function(b){return b.nodeType==1&&/^(absolute|relative|static)$/i.test(b.style.position)})},_insertLayer:function(){var a=this.editor,b=a.dom.getPos(a.dom.getParent(a.selection.getNode(),"*"));a.dom.add(a.getBody(),"div",{style:{position:"absolute",left:b.x,top:(b.y>20?b.y:20),width:100,height:100},"class":"mceItemVisualAid"},a.selection.getContent()||a.getLang("layer.content"))},_toggleAbsolute:function(){var a=this.editor,b=this._getParentLayer(a.selection.getNode());if(!b){b=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")}if(b){if(b.style.position.toLowerCase()=="absolute"){a.dom.setStyles(b,{position:"",left:"",top:"",width:"",height:""});a.dom.removeClass(b,"mceItemVisualAid")}else{if(b.style.left==""){b.style.left=20+"px"}if(b.style.top==""){b.style.top=20+"px"}if(b.style.width==""){b.style.width=b.width?(b.width+"px"):"100px"}if(b.style.height==""){b.style.height=b.height?(b.height+"px"):"100px"}b.style.position="absolute";a.addVisual(a.getBody())}a.execCommand("mceRepaint");a.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/media/editor_plugin.js b/lib/editor/tinymce/plugins/media/editor_plugin.js
new file mode 100644 (file)
index 0000000..951d1e4
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.MediaPlugin",{init:function(b,c){var e=this;e.editor=b;e.url=c;function f(g){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(g.className)}b.onPreInit.add(function(){b.serializer.addRules("param[name|value|_mce_value]")});b.addCommand("mceMedia",function(){b.windowManager.open({file:c+"/media.htm",width:430+parseInt(b.getLang("media.delta_width",0)),height:470+parseInt(b.getLang("media.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("media",{title:"media.desc",cmd:"mceMedia"});b.onNodeChange.add(function(h,g,i){g.setActive("media",i.nodeName=="IMG"&&f(i))});b.onInit.add(function(){var g={mceItemFlash:"flash",mceItemShockWave:"shockwave",mceItemWindowsMedia:"windowsmedia",mceItemQuickTime:"quicktime",mceItemRealMedia:"realmedia"};b.selection.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.selection.onBeforeSetContent.add(e._objectsToSpans,e);if(b.settings.content_css!==false){b.dom.loadCSS(c+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(h,i){if(i.name=="img"){a(g,function(l,j){if(b.dom.hasClass(i.node,j)){i.name=l;i.title=b.dom.getAttrib(i.node,"title");return false}})}})}if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(i,h,j){if(j.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(j.className)){h.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});b.onBeforeSetContent.add(e._objectsToSpans,e);b.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.onPreProcess.add(function(g,i){var h=g.dom;if(i.set){e._spansToImgs(i.node);a(h.select("IMG",i.node),function(k){var j;if(f(k)){j=e._parse(k.title);h.setAttrib(k,"width",h.getAttrib(k,"width",j.width||100));h.setAttrib(k,"height",h.getAttrib(k,"height",j.height||100))}})}if(i.get){a(h.select("IMG",i.node),function(m){var l,j,k;if(g.getParam("media_use_script")){if(f(m)){m.className=m.className.replace(/mceItem/g,"mceTemp")}return}switch(m.className){case"mceItemFlash":l="d27cdb6e-ae6d-11cf-96b8-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="application/x-shockwave-flash";break;case"mceItemShockWave":l="166b1bca-3f9c-11cf-8075-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0";k="application/x-director";break;case"mceItemWindowsMedia":l=g.getParam("media_wmp6_compatible")?"05589fa1-c356-11ce-bf01-00aa0055595a":"6bf52a52-394a-11d3-b153-00c04f79faa6";j="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";k="application/x-mplayer2";break;case"mceItemQuickTime":l="02bf25d5-8c17-4b23-bc80-d3488abddc6b";j="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0";k="video/quicktime";break;case"mceItemRealMedia":l="cfcdaa03-8be4-11cf-b84b-0020afbbccfa";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="audio/x-pn-realaudio-plugin";break}if(l){h.replace(e._buildObj({classid:l,codebase:j,type:k},m),m)}})}});b.onPostProcess.add(function(g,h){h.content=h.content.replace(/_mce_value=/g,"value=")});function d(g,h){h=new RegExp(h+'="([^"]+)"',"g").exec(g);return h?b.dom.decode(h[1]):""}b.onPostProcess.add(function(g,h){if(g.getParam("media_use_script")){h.content=h.content.replace(/<img[^>]+>/g,function(j){var i=d(j,"class");if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(i)){at=e._parse(d(j,"title"));at.width=d(j,"width");at.height=d(j,"height");j='<script type="text/javascript">write'+i.substring(7)+"({"+e._serialize(at)+"});<\/script>"}return j})}})},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}},_objectsToSpans:function(b,e){var c=this,d=e.content;d=d.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(g,f,i){var h=c._parse(i);return'<img class="mceItem'+f+'" title="'+b.dom.encode(i)+'" src="'+c.url+'/img/trans.gif" width="'+h.width+'" height="'+h.height+'" />'});d=d.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');d=d.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');d=d.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');d=d.replace(/<\/(object)([^>]*)>/gi,"</span>");d=d.replace(/<\/embed>/gi,"");d=d.replace(/<param([^>]*)>/gi,function(g,f){return"<span "+f.replace(/value=/gi,"_mce_value=")+' class="mceItemParam"></span>'});d=d.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');e.content=d},_buildObj:function(g,h){var d,c=this.editor,f=c.dom,e=this._parse(h.title),b;b=c.getParam("media_strict",true)&&g.type=="application/x-shockwave-flash";e.width=g.width=f.getAttrib(h,"width")||100;e.height=g.height=f.getAttrib(h,"height")||100;if(e.src){e.src=c.convertURL(e.src,"src",h)}if(b){d=f.create("span",{id:e.id,mce_name:"object",type:"application/x-shockwave-flash",data:e.src,style:f.getAttrib(h,"style"),width:g.width,height:g.height})}else{d=f.create("span",{id:e.id,mce_name:"object",classid:"clsid:"+g.classid,style:f.getAttrib(h,"style"),codebase:g.codebase,width:g.width,height:g.height})}a(e,function(j,i){if(!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(i)){if(g.type=="application/x-mplayer2"&&i=="src"&&!e.url){i="url"}if(j){f.add(d,"span",{mce_name:"param",name:i,_mce_value:j})}}});if(!b){f.add(d,"span",tinymce.extend({mce_name:"embed",type:g.type,style:f.getAttrib(h,"style")},e))}return d},_spansToImgs:function(e){var d=this,f=d.editor.dom,b,c;a(f.select("span",e),function(g){if(f.getAttrib(g,"class")=="mceItemObject"){c=f.getAttrib(g,"classid").toLowerCase().replace(/\s+/g,"");switch(c){case"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000":f.replace(d._createImg("mceItemFlash",g),g);break;case"clsid:166b1bca-3f9c-11cf-8075-444553540000":f.replace(d._createImg("mceItemShockWave",g),g);break;case"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6":case"clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95":case"clsid:05589fa1-c356-11ce-bf01-00aa0055595a":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}return}if(f.getAttrib(g,"class")=="mceItemEmbed"){switch(f.getAttrib(g,"type")){case"application/x-shockwave-flash":f.replace(d._createImg("mceItemFlash",g),g);break;case"application/x-director":f.replace(d._createImg("mceItemShockWave",g),g);break;case"application/x-mplayer2":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"video/quicktime":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"audio/x-pn-realaudio-plugin":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}}})},_createImg:function(c,h){var b,g=this.editor.dom,f={},e="",d;d=["id","name","width","height","bgcolor","align","flashvars","src","wmode","allowfullscreen","quality"];b=g.create("img",{src:this.url+"/img/trans.gif",width:g.getAttrib(h,"width")||100,height:g.getAttrib(h,"height")||100,style:g.getAttrib(h,"style"),"class":c});a(d,function(i){var j=g.getAttrib(h,i);if(j){f[i]=j}});a(g.select("span",h),function(i){if(g.hasClass(i,"mceItemParam")){f[g.getAttrib(i,"name")]=g.getAttrib(i,"_mce_value")}});if(f.movie){f.src=f.movie;delete f.movie}h=g.select(".mceItemEmbed",h)[0];if(h){a(d,function(i){var j=g.getAttrib(h,i);if(j&&!f[i]){f[i]=j}})}delete f.width;delete f.height;b.title=this._serialize(f);return b},_parse:function(b){return tinymce.util.JSON.parse("{"+b+"}")},_serialize:function(b){return tinymce.util.JSON.serialize(b).replace(/[{}]/g,"")}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file
similarity index 80%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js
rename to lib/editor/tinymce/plugins/media/editor_plugin_src.js
index f3d95773584a78ac43975c51aea4e731d7bb1cd8..15af4a3b8f4bd89c51891045cdb08806bbd64421 100644 (file)
@@ -21,7 +21,7 @@
 \r
                        ed.onPreInit.add(function() {\r
                                // Force in _value parameter this extra parameter is required for older Opera versions\r
-                               ed.serializer.addRules('param[name|value|_value]');\r
+                               ed.serializer.addRules('param[name|value|_mce_value]');\r
                        });\r
 \r
                        // Register commands\r
                        });\r
 \r
                        ed.onPostProcess.add(function(ed, o) {\r
-                               o.content = o.content.replace(/_value=/g, 'value=');\r
+                               o.content = o.content.replace(/_mce_value=/g, 'value=');\r
                        });\r
 \r
-                       if (ed.getParam('media_use_script')) {\r
-                               function getAttr(s, n) {\r
-                                       n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);\r
+                       function getAttr(s, n) {\r
+                               n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);\r
 \r
-                                       return n ? ed.dom.decode(n[1]) : '';\r
-                               };\r
+                               return n ? ed.dom.decode(n[1]) : '';\r
+                       };\r
 \r
-                               ed.onPostProcess.add(function(ed, o) {\r
+                       ed.onPostProcess.add(function(ed, o) {\r
+                               if (ed.getParam('media_use_script')) {\r
                                        o.content = o.content.replace(/<img[^>]+>/g, function(im) {\r
                                                var cl = getAttr(im, 'class');\r
 \r
 \r
                                                return im;\r
                                        });\r
-                               });\r
-                       }\r
+                               }\r
+                       });\r
                },\r
 \r
                getInfo : function() {\r
                        h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>');\r
                        h = h.replace(/<\/(object)([^>]*)>/gi, '</span>');\r
                        h = h.replace(/<\/embed>/gi, '');\r
-                       h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_value=') + ' class="mceItemParam"></span>'});\r
+                       h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_mce_value=') + ' class="mceItemParam"></span>'});\r
                        h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>');\r
 \r
                        o.content = h;\r
                },\r
 \r
                _buildObj : function(o, n) {\r
-                       var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title);\r
+                       var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc;\r
+                       \r
+                       stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash';\r
 \r
                        p.width = o.width = dom.getAttrib(n, 'width') || 100;\r
                        p.height = o.height = dom.getAttrib(n, 'height') || 100;\r
 \r
-                       ob = dom.create('span', {\r
-                               mce_name : 'object',\r
-                               classid : "clsid:" + o.classid,\r
-                               codebase : o.codebase,\r
-                               width : o.width,\r
-                               height : o.height\r
-                       });\r
-\r
                        if (p.src)\r
                                p.src = ed.convertURL(p.src, 'src', n);\r
 \r
+                       if (stc) {\r
+                               ob = dom.create('span', {\r
+                                       id : p.id,\r
+                                       mce_name : 'object',\r
+                                       type : 'application/x-shockwave-flash',\r
+                                       data : p.src,\r
+                                       style : dom.getAttrib(n, 'style'),\r
+                                       width : o.width,\r
+                                       height : o.height\r
+                               });\r
+                       } else {\r
+                               ob = dom.create('span', {\r
+                                       id : p.id,\r
+                                       mce_name : 'object',\r
+                                       classid : "clsid:" + o.classid,\r
+                                       style : dom.getAttrib(n, 'style'),\r
+                                       codebase : o.codebase,\r
+                                       width : o.width,\r
+                                       height : o.height\r
+                               });\r
+                       }\r
+\r
                        each (p, function(v, k) {\r
-                               if (!/^(width|height|codebase|classid|_cx|_cy)$/.test(k)) {\r
+                               if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) {\r
                                        // Use url instead of src in IE for Windows media\r
-                                       if (o.type == 'application/x-mplayer2' && k == 'src')\r
+                                       if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url)\r
                                                k = 'url';\r
 \r
                                        if (v)\r
-                                               dom.add(ob, 'span', {mce_name : 'param', name : k, '_value' : v});\r
+                                               dom.add(ob, 'span', {mce_name : 'param', name : k, '_mce_value' : v});\r
                                }\r
                        });\r
 \r
-                       dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p));\r
+                       if (!stc)\r
+                               dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p));\r
 \r
                        return ob;\r
                },\r
                },\r
 \r
                _createImg : function(cl, n) {\r
-                       var im, dom = this.editor.dom, pa = {}, ti = '';\r
+                       var im, dom = this.editor.dom, pa = {}, ti = '', args;\r
+\r
+                       args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality'];        \r
 \r
                        // Create image\r
                        im = dom.create('img', {\r
                                src : this.url + '/img/trans.gif',\r
                                width : dom.getAttrib(n, 'width') || 100,\r
                                height : dom.getAttrib(n, 'height') || 100,\r
+                               style : dom.getAttrib(n, 'style'),\r
                                'class' : cl\r
                        });\r
 \r
                        // Setup base parameters\r
-                       each(['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality'], function(na) {\r
+                       each(args, function(na) {\r
                                var v = dom.getAttrib(n, na);\r
 \r
                                if (v)\r
                        // Add optional parameters\r
                        each(dom.select('span', n), function(n) {\r
                                if (dom.hasClass(n, 'mceItemParam'))\r
-                                       pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_value');\r
+                                       pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value');\r
                        });\r
 \r
                        // Use src not movie\r
                                delete pa.movie;\r
                        }\r
 \r
+                       // Merge with embed args\r
+                       n = dom.select('.mceItemEmbed', n)[0];\r
+                       if (n) {\r
+                               each(args, function(na) {\r
+                                       var v = dom.getAttrib(n, na);\r
+\r
+                                       if (v && !pa[na])\r
+                                               pa[na] = v;\r
+                               });\r
+                       }\r
+\r
                        delete pa.width;\r
                        delete pa.height;\r
 \r
diff --git a/lib/editor/tinymce/plugins/media/img/flash.gif b/lib/editor/tinymce/plugins/media/img/flash.gif
new file mode 100644 (file)
index 0000000..cb192e6
Binary files /dev/null and b/lib/editor/tinymce/plugins/media/img/flash.gif differ
diff --git a/lib/editor/tinymce/plugins/media/img/quicktime.gif b/lib/editor/tinymce/plugins/media/img/quicktime.gif
new file mode 100644 (file)
index 0000000..3b04991
Binary files /dev/null and b/lib/editor/tinymce/plugins/media/img/quicktime.gif differ
similarity index 62%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif
rename to lib/editor/tinymce/plugins/media/img/realmedia.gif
index 2a09f3421ed6aa7042262c0764efef312fea2ffc..fdfe0b9ac05869ae845fdd828eaad97cc0c69dbc 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif and b/lib/editor/tinymce/plugins/media/img/realmedia.gif differ
diff --git a/lib/editor/tinymce/plugins/media/img/shockwave.gif b/lib/editor/tinymce/plugins/media/img/shockwave.gif
new file mode 100644 (file)
index 0000000..5f235df
Binary files /dev/null and b/lib/editor/tinymce/plugins/media/img/shockwave.gif differ
diff --git a/lib/editor/tinymce/plugins/media/img/trans.gif b/lib/editor/tinymce/plugins/media/img/trans.gif
new file mode 100644 (file)
index 0000000..3884865
Binary files /dev/null and b/lib/editor/tinymce/plugins/media/img/trans.gif differ
similarity index 61%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif
rename to lib/editor/tinymce/plugins/media/img/windowsmedia.gif
index 20045cc13cbc94423ce779267753dcdd4c6a9f77..ab50f2d887a0843b116ef598e5a005e5601d18d0 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif and b/lib/editor/tinymce/plugins/media/img/windowsmedia.gif differ
similarity index 90%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/js/media.js
rename to lib/editor/tinymce/plugins/media/js/media.js
index 401b0a01cb4ee8e09c3d6a20d97a64f2b94dad8f..86cfa98563d829fed029f6bc164bc4bc6493b0ef 100644 (file)
@@ -218,7 +218,7 @@ function insertMedia() {
                                break;\r
                }\r
 \r
-               if (fe.width != f.width.value || fe.height != f.height.height)\r
+               if (fe.width != f.width.value || fe.height != f.height.value)\r
                        ed.execCommand('mceRepaint');\r
 \r
                fe.title = serializeParameters();\r
@@ -263,14 +263,6 @@ function insertMedia() {
 \r
                h += ' />';\r
 \r
-        var is_youtube = repo_hook(f.src.value);\r
-\r
-        if (is_youtube) {\r
-            var re = new RegExp("v\/(.+)\#(.+)", "i");\r
-            var result = f.src.value.match(re);\r
-            h = '<a href="'+f.src.value+'">'+result[2]+'</a>';\r
-        }\r
-\r
                ed.execCommand('mceInsertContent', false, h);\r
        }\r
 \r
@@ -313,16 +305,12 @@ function getType(v) {
        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(';');\r
 \r
        // YouTube\r
-    if (v.match(/watch\?v=(.+)(.*)/)) {\r
+       if (v.match(/watch\?v=(.+)(.*)/)) {\r
                f.width.value = '425';\r
                f.height.value = '350';\r
                f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];\r
-        return 'flash';\r
-       } else if (v.match(/v\/(.+)(.*)/)) {\r
-               f.width.value = '425';\r
-               f.height.value = '350';\r
-        return 'flash';\r
-    }\r
+               return 'flash';\r
+       }\r
 \r
        // Google video\r
        if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {\r
@@ -371,7 +359,9 @@ function changedType(t) {
        d.getElementById('shockwave_options').style.display = 'none';\r
        d.getElementById('wmp_options').style.display = 'none';\r
        d.getElementById('rmp_options').style.display = 'none';\r
-       d.getElementById(t + '_options').style.display = 'block';\r
+\r
+       if (t)\r
+               d.getElementById(t + '_options').style.display = 'block';\r
 }\r
 \r
 function serializeParameters() {\r
@@ -479,7 +469,7 @@ function setBool(pl, p, n) {
        if (typeof(pl[n]) == "undefined")\r
                return;\r
 \r
-       document.forms[0].elements[p + "_" + n].checked = pl[n];\r
+       document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false';\r
 }\r
 \r
 function setStr(pl, p, n) {\r
@@ -500,7 +490,7 @@ function getBool(p, n, d, tv, fv) {
        tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";\r
        fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";\r
 \r
-       return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');\r
+       return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',");\r
 }\r
 \r
 function getStr(p, n, d) {\r
@@ -612,7 +602,7 @@ function generatePreview(c) {
 \r
        // Avoid annoying warning about insecure items\r
        if (!tinymce.isIE || document.location.protocol != 'https:') {\r
-               h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';\r
+               h += '<object classid="' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';\r
 \r
                for (n in pl) {\r
                        h += '<param name="' + n + '" value="' + pl[n] + '">';\r
@@ -637,15 +627,4 @@ function generatePreview(c) {
        p.innerHTML = "<!-- x --->" + h;\r
 }\r
 \r
-function repo_hook(url){\r
-       var f = document.forms[0];\r
-       if (url.match(/v\/(.+)(.*)/)) {\r
-               f.width.value = '425';\r
-               f.height.value = '350';\r
-        return true;\r
-       } else {\r
-        return false;\r
-    }\r
-}\r
-\r
 tinyMCEPopup.onInit.add(init);\r
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/media/media.htm
rename to lib/editor/tinymce/plugins/media/media.htm
index 34496187be8526115b1a505899712e057ade92b1..911c03dcc59e4757f0cbddda361e0fa6d5a5dac4 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <link href="css/media.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
     <form onsubmit="insertMedia();return false;" action="#">\r
@@ -30,7 +29,7 @@
                                                                <td><label for="media_type">{#media_dlg.type}</label></td>\r
                                                                <td>\r
                                                                        <select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">\r
-                                                                               <option value="flash">Youtube &amp; Flash</option>\r
+                                                                               <option value="flash">Flash</option>\r
                                                                                <!-- <option value="flv">Flash video (FLV)</option> -->\r
                                                                                <option value="qt">Quicktime</option>\r
                                                                                <option value="shockwave">Shockwave</option>\r
@@ -52,7 +51,7 @@
                                                        </tr>\r
                                                        <tr id="linklistrow">\r
                                                                <td><label for="linklist">{#media_dlg.list}</label></td>\r
-                                                               <td id="linklistcontainer">&nbsp;</td>\r
+                                                               <td id="linklistcontainer"><select id="linklist"><option value=""></option></select></td>\r
                                                        </tr>\r
                                                        <tr>\r
                                                                <td><label for="width">{#media_dlg.size}</label></td>\r
                                                        <td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>\r
                                                        <td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>\r
 \r
-                                                       <td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>\r
-                                                       <td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>\r
+\r
                                                </tr>\r
 \r
                                                <tr>\r
diff --git a/lib/editor/tinymce/plugins/nonbreaking/editor_plugin.js b/lib/editor/tinymce/plugins/nonbreaking/editor_plugin.js
new file mode 100644 (file)
index 0000000..f2dbbff
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'<span class="mceItemHidden mceVisualNbsp">&middot;</span>':"&nbsp;")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},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)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/noneditable/editor_plugin.js b/lib/editor/tinymce/plugins/noneditable/editor_plugin.js
new file mode 100644 (file)
index 0000000..9945cd8
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._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(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/pagebreak/editor_plugin.js b/lib/editor/tinymce/plugins/pagebreak/editor_plugin.js
new file mode 100644 (file)
index 0000000..a212f69
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='<img src="'+d+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',a="mcePageBreak",c=b.getParam("pagebreak_separator","<!-- pagebreak -->"),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},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)})();
\ No newline at end of file
similarity index 61%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif
rename to lib/editor/tinymce/plugins/pagebreak/img/pagebreak.gif
index 5ffe700cb322fa1f440c7d52666f01c5d1997a42..acdf4085f3068c4c0a1d6855f4b80dae8bac3068 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif and b/lib/editor/tinymce/plugins/pagebreak/img/pagebreak.gif differ
diff --git a/lib/editor/tinymce/plugins/pagebreak/img/trans.gif b/lib/editor/tinymce/plugins/pagebreak/img/trans.gif
new file mode 100644 (file)
index 0000000..3884865
Binary files /dev/null and b/lib/editor/tinymce/plugins/pagebreak/img/trans.gif differ
diff --git a/lib/editor/tinymce/plugins/paste/editor_plugin.js b/lib/editor/tinymce/plugins/paste/editor_plugin.js
new file mode 100644 (file)
index 0000000..f439463
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.PastePlugin",{init:function(c,d){var e=this,b;e.editor=c;e.url=d;e.onPreProcess=new tinymce.util.Dispatcher(e);e.onPostProcess=new tinymce.util.Dispatcher(e);e.onPreProcess.add(e._preProcess);e.onPostProcess.add(e._postProcess);e.onPreProcess.add(function(h,i){c.execCallback("paste_preprocess",h,i)});e.onPostProcess.add(function(h,i){c.execCallback("paste_postprocess",h,i)});function g(i){var k=c.dom,j={content:i};e.onPreProcess.dispatch(e,j);j.node=k.create("div",0,j.content);e.onPostProcess.dispatch(e,j);j.content=c.serializer.serialize(j.node,{getInner:1});if(/<(p|h[1-6]|ul|ol)/.test(j.content)){e._insertBlockContent(c,k,j.content)}else{e._insert(j.content)}}c.addCommand("mceInsertClipboardContent",function(i,h){g(h)});function f(l){var p,k,i,j=c.selection,o=c.dom,h=c.getBody(),m;if(o.get("_mcePaste")){return}p=o.add(h,"div",{id:"_mcePaste"},"&nbsp;");if(h!=c.getDoc().body){m=o.getPos(c.selection.getStart(),h).y}else{m=h.scrollTop}o.setStyles(p,{position:"absolute",left:-10000,top:m,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){i=o.doc.body.createTextRange();i.moveToElementText(p);i.execCommand("Paste");o.remove(p);g(p.innerHTML);return tinymce.dom.Event.cancel(l)}else{k=c.selection.getRng();p=p.firstChild;i=c.getDoc().createRange();i.setStart(p,0);i.setEnd(p,1);j.setRng(i);window.setTimeout(function(){var r=o.get("_mcePaste"),q;r.id="_mceRemoved";o.remove(r);r=o.get("_mcePaste")||r;q=(o.select("> span.Apple-style-span div",r)[0]||o.select("> span.Apple-style-span",r)[0]||r).innerHTML;o.remove(r);if(k){j.setRng(k)}g(q)},0)}}if(c.getParam("paste_auto_cleanup_on_paste",true)){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){c.onKeyDown.add(function(h,i){if(((tinymce.isMac?i.metaKey:i.ctrlKey)&&i.keyCode==86)||(i.shiftKey&&i.keyCode==45)){f(i)}})}else{c.onPaste.addToTop(function(h,i){return f(i)})}}e._legacySupport()},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}},_preProcess:function(c,e){var b=e.content,d;function d(f){a(f,function(g){if(g.constructor==RegExp){b=b.replace(g,"")}else{b=b.replace(g[0],g[1])}})}d([/^\s*(&nbsp;)+/g,/(&nbsp;|<br[^>]*>)+\s*$/g]);if(/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(b)){e.wordContent=true;d([/<!--[\s\S]+?-->/gi,/<\/?(img|font|meta|link|style|span|div|v:\w+)[^>]*>/gi,/<\\?\?xml[^>]*>/gi,/<\/?o:[^>]*>/gi,/ (id|name|class|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,/ (id|name|class|language|type|on\w+|v:\w+)=(\w+)/gi,[/<(\/?)s>/gi,"<$1strike>"],/<script[^>]+>[\s\S]*?<\/script>/gi,[/&nbsp;/g,"\u00a0"]])}e.content=b},_postProcess:function(c,e){var b=this,d=b.editor.dom;if(e.wordContent){a(d.select("a",e.node),function(f){if(!f.href||f.href.indexOf("#_Toc")!=-1){d.remove(f,1)}});if(b.editor.getParam("paste_convert_middot_lists",true)){b._convertLists(c,e)}a(d.select("*",e.node),function(f){d.setAttrib(f,"style","")})}if(tinymce.isWebKit){a(d.select("*",e.node),function(f){f.removeAttribute("mce_style")})}},_convertLists:function(e,c){var g=e.editor.dom,f,i,b=-1,d,j=[],h;a(g.select("p",c.node),function(q){var m,r="",o,n,k,l;for(m=q.firstChild;m&&m.nodeType==3;m=m.nextSibling){r+=m.nodeValue}if(/^[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0\u00a0*/.test(r)){o="ul"}if(/^[\s\S]*\w+\.[\s\S]*\u00a0{2,}/.test(r)){o="ol"}if(o){d=parseFloat(q.style.marginLeft||0);if(d>b){j.push(d)}if(!f||o!=h){f=g.create(o);g.insertAfter(f,q)}else{if(d>b){f=i.appendChild(g.create(o))}else{if(d<b){k=tinymce.inArray(j,d);l=g.getParents(f.parentNode,o);f=l[l.length-1-k]||f}}}if(o=="ul"){n=q.innerHTML.replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*(&nbsp;|\u00a0)+\s*/,"")}else{n=q.innerHTML.replace(/^[\s\S]*\w+\.(&nbsp;|\u00a0)+\s*/,"")}i=f.appendChild(g.create("li",0,n));g.remove(q);b=d;h=o}else{f=b=0}})},_insertBlockContent:function(h,e,i){var c,g,d=h.selection,m,j,b,k,f;function l(p){var o;if(tinymce.isIE){o=h.getDoc().body.createTextRange();o.moveToElementText(p);o.collapse(false);o.select()}else{d.select(p,1);d.collapse(false)}}this._insert('<span id="_marker">&nbsp;</span>',1);g=e.get("_marker");c=e.getParent(g,"p,h1,h2,h3,h4,h5,h6,ul,ol");if(c){g=e.split(c,g);a(e.create("div",0,i).childNodes,function(o){m=g.parentNode.insertBefore(o.cloneNode(true),g)});l(m)}else{e.setOuterHTML(g,i);d.select(h.getBody(),1);d.collapse(0)}e.remove("_marker");j=d.getStart();b=e.getViewPort(h.getWin());k=h.dom.getPos(j).y;f=j.clientHeight;if(k<b.y||k+f>b.y+b.h){h.getDoc().body.scrollTop=k<b.y?k:k-b.h+25}},_insert:function(d,b){var c=this.editor;if(!c.selection.isCollapsed()){c.execCommand("Delete")}c.execCommand(tinymce.isGecko?"insertHTML":"mceInsertContent",false,d,{skip_undo:b})},_legacySupport:function(){var c=this,b=c.editor;a(["mcePasteText","mcePasteWord"],function(d){b.addCommand(d,function(){b.windowManager.open({file:c.url+(d=="mcePasteText"?"/pastetext.htm":"/pasteword.htm"),width:450,height:400,inline:1})})});b.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});b.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"});b.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/paste/editor_plugin_src.js b/lib/editor/tinymce/plugins/paste/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..542b4d8
--- /dev/null
@@ -0,0 +1,402 @@
+/**\r
+ * $Id$\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+       var each = tinymce.each;\r
+\r
+       tinymce.create('tinymce.plugins.PastePlugin', {\r
+               init : function(ed, url) {\r
+                       var t = this, cb;\r
+\r
+                       t.editor = ed;\r
+                       t.url = url;\r
+\r
+                       // Setup plugin events\r
+                       t.onPreProcess = new tinymce.util.Dispatcher(t);\r
+                       t.onPostProcess = new tinymce.util.Dispatcher(t);\r
+\r
+                       // Register default handlers\r
+                       t.onPreProcess.add(t._preProcess);\r
+                       t.onPostProcess.add(t._postProcess);\r
+\r
+                       // Register optional preprocess handler\r
+                       t.onPreProcess.add(function(pl, o) {\r
+                               ed.execCallback('paste_preprocess', pl, o);\r
+                       });\r
+\r
+                       // Register optional postprocess\r
+                       t.onPostProcess.add(function(pl, o) {\r
+                               ed.execCallback('paste_postprocess', pl, o);\r
+                       });\r
+\r
+                       // This function executes the process handlers and inserts the contents\r
+                       function process(h) {\r
+                               var dom = ed.dom, o = {content : h};\r
+\r
+                               // Execute pre process handlers\r
+                               t.onPreProcess.dispatch(t, o);\r
+\r
+                               // Create DOM structure\r
+                               o.node = dom.create('div', 0, o.content);\r
+\r
+                               // Execute post process handlers\r
+                               t.onPostProcess.dispatch(t, o);\r
+\r
+                               // Serialize content\r
+                               o.content = ed.serializer.serialize(o.node, {getInner : 1});\r
+\r
+                               // Insert cleaned content. We need to handle insertion of contents containing block elements separatly\r
+                               if (/<(p|h[1-6]|ul|ol)/.test(o.content))\r
+                                       t._insertBlockContent(ed, dom, o.content);\r
+                               else\r
+                                       t._insert(o.content);\r
+                       };\r
+\r
+                       // Add command for external usage\r
+                       ed.addCommand('mceInsertClipboardContent', function(u, v) {\r
+                               process(v);\r
+                       });\r
+\r
+                       // This function grabs the contents from the clipboard by adding a\r
+                       // hidden div and placing the caret inside it and after the browser paste\r
+                       // is done it grabs that contents and processes that\r
+                       function grabContent(e) {\r
+                               var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY;\r
+\r
+                               if (dom.get('_mcePaste'))\r
+                                       return;\r
+\r
+                               // Create container to paste into\r
+                               n = dom.add(body, 'div', {id : '_mcePaste'}, '&nbsp;');\r
+\r
+                               // If contentEditable mode we need to find out the position of the closest element\r
+                               if (body != ed.getDoc().body)\r
+                                       posY = dom.getPos(ed.selection.getStart(), body).y;\r
+                               else\r
+                                       posY = body.scrollTop;\r
+\r
+                               // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles\r
+                               dom.setStyles(n, {\r
+                                       position : 'absolute',\r
+                                       left : -10000,\r
+                                       top : posY,\r
+                                       width : 1,\r
+                                       height : 1,\r
+                                       overflow : 'hidden'\r
+                               });\r
+\r
+                               if (tinymce.isIE) {\r
+                                       // Select the container\r
+                                       rng = dom.doc.body.createTextRange();\r
+                                       rng.moveToElementText(n);\r
+                                       rng.execCommand('Paste');\r
+\r
+                                       // Remove container\r
+                                       dom.remove(n);\r
+\r
+                                       // Process contents\r
+                                       process(n.innerHTML);\r
+\r
+                                       return tinymce.dom.Event.cancel(e);\r
+                               } else {\r
+                                       or = ed.selection.getRng();\r
+\r
+                                       // Move caret into hidden div\r
+                                       n = n.firstChild;\r
+                                       rng = ed.getDoc().createRange();\r
+                                       rng.setStart(n, 0);\r
+                                       rng.setEnd(n, 1);\r
+                                       sel.setRng(rng);\r
+\r
+                                       // Wait a while and grab the pasted contents\r
+                                       window.setTimeout(function() {\r
+                                               var n = dom.get('_mcePaste'), h;\r
+\r
+                                               // Webkit clones the _mcePaste div for some odd reason so this will ensure that we get the real new div not the old empty one\r
+                                               n.id = '_mceRemoved';\r
+                                               dom.remove(n);\r
+                                               n = dom.get('_mcePaste') || n;\r
+\r
+                                               // Grab the HTML contents\r
+                                               // We need to look for a apple style wrapper on webkit it also adds a div wrapper if you copy/paste the body of the editor\r
+                                               // It's amazing how strange the contentEditable mode works in WebKit\r
+                                               h = (dom.select('> span.Apple-style-span div', n)[0] || dom.select('> span.Apple-style-span', n)[0] || n).innerHTML;\r
+\r
+                                               // Remove hidden div and restore selection\r
+                                               dom.remove(n);\r
+\r
+                                               // Restore the old selection\r
+                                               if (or)\r
+                                                       sel.setRng(or);\r
+\r
+                                               process(h);\r
+                                       }, 0);\r
+                               }\r
+                       };\r
+\r
+                       // Check if we should use the new auto process method                   \r
+                       if (ed.getParam('paste_auto_cleanup_on_paste', true)) {\r
+                               // Is it's Opera or older FF use key handler\r
+                               if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {\r
+                                       ed.onKeyDown.add(function(ed, e) {\r
+                                               if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))\r
+                                                       grabContent(e);\r
+                                       });\r
+                               } else {\r
+                                       // Grab contents on paste event on Gecko and WebKit\r
+                                       ed.onPaste.addToTop(function(ed, e) {\r
+                                               return grabContent(e);\r
+                                       });\r
+                               }\r
+                       }\r
+\r
+                       // Add legacy support\r
+                       t._legacySupport();\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Paste text/word',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               },\r
+\r
+               _preProcess : function(pl, o) {\r
+                       var h = o.content, process;\r
+\r
+                       //console.log('Before preprocess:' + o.content);\r
+\r
+                       function process(items) {\r
+                               each(items, function(v) {\r
+                                       // Remove or replace\r
+                                       if (v.constructor == RegExp)\r
+                                               h = h.replace(v, '');\r
+                                       else\r
+                                               h = h.replace(v[0], v[1]);\r
+                               });\r
+                       };\r
+\r
+                       // Process away some basic content\r
+                       process([\r
+                               /^\s*(&nbsp;)+/g,                                                                                       // nbsp entities at the start of contents\r
+                               /(&nbsp;|<br[^>]*>)+\s*$/g                                                                      // nbsp entities at the end of contents\r
+                       ]);\r
+\r
+                       // Detect Word content and process it more agressive\r
+                       if (/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(h)) {\r
+                               o.wordContent = true; // Mark the pasted contents as word specific content\r
+                               //console.log('Word contents detected.');\r
+\r
+                               process([\r
+                                       /<!--[\s\S]+?-->/gi,                                                                                            // Word comments\r
+                                       /<\/?(img|font|meta|link|style|span|div|v:\w+)[^>]*>/gi,                        // Remove some tags including VML content\r
+                                       /<\\?\?xml[^>]*>/gi,                                                                                            // XML namespace declarations\r
+                                       /<\/?o:[^>]*>/gi,                                                                                                       // MS namespaced elements <o:tag>\r
+                                       / (id|name|class|language|type|on\w+|v:\w+)=\"([^\"]*)\"/gi,    // on.., class, style and language attributes with quotes\r
+                                       / (id|name|class|language|type|on\w+|v:\w+)=(\w+)/gi,                   // on.., class, style and language attributes without quotes (IE)\r
+                                       [/<(\/?)s>/gi, '<$1strike>'],                                                                           // Convert <s> into <strike> for line-though\r
+                                       /<script[^>]+>[\s\S]*?<\/script>/gi,                                                            // All scripts elements for msoShowComment for example\r
+                                       [/&nbsp;/g, '\u00a0']                                                                                           // Replace nsbp entites to char since it's easier to handle\r
+                               ]);\r
+                       }\r
+\r
+                       //console.log('After preprocess:' + h);\r
+\r
+                       o.content = h;\r
+               },\r
+\r
+               /**\r
+                * Various post process items.\r
+                */\r
+               _postProcess : function(pl, o) {\r
+                       var t = this, dom = t.editor.dom;\r
+\r
+                       if (o.wordContent) {\r
+                               // Remove named anchors or TOC links\r
+                               each(dom.select('a', o.node), function(a) {\r
+                                       if (!a.href || a.href.indexOf('#_Toc') != -1)\r
+                                               dom.remove(a, 1);\r
+                               });\r
+\r
+                               if (t.editor.getParam('paste_convert_middot_lists', true))\r
+                                       t._convertLists(pl, o);\r
+\r
+                               // Remove all styles\r
+                               each(dom.select('*', o.node), function(el) {\r
+                                       dom.setAttrib(el, 'style', '');\r
+                               });\r
+                       }\r
+\r
+                       if (tinymce.isWebKit) {\r
+                               // We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />\r
+                               // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles\r
+                               each(dom.select('*', o.node), function(el) {\r
+                                       el.removeAttribute('mce_style');\r
+                               });\r
+                       }\r
+               },\r
+\r
+               /**\r
+                * Converts the most common bullet and number formats in Office into a real semantic UL/LI list.\r
+                */\r
+               _convertLists : function(pl, o) {\r
+                       var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType;\r
+\r
+                       // Convert middot lists into real scemantic lists\r
+                       each(dom.select('p', o.node), function(p) {\r
+                               var sib, val = '', type, html, idx, parents;\r
+\r
+                               // Get text node value at beginning of paragraph\r
+                               for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling)\r
+                                       val += sib.nodeValue;\r
+\r
+                               // Detect unordered lists look for bullets\r
+                               if (/^[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0\u00a0*/.test(val))\r
+                                       type = 'ul';\r
+\r
+                               // Detect ordered lists 1., a. or ixv.\r
+                               if (/^[\s\S]*\w+\.[\s\S]*\u00a0{2,}/.test(val))\r
+                                       type = 'ol';\r
+\r
+                               // Check if node value matches the list pattern: o&nbsp;&nbsp;\r
+                               if (type) {\r
+                                       margin = parseFloat(p.style.marginLeft || 0);\r
+\r
+                                       if (margin > lastMargin)\r
+                                               levels.push(margin);\r
+\r
+                                       if (!listElm || type != lastType) {\r
+                                               listElm = dom.create(type);\r
+                                               dom.insertAfter(listElm, p);\r
+                                       } else {\r
+                                               // Nested list element\r
+                                               if (margin > lastMargin) {\r
+                                                       listElm = li.appendChild(dom.create(type));\r
+                                               } else if (margin < lastMargin) {\r
+                                                       // Find parent level based on margin value\r
+                                                       idx = tinymce.inArray(levels, margin);\r
+                                                       parents = dom.getParents(listElm.parentNode, type);\r
+                                                       listElm = parents[parents.length - 1 - idx] || listElm;\r
+                                               }\r
+                                       }\r
+\r
+                                       if (type == 'ul')\r
+                                               html = p.innerHTML.replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*(&nbsp;|\u00a0)+\s*/, '');\r
+                                       else\r
+                                               html = p.innerHTML.replace(/^[\s\S]*\w+\.(&nbsp;|\u00a0)+\s*/, '');\r
+\r
+                                       li = listElm.appendChild(dom.create('li', 0, html));\r
+                                       dom.remove(p);\r
+\r
+                                       lastMargin = margin;\r
+                                       lastType = type;\r
+                               } else\r
+                                       listElm = lastMargin = 0; // End list element\r
+                       });\r
+               },\r
+\r
+               /**\r
+                * This method will split the current block parent and insert the contents inside the split position.\r
+                * This logic can be improved so text nodes at the start/end remain in the start/end block elements\r
+                */\r
+               _insertBlockContent : function(ed, dom, content) {\r
+                       var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight;\r
+\r
+                       function select(n) {\r
+                               var r;\r
+\r
+                               if (tinymce.isIE) {\r
+                                       r = ed.getDoc().body.createTextRange();\r
+                                       r.moveToElementText(n);\r
+                                       r.collapse(false);\r
+                                       r.select();\r
+                               } else {\r
+                                       sel.select(n, 1);\r
+                                       sel.collapse(false);\r
+                               }\r
+                       };\r
+\r
+                       // Insert a marker for the caret position\r
+                       this._insert('<span id="_marker">&nbsp;</span>', 1);\r
+                       marker = dom.get('_marker');\r
+                       parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol');\r
+\r
+                       if (parentBlock) {\r
+                               // Split parent block\r
+                               marker = dom.split(parentBlock, marker);\r
+\r
+                               // Insert nodes before the marker\r
+                               each(dom.create('div', 0, content).childNodes, function(n) {\r
+                                       last = marker.parentNode.insertBefore(n.cloneNode(true), marker);\r
+                               });\r
+\r
+                               // Move caret after marker\r
+                               select(last);\r
+                       } else {\r
+                               dom.setOuterHTML(marker, content);\r
+                               sel.select(ed.getBody(), 1);\r
+                               sel.collapse(0);\r
+                       }\r
+\r
+                       dom.remove('_marker'); // Remove marker if it's left\r
+\r
+                       // Get element, position and height\r
+                       elm = sel.getStart();\r
+                       vp = dom.getViewPort(ed.getWin());\r
+                       y = ed.dom.getPos(elm).y;\r
+                       elmHeight = elm.clientHeight;\r
+\r
+                       // Is element within viewport if not then scroll it into view\r
+                       if (y < vp.y || y + elmHeight > vp.y + vp.h)\r
+                               ed.getDoc().body.scrollTop = y < vp.y ? y : y - vp.h + 25;\r
+               },\r
+\r
+               /**\r
+                * Inserts the specified contents at the caret position.\r
+                */\r
+               _insert : function(h, skip_undo) {\r
+                       var ed = this.editor;\r
+\r
+                       // First delete the contents seems to work better on WebKit\r
+                       if (!ed.selection.isCollapsed())\r
+                               ed.execCommand('Delete');\r
+\r
+                       // It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents\r
+                       ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo});\r
+               },\r
+\r
+               /**\r
+                * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.\r
+                */\r
+               _legacySupport : function() {\r
+                       var t = this, ed = t.editor;\r
+\r
+                       // Register commands for backwards compatibility\r
+                       each(['mcePasteText', 'mcePasteWord'], function(cmd) {\r
+                               ed.addCommand(cmd, function() {\r
+                                       ed.windowManager.open({\r
+                                               file : t.url + (cmd == 'mcePasteText' ? '/pastetext.htm' : '/pasteword.htm'),\r
+                                               width : 450,\r
+                                               height : 400,\r
+                                               inline : 1\r
+                                       });\r
+                               });\r
+                       });\r
+\r
+                       // Register buttons for backwards compatibility\r
+                       ed.addButton('pastetext', {title : 'paste.paste_text_desc', cmd : 'mcePasteText'});\r
+                       ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord'});\r
+                       ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'selectall'});\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('paste', tinymce.plugins.PastePlugin);\r
+})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/paste/js/pastetext.js b/lib/editor/tinymce/plugins/paste/js/pastetext.js
new file mode 100644 (file)
index 0000000..303439b
--- /dev/null
@@ -0,0 +1,36 @@
+tinyMCEPopup.requireLangPack();\r
+\r
+var PasteTextDialog = {\r
+       init : function() {\r
+               this.resize();\r
+       },\r
+\r
+       insert : function() {\r
+               var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines;\r
+\r
+               // Convert linebreaks into paragraphs\r
+               if (document.getElementById('linebreaks').checked) {\r
+                       lines = h.split(/\r?\n/);\r
+                       if (lines.length > 1) {\r
+                               h = '';\r
+                               tinymce.each(lines, function(row) {\r
+                                       h += '<p>' + row + '</p>';\r
+                               });\r
+                       }\r
+               }\r
+\r
+               tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, h);\r
+               tinyMCEPopup.close();\r
+       },\r
+\r
+       resize : function() {\r
+               var vp = tinyMCEPopup.dom.getViewPort(window), el;\r
+\r
+               el = document.getElementById('content');\r
+\r
+               el.style.width  = (vp.w - 20) + 'px';\r
+               el.style.height = (vp.h - 90) + 'px';\r
+       }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog);\r
diff --git a/lib/editor/tinymce/plugins/paste/js/pasteword.js b/lib/editor/tinymce/plugins/paste/js/pasteword.js
new file mode 100644 (file)
index 0000000..fe053a7
--- /dev/null
@@ -0,0 +1,51 @@
+tinyMCEPopup.requireLangPack();\r
+\r
+var PasteWordDialog = {\r
+       init : function() {\r
+               var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = '';\r
+\r
+               // Create iframe\r
+               el.innerHTML = '<iframe id="iframe" src="javascript:\'\';" frameBorder="0" style="border: 1px solid gray"></iframe>';\r
+               ifr = document.getElementById('iframe');\r
+               doc = ifr.contentWindow.document;\r
+\r
+               // Force absolute CSS urls\r
+               css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")];\r
+               css = css.concat(tinymce.explode(ed.settings.content_css) || []);\r
+               tinymce.each(css, function(u) {\r
+                       cssHTML += '<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />';\r
+               });\r
+\r
+               // Write content into iframe\r
+               doc.open();\r
+               doc.write('<html><head>' + cssHTML + '</head><body spellcheck="false"></body></html>');\r
+               doc.close();\r
+\r
+               doc.designMode = 'on';\r
+               this.resize();\r
+\r
+               window.setTimeout(function() {\r
+                       ifr.contentWindow.focus();\r
+               }, 10);\r
+       },\r
+\r
+       insert : function() {\r
+               var h = document.getElementById('iframe').contentWindow.document.body.innerHTML;\r
+\r
+               tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, h);\r
+               tinyMCEPopup.close();\r
+       },\r
+\r
+       resize : function() {\r
+               var vp = tinyMCEPopup.dom.getViewPort(window), el;\r
+\r
+               el = document.getElementById('iframe');\r
+\r
+               if (el) {\r
+                       el.style.width  = (vp.w - 20) + 'px';\r
+                       el.style.height = (vp.h - 90) + 'px';\r
+               }\r
+       }\r
+};\r
+\r
+tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog);\r
diff --git a/lib/editor/tinymce/plugins/paste/pastetext.htm b/lib/editor/tinymce/plugins/paste/pastetext.htm
new file mode 100644 (file)
index 0000000..42c3d9c
--- /dev/null
@@ -0,0 +1,33 @@
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <title>{#paste.paste_text_desc}</title>\r
+       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+       <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
+       <script type="text/javascript" src="js/pastetext.js"></script>\r
+</head>\r
+<body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">\r
+       <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">\r
+               <div style="float: left" class="title">{#paste.paste_text_desc}</div>\r
+\r
+               <div style="float: right">\r
+                       <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>\r
+               </div>\r
+\r
+               <br style="clear: both" />\r
+\r
+               <div>{#paste_dlg.text_title}</div>\r
+\r
+               <textarea id="content" name="content" 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>\r
+\r
+               <div class="mceActionPanel">\r
+                       <div style="float: left">\r
+                               <input type="submit" name="insert" value="{#insert}" id="insert" />\r
+                       </div>\r
+\r
+                       <div style="float: right">\r
+                               <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />\r
+                       </div>\r
+               </div>\r
+       </form>\r
+</body> \r
+</html>
\ No newline at end of file
similarity index 66%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm
rename to lib/editor/tinymce/plugins/paste/pasteword.htm
index 9e5ab1b5b5869e1922cca7bd4460d465a2371d93..f4a9b3db3fa2113c899659b38f655b5f996c802f 100644 (file)
@@ -4,11 +4,9 @@
        <title>{#paste.paste_word_desc}</title>\r
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/pasteword.js"></script>\r
-       <link href="css/pasteword.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
-       <form name="source" onsubmit="saveContent();" action="#">\r
+<body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">\r
+       <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">\r
                <div class="title">{#paste.paste_word_desc}</div>\r
 \r
                <div>{#paste_dlg.word_title}</div>\r
@@ -17,7 +15,7 @@
 \r
                <div class="mceActionPanel">\r
                        <div style="float: left">\r
-                               <input type="button" id="insert" name="insert" value="{#insert}" onclick="saveContent();" />\r
+                               <input type="submit" id="insert" name="insert" value="{#insert}" />\r
                        </div>\r
 \r
                        <div style="float: right">\r
diff --git a/lib/editor/tinymce/plugins/preview/editor_plugin.js b/lib/editor/tinymce/plugins/preview/editor_plugin.js
new file mode 100644 (file)
index 0000000..507909c
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.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}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})();
\ No newline at end of file
similarity index 90%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js
rename to lib/editor/tinymce/plugins/preview/editor_plugin_src.js
index 79645af67e92270c99dc92e15906289b05b7fae6..d7713e6be08daa3578d26e84045a29be635059ca 100644 (file)
@@ -24,7 +24,7 @@
                                        height : parseInt(ed.getParam("plugin_preview_height", "600")),
                                        resizable : "yes",
                                        scrollbars : "yes",
-                                       popup_css : css.join(','),
+                                       popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"),
                                        inline : ed.getParam("plugin_preview_inline", 1)
                                }, {
                                        base : ed.documentBaseURI.getURI()
similarity index 50%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/preview/preview.html
rename to lib/editor/tinymce/plugins/preview/preview.html
index 7960f7858c6dbaae6ae5745a85484dc7af3b7a7e..67e7b142fa2a058d70ef659a8e44cdd46486e024 100644 (file)
@@ -1,19 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
-<script language="javascript" src="../../tiny_mce_popup.js"></script>\r
+<script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
 <script type="text/javascript" src="jscripts/embed.js"></script>\r
-<script type="text/javascript">\r
-tinyMCEPopup.onInit.add(function(ed) {\r
-       var dom = tinyMCEPopup.dom;\r
-\r
-       dom.setHTML('content', ed.getContent());\r
-});\r
-\r
+<script type="text/javascript"><!--\r
 document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');\r
+// -->\r
 </script>\r
 <title>{#preview.preview_desc}</title>\r
 </head>\r
 <body id="content">\r
-<!-- Gets filled with editor contents -->\r
+<script type="text/javascript">\r
+       document.write(tinyMCEPopup.editor.getContent());\r
+</script>\r
 </body>\r
 </html>\r
diff --git a/lib/editor/tinymce/plugins/print/editor_plugin.js b/lib/editor/tinymce/plugins/print/editor_plugin.js
new file mode 100644 (file)
index 0000000..b5b3a55
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.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)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/safari/editor_plugin.js b/lib/editor/tinymce/plugins/safari/editor_plugin.js
new file mode 100644 (file)
index 0000000..794477c
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.dom.Event,c=tinymce.grep,d=tinymce.each,b=tinymce.inArray;function e(j,i,h){var g,k;g=j.createTreeWalker(i,NodeFilter.SHOW_ALL,null,false);while(k=g.nextNode()){if(h){if(!h(k)){return false}}if(k.nodeType==3&&k.nodeValue&&/[^\s\u00a0]+/.test(k.nodeValue)){return false}if(k.nodeType==1&&/^(HR|IMG|TABLE)$/.test(k.nodeName)){return false}}return true}tinymce.create("tinymce.plugins.Safari",{init:function(f){var g=this,h;if(!tinymce.isWebKit){return}g.editor=f;g.webKitFontSizes=["x-small","small","medium","large","x-large","xx-large","-webkit-xxx-large"];g.namedFontSizes=["xx-small","x-small","small","medium","large","x-large","xx-large"];f.addCommand("CreateLink",function(k,j){var m=f.selection.getNode(),l=f.dom,i;if(m&&(/^(left|right)$/i.test(l.getStyle(m,"float",1))||/^(left|right)$/i.test(l.getAttrib(m,"align")))){i=l.create("a",{href:j},m.cloneNode());m.parentNode.replaceChild(i,m);f.selection.select(i)}else{f.getDoc().execCommand("CreateLink",false,j)}});f.onKeyUp.add(function(j,o){var l,i,m,p,k;if(o.keyCode==46||o.keyCode==8){i=j.getBody();l=i.innerHTML;k=j.selection;if(i.childNodes.length==1&&!/<(img|hr)/.test(l)&&tinymce.trim(l.replace(/<[^>]+>/g,"")).length==0){j.setContent('<p><br mce_bogus="1" /></p>',{format:"raw"});p=i.firstChild;m=k.getRng();m.setStart(p,0);m.setEnd(p,0);k.setRng(m)}}});f.addCommand("FormatBlock",function(j,i){var l=f.dom,k=l.getParent(f.selection.getNode(),l.isBlock);if(k){l.replace(l.create(i),k,1)}else{f.getDoc().execCommand("FormatBlock",false,i)}});f.addCommand("mceInsertContent",function(j,i){f.getDoc().execCommand("InsertText",false,"mce_marker");f.getBody().innerHTML=f.getBody().innerHTML.replace(/mce_marker/g,f.dom.processHTML(i)+'<span id="_mce_tmp">XX</span>');f.selection.select(f.dom.get("_mce_tmp"));f.getDoc().execCommand("Delete",false," ")});f.onKeyPress.add(function(o,p){var q,v,r,l,j,k,i,u,m,t,s;if(p.keyCode==13){i=o.selection;q=i.getNode();if(p.shiftKey||o.settings.force_br_newlines&&q.nodeName!="LI"){g._insertBR(o);a.cancel(p)}if(v=h.getParent(q,"LI")){r=h.getParent(v,"OL,UL");u=o.getDoc();s=h.create("p");h.add(s,"br",{mce_bogus:"1"});if(e(u,v)){if(k=h.getParent(r.parentNode,"LI,OL,UL")){return}k=h.getParent(r,"p,h1,h2,h3,h4,h5,h6,div")||r;l=u.createRange();l.setStartBefore(k);l.setEndBefore(v);j=u.createRange();j.setStartAfter(v);j.setEndAfter(k);m=l.cloneContents();t=j.cloneContents();if(!e(u,t)){h.insertAfter(t,k)}h.insertAfter(s,k);if(!e(u,m)){h.insertAfter(m,k)}h.remove(k);k=s.firstChild;l=u.createRange();l.setStartBefore(k);l.setEndBefore(k);i.setRng(l);return a.cancel(p)}}}});f.onExecCommand.add(function(i,k){var j,m,n,l;if(k=="InsertUnorderedList"||k=="InsertOrderedList"){j=i.selection;m=i.dom;if(n=m.getParent(j.getNode(),function(o){return/^(H[1-6]|P|ADDRESS|PRE)$/.test(o.nodeName)})){l=j.getBookmark();m.remove(n,1);j.moveToBookmark(l)}}});f.onClick.add(function(i,j){j=j.target;if(j.nodeName=="IMG"){g.selElm=j;i.selection.select(j)}else{g.selElm=null}});f.onInit.add(function(){g._fixWebKitSpans()});f.onSetContent.add(function(){h=f.dom;d(["strong","b","em","u","strike","sub","sup","a"],function(i){d(c(h.select(i)).reverse(),function(l){var k=l.nodeName.toLowerCase(),j;if(k=="a"){if(l.name){h.replace(h.create("img",{mce_name:"a",name:l.name,"class":"mceItemAnchor"}),l)}return}switch(k){case"b":case"strong":if(k=="b"){k="strong"}j="font-weight: bold;";break;case"em":j="font-style: italic;";break;case"u":j="text-decoration: underline;";break;case"sub":j="vertical-align: sub;";break;case"sup":j="vertical-align: super;";break;case"strike":j="text-decoration: line-through;";break}h.replace(h.create("span",{mce_name:k,style:j,"class":"Apple-style-span"}),l,1)})})});f.onPreProcess.add(function(i,j){h=i.dom;d(c(j.node.getElementsByTagName("span")).reverse(),function(m){var k,l;if(j.get){if(h.hasClass(m,"Apple-style-span")){l=m.style.backgroundColor;switch(h.getAttrib(m,"mce_name")){case"font":if(!i.settings.convert_fonts_to_spans){h.setAttrib(m,"style","")}break;case"strong":case"em":case"sub":case"sup":h.setAttrib(m,"style","");break;case"strike":case"u":if(!i.settings.inline_styles){h.setAttrib(m,"style","")}else{h.setAttrib(m,"mce_name","")}break;default:if(!i.settings.inline_styles){h.setAttrib(m,"style","")}}if(l){m.style.backgroundColor=l}}}if(h.hasClass(m,"mceItemRemoved")){h.remove(m,1)}})});f.onPostProcess.add(function(i,j){j.content=j.content.replace(/<br \/><\/(h[1-6]|div|p|address|pre)>/g,"</$1>");j.content=j.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 g=this,f=g.editor;a.add(f.getDoc(),"DOMNodeInserted",function(h){h=h.target;if(h&&h.nodeType==1){g._fixAppleSpan(h)}})},_fixAppleSpan:function(l){var g=this.editor,m=g.dom,i=this.webKitFontSizes,f=this.namedFontSizes,j=g.settings,h,k;if(m.getAttrib(l,"mce_fixed")){return}if(l.nodeName=="SPAN"&&l.className=="Apple-style-span"){h=l.style;if(!j.convert_fonts_to_spans){if(h.fontSize){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"size",b(i,h.fontSize)+1)}if(h.fontFamily){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"face",h.fontFamily)}if(h.color){m.setAttrib(l,"mce_name","font");m.setAttrib(l,"color",m.toHex(h.color))}if(h.backgroundColor){m.setAttrib(l,"mce_name","font");m.setStyle(l,"background-color",h.backgroundColor)}}else{if(h.fontSize){m.setStyle(l,"fontSize",f[b(i,h.fontSize)])}}if(h.fontWeight=="bold"){m.setAttrib(l,"mce_name","strong")}if(h.fontStyle=="italic"){m.setAttrib(l,"mce_name","em")}if(h.textDecoration=="underline"){m.setAttrib(l,"mce_name","u")}if(h.textDecoration=="line-through"){m.setAttrib(l,"mce_name","strike")}if(h.verticalAlign=="super"){m.setAttrib(l,"mce_name","sup")}if(h.verticalAlign=="sub"){m.setAttrib(l,"mce_name","sub")}m.setAttrib(l,"mce_fixed","1")}},_insertBR:function(f){var j=f.dom,h=f.selection,i=h.getRng(),g;i.insertNode(g=j.create("br"));i.setStartAfter(g);i.setEndAfter(g);h.setRng(i);if(h.getSel().focusNode==g.previousSibling){h.select(j.insertAfter(j.doc.createTextNode("\u00a0"),g));h.collapse(1)}f.getWin().scrollTo(0,j.getPos(h.getRng().startContainer).y)}});tinymce.PluginManager.add("safari",tinymce.plugins.Safari)})();
\ No newline at end of file
similarity index 66%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js
rename to lib/editor/tinymce/plugins/safari/editor_plugin_src.js
index 6b30a9f2fe38cdff85351898906b07e1ec2a54f5..dc7866ab0535db26013f1a40307ffecfdb6eefad 100644 (file)
@@ -6,7 +6,7 @@
  */\r
 \r
 (function() {\r
-       var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray, isOldWebKit = tinymce.isOldWebKit;\r
+       var Event = tinymce.dom.Event, grep = tinymce.grep, each = tinymce.each, inArray = tinymce.inArray;\r
 \r
        function isEmpty(d, e, f) {\r
                var w, n;\r
@@ -55,6 +55,8 @@
                                        ed.getDoc().execCommand("CreateLink", false, v);\r
                        });\r
 \r
+/*\r
+                       // WebKit generates spans out of thin air this patch used to remove them but it will also remove styles we want so it's disabled for now\r
                        ed.onPaste.add(function(ed, e) {\r
                                function removeStyles(e) {\r
                                        e = e.target;\r
                                        Event.remove(ed.getDoc(), 'DOMNodeInserted', removeStyles);\r
                                }, 0);\r
                        });\r
-\r
+*/\r
                        ed.onKeyUp.add(function(ed, e) {\r
-                               var h, b;\r
+                               var h, b, r, n, s;\r
 \r
                                // If backspace or delete key\r
                                if (e.keyCode == 46 || e.keyCode == 8) {\r
                                        b = ed.getBody();\r
                                        h = b.innerHTML;\r
+                                       s = ed.selection;\r
 \r
                                        // If there is no text content or images or hr elements then remove everything\r
-                                       if (b.childNodes.length == 1 && !/<(img|hr)/.test(h) && tinymce.trim(h.replace(/<[^>]+>/g, '')).length == 0)\r
-                                               ed.setContent('', {format : 'raw'});\r
+                                       if (b.childNodes.length == 1 && !/<(img|hr)/.test(h) && tinymce.trim(h.replace(/<[^>]+>/g, '')).length == 0) {\r
+                                               // Inject paragrah and bogus br\r
+                                               ed.setContent('<p><br mce_bogus="1" /></p>', {format : 'raw'});\r
+\r
+                                               // Move caret before bogus br\r
+                                               n = b.firstChild;\r
+                                               r = s.getRng();\r
+                                               r.setStart(n, 0);\r
+                                               r.setEnd(n, 0);\r
+                                               s.setRng(r);\r
+                                       }\r
                                }\r
                        });\r
 \r
                        // Workaround for InsertHTML bug, http://bugs.webkit.org/show_bug.cgi?id=16382\r
                        ed.addCommand('mceInsertContent', function(u, v) {\r
                                ed.getDoc().execCommand("InsertText", false, 'mce_marker');\r
-                               ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, v + '<span id="_mce_tmp">XX</span>');\r
+                               ed.getBody().innerHTML = ed.getBody().innerHTML.replace(/mce_marker/g, ed.dom.processHTML(v) + '<span id="_mce_tmp">XX</span>');\r
                                ed.selection.select(ed.dom.get('_mce_tmp'));\r
                                ed.getDoc().execCommand("Delete", false, ' ');\r
                        });\r
+       \r
+       /*              ed.onKeyDown.add(function(ed, e) {\r
+                               // Ctrl+A select all will fail on WebKit since if you paste the contents you selected it will produce a odd div wrapper\r
+                               if ((e.ctrlKey || e.metaKey) && e.keyCode == 65) {\r
+                                       ed.selection.select(ed.getBody(), 1);\r
+                                       return Event.cancel(e);\r
+                               }\r
+                       });*/\r
 \r
                        ed.onKeyPress.add(function(ed, e) {\r
                                var se, li, lic, r1, r2, n, sel, doc, be, af, pa;\r
                                }\r
                        });\r
 \r
-                       // Safari returns incorrect values\r
-/*                     ed.addQueryValueHandler('Fo2ntSize', function(u, v) {\r
-                               var e, v;\r
+                       // Safari doesn't place lists outside block elements\r
+                       ed.onExecCommand.add(function(ed, cmd) {\r
+                               var sel, dom, bl, bm;\r
 \r
-                               // Check for the real font size at the start of selection\r
-                               if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontSize))\r
-                                       return tinymce.inArray(t.namedFontSizes, v) + 1;\r
-\r
-                               // Check for the real font size at the end of selection\r
-                               if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontSize))\r
-                                       return tinymce.inArray(t.namedFontSizes, v) + 1;\r
+                               if (cmd == 'InsertUnorderedList' || cmd == 'InsertOrderedList') {\r
+                                       sel = ed.selection;\r
+                                       dom = ed.dom;\r
 \r
-                               // Return default value it's better than nothing right!\r
-                               return ed.getDoc().queryCommandValue('FontSize');\r
+                                       if (bl = dom.getParent(sel.getNode(), function(n) {return /^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName);})) {\r
+                                               bm = sel.getBookmark();\r
+                                               dom.remove(bl, 1);\r
+                                               sel.moveToBookmark(bm);\r
+                                       }\r
+                               }\r
                        });\r
 \r
-                       // Safari returns incorrect values\r
-                       ed.addQueryValueHandler('Fo2ntName', function(u, v) {\r
-                               var e, v;\r
-\r
-                               // Check for the real font name at the start of selection\r
-                               if ((e = ed.dom.getParent(ed.selection.getStart(), 'span')) && (v = e.style.fontFamily))\r
-                                       return v.replace(/\'/g, '').replace(/, /g, ',');\r
-\r
-                               // Check for the real font name at the end of selection\r
-                               if ((e = ed.dom.getParent(ed.selection.getEnd(), 'span')) && (v = e.style.fontFamily))\r
-                                       return v.replace(/\'/g, '').replace(/, /g, ',');\r
-\r
-                               // Return default value it's better than nothing right!\r
-                               return ed.getDoc().queryCommandValue('FontName');\r
-                       });*/\r
-\r
                        // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250\r
                        ed.onClick.add(function(ed, e) {\r
                                e = e.target;\r
                                        t.selElm = null;\r
                        });\r
 \r
-/*                     ed.onBeforeExecCommand.add(function(ed, c, b) {\r
-                               var r = t.bookmarkRng;\r
-\r
-                               // Restore selection\r
-                               if (r) {\r
-                                       ed.selection.setRng(r);\r
-                                       t.bookmarkRng = null;\r
-                                       //console.debug('restore', r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r
-                               }\r
-                       });*/\r
-\r
                        ed.onInit.add(function() {\r
                                t._fixWebKitSpans();\r
-\r
-/*                             ed.windowManager.onOpen.add(function() {\r
-                                       var r = ed.selection.getRng();\r
-\r
-                                       // Store selection if valid\r
-                                       if (r.startContainer != ed.getDoc()) {\r
-                                               t.bookmarkRng = r.cloneRange();\r
-                                               //console.debug('store', r.startContainer, r.startOffset, r.endContainer, r.endOffset);\r
-                                       }\r
-                               });\r
-\r
-                               ed.windowManager.onClose.add(function() {\r
-                                       t.bookmarkRng = null;\r
-                               });*/\r
-\r
-                               if (isOldWebKit)\r
-                                       t._patchSafari2x(ed);\r
                        });\r
 \r
                        ed.onSetContent.add(function() {\r
                _fixWebKitSpans : function() {\r
                        var t = this, ed = t.editor;\r
 \r
-                       if (!isOldWebKit) {\r
-                               // Use mutator events on new WebKit\r
-                               Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {\r
-                                       e = e.target;\r
-\r
-                                       if (e && e.nodeType == 1)\r
-                                               t._fixAppleSpan(e);\r
-                               });\r
-                       } else {\r
-                               // Do post command processing in old WebKit since the browser crashes on Mutator events :(\r
-                               ed.onExecCommand.add(function() {\r
-                                       each(ed.dom.select('span'), function(n) {\r
-                                               t._fixAppleSpan(n);\r
-                                       });\r
+                       // Use mutator events on new WebKit\r
+                       Event.add(ed.getDoc(), 'DOMNodeInserted', function(e) {\r
+                               e = e.target;\r
 \r
-                                       ed.nodeChanged();\r
-                               });\r
-                       }\r
+                               if (e && e.nodeType == 1)\r
+                                       t._fixAppleSpan(e);\r
+                       });\r
                },\r
 \r
                _fixAppleSpan : function(e) {\r
                        }\r
                },\r
 \r
-               _patchSafari2x : function(ed) {\r
-                       var t = this, setContent, getNode, dom = ed.dom, lr;\r
-\r
-                       // Inline dialogs\r
-                       if (ed.windowManager.onBeforeOpen) {\r
-                               ed.windowManager.onBeforeOpen.add(function() {\r
-                                       r = ed.selection.getRng();\r
-                               });\r
-                       }\r
-\r
-                       // Fake select on 2.x\r
-                       ed.selection.select = function(n) {\r
-                               this.getSel().setBaseAndExtent(n, 0, n, 1);\r
-                       };\r
-\r
-                       getNode = ed.selection.getNode;\r
-                       ed.selection.getNode = function() {\r
-                               return t.selElm || getNode.call(this);\r
-                       };\r
-\r
-                       // Fake range on Safari 2.x\r
-                       ed.selection.getRng = function() {\r
-                               var t = this, s = t.getSel(), d = ed.getDoc(), r, rb, ra, di;\r
-\r
-                               // Fake range on Safari 2.x\r
-                               if (s.anchorNode) {\r
-                                       r = d.createRange();\r
-\r
-                                       try {\r
-                                               // Setup before range\r
-                                               rb = d.createRange();\r
-                                               rb.setStart(s.anchorNode, s.anchorOffset);\r
-                                               rb.collapse(1);\r
-\r
-                                               // Setup after range\r
-                                               ra = d.createRange();\r
-                                               ra.setStart(s.focusNode, s.focusOffset);\r
-                                               ra.collapse(1);\r
-\r
-                                               // Setup start/end points by comparing locations\r
-                                               di = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;\r
-                                               r.setStart(di ? s.anchorNode : s.focusNode, di ? s.anchorOffset : s.focusOffset);\r
-                                               r.setEnd(di ? s.focusNode : s.anchorNode, di ? s.focusOffset : s.anchorOffset);\r
-\r
-                                               lr = r;\r
-                                       } catch (ex) {\r
-                                               // Sometimes fails, at least we tried to do it by the book. I hope Safari 2.x will go disappear soooon!!!\r
-                                       }\r
-                               }\r
-\r
-                               return r || lr;\r
-                       };\r
-\r
-                       // Fix setContent so it works\r
-                       setContent = ed.selection.setContent;\r
-                       ed.selection.setContent = function(h, s) {\r
-                               var r = this.getRng(), b;\r
-\r
-                               try {\r
-                                       setContent.call(this, h, s);\r
-                               } catch (ex) {\r
-                                       // Workaround for Safari 2.x\r
-                                       b = dom.create('body');\r
-                                       b.innerHTML = h;\r
-\r
-                                       each(b.childNodes, function(n) {\r
-                                               r.insertNode(n.cloneNode(true));\r
-                                       });\r
-                               }\r
-                       };\r
-               },\r
-\r
                _insertBR : function(ed) {\r
                        var dom = ed.dom, s = ed.selection, r = s.getRng(), br;\r
 \r
diff --git a/lib/editor/tinymce/plugins/save/editor_plugin.js b/lib/editor/tinymce/plugins/save/editor_plugin.js
new file mode 100644 (file)
index 0000000..8e93996
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.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(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/searchreplace/editor_plugin.js b/lib/editor/tinymce/plugins/searchreplace/editor_plugin.js
new file mode 100644 (file)
index 0000000..c3f8358
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:160+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.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)})();
\ No newline at end of file
similarity index 97%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm
rename to lib/editor/tinymce/plugins/searchreplace/searchreplace.htm
index 9c95a6a30b90098948b216e8f601d0586cf38b48..0b42486b6fc9045244c411de2a9868007c18f2bf 100644 (file)
@@ -7,7 +7,6 @@
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <script type="text/javascript" src="js/searchreplace.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body style="display:none;">\r
 <form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">\r
diff --git a/lib/editor/tinymce/plugins/spellchecker/editor_plugin.js b/lib/editor/tinymce/plugins/spellchecker/editor_plugin.js
new file mode 100644 (file)
index 0000000..377e4e8
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=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(e,f){var g=this,d;g.url=f;g.editor=e;e.addCommand("mceSpellCheck",function(){if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);e.windowManager.alert("spellchecker.no_mpell")}})}else{g._done()}});e.onInit.add(function(){if(e.settings.content_css!==false){e.dom.loadCSS(f+"/css/content.css")}});e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.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(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={};this._walk(e.getBody(),function(h){if(h.nodeType==3){d+=h.nodeValue+" "}});d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));c(d.split(" "),function(h){if(!f[h]){g.push(h);f[h]=1}});return g},_removeWords:function(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(o){var i,h,g,f,e,n="",k=this.editor,p=this._getSeparators(),j=k.dom,d=[];var l=k.selection,m=l.getBookmark();c(o,function(q){n+=(n?"|":"")+q});i=new RegExp("(["+p+"])("+n+")(["+p+"])","g");h=new RegExp("^("+n+")","g");g=new RegExp("("+n+")(["+p+"]?)$","g");f=new RegExp("^("+n+")(["+p+"]?)$","g");e=new RegExp("("+n+")(["+p+"])","g");this._walk(this.editor.getBody(),function(q){if(q.nodeType==3){d.push(q)}});c(d,function(r){var q;if(r.nodeType==3){q=r.nodeValue;if(i.test(q)||h.test(q)||g.test(q)||f.test(q)){q=j.encode(q);q=q.replace(e,'<span class="mceItemHiddenSpellWord">$1</span>$2');q=q.replace(g,'<span class="mceItemHiddenSpellWord">$1</span>$2');j.replace(j.create("span",{"class":"mceItemHidden"},q),r)}}});l.moveToBookmark(m)},_showMenu:function(g,i){var h=this,g=h.editor,d=h._menu,k,j=g.dom,f=j.getViewPort(g.getWin());if(!d){k=b.getPos(g.getContentAreaContainer());d=g.controlManager.createDropMenu("spellcheckermenu",{offset_x:k.x,offset_y:k.y,"class":"mceNoIcons"});h._menu=d}if(j.hasClass(i.target,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);h._sendRPC("getSuggestions",[h.selectedLang,j.decode(i.target.innerHTML)],function(e){d.removeAll();if(e.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(e,function(l){d.add({title:l,onclick:function(){j.replace(g.getDoc().createTextNode(l),i.target);h._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}d.add({title:"spellchecker.ignore_word",onclick:function(){j.remove(i.target,1);h._checkDone()}});d.add({title:"spellchecker.ignore_words",onclick:function(){h._removeWords(j.decode(i.target.innerHTML));h._checkDone()}});d.update()});g.selection.select(i.target);k=j.getPos(i.target);d.showMenu(k.x,k.y+i.target.offsetHeight-f.y);return tinymce.dom.Event.cancel(i)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,h,d){var g=this,f=g.editor.getParam("spellchecker_rpc_url","{backend}");if(f=="{backend}"){g.editor.setProgressState(0);alert("Please specify: spellchecker_rpc_url");return}a.sendRPC({url:f,method:e,params:h,success:d,error:function(j,i){g.editor.setProgressState(0);g.editor.windowManager.alert(j.errstr||("Error response: "+i.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/spellchecker/img/wline.gif b/lib/editor/tinymce/plugins/spellchecker/img/wline.gif
new file mode 100644 (file)
index 0000000..7d0a4db
Binary files /dev/null and b/lib/editor/tinymce/plugins/spellchecker/img/wline.gif differ
diff --git a/lib/editor/tinymce/plugins/style/editor_plugin.js b/lib/editor/tinymce/plugins/style/editor_plugin.js
new file mode 100644 (file)
index 0000000..cab2153
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.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)})();
\ No newline at end of file
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/js/props.js
rename to lib/editor/tinymce/plugins/style/js/props.js
index cafd6b1cf7ead1fd5b2851edc4c9d5f714af2671..a8dd93dec5945263bb0faa5caef3f7696e5e2400 100644 (file)
@@ -10,9 +10,9 @@ var defaultFonts = "" +
        "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";\r
 \r
 var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";\r
-var defaultMeasurement = "+pixels=px;points=pt;em;in;cm;mm;picas;ems;exs;%";\r
-var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";\r
-var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";\r
+var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";\r
+var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%";\r
+var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";\r
 var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";\r
 var defaultTextStyle = "normal;italic;oblique";\r
 var defaultVariant = "normal;small-caps";\r
@@ -247,12 +247,12 @@ function setupFormData() {
 }\r
 \r
 function getMeasurement(s) {\r
-       return s.replace(/^([0-9]+)(.*)$/, "$2");\r
+       return s.replace(/^([0-9.]+)(.*)$/, "$2");\r
 }\r
 \r
 function getNum(s) {\r
-       if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))\r
-               return s.replace(/[^0-9]/g, '');\r
+       if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s))\r
+               return s.replace(/[^0-9.]/g, '');\r
 \r
        return s;\r
 }\r
@@ -478,7 +478,7 @@ function generateCSS() {
                ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");\r
                ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");\r
        } else\r
-               ce.style.borderWidth = f.border_width_top.value;\r
+               ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");\r
 \r
        if (!f.border_color_same.checked) {\r
                ce.style.borderTopColor = f.border_color_top.value;\r
similarity index 99%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/style/props.htm
rename to lib/editor/tinymce/plugins/style/props.htm
index 54538e35773068ea5cb12aea2d940efc2cb5a3ed..3a1582cf958bce42bebaff5b17559f0e58bfb1b9 100644 (file)
@@ -8,7 +8,6 @@
        <script type="text/javascript" src="../../utils/form_utils.js"></script>
        <script type="text/javascript" src="js/props.js"></script>
        <link href="css/props.css" rel="stylesheet" type="text/css" />
-       <base target="_self" />
 </head>
 
 <body id="styleprops" style="display: none">
diff --git a/lib/editor/tinymce/plugins/tabfocus/editor_plugin.js b/lib/editor/tinymce/plugins/tabfocus/editor_plugin.js
new file mode 100644 (file)
index 0000000..7f1fe26
--- /dev/null
@@ -0,0 +1 @@
+(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m<n.length;m++){if(n[m].type!="hidden"){return n[m]}}}else{for(m=j-1;m>=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.EditorManager.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/plugins/tabfocus/editor_plugin_src.js b/lib/editor/tinymce/plugins/tabfocus/editor_plugin_src.js
new file mode 100644 (file)
index 0000000..afda924
--- /dev/null
@@ -0,0 +1,109 @@
+/**\r
+ * $Id$\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
+(function() {\r
+       var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;\r
+\r
+       tinymce.create('tinymce.plugins.TabFocusPlugin', {\r
+               init : function(ed, url) {\r
+                       function tabCancel(ed, e) {\r
+                               if (e.keyCode === 9)\r
+                                       return Event.cancel(e);\r
+                       };\r
+\r
+                       function tabHandler(ed, e) {\r
+                               var x, i, f, el, v;\r
+\r
+                               function find(d) {\r
+                                       f = DOM.getParent(ed.id, 'form');\r
+                                       el = f.elements;\r
+\r
+                                       if (f) {\r
+                                               each(el, function(e, i) {\r
+                                                       if (e.id == ed.id) {\r
+                                                               x = i;\r
+                                                               return false;\r
+                                                       }\r
+                                               });\r
+\r
+                                               if (d > 0) {\r
+                                                       for (i = x + 1; i < el.length; i++) {\r
+                                                               if (el[i].type != 'hidden')\r
+                                                                       return el[i];\r
+                                                       }\r
+                                               } else {\r
+                                                       for (i = x - 1; i >= 0; i--) {\r
+                                                               if (el[i].type != 'hidden')\r
+                                                                       return el[i];\r
+                                                       }\r
+                                               }\r
+                                       }\r
+\r
+                                       return null;\r
+                               };\r
+\r
+                               if (e.keyCode === 9) {\r
+                                       v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));\r
+\r
+                                       if (v.length == 1) {\r
+                                               v[1] = v[0];\r
+                                               v[0] = ':prev';\r
+                                       }\r
+\r
+                                       // Find element to focus\r
+                                       if (e.shiftKey) {\r
+                                               if (v[0] == ':prev')\r
+                                                       el = find(-1);\r
+                                               else\r
+                                                       el = DOM.get(v[0]);\r
+                                       } else {\r
+                                               if (v[1] == ':next')\r
+                                                       el = find(1);\r
+                                               else\r
+                                                       el = DOM.get(v[1]);\r
+                                       }\r
+\r
+                                       if (el) {\r
+                                               if (ed = tinymce.EditorManager.get(el.id || el.name))\r
+                                                       ed.focus();\r
+                                               else\r
+                                                       window.setTimeout(function() {window.focus();el.focus();}, 10);\r
+\r
+                                               return Event.cancel(e);\r
+                                       }\r
+                               }\r
+                       };\r
+\r
+                       ed.onKeyUp.add(tabCancel);\r
+\r
+                       if (tinymce.isGecko) {\r
+                               ed.onKeyPress.add(tabHandler);\r
+                               ed.onKeyDown.add(tabCancel);\r
+                       } else\r
+                               ed.onKeyDown.add(tabHandler);\r
+\r
+                       ed.onInit.add(function() {\r
+                               each(DOM.select('a:first,a:last', ed.getContainer()), function(n) {\r
+                                       Event.add(n, 'focus', function() {ed.focus();});\r
+                               });\r
+                       });\r
+               },\r
+\r
+               getInfo : function() {\r
+                       return {\r
+                               longname : 'Tabfocus',\r
+                               author : 'Moxiecode Systems AB',\r
+                               authorurl : 'http://tinymce.moxiecode.com',\r
+                               infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',\r
+                               version : tinymce.majorVersion + "." + tinymce.minorVersion\r
+                       };\r
+               }\r
+       });\r
+\r
+       // Register plugin\r
+       tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);\r
+})();
\ No newline at end of file
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/cell.htm
rename to lib/editor/tinymce/plugins/table/cell.htm
index 60264db8e4685427feac135bda95422975c7b8c0..1fabc8dc211e19c2a6243498894f69d382112498 100644 (file)
@@ -8,7 +8,6 @@
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <script type="text/javascript" src="js/cell.js"></script>\r
        <link href="css/cell.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="tablecell" style="display: none">\r
        <form onsubmit="updateAction();return false;" action="#">\r
diff --git a/lib/editor/tinymce/plugins/table/editor_plugin.js b/lib/editor/tinymce/plugins/table/editor_plugin.js
new file mode 100644 (file)
index 0000000..95d599e
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TablePlugin",{init:function(b,c){var d=this;d.editor=b;d.url=c;a([["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(e){b.addButton(e[0],{title:e[1],cmd:e[2],ui:e[3]})});if(b.getParam("inline_styles")){b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("table",g.node),function(i){var h;if(h=f.getAttrib(i,"width")){f.setStyle(i,"width",h);f.setAttrib(i,"width")}if(h=f.getAttrib(i,"height")){f.setStyle(i,"height",h);f.setAttrib(i,"height")}})})}b.onInit.add(function(){if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(h,f,j){var k,i=b.selection,g=i.getNode()||b.getBody();if(b.dom.getParent(j,"td")||b.dom.getParent(j,"th")){f.removeAll();if(g.nodeName=="A"&&!b.dom.getAttrib(g,"name")){f.add({title:"advanced.link_desc",icon:"link",cmd:b.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});f.addSeparator()}if(g.nodeName=="IMG"&&g.className.indexOf("mceItem")==-1){f.add({title:"advanced.image_desc",icon:"image",cmd:b.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator()}f.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",ui:true,value:{action:"insert"}});f.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable",ui:true});f.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete",ui:true});f.addSeparator();k=f.addMenu({title:"table.cell"});k.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps",ui:true});k.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells",ui:true});k.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells",ui:true});k=f.addMenu({title:"table.row"});k.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps",ui:true});k.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});k.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});k.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});k.addSeparator();k.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});k.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});k.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"});k.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"});k=f.addMenu({title:"table.col"});k.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});k.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});k.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{f.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",ui:true})}})}});b.onKeyDown.add(function(f,g){if(g.keyCode==9&&f.dom.getParent(f.selection.getNode(),"TABLE")){if(!tinymce.isGecko&&!tinymce.isOpera){tinyMCE.execInstanceCommand(f.editorId,"mceTableMoveToNextRow",true);return tinymce.dom.Event.cancel(g)}f.undoManager.add()}});if(!tinymce.isIE){if(b.getParam("table_selection",true)){b.onClick.add(function(f,g){g=g.target;if(g.nodeName==="TABLE"){f.selection.select(g)}})}}b.onNodeChange.add(function(f,e,h){var g=f.dom.getParent(h,"td,th,caption");e.setActive("table",h.nodeName==="TABLE"||!!g);if(g&&g.nodeName==="CAPTION"){g=null}e.setDisabled("delete_table",!g);e.setDisabled("delete_col",!g);e.setDisabled("delete_table",!g);e.setDisabled("delete_row",!g);e.setDisabled("col_after",!g);e.setDisabled("col_before",!g);e.setDisabled("row_after",!g);e.setDisabled("row_before",!g);e.setDisabled("row_props",!g);e.setDisabled("cell_props",!g);e.setDisabled("split_cells",!g||(parseInt(f.dom.getAttrib(g,"colspan","1"))<2&&parseInt(f.dom.getAttrib(g,"rowspan","1"))<2));e.setDisabled("merge_cells",!g)});if(!tinymce.isIE){b.onBeforeSetContent.add(function(e,f){if(f.initial){f.content=f.content.replace(/<(td|th)([^>]+|)>\s*<\/(td|th)>/g,tinymce.isOpera?"<$1$2>&nbsp;</$1>":'<$1$2><br mce_bogus="1" /></$1>')}})}},execCommand:function(f,e,g){var d=this.editor,c;switch(f){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":d.execCommand("mceBeginUndoLevel");this._doExecCommand(f,e,g);d.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(r,Z,ae){var V=this.editor,au=V,g=this.url;var n=V.selection.getNode();var W=V.dom.getParent(n,"tr");var aq=V.dom.getParent(n,"td,th");var F=V.dom.getParent(n,"table");var k=V.contentWindow.document;var av=F?F.getAttribute("border"):"";if(W&&aq==null){aq=W.cells[0]}function ap(y,x){for(var ax=0;ax<y.length;ax++){if(y[ax].length>0&&ap(y[ax],x)){return true}if(y[ax]==x){return true}}return false}function aj(x,i){var y;ad=e(F);x=x||0;i=i||0;x=Math.max(o.cellindex+x,0);i=Math.max(o.rowindex+i,0);V.execCommand("mceRepaint");y=d(ad,i,x);if(y){V.selection.select(y.firstChild||y);V.selection.collapse(1)}}function ah(){var i=k.createElement("td");if(!tinymce.isIE){i.innerHTML='<br mce_bogus="1"/>'}}function j(y){var x=V.dom.getAttrib(y,"colspan");var i=V.dom.getAttrib(y,"rowspan");x=x==""?1:parseInt(x);i=i==""?1:parseInt(i);return{colspan:x,rowspan:i}}function al(ax,az){var i,ay;for(ay=0;ay<ax.length;ay++){for(i=0;i<ax[ay].length;i++){if(ax[ay][i]==az){return{cellindex:i,rowindex:ay}}}}return null}function d(x,y,i){if(x[y]&&x[y][i]){return x[y][i]}return null}function A(aC,ax){var az=[],y=0,aA,ay,ax,aB;for(aA=0;aA<aC.rows.length;aA++){for(ay=0;ay<aC.rows[aA].cells.length;ay++,y++){az[y]=aC.rows[aA].cells[ay]}}for(aA=0;aA<az.length;aA++){if(az[aA]==ax){if(aB=az[aA+1]){return aB}}}}function e(aE){var i=[],aF=aE.rows,aC,aB,ay,az,aD,ax,aA;for(aB=0;aB<aF.length;aB++){for(aC=0;aC<aF[aB].cells.length;aC++){ay=aF[aB].cells[aC];az=j(ay);for(aD=aC;i[aB]&&i[aB][aD];aD++){}for(aA=aB;aA<aB+az.rowspan;aA++){if(!i[aA]){i[aA]=[]}for(ax=aD;ax<aD+az.colspan;ax++){i[aA][ax]=ay}}}}return i}function m(aG,aD,ay,ax){var y=e(aG),aF=al(y,ay);var aH,aC;if(ax.cells.length!=aD.childNodes.length){aH=aD.childNodes;aC=null;for(var aE=0;ay=d(y,aF.rowindex,aE);aE++){var aA=true;var aB=j(ay);if(ap(aH,ay)){ax.childNodes[aE]._delete=true}else{if((aC==null||ay!=aC)&&aB.colspan>1){for(var az=aE;az<aE+ay.colSpan;az++){ax.childNodes[az]._delete=true}}}if((aC==null||ay!=aC)&&aB.rowspan>1){ay.rowSpan=aB.rowspan+1}aC=ay}B(F)}}function O(x,i){while((x=x.previousSibling)!=null){if(x.nodeName==i){return x}}return null}function af(ax,ay){var x=ay.split(",");while((ax=ax.nextSibling)!=null){for(var y=0;y<x.length;y++){if(ax.nodeName.toLowerCase()==x[y].toLowerCase()){return ax}}}return null}function B(ax){if(ax.rows==0){return}var y=ax.rows[0];do{var x=af(y,"TR");if(y._delete){y.parentNode.removeChild(y);continue}var ay=y.cells[0];if(ay.cells>1){do{var i=af(ay,"TD,TH");if(ay._delete){ay.parentNode.removeChild(ay)}}while((ay=i)!=null)}}while((y=x)!=null)}function p(ax,aA,az){ax.rowSpan=1;var x=af(aA,"TR");for(var ay=1;ay<az&&x;ay++){var y=k.createElement("td");if(!tinymce.isIE){y.innerHTML='<br mce_bogus="1"/>'}if(tinymce.isIE){x.insertBefore(y,x.cells(ax.cellIndex))}else{x.insertBefore(y,x.cells[ax.cellIndex])}x=af(x,"TR")}}function S(aF,aH,aB){var y=e(aH);var ax=aB.cloneNode(false);var aG=al(y,aB.cells[0]);var aC=null;var aA=V.dom.getAttrib(aH,"border");var az=null;for(var aE=0;az=d(y,aG.rowindex,aE);aE++){var aD=null;if(aC!=az){for(var ay=0;ay<aB.cells.length;ay++){if(az==aB.cells[ay]){aD=az.cloneNode(true);break}}}if(aD==null){aD=aF.createElement("td");if(!tinymce.isIE){aD.innerHTML='<br mce_bogus="1"/>'}}aD.colSpan=1;aD.rowSpan=1;ax.appendChild(aD);aC=az}return ax}switch(r){case"mceTableMoveToNextRow":var L=A(F,aq);if(!L){V.execCommand("mceTableInsertRowAfter",aq);L=A(F,aq)}V.selection.select(L);V.selection.collapse(true);return true;case"mceTableRowProps":if(W==null){return true}if(Z){V.windowManager.open({url:g+"/row.htm",width:400+parseInt(V.getLang("table.rowprops_delta_width",0)),height:295+parseInt(V.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:g})}return true;case"mceTableCellProps":if(aq==null){return true}if(Z){V.windowManager.open({url:g+"/cell.htm",width:400+parseInt(V.getLang("table.cellprops_delta_width",0)),height:295+parseInt(V.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:g})}return true;case"mceInsertTable":if(Z){V.windowManager.open({url:g+"/table.htm",width:400+parseInt(V.getLang("table.table_delta_width",0)),height:320+parseInt(V.getLang("table.table_delta_height",0)),inline:1},{plugin_url:g,action:ae?ae.action:0})}return true;case"mceTableDelete":var G=V.dom.getParent(V.selection.getNode(),"table");if(G){G.parentNode.removeChild(G);V.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(!F){return true}if(W&&F!=W.parentNode){F=W.parentNode}if(F&&W){switch(r){case"mceTableCutRow":if(!W||!aq){return true}V.tableRowClipboard=S(k,F,W);V.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!W||!aq){return true}V.tableRowClipboard=S(k,F,W);break;case"mceTablePasteRowBefore":if(!W||!aq){return true}var v=V.tableRowClipboard.cloneNode(true);var h=O(W,"TR");if(h!=null){m(F,h,h.cells[0],v)}W.parentNode.insertBefore(v,W);break;case"mceTablePasteRowAfter":if(!W||!aq){return true}var X=af(W,"TR");var v=V.tableRowClipboard.cloneNode(true);m(F,W,aq,v);if(X==null){W.parentNode.appendChild(v)}else{X.parentNode.insertBefore(v,X)}break;case"mceTableInsertRowBefore":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);var v=k.createElement("tr");var u=null;o.rowindex--;if(o.rowindex<0){o.rowindex=0}for(var ac=0;aq=d(ad,o.rowindex,ac);ac++){if(aq!=u){var E=j(aq);if(E.rowspan==1){var J=k.createElement("td");if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.colSpan=aq.colSpan;v.appendChild(J)}else{aq.rowSpan=E.rowspan+1}u=aq}}W.parentNode.insertBefore(v,W);aj(0,1);break;case"mceTableInsertRowAfter":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);var v=k.createElement("tr");var u=null;for(var ac=0;aq=d(ad,o.rowindex,ac);ac++){if(aq!=u){var E=j(aq);if(E.rowspan==1){var J=k.createElement("td");if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.colSpan=aq.colSpan;v.appendChild(J)}else{aq.rowSpan=E.rowspan+1}u=aq}}if(v.hasChildNodes()){var X=af(W,"TR");if(X){X.parentNode.insertBefore(v,X)}else{F.appendChild(v)}}aj(0,1);break;case"mceTableDeleteRow":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);if(ad.length==1&&F.nodeName=="TBODY"){V.dom.remove(V.dom.getParent(F,"table"));return true}var D=W.cells;var X=af(W,"TR");for(var ac=0;ac<D.length;ac++){if(D[ac].rowSpan>1){var J=D[ac].cloneNode(true);var E=j(D[ac]);J.rowSpan=E.rowspan-1;var ak=X.cells[ac];if(ak==null){X.appendChild(J)}else{X.insertBefore(J,ak)}}}var u=null;for(var ac=0;aq=d(ad,o.rowindex,ac);ac++){if(aq!=u){var E=j(aq);if(E.rowspan>1){aq.rowSpan=E.rowspan-1}else{W=aq.parentNode;if(W.parentNode){W._delete=true}}u=aq}}B(F);aj(0,-1);break;case"mceTableInsertColBefore":if(!W||!aq){return true}var ad=e(V.dom.getParent(F,"table"));var o=al(ad,aq);var u=null;for(var aa=0;aq=d(ad,aa,o.cellindex);aa++){if(aq!=u){var E=j(aq);if(E.colspan==1){var J=k.createElement(aq.nodeName);if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.rowSpan=aq.rowSpan;aq.parentNode.insertBefore(J,aq)}else{aq.colSpan++}u=aq}}aj();break;case"mceTableInsertColAfter":if(!W||!aq){return true}var ad=e(V.dom.getParent(F,"table"));var o=al(ad,aq);var u=null;for(var aa=0;aq=d(ad,aa,o.cellindex);aa++){if(aq!=u){var E=j(aq);if(E.colspan==1){var J=k.createElement(aq.nodeName);if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}J.rowSpan=aq.rowSpan;var ak=af(aq,"TD,TH");if(ak==null){aq.parentNode.appendChild(J)}else{ak.parentNode.insertBefore(J,ak)}}else{aq.colSpan++}u=aq}}aj(1);break;case"mceTableDeleteCol":if(!W||!aq){return true}var ad=e(F);var o=al(ad,aq);var u=null;if((ad.length>1&&ad[0].length<=1)&&F.nodeName=="TBODY"){V.dom.remove(V.dom.getParent(F,"table"));return true}for(var aa=0;aq=d(ad,aa,o.cellindex);aa++){if(aq!=u){var E=j(aq);if(E.colspan>1){aq.colSpan=E.colspan-1}else{if(aq.parentNode){aq.parentNode.removeChild(aq)}}u=aq}}aj(-1);break;case"mceTableSplitCells":if(!W||!aq){return true}var l=j(aq);var C=l.colspan;var H=l.rowspan;if(C>1||H>1){aq.colSpan=1;for(var am=1;am<C;am++){var J=k.createElement("td");if(!tinymce.isIE){J.innerHTML='<br mce_bogus="1"/>'}W.insertBefore(J,af(aq,"TD,TH"));if(H>1){p(J,W,H)}}p(aq,W,H)}F=V.dom.getParent(V.selection.getNode(),"table");break;case"mceTableMergeCells":var ao=[];var R=V.selection.getSel();var ad=e(F);if(tinymce.isIE||R.rangeCount==1){if(Z){var t=j(aq);V.windowManager.open({url:g+"/merge_cells.htm",width:240+parseInt(V.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(V.getLang("table.merge_cells_delta_height",0)),inline:1},{action:"update",numcols:t.colspan,numrows:t.rowspan,plugin_url:g});return true}else{var U=parseInt(ae.numrows);var c=parseInt(ae.numcols);var o=al(ad,aq);if((""+U)=="NaN"){U=1}if((""+c)=="NaN"){c=1}var b=F.rows;for(var aa=o.rowindex;aa<ad.length;aa++){var ag=[];for(var ac=o.cellindex;ac<ad[aa].length;ac++){var f=d(ad,aa,ac);if(f&&!ap(ao,f)&&!ap(ag,f)){var N=al(ad,f);if(N.cellindex<o.cellindex+c&&N.rowindex<o.rowindex+U){ag[ag.length]=f}}}if(ag.length>0){ao[ao.length]=ag}var f=d(ad,o.rowindex,o.cellindex);a(au.dom.select("br",f),function(y,x){if(x>0&&au.dom.getAttrib("mce_bogus")){au.dom.remove(y)}})}}}else{var D=[];var R=V.selection.getSel();var Y=null;var an=null;var z=-1,aw=-1,w,at;if(R.rangeCount<2){return true}for(var am=0;am<R.rangeCount;am++){var ai=R.getRangeAt(am);var aq=ai.startContainer.childNodes[ai.startOffset];if(!aq){break}if(aq.nodeName=="TD"||aq.nodeName=="TH"){D[D.length]=aq}}var b=F.rows;for(var aa=0;aa<b.length;aa++){var ag=[];for(var ac=0;ac<b[aa].cells.length;ac++){var f=b[aa].cells[ac];for(var am=0;am<D.length;am++){if(f==D[am]){ag[ag.length]=f}}}if(ag.length>0){ao[ao.length]=ag}}var an=[];var Y=null;for(var aa=0;aa<ad.length;aa++){for(var ac=0;ac<ad[aa].length;ac++){ad[aa][ac]._selected=false;for(var am=0;am<D.length;am++){if(ad[aa][ac]==D[am]){if(z==-1){z=ac;aw=aa}w=ac;at=aa;ad[aa][ac]._selected=true}}}}for(var aa=aw;aa<=at;aa++){for(var ac=z;ac<=w;ac++){if(!ad[aa][ac]._selected){alert("Invalid selection for merge.");return true}}}}var s=1,q=1;var T=-1;for(var aa=0;aa<ao.length;aa++){var I=0;for(var ac=0;ac<ao[aa].length;ac++){var E=j(ao[aa][ac]);I+=E.colspan;if(T!=-1&&E.rowspan!=T){alert("Invalid selection for merge.");return true}T=E.rowspan}if(I>q){q=I}T=-1}var Q=-1;for(var ac=0;ac<ao[0].length;ac++){var M=0;for(var aa=0;aa<ao.length;aa++){var E=j(ao[aa][ac]);M+=E.rowspan;if(Q!=-1&&E.colspan!=Q){alert("Invalid selection for merge.");return true}Q=E.colspan}if(M>s){s=M}Q=-1}aq=ao[0][0];aq.rowSpan=s;aq.colSpan=q;for(var aa=0;aa<ao.length;aa++){for(var ac=0;ac<ao[aa].length;ac++){var P=ao[aa][ac].innerHTML;var K=P.replace(/[ \t\r\n]/g,"");if(K!="<br/>"&&K!="<br>"&&K!='<br mce_bogus="1"/>'&&(ac+aa>0)){aq.innerHTML+=P}if(ao[aa][ac]!=aq&&!ao[aa][ac]._deleted){var o=al(ad,ao[aa][ac]);var ar=ao[aa][ac].parentNode;ar.removeChild(ao[aa][ac]);ao[aa][ac]._deleted=true;if(!ar.hasChildNodes()){ar.parentNode.removeChild(ar);var ab=null;for(var ac=0;cellElm=d(ad,o.rowindex,ac);ac++){if(cellElm!=ab&&cellElm.rowSpan>1){cellElm.rowSpan--}ab=cellElm}if(aq.rowSpan>1){aq.rowSpan--}}}}}a(au.dom.select("br",aq),function(y,x){if(x>0&&au.dom.getAttrib(y,"mce_bogus")){au.dom.remove(y)}});break}F=V.dom.getParent(V.selection.getNode(),"table");V.addVisual(F);V.nodeChanged()}return true}return false}});tinymce.PluginManager.add("table",tinymce.plugins.TablePlugin)})();
\ No newline at end of file
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js
rename to lib/editor/tinymce/plugins/table/editor_plugin_src.js
index 37adb68ff1504c9c2dacc418ef5a800a144f7da1..a4a758356c70d04f6ab412a9df684ea882938b98 100644 (file)
                                ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});\r
                        });\r
 \r
+                       if (ed.getParam('inline_styles')) {\r
+                               // Force move of attribs to styles in strict mode\r
+                               ed.onPreProcess.add(function(ed, o) {\r
+                                       var dom = ed.dom;\r
+\r
+                                       each(dom.select('table', o.node), function(n) {\r
+                                               var v;\r
+\r
+                                               if (v = dom.getAttrib(n, 'width')) {\r
+                                                       dom.setStyle(n, 'width', v);\r
+                                                       dom.setAttrib(n, 'width');\r
+                                               }\r
+\r
+                                               if (v = dom.getAttrib(n, 'height')) {\r
+                                                       dom.setStyle(n, 'height', v);\r
+                                                       dom.setAttrib(n, 'height');\r
+                                               }\r
+                                       });\r
+                               });\r
+                       }\r
+\r
                        ed.onInit.add(function() {\r
                                if (ed && ed.plugins.contextmenu) {\r
                                        ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {\r
similarity index 90%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js
rename to lib/editor/tinymce/plugins/table/js/table.js
index 822b4fcc147880ce1d954231e3e77ac63a934831..a6d235cdd74ee72d397c2633218da196f6e20b4d 100644 (file)
@@ -87,7 +87,7 @@ function insertTable() {
                        elm.insertBefore(capEl, elm.firstChild);\r
                }\r
 \r
-               if (width && /(pt|em|cm)$/.test(width)) {\r
+               if (width && inst.settings.inline_styles) {\r
                        dom.setStyle(elm, 'width', width);\r
                        dom.setAttrib(elm, 'width', '');\r
                } else {\r
@@ -100,10 +100,13 @@ function insertTable() {
                dom.setAttrib(elm, 'bgColor', '');\r
                dom.setAttrib(elm, 'background', '');\r
 \r
-               if (height) {\r
+               if (height && inst.settings.inline_styles) {\r
                        dom.setStyle(elm, 'height', height);\r
                        dom.setAttrib(elm, 'height', '');\r
-               }\r
+               } else {\r
+                       dom.setAttrib(elm, 'height', height, true);\r
+                       dom.setStyle(elm, 'height', '');\r
+               }\r
 \r
                if (background != '')\r
                        elm.style.backgroundImage = "url('" + background + "')";\r
@@ -149,10 +152,14 @@ function insertTable() {
        html += makeAttrib('cellpadding', cellpadding);\r
        html += makeAttrib('cellspacing', cellspacing);\r
 \r
-       if (width && /(pt|em|cm)$/.test(width)) {\r
+       if (width && inst.settings.inline_styles) {\r
                if (style)\r
                        style += '; ';\r
 \r
+               // Force px\r
+               if (/^[0-9\.]+$/.test(width))\r
+                       width += 'px';\r
+\r
                style += 'width: ' + width;\r
        } else\r
                html += makeAttrib('width', width);\r
@@ -200,7 +207,30 @@ function insertTable() {
        html += "</table>";\r
 \r
        inst.execCommand('mceBeginUndoLevel');\r
-       inst.execCommand('mceInsertContent', false, html);\r
+\r
+       // Move table\r
+       if (inst.settings.fix_table_elements) {\r
+               var bm = inst.selection.getBookmark(), patt = '';\r
+\r
+               inst.execCommand('mceInsertContent', false, '<br class="_mce_marker" />');\r
+\r
+               tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {\r
+                       if (patt)\r
+                               patt += ',';\r
+\r
+                       patt += n + ' ._mce_marker';\r
+               });\r
+\r
+               tinymce.each(inst.dom.select(patt), function(n) {\r
+                       inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);\r
+               });\r
+\r
+               dom.setOuterHTML(dom.select('._mce_marker')[0], html);\r
+\r
+               inst.selection.moveToBookmark(bm);\r
+       } else\r
+               inst.execCommand('mceInsertContent', false, html);\r
+\r
        inst.addVisual();\r
        inst.execCommand('mceEndUndoLevel');\r
 \r
similarity index 92%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm
rename to lib/editor/tinymce/plugins/table/merge_cells.htm
index 9d34a886b08449c961ff636a7ed3ede8f214f1e5..25d42eb6574b976c7a6c93e1c16b18a01fac8b22 100644 (file)
@@ -6,9 +6,8 @@
        <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
        <script type="text/javascript" src="../../utils/validate.js"></script>\r
        <script type="text/javascript" src="js/merge_cells.js"></script>\r
-       <base target="_self" />\r
 </head>\r
-<body style="margin: 8px" style="display: none">\r
+<body style="margin: 8px">\r
 <form onsubmit="mergeCells();return false;" action="#">\r
        <fieldset>\r
                <legend>{#table_dlg.merge_cells_title}</legend>\r
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/row.htm
rename to lib/editor/tinymce/plugins/table/row.htm
index fe75bf607207c4b47ea5bf826b31db942207e0af..07ca13c983249a7a4b313540f46ac0b4d5974297 100644 (file)
@@ -8,10 +8,9 @@
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <script type="text/javascript" src="js/row.js"></script>\r
        <link href="css/row.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="tablerow" style="display: none">\r
-       <form onsubmit="updateAction();return false;">\r
+       <form onsubmit="updateAction();return false;" action="#">\r
                <div class="tabs">\r
                        <ul>\r
                                <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>\r
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/table/table.htm
rename to lib/editor/tinymce/plugins/table/table.htm
index 75136e607ed77c3b778d5a93ae1f1ba49adcc8b5..2a138513cb58a7caff91b8f7cd59f9b80281321c 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="../../utils/editable_selects.js"></script>\r
        <script type="text/javascript" src="js/table.js"></script>\r
        <link href="css/table.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="table" style="display: none">\r
        <form onsubmit="insertTable();return false;" action="#">\r
@@ -58,7 +57,7 @@
                                                                <td><label id="classlabel" for="class">{#class_name}</label></td>\r
                                                                <td colspan="3">\r
                                                                 <select id="class" name="class" class="mceEditableSelect">\r
-                                                                       <option value="" selected>{#not_set}</option>\r
+                                                                       <option value="" selected="selected">{#not_set}</option>\r
                                                                 </select></td>\r
                                                          </tr>\r
                                                          <tr>\r
diff --git a/lib/editor/tinymce/plugins/template/editor_plugin.js b/lib/editor/tinymce/plugins/template/editor_plugin.js
new file mode 100644 (file)
index 0000000..11ee592
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},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(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length<d){for(f=0;f<(d-g.length);f++){g="0"+g}}return g}b=b.replace("%D","%m/%d/%y");b=b.replace("%r","%I:%M:%S %p");b=b.replace("%Y",""+e.getFullYear());b=b.replace("%y",""+e.getYear());b=b.replace("%m",c(e.getMonth()+1,2));b=b.replace("%d",c(e.getDate(),2));b=b.replace("%H",""+c(e.getHours(),2));b=b.replace("%M",""+c(e.getMinutes(),2));b=b.replace("%S",""+c(e.getSeconds(),2));b=b.replace("%I",""+((e.getHours()+11)%12+1));b=b.replace("%p",""+(e.getHours()<12?"AM":"PM"));b=b.replace("%B",""+tinyMCE.getLang("template_months_long").split(",")[e.getMonth()]);b=b.replace("%b",""+tinyMCE.getLang("template_months_short").split(",")[e.getMonth()]);b=b.replace("%A",""+tinyMCE.getLang("template_day_long").split(",")[e.getDay()]);b=b.replace("%a",""+tinyMCE.getLang("template_day_short").split(",")[e.getDay()]);b=b.replace("%%","%");return b}});tinymce.PluginManager.add("template",tinymce.plugins.TemplatePlugin)})();
\ No newline at end of file
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/template/template.htm
rename to lib/editor/tinymce/plugins/template/template.htm
index 2b71c6eb4dfd84abdb13cb58a1e6349ca3f0b33b..f7bb044a0e675ae8ca8f7ac4d26100fe84c99303 100644 (file)
@@ -4,7 +4,6 @@
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/template.js"></script>\r
        <link href="css/template.css" rel="stylesheet" type="text/css" />\r
-       <base target="_self" />\r
 </head>\r
 <body onresize="TemplateDialog.resize();"> \r
        <form onsubmit="TemplateDialog.insert();return false;">\r
diff --git a/lib/editor/tinymce/plugins/visualchars/editor_plugin.js b/lib/editor/tinymce/plugins/visualchars/editor_plugin.js
new file mode 100644 (file)
index 0000000..53d31c4
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state){c.state=true;c._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 m=this,g=m.editor,a,e,f,k=g.getDoc(),l=g.getBody(),j,n=g.selection,c;m.state=!m.state;g.controlManager.setActive("visualchars",m.state);if(m.state){a=[];tinymce.walk(l,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(e=0;e<a.length;e++){j=a[e].nodeValue;j=j.replace(/(\u00a0+)/g,'<span class="mceItemHidden mceVisualNbsp">$1</span>');j=j.replace(/\u00a0/g,"\u00b7");g.dom.setOuterHTML(a[e],j,k)}}else{a=tinymce.grep(g.dom.select("span",l),function(b){return g.dom.hasClass(b,"mceVisualNbsp")});for(e=0;e<a.length;e++){g.dom.setOuterHTML(a[e],a[e].innerHTML.replace(/(&middot;|\u00b7)/g,"&nbsp;"),k)}}}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})();
\ No newline at end of file
similarity index 97%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm
rename to lib/editor/tinymce/plugins/xhtmlxtras/abbr.htm
index 580028432f64175e2852fa8f273bb1b9922071e4..3928a17e14b4c18629af550f7b4c3d42f5e85701 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="js/element_common.js"></script>\r
        <script type="text/javascript" src="js/abbr.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
 <form onsubmit="insertAbbr();return false;" action="#">\r
similarity index 97%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm
rename to lib/editor/tinymce/plugins/xhtmlxtras/acronym.htm
index 54e4c9d9ec5deeedca4b89318a16baa8b59f1407..4d4ebaac0aeca7f9881dfe68fa1c9b6a9f85949a 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="js/element_common.js"></script>\r
        <script type="text/javascript" src="js/acronym.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
 <form onsubmit="insertAcronym();return false;" action="#">\r
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm
rename to lib/editor/tinymce/plugins/xhtmlxtras/attributes.htm
index cfbb409ab692d0206f7798894e563910f6533277..322b468e38b71a04b25052bed3cbac5551ec4a1c 100644 (file)
@@ -8,7 +8,6 @@
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <script type="text/javascript" src="js/attributes.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/attributes.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
 <form onsubmit="insertAction();return false;" action="#">\r
                                                <td><label id="classlabel" for="classlist">{#class_name}</label></td>\r
                                                <td>\r
                                                        <select id="classlist" name="classlist" class="mceEditableSelect">\r
-                                                               <option value="" selected>{#not_set}</option>\r
+                                                               <option value="" selected="selected">{#not_set}</option>\r
                                                        </select>\r
                                                </td>\r
                                        </tr>\r
                                        <tr>\r
-                                               <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
+                                               <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td> \r
                                                <td><input id="style" name="style" type="text" value="" /></td> \r
                                        </tr>\r
                                        <tr>\r
similarity index 97%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm
rename to lib/editor/tinymce/plugins/xhtmlxtras/cite.htm
index 7d9eaba4d2ea03c38de1fa86b0992ddd46b45aaf..cdfaf4e854649f682569ff8c9b442560d6fc9c78 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="js/element_common.js"></script>\r
        <script type="text/javascript" src="js/cite.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
 <form onsubmit="insertCite();return false;" action="#">\r
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm
rename to lib/editor/tinymce/plugins/xhtmlxtras/del.htm
index d03c4568aaac1ea6d6b2bbd8301c66f65f6e99c9..f45676e3d4741c5ab45a5d3148e849e16870d606 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="js/element_common.js"></script>\r
        <script type="text/javascript" src="js/del.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="xhtmlxtrasins" style="display: none">\r
 <form onsubmit="insertDel();return false;" action="#">\r
@@ -31,7 +30,7 @@
                                                        <table border="0" cellspacing="0" cellpadding="0">\r
                                                                <tr> \r
                                                                        <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
-                                                                       <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>\r
+                                                                       <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>\r
                                                                </tr>\r
                                                        </table>\r
                                                </td>\r
diff --git a/lib/editor/tinymce/plugins/xhtmlxtras/editor_plugin.js b/lib/editor/tinymce/plugins/xhtmlxtras/editor_plugin.js
new file mode 100644 (file)
index 0000000..8c7f48e
--- /dev/null
@@ -0,0 +1 @@
+(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(b,c){b.addCommand("mceCite",function(){b.windowManager.open({file:c+"/cite.htm",width:350+parseInt(b.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:c})});b.addCommand("mceAcronym",function(){b.windowManager.open({file:c+"/acronym.htm",width:350+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAbbr",function(){b.windowManager.open({file:c+"/abbr.htm",width:350+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceDel",function(){b.windowManager.open({file:c+"/del.htm",width:340+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceIns",function(){b.windowManager.open({file:c+"/ins.htm",width:340+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAttributes",function(){b.windowManager.open({file:c+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:c})});b.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});b.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});b.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});b.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});b.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});b.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});if(tinymce.isIE){function a(d,e){if(e.set){e.content=e.content.replace(/<abbr([^>]+)>/gi,"<html:abbr $1>");e.content=e.content.replace(/<\/abbr>/gi,"</html:abbr>")}}b.onBeforeSetContent.add(a);b.onPostProcess.add(a)}b.onNodeChange.add(function(e,d,g,f){g=e.dom.getParent(g,"CITE,ACRONYM,ABBR,DEL,INS");d.setDisabled("cite",f);d.setDisabled("acronym",f);d.setDisabled("abbr",f);d.setDisabled("del",f);d.setDisabled("ins",f);d.setDisabled("attribs",g&&g.nodeName=="BODY");d.setActive("cite",0);d.setActive("acronym",0);d.setActive("abbr",0);d.setActive("del",0);d.setActive("ins",0);if(g){do{d.setDisabled(g.nodeName.toLowerCase(),0);d.setActive(g.nodeName.toLowerCase(),1)}while(g=g.parentNode)}})},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)})();
\ No newline at end of file
similarity index 96%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm
rename to lib/editor/tinymce/plugins/xhtmlxtras/ins.htm
index c0f056ff34b175799b393e91c3261b72d7901e5e..9fa21c4338641a833a74d5d3c604051de0f93fd3 100644 (file)
@@ -9,7 +9,6 @@
        <script type="text/javascript" src="js/element_common.js"></script>\r
        <script type="text/javascript" src="js/ins.js"></script>\r
        <link rel="stylesheet" type="text/css" href="css/popup.css" />\r
-       <base target="_self" />\r
 </head>\r
 <body id="xhtmlxtrasins" style="display: none">\r
 <form onsubmit="insertIns();return false;" action="#">\r
@@ -31,7 +30,7 @@
                                                        <table border="0" cellspacing="0" cellpadding="0">\r
                                                                <tr> \r
                                                                        <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td> \r
-                                                                       <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>\r
+                                                                       <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>\r
                                                                </tr>\r
                                                        </table>\r
                                                </td>\r
similarity index 92%
rename from lib/editor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js
rename to lib/editor/tinymce/plugins/xhtmlxtras/js/element_common.js
index 2b2a20b06af41ab5c738c925b046145ecee49331..bc83b51615cfba1dcc9c9f162e83f765658d6788 100644 (file)
@@ -165,11 +165,14 @@ SXE.insertElement = function(element_name) {
                        for (var i=0; i<elementArray.length; i++) {\r
                                var elm = elementArray[i];\r
 \r
-                               elm.id = '';\r
-                               elm.setAttribute('id', '');\r
-                               elm.removeAttribute('id');\r
-\r
-                               setAllCommonAttribs(elm);\r
+                               if (SXE.inst.dom.getAttrib(elm, '_mce_new')) {\r
+                                       elm.id = '';\r
+                                       elm.setAttribute('id', '');\r
+                                       elm.removeAttribute('id');\r
+                                       elm.removeAttribute('_mce_new');\r
+\r
+                                       setAllCommonAttribs(elm);\r
+                               }\r
                        }\r
                }\r
        } else {\r
@@ -221,8 +224,8 @@ function insertInlineElement(en) {
        var ed = tinyMCEPopup.editor, dom = ed.dom;\r
 \r
        ed.getDoc().execCommand('FontName', false, 'mceinline');\r
-       tinymce.each(dom.select(tinymce.isWebKit ? 'span' : 'font'), function(n) {\r
+       tinymce.each(dom.select('span,font'), function(n) {\r
                if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')\r
-                       dom.replace(dom.create(en), n, 1);\r
+                       dom.replace(dom.create(en, {_mce_new : 1}), n, 1);\r
        });\r
 }\r
diff --git a/lib/editor/tinymce/readme_moodle.txt b/lib/editor/tinymce/readme_moodle.txt
new file mode 100644 (file)
index 0000000..67f97ab
--- /dev/null
@@ -0,0 +1,38 @@
+Description of TinyMCE v3.2.3.1 library import into Moodle
+
+Copyright: (c) 2004-2008, Moxiecode Systems AB, All rights reserved.
+License:   GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999
+
+
+Upgrade procedure:
+ 1/ Download latest dev package from http://tinymce.moxiecode.com/download.php
+ 2/ replace tiny_mce*.* files, themes/*, utils/* and plugins/* (keep dragmath, moodlenolink, spellchecker)
+ 3/ copy tinymce/jscripts/tiny_mce/classes/Popup.js to tiny_mce_popup_src.js
+ 4/ apply patches
+ 5/ compress modified js files using yuicompressor.jar from dev package
+ 6/ download all TinyMCE lang files and update moodle lang string files 
+
+TODO:
+ * apply plugins/media/* (extra/tinymce_plugin_media.patch) - MDL-16650
+ * lang string handling
+ * customize spellchecker
+ * finish update with info from http://docs.moodle.org/en/Development:TinyMCE_Upgrade
+ * all upgrade info must be here and always kept up-to-date ;-)
+
+=========================================================================================
+
+Removed:
+ *
+
+Modified:
+ * added tiny_mce_popup_src.js, copy of tinymce/jscripts/tiny_mce/classes/Popup.js from dev package 
+
+Added:
+ * plugins/gradmath/*
+ * plugins/moodlenolink/*
+
+
+
+Petr Skoda (skodak), Mathieu Petit-Clair
+
+$Id$
diff --git a/lib/editor/tinymce/strings.php b/lib/editor/tinymce/strings.php
deleted file mode 100644 (file)
index a612380..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-define('NO_MOODLE_COOKIES', true);
-
-require_once('../../../config.php');
-
-$contexturl = optional_param('context', null, PARAM_URL);
-$isdialog = optional_param('dlg', false, PARAM_BOOL);
-$lang = optional_param('lang', 'en_utf8', PARAM_ALPHANUMEXT);
-$SESSION->lang = $lang;
-
-$output = '';
-
-// get the keys from the reference english translations
-$string = array();
-include_once($CFG->dirroot .'/lang/en_utf8/tinymce.php');
-$keys = array_keys($string);
-
-if (!is_null($contexturl)) {
-    $context = array_pop(explode('/tinymce/jscripts/tiny_mce/', $contexturl));
-    $contexts = explode('/', $context);
-    $moduletype = $contexts[0];
-    $modulename = $contexts[1];
-
-    $dialogpostfix = '';
-    if ($modulename && $isdialog) {
-        $dialogpostfix = '_dlg';
-    }
-
-    $selectedkeys = preg_grep('/^'. $moduletype .'\/'. $modulename . $dialogpostfix .':/', $keys);
-   
-    $output = "tinyMCE.addI18n('$lang". ($modulename ? '.'.$modulename:'') ."$dialogpostfix',{\r\n";
-    $i = count($selectedkeys);
-    foreach($selectedkeys as $key) {
-        $i--;
-        $output .= substr($key, strpos($key, ':')+1) .':"'. addslashes_js(get_string($key, 'tinymce')) .'"';
-        if ($i > 0) {
-            $output .= ","; // must not add commas at the last element - breaks in IE 6 and 7.
-        }
-        $output .= "\r\n";
-    }
-    $output .= "});";
-    
-
-} else {
-    $output = "tinyMCE.addI18n({". $lang .":{";
-    $selectedkeys = preg_grep('/^main\//', $keys);
-    $currentsection = '';
-    $firstiteration = true;
-    foreach($selectedkeys as $key) {
-        $subkey = explode(':', array_pop(explode('/', $key)));
-        $section = $subkey[0];
-        $string = $subkey[1];
-        if ($section != $currentsection) {
-            $output .= "\r\n";
-            if ($firstiteration) {
-                $firstiteration = false;
-            } else {
-                $output .= "},\r\n"; 
-            }
-            $currentsection = $section;
-            $output .= $currentsection .":{\r\n";
-        } else {
-            $output .= ",\r\n"; 
-        }
-
-        $output .= $string .':"'. addslashes_js(get_string($key, 'tinymce')) .'"';
-    } 
-    $output .= "\r\n}}});";
-    
-}
-
-$lifetime = '86400';
-@header('Content-type: text/javascript; charset=utf-8');
-@header('Content-length: '.strlen($output));
-@header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
-@header('Cache-control: max-age='.$lifetime);
-@header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .'GMT');
-@header('Pragma: ');
-
-echo $output;
-
-?>
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/about.htm
rename to lib/editor/tinymce/themes/advanced/about.htm
index 4ef2a29c5d536d73a025fad8c854a52b5f8c549d..e5df7aa5aca5b9b6d138569f4d2f8626b0d3652b 100644 (file)
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
        <title>{#advanced_dlg.about_title}</title>\r
similarity index 90%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm
rename to lib/editor/tinymce/themes/advanced/anchor.htm
index 9e4c0b91ae7393f780a02d7073c403260fe8e743..42095a1c0cabd4db2666cbdefd2666cfa68e00b0 100644 (file)
@@ -4,7 +4,6 @@
        <title>{#advanced_dlg.anchor_title}</title>\r
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/anchor.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body style="display: none">\r
 <form onsubmit="AnchorDialog.update();return false;" action="#">\r
@@ -13,7 +12,7 @@
                        <td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>\r
                </tr>\r
                <tr>\r
-                       <td nowrap="nowrap">{#advanced_dlg.anchor_name}:</td>\r
+                       <td class="nowrap">{#advanced_dlg.anchor_name}:</td>\r
                        <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>\r
                </tr>\r
        </table>\r
similarity index 92%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm
rename to lib/editor/tinymce/themes/advanced/charmap.htm
index e4c7344848ffe297c147d37d2f481c8402e15c88..f11a38ad8a2a8038b7809b76c499e73b09b89c0e 100644 (file)
@@ -1,11 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
        <title>{#advanced_dlg.charmap_title}</title>\r
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />\r
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/charmap.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body id="charmap" style="display:none">\r
 <table align="center" border="0" cellspacing="0" cellpadding="2">\r
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm
rename to lib/editor/tinymce/themes/advanced/color_picker.htm
index a8f297c6038adb555386335aff4956e2cb6a4b8d..90eb4c2ee1fc66b458f718c8e78f3b9b3fb375d2 100644 (file)
@@ -5,7 +5,6 @@
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
        <script type="text/javascript" src="js/color_picker.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body id="colorpicker" style="display: none">\r
 <form onsubmit="insertAction();return false" action="#">\r
@@ -22,7 +21,7 @@
                        <fieldset>\r
                                <legend>{#advanced_dlg.colorpicker_picker_title}</legend>\r
                                <div id="picker">\r
-                                       <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;" />\r
+                                       <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;" alt=" " />\r
 \r
                                        <div id="light">\r
                                                <!-- Will be filled with divs -->\r
diff --git a/lib/editor/tinymce/themes/advanced/editor_template.js b/lib/editor/tinymce/themes/advanced/editor_template.js
new file mode 100644 (file)
index 0000000..628c793
--- /dev/null
@@ -0,0 +1 @@
+(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],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(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({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_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";if(j.settings.convert_fonts_to_spans){o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){j.onNodeChange.add(l._nodeChanged,l);if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){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((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(j){var i=this.editor,k=i.controlManager.get("styleselect");if(k.getLength()==0){f(i.dom.getClasses(),function(l){k.add(l["class"],l["class"])})}},_createStyleSelect:function(m){var j=this,i=j.editor,k=i.controlManager,l=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(n){if(l.selectedValue===n){i.execCommand("mceSetStyleInfo",0,{command:"removeformat"});l.select();return false}else{i.execCommand("mceSetCSSClass",0,n)}}});if(l){f(i.getParam("theme_advanced_styles","","hash"),function(o,n){if(o){l.add(j.editor.translate(n),o)}});l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",j._importClasses,j);b.add(p.id+"_text","mousedown",j._importClasses,j);b.add(p.id+"_open","focus",j._importClasses,j);b.add(p.id+"_open","mousedown",j._importClasses,j)}else{b.add(p.id,"focus",j._importClasses,j)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",cmd:"FontName"});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){if(i.fontSize){k.execCommand("FontSize",false,i.fontSize)}else{f(m.settings.theme_advanced_font_sizes,function(p,o){if(p["class"]){j.push(p["class"])}});k.editorCommands._applyInlineStyle("span",{"class":i["class"]},{check_classes:j})}}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={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"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=j.settings,n=d.get(j.id+"_tbl"),o=d.get(j.id+"_ifr"),m;i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);m=n.clientHeight-o.clientHeight;d.setStyle(o,"height",l-m);d.setStyles(n,{width:i,height:l})},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(n.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(w,k){var z=this,p,m,r=z.editor,A=z.settings,y,j=r.controlManager,u,l,q=[],x;x=A.theme_advanced_toolbar_align.toLowerCase();x="mce"+z._ufirst(x);l=d.add(d.add(w,"tr"),"td",{"class":"mceToolbar "+x});if(!r.getParam("accessibility_focus")){q.push(d.createHTML("a",{href:"#",onfocus:"tinyMCE.get('"+r.id+"').focus();"},"<!-- IE -->"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},"<!-- IE -->"));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":"&#160;");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}if(w.theme_advanced_resize_horizontal){r.style.width=Math.max(10,n.cw)+"px"}r.style.height=Math.max(10,n.ch)+"px";d.get(p.id+"_ifr").style.height=Math.max(10,parseInt(n.ch)+v.deltaHeight)+"px"})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(x){var z,t,o,s,y,r;z=d.get(p.id+"_tbl");o=z.clientWidth;s=z.clientHeight;miw=w.theme_advanced_resizing_min_width||100;mih=w.theme_advanced_resizing_min_height||100;maw=w.theme_advanced_resizing_max_width||65535;mah=w.theme_advanced_resizing_max_height||65535;t=d.add(d.get(p.id+"_parent"),"div",{"class":"mcePlaceHolder"});d.setStyles(t,{width:o,height:s});d.hide(z);d.show(t);i={x:x.screenX,y:x.screenY,w:o,h:s,dx:null,dy:null};q=b.add(d.doc,"mousemove",function(B){var n,A;i.dx=B.screenX-i.x;i.dy=B.screenY-i.y;n=Math.max(miw,i.w+i.dx);A=Math.max(mih,i.h+i.dy);n=Math.min(maw,n);A=Math.min(mah,A);if(w.theme_advanced_resize_horizontal){t.style.width=n+"px"}t.style.height=A+"px";return b.cancel(B)});u=b.add(d.doc,"mouseup",function(n){var A;b.remove(d.doc,"mousemove",q);b.remove(d.doc,"mouseup",u);z.style.display="";d.remove(t);if(i.dx===null){return}A=d.get(p.id+"_ifr");if(w.theme_advanced_resize_horizontal){z.style.width=Math.max(10,i.w+i.dx)+"px"}z.style.height=Math.max(10,i.h+i.dy)+"px";A.style.height=Math.max(10,A.clientHeight+i.dy)+"px";if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:i.w+i.dx,ch:i.h+i.dy})}});return b.cancel(x)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(l,u,k,q){var y=this,i,r=0,x,m,z=y.settings,w,j,o;if(z.readonly){return}e.each(y.stateControls,function(n){u.setActive(n,l.queryCommandState(y.controls[n][1]))});u.setActive("visualaid",l.hasVisual);u.setDisabled("undo",!l.undoManager.hasUndo()&&!l.typing);u.setDisabled("redo",!l.undoManager.hasRedo());u.setDisabled("outdent",!l.queryCommandState("Outdent"));i=d.getParent(k,"A");if(m=u.get("link")){if(!i||!i.name){m.setDisabled(!i&&q);m.setActive(!!i)}}if(m=u.get("unlink")){m.setDisabled(!i&&q);m.setActive(!!i&&!i.name)}if(m=u.get("anchor")){m.setActive(!!i&&i.name);if(e.isWebKit){i=d.getParent(k,"IMG");m.setActive(!!i&&d.getAttrib(i,"mce_name")=="a")}}i=d.getParent(k,"IMG");if(m=u.get("image")){m.setActive(!!i&&k.className.indexOf("mceItem")==-1)}if(m=u.get("styleselect")){if(k.className){y._importClasses();m.select(k.className)}else{m.select()}}if(m=u.get("formatselect")){i=d.getParent(k,d.isBlock);if(i){m.select(i.nodeName.toLowerCase())}}if(l.settings.convert_fonts_to_spans){l.dom.getParent(k,function(p){if(p.nodeName==="SPAN"){if(!w&&p.className){w=p.className}if(!j&&p.style.fontSize){j=p.style.fontSize}if(!o&&p.style.fontFamily){o=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}}return false});if(m=u.get("fontselect")){m.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==o})}if(m=u.get("fontsizeselect")){m.select(function(n){if(n.fontSize&&n.fontSize===j){return true}if(n["class"]&&n["class"]===w){return true}})}}else{if(m=u.get("fontselect")){m.select(l.queryCommandValue("FontName"))}if(m=u.get("fontsizeselect")){x=l.queryCommandValue("FontSize");m.select(function(n){return n.fontSize==x})}}if(z.theme_advanced_path&&z.theme_advanced_statusbar_location){i=d.get(l.id+"_path")||d.add(l.id+"_path_row","span",{id:l.id+"_path"});d.setHTML(i,"");l.dom.getParent(k,function(A){var p=A.nodeName.toLowerCase(),s,v,t="";if(A.nodeType!=1||A.nodeName==="BR"||(d.hasClass(A,"mceItemHidden")||d.hasClass(A,"mceItemRemoved"))){return}if(x=d.getAttrib(A,"mce_name")){p=x}if(e.isIE&&A.scopeName!=="HTML"){p=A.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(x=d.getAttrib(A,"src")){t+="src: "+x+" "}break;case"a":if(x=d.getAttrib(A,"name")){t+="name: "+x+" ";p+="#"+x}if(x=d.getAttrib(A,"href")){t+="href: "+x+" "}break;case"font":if(z.convert_fonts_to_spans){p="span"}if(x=d.getAttrib(A,"face")){t+="font: "+x+" "}if(x=d.getAttrib(A,"size")){t+="size: "+x+" "}if(x=d.getAttrib(A,"color")){t+="color: "+x+" "}break;case"span":if(x=d.getAttrib(A,"style")){t+="style: "+x+" "}break}if(x=d.getAttrib(A,"id")){t+="id: "+x+" "}if(x=A.className){x=x.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,"");if(x&&x.indexOf("mceItem")==-1){t+="class: "+x+" ";if(d.isBlock(A)||p=="img"||p=="span"){p+="."+x}}}p=p.replace(/(html:)/g,"");p={name:p,node:A,title:t};y.onResolveName.dispatch(y,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",onmousedown:"return false;",title:t,"class":"mcePath_"+(r++)},p);if(i.hasChildNodes()){i.insertBefore(d.doc.createTextNode(" \u00bb "),i.firstChild);i.insertBefore(v,i.firstChild)}else{i.appendChild(v)}},l.getBody())}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:e.baseURL+"/themes/advanced/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:e.baseURL+"/themes/advanced/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js
rename to lib/editor/tinymce/themes/advanced/editor_template_src.js
index df3143d81b51b8a660f1183053460ce37e41ba99..9a43724f41d45e5281e27072b8fa7959d3fb7811 100644 (file)
@@ -5,7 +5,7 @@
  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
  */\r
 \r
-(function() {\r
+(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;\r
 \r
        // Tell it to load theme specific language pack(s)\r
                                                }\r
                                        }\r
 \r
-                                       if (/\s*\./.test(v))\r
+                                       if (/^\s*\./.test(v))\r
                                                cl = v.replace(/\./g, '');\r
 \r
                                        o[k] = cl ? {'class' : cl} : {fontSize : v};\r
                        if (v = s.theme_advanced_text_colors)\r
                                o.colors = v;\r
 \r
+                       if (s.theme_advanced_default_foreground_color)\r
+                               o.default_color = s.theme_advanced_default_foreground_color;\r
+\r
                        o.title = 'advanced.forecolor_desc';\r
                        o.cmd = 'ForeColor';\r
                        o.scope = this;\r
                        if (v = s.theme_advanced_background_colors)\r
                                o.colors = v;\r
 \r
+                       if (s.theme_advanced_default_background_color)\r
+                               o.default_color = s.theme_advanced_default_background_color;\r
+\r
                        o.title = 'advanced.backcolor_desc';\r
                        o.cmd = 'HiliteColor';\r
                        o.scope = this;\r
                        }\r
 */\r
 \r
-                       if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))\r
+                       if (!ed.getParam('accessibility_focus'))\r
                                Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});\r
 \r
                        if (s.theme_advanced_toolbar_location == 'external')\r
 \r
                        n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});\r
 \r
-                       if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))\r
+                       if (!ed.getParam('accessibility_focus'))\r
                                h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));\r
 \r
                        h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));\r
 \r
                        n = DOM.add(tb, 'tr');\r
                        n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});\r
-                       n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : '&nbsp;');\r
+                       n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : '&#160;');\r
                        DOM.add(n, 'a', {href : '#', accesskey : 'x'});\r
 \r
-                       if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {\r
+                       if (s.theme_advanced_resizing) {\r
                                DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});\r
 \r
                                if (s.theme_advanced_resizing_use_cookie) {\r
        });\r
 \r
        tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);\r
-}());
\ No newline at end of file
+}(tinymce));
\ No newline at end of file
similarity index 83%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/image.htm
rename to lib/editor/tinymce/themes/advanced/image.htm
index 6c366469c3ec341814cf376c9cc96aebd7d92caa..7ec1052ba54a6813ce9ddb4820037bca3fb10680 100644 (file)
@@ -6,7 +6,6 @@
        <script type="text/javascript" src="../../utils/mctabs.js"></script>\r
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <script type="text/javascript" src="js/image.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body id="image" style="display: none">\r
 <form onsubmit="ImageDialog.update();return false;" action="#">\r
@@ -20,7 +19,7 @@
                <div id="general_panel" class="panel current">\r
      <table border="0" cellpadding="4" cellspacing="0">\r
           <tr>\r
-            <td nowrap="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>\r
+            <td class="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>\r
             <td><table border="0" cellspacing="0" cellpadding="0">\r
                 <tr>\r
                   <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>\r
                        <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>\r
                  </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>\r
+            <td class="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>\r
             <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>\r
           </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>\r
+            <td class="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>\r
             <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">\r
                 <option value="">{#not_set}</option>\r
                 <option value="baseline">{#advanced_dlg.image_align_baseline}</option>\r
               </select></td>\r
           </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>\r
+            <td class="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>\r
             <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />\r
               x\r
               <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>\r
           </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>\r
+            <td class="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>\r
             <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
           </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>\r
+            <td class="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>\r
             <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
           </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>\r
+            <td class="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>\r
             <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>\r
           </tr>\r
         </table>\r
diff --git a/lib/editor/tinymce/themes/advanced/img/colorpicker.jpg b/lib/editor/tinymce/themes/advanced/img/colorpicker.jpg
new file mode 100644 (file)
index 0000000..b4c542d
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/img/colorpicker.jpg differ
similarity index 52%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
rename to lib/editor/tinymce/themes/advanced/img/icons.gif
index 2f874b8e15dd798c1f79417da068d7aeb010de6d..ccac36f54d983cc33a0a6e45134e3dabf1820367 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif and b/lib/editor/tinymce/themes/advanced/img/icons.gif differ
similarity index 93%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js
rename to lib/editor/tinymce/themes/advanced/js/link.js
index 2974878e1e18c7e1a77545f336bbec847944bba3..21aae6cbf88d18f497fe093e95422656365d7a15 100644 (file)
@@ -53,6 +53,7 @@ var LinkDialog = {
 \r
                // Create new anchor elements\r
                if (e == null) {\r
+                       ed.getDoc().execCommand("unlink", false, null);\r
                        tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});\r
 \r
                        tinymce.each(ed.dom.select("a"), function(n) {\r
@@ -92,7 +93,7 @@ var LinkDialog = {
                if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))\r
                        n.value = 'mailto:' + n.value;\r
 \r
-               if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))\r
+               if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))\r
                        n.value = 'http://' + n.value;\r
        },\r
 \r
similarity index 91%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js
rename to lib/editor/tinymce/themes/advanced/js/source_editor.js
index af2231cad57d78dacbeb616c231e58a4669ecadb..279328614c5ee8a0077295a0ff7814a24d723922 100644 (file)
@@ -2,7 +2,7 @@ tinyMCEPopup.requireLangPack();
 tinyMCEPopup.onInit.add(onLoadInit);\r
 \r
 function saveContent() {\r
-       tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value);\r
+       tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true});\r
        tinyMCEPopup.close();\r
 }\r
 \r
@@ -13,7 +13,7 @@ function onLoadInit() {
        if (tinymce.isGecko)\r
                document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");\r
 \r
-       document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent();\r
+       document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});\r
 \r
        if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {\r
                setWrap('soft');\r
similarity index 89%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/link.htm
rename to lib/editor/tinymce/themes/advanced/link.htm
index 286cc92479c80f95a03ce04dc8589b21bb43655e..a78bd334d5ec42983537585b90c3ecba287cf908 100644 (file)
@@ -7,7 +7,6 @@
        <script type="text/javascript" src="../../utils/form_utils.js"></script>\r
        <script type="text/javascript" src="../../utils/validate.js"></script>\r
        <script type="text/javascript" src="js/link.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body id="link" style="display: none">\r
 <form onsubmit="LinkDialog.update();return false;" action="#">\r
@@ -22,7 +21,7 @@
 \r
                <table border="0" cellpadding="4" cellspacing="0">\r
           <tr>\r
-            <td nowrap="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>\r
+            <td class="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>\r
             <td><table border="0" cellspacing="0" cellpadding="0"> \r
                                  <tr> \r
                                        <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td> \r
@@ -39,7 +38,7 @@
                        <td><select id="target_list" name="target_list"></select></td>\r
                </tr>\r
           <tr>\r
-            <td nowrap="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>\r
+            <td class="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>\r
             <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>\r
           </tr>\r
                        <tr>\r
similarity index 93%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css
rename to lib/editor/tinymce/themes/advanced/skins/default/dialog.css
index c944a60ba03a91192e345e12ef79028ac6d89608..873c67e3c449b3a9386cee5a6f296ce45a2cdafb 100644 (file)
@@ -19,6 +19,7 @@ td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
 textarea {resize:none;outline:none;}\r
 a:link, a:visited {color:black;}\r
 a:hover {color:#2B6FB6;}\r
+.nowrap {white-space: nowrap}\r
 \r
 /* Forms */\r
 fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
@@ -47,10 +48,11 @@ padding-bottom:2px;
 #cancel {background:url(img/buttons.png) 0 0;}\r
 \r
 /* Browse */\r
+a.pickcolor, a.browse {text-decoration:none}\r
 a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
 .mceOldBoxModel a.browse span {width:22px; height:20px;}\r
 a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
-a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}\r
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
 a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
 .mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
similarity index 77%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
rename to lib/editor/tinymce/themes/advanced/skins/default/img/buttons.png
index f1f3ee38caf1a414f71ae2ac994fd6755fe92f63..7dd58418ba7cfe58ae7efdf174e0b223fe3aa6a0 100644 (file)
Binary files a/lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png and b/lib/editor/tinymce/themes/advanced/skins/default/img/buttons.png differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/default/img/items.gif b/lib/editor/tinymce/themes/advanced/skins/default/img/items.gif
new file mode 100644 (file)
index 0000000..2eafd79
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/default/img/items.gif differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/default/img/menu_arrow.gif b/lib/editor/tinymce/themes/advanced/skins/default/img/menu_arrow.gif
new file mode 100644 (file)
index 0000000..85e31df
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/default/img/menu_arrow.gif differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/default/img/menu_check.gif b/lib/editor/tinymce/themes/advanced/skins/default/img/menu_check.gif
new file mode 100644 (file)
index 0000000..adfdddc
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/default/img/menu_check.gif differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/default/img/progress.gif b/lib/editor/tinymce/themes/advanced/skins/default/img/progress.gif
new file mode 100644 (file)
index 0000000..5bb90fd
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/default/img/progress.gif differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/default/img/tabs.gif b/lib/editor/tinymce/themes/advanced/skins/default/img/tabs.gif
new file mode 100644 (file)
index 0000000..ce4be63
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/default/img/tabs.gif differ
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css
rename to lib/editor/tinymce/themes/advanced/skins/default/ui.css
index 7e202a71a38b70a6fa2eb7f36d00ff1825e243ad..230a2ee288dacbbe3bb029a1b442b6cc974fddfc 100644 (file)
@@ -37,7 +37,7 @@
 .defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}\r
 .defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\r
 .defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}\r
-.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}\r
+.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 .defaultSkin .mceButtonLabeled {width:auto}\r
 .defaultSkin .mceButtonLabeled span.mceIcon {float:left}\r
 .defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}\r
 .defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}\r
 .defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}\r
 .defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}\r
-.defaultSkin .mceSplitButton a.mceOpen {width:9px; border:1px solid #F0F0EE;}\r
-.defaultSkin .mceSplitButton span.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0;}\r
+.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}\r
+.defaultSkin .mceSplitButton span.mceOpen {display:none}\r
 .defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}\r
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {border:1px solid #0A246A;}\r
-.defaultSkin table.mceSplitButtonEnabled:hover span.mceOpen, .defaultSkin .mceSplitButtonHover span.mceOpen, .defaultSkin .mceSplitButtonSelected span.mceOpen {background-color:#B2BBD0}\r
-.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled span.mceOpen {opacity:0.3; filter:alpha(opacity=30)}\r
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}\r
+.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 .defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}\r
 .defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}\r
 \r
 .defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}\r
 \r
 /* Progress,Resize */\r
-.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}\r
+.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}\r
 .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}\r
 .defaultSkin .mcePlaceHolder {border:1px dotted gray}\r
 \r
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
rename to lib/editor/tinymce/themes/advanced/skins/o2k7/dialog.css
index e36042e645e0f7d2cefa2ace09f48ab3e4d62410..6c37d6fb8395556422d93a9668f68c93f82b7b55 100644 (file)
@@ -19,6 +19,7 @@ td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
 textarea {resize:none;outline:none;}\r
 a:link, a:visited {color:black;}\r
 a:hover {color:#2B6FB6;}\r
+.nowrap {white-space: nowrap}\r
 \r
 /* Forms */\r
 fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}\r
@@ -47,10 +48,11 @@ padding-bottom:2px;
 #cancel {background:url(../default/img/buttons.png) 0 0;}\r
 \r
 /* Browse */\r
+a.pickcolor, a.browse {text-decoration:none}\r
 a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}\r
 .mceOldBoxModel a.browse span {width:22px; height:20px;}\r
 a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}\r
-a.browse span.disabled {border:1px solid white; -moz-opacity:0.3; opacity:0.3; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);}\r
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}\r
 a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}\r
 .mceOldBoxModel a.pickcolor span {width:21px; height:17px;}\r
diff --git a/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg.png b/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg.png
new file mode 100644 (file)
index 0000000..12cfb41
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg.png differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png b/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png
new file mode 100644 (file)
index 0000000..8996c74
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_black.png differ
diff --git a/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png
new file mode 100644 (file)
index 0000000..bd5d255
Binary files /dev/null and b/lib/editor/tinymce/themes/advanced/skins/o2k7/img/button_bg_silver.png differ
similarity index 94%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
rename to lib/editor/tinymce/themes/advanced/skins/o2k7/ui.css
index 0da56e9112e7704d3654d0895cbb327dac31ec84..c10a3f0161f642bd3fee6da3538aaf44abefd921 100644 (file)
@@ -40,7 +40,7 @@
 .o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}\r
 .o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\r
 .o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}\r
-.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; filter:alpha(opacity=30)}\r
+.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 .o2k7Skin .mceButtonLabeled {width:auto}\r
 .o2k7Skin .mceButtonLabeled span.mceIcon {float:left}\r
 .o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}\r
 .o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}\r
 .o2k7Skin .mceSplitButton a.mceAction {width:22px}\r
 .o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}\r
-.o2k7Skin .mceSplitButton a.mceOpen {width:10px}\r
-.o2k7Skin .mceSplitButton span.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}\r
+.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}\r
+.o2k7Skin .mceSplitButton span.mceOpen {display:none}\r
 .o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}\r
-.o2k7Skin table.mceSplitButtonEnabled:hover span.mceOpen, .o2k7Skin .mceSplitButtonHover span.mceOpen, .o2k7Skin .mceSplitButtonSelected span.mceOpen {background-position:-44px -44px}\r
-.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; filter:alpha(opacity=30)}\r
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}\r
+.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 .o2k7Skin .mceSplitButtonActive {background-position:0 -44px}\r
 \r
 /* ColorSplitButton */\r
 .o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}\r
 \r
 /* Progress,Resize */\r
-.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; filter:alpha(opacity=50); background:#FFF}\r
+.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}\r
 .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}\r
 .o2k7Skin .mcePlaceHolder {border:1px dotted gray}\r
 \r
similarity index 68%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
rename to lib/editor/tinymce/themes/advanced/skins/o2k7/ui_black.css
index a42a727abc0689962ba859d93bcb55f098ff6de6..153f0c38a6c69b897b9d7dbb5fd66a75991048bc 100644 (file)
@@ -1,8 +1,8 @@
 /* Black */\r
-.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)}\r
+.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}\r
 .o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}\r
 .o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}\r
-.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}\r
+.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}\r
 .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;}\r
-.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}\r
-.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
\ No newline at end of file
+.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}\r
+.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
\ No newline at end of file
similarity index 81%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
rename to lib/editor/tinymce/themes/advanced/skins/o2k7/ui_silver.css
index 548b1b852b2288c242da265b14b11225ca4259bb..7fe3b45e1264ad10f89c696ecc3b0e0801a96653 100644 (file)
@@ -1,5 +1,5 @@
 /* Silver */\r
-.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)}\r
+.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}\r
 .o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}\r
 .o2k7SkinSilver .mceListBox .mceText {background:#FFF}\r
 .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}\r
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm
rename to lib/editor/tinymce/themes/advanced/source_editor.htm
index 119a913c93062ebc345b9caed7843a3c0538326f..553e7bb2bc734587ba964e703bd2e2374abe8b0b 100644 (file)
@@ -4,7 +4,6 @@
        <title>{#advanced_dlg.code_title}</title>\r
        <script type="text/javascript" src="../../tiny_mce_popup.js"></script>\r
        <script type="text/javascript" src="js/source_editor.js"></script>\r
-       <base target="_self" />\r
 </head>\r
 <body onresize="resizeInputs();" style="display:none; overflow:hidden;">\r
        <form name="source" onsubmit="saveContent();return false;" action="#">\r
diff --git a/lib/editor/tinymce/themes/simple/editor_template.js b/lib/editor/tinymce/themes/simple/editor_template.js
new file mode 100644 (file)
index 0000000..ed89abc
--- /dev/null
@@ -0,0 +1 @@
+(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,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)})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/themes/simple/img/icons.gif b/lib/editor/tinymce/themes/simple/img/icons.gif
new file mode 100644 (file)
index 0000000..16af141
Binary files /dev/null and b/lib/editor/tinymce/themes/simple/img/icons.gif differ
similarity index 93%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css
rename to lib/editor/tinymce/themes/simple/skins/default/ui.css
index 1cf64b8dc365c9b71da381d835fcc1b4c99216a3..076fe84e3440ee67baccc93a4f42943b419bb2a9 100644 (file)
@@ -15,7 +15,7 @@
 .defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}\r
 .defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}\r
 .defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}\r
-.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}\r
+.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 \r
 /* Separator */\r
 .defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}\r
diff --git a/lib/editor/tinymce/themes/simple/skins/o2k7/img/button_bg.png b/lib/editor/tinymce/themes/simple/skins/o2k7/img/button_bg.png
new file mode 100644 (file)
index 0000000..527e349
Binary files /dev/null and b/lib/editor/tinymce/themes/simple/skins/o2k7/img/button_bg.png differ
similarity index 93%
rename from lib/editor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css
rename to lib/editor/tinymce/themes/simple/skins/o2k7/ui.css
index bfae96e2d0a4cdd6d6d076ad24bd77f9d9104cde..cf6c35d109346c5e66d7fcbfe37830eec881d73b 100644 (file)
@@ -18,7 +18,7 @@
 .o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}\r
 .o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}\r
 .o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}\r
-.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; filter:alpha(opacity=30)}\r
+.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}\r
 \r
 /* Separator */\r
 .o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}\r
diff --git a/lib/editor/tinymce/tiny_mce.js b/lib/editor/tinymce/tiny_mce.js
new file mode 100644 (file)
index 0000000..866d3e1
--- /dev/null
@@ -0,0 +1 @@
+var tinymce={majorVersion:"3",minorVersion:"2.3.1",releaseDate:"2009-05-05",_init:function(){var o=this,k=document,l=window,j=navigator,b=j.userAgent,h,a,g,f,e,m;o.isOpera=l.opera&&opera.buildNumber;o.isWebKit=/WebKit/.test(b);o.isIE=!o.isWebKit&&!o.isOpera&&(/MSIE/gi).test(b)&&(/Explorer/gi).test(j.appName);o.isIE6=o.isIE&&/MSIE [56]/.test(b);o.isGecko=!o.isWebKit&&/Gecko/.test(b);o.isMac=b.indexOf("Mac")!=-1;o.isAir=/adobeair/i.test(b);if(l.tinyMCEPreInit){o.suffix=tinyMCEPreInit.suffix;o.baseURL=tinyMCEPreInit.base;o.query=tinyMCEPreInit.query;return}o.suffix="";a=k.getElementsByTagName("base");for(h=0;h<a.length;h++){if(m=a[h].href){if(/^https?:\/\/[^\/]+$/.test(m)){m+="/"}f=m?m.match(/.*\//)[0]:""}}function c(d){if(d.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(d.src)){if(/_(src|dev)\.js/g.test(d.src)){o.suffix="_src"}if((e=d.src.indexOf("?"))!=-1){o.query=d.src.substring(e+1)}o.baseURL=d.src.substring(0,d.src.lastIndexOf("/"));if(f&&o.baseURL.indexOf("://")==-1){o.baseURL=f+o.baseURL}return o.baseURL}return null}a=k.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}g=k.getElementsByTagName("head")[0];if(g){a=g.getElementsByTagName("script");for(h=0;h<a.length;h++){if(c(a[h])){return}}}return},is:function(b,a){var c=typeof(b);if(!a){return c!="undefined"}if(a=="array"&&(b.hasOwnProperty&&b instanceof Array)){return true}return c==a},each:function(d,a,c){var e,b;if(!d){return 0}c=c||d;if(typeof(d.length)!="undefined"){for(e=0,b=d.length;e<b;e++){if(a.call(c,d[e],e,d)===false){return 0}}}else{for(e in d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)===false){return 0}}}}return 1},map:function(b,c){var d=[];tinymce.each(b,function(a){d.push(c(a))});return d},grep:function(b,c){var d=[];tinymce.each(b,function(a){if(!c||c(a)){d.push(a)}});return d},inArray:function(c,d){var e,b;if(c){for(e=0,b=c.length;e<b;e++){if(c[e]===d){return e}}}return -1},extend:function(f,d){var c,b=arguments;for(c=1;c<b.length;c++){d=b[c];tinymce.each(d,function(a,e){if(typeof(a)!=="undefined"){f[e]=a}})}return f},trim:function(a){return(a?""+a:"").replace(/^\s*|\s*$/g,"")},create:function(j,a){var i=this,b,e,f,g,d,h=0;j=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(j);f=j[3].match(/(^|\.)(\w+)$/i)[2];e=i.createNS(j[3].replace(/\.\w+$/,""));if(e[f]){return}if(j[2]=="static"){e[f]=a;if(this.onCreate){this.onCreate(j[2],j[3],e[f])}return}if(!a[f]){a[f]=function(){};h=1}e[f]=a[f];i.extend(e[f].prototype,a);if(j[5]){b=i.resolve(j[5]).prototype;g=j[5].match(/\.(\w+)$/i)[1];d=e[f];if(h){e[f]=function(){return b[g].apply(this,arguments)}}else{e[f]=function(){this.parent=b[g];return d.apply(this,arguments)}}e[f].prototype[f]=e[f];i.each(b,function(c,k){e[f].prototype[k]=b[k]});i.each(a,function(c,k){if(b[k]){e[f].prototype[k]=function(){this.parent=b[k];return c.apply(this,arguments)}}else{if(k!=f){e[f].prototype[k]=c}}})}i.each(a["static"],function(c,k){e[f][k]=c});if(this.onCreate){this.onCreate(j[2],j[3],e[f].prototype)}},walk:function(c,b,d,a){a=a||this;if(c){if(d){c=c[d]}tinymce.each(c,function(f,e){if(b.call(a,f,e,d)===false){return false}tinymce.walk(f,b,d,a)})}},createNS:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0;b<d.length;b++){a=d[b];if(!c[a]){c[a]={}}c=c[a]}return c},resolve:function(d,c){var b,a;c=c||window;d=d.split(".");for(b=0,a=d.length;b<a;b++){c=c[d[b]];if(!c){break}}return c},addUnload:function(e,d){var c=this,a=window;e={func:e,scope:d||this};if(!c.unloads){function b(){var f=c.unloads,h,i;if(f){for(i in f){h=f[i];if(h&&h.func){h.func.call(h.scope,1)}}if(a.detachEvent){a.detachEvent("onbeforeunload",g);a.detachEvent("onunload",b)}else{if(a.removeEventListener){a.removeEventListener("unload",b,false)}}c.unloads=h=f=a=b=0;if(window.CollectGarbage){window.CollectGarbage()}}}function g(){var h=document;if(h.readyState=="interactive"){function f(){h.detachEvent("onstop",f);if(b){b()}h=0}if(h){h.attachEvent("onstop",f)}window.setTimeout(function(){if(h){h.detachEvent("onstop",f)}},0)}}if(a.attachEvent){a.attachEvent("onunload",b);a.attachEvent("onbeforeunload",g)}else{if(a.addEventListener){a.addEventListener("unload",b,false)}}c.unloads=[e]}else{c.unloads.push(e)}return e},removeUnload:function(c){var a=this.unloads,b=null;tinymce.each(a,function(e,d){if(e&&e.func==c){a.splice(d,1);b=c;return false}});return b},explode:function(a,b){return a?tinymce.map(a.split(b||","),tinymce.trim):a},_addVer:function(b){var a;if(!this.query){return b}a=(b.indexOf("?")==-1?"?":"&")+this.query;if(b.indexOf("#")==-1){return b+a}return b.replace("#",a+"#")}};window.tinymce=tinymce;tinymce._init();tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,h,d,c;g=f.settings=g||{};if(/^(mailto|tel|news|javascript|about):/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(e.indexOf(":/")===-1&&e.indexOf("//")!==0){e=(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g.base_uri.path,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,g=[],d;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(h){if(h){g.push(h)}});e=g;for(c=f.length-1,g=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}g.push(f[c])}c=e.length-b;if(c<=0){return"/"+g.reverse().join("/")+d}return"/"+e.slice(0,c).join("/")+"/"+g.reverse().join("/")+d},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c<e.length;c++){a+=(c>0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(c){var e=c.each,b=c.is;var d=c.isWebKit,a=c.isIE;c.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(i,g){var f=this;f.doc=i;f.win=window;f.files={};f.cssFlicker=false;f.counter=0;f.boxModel=!c.isIE||i.compatMode=="CSS1Compat";f.stdMode=i.documentMode===8;this.settings=g=c.extend({keep_values:false,hex_colors:1,process_html:1},g);if(c.isIE6){try{i.execCommand("BackgroundImageCache",false,true)}catch(h){f.cssFlicker=true}}c.addUnload(f.destroy,f)},getRoot:function(){var f=this,g=f.settings;return(g&&f.get(g.root_element))||f.doc.body},getViewPort:function(g){var h,f;g=!g?this.win:g;h=g.document;f=this.boxModel?h.documentElement:h.body;return{x:g.pageXOffset||f.scrollLeft,y:g.pageYOffset||f.scrollTop,w:g.innerWidth||f.clientWidth,h:g.innerHeight||f.clientHeight}},getRect:function(i){var h,f=this,g;i=f.get(i);h=f.getPos(i);g=f.getSize(i);return{x:h.x,y:h.y,w:g.w,h:g.h}},getSize:function(j){var g=this,f,i;j=g.get(j);f=g.getStyle(j,"width");i=g.getStyle(j,"height");if(f.indexOf("px")===-1){f=0}if(i.indexOf("px")===-1){i=0}return{w:parseInt(f)||j.offsetWidth||j.clientWidth,h:parseInt(i)||j.offsetHeight||j.clientHeight}},is:function(g,f){return c.dom.Sizzle.matches(f,g.nodeType?[g]:g).length>0},getParent:function(i,h,g){return this.getParents(i,h,g,false)},getParents:function(p,k,i,m){var h=this,g,j=h.settings,l=[];p=h.get(p);m=m===undefined;if(j.strict_root){i=i||h.getRoot()}if(b(k,"string")){g=k;if(k==="*"){k=function(f){return f.nodeType==1}}else{k=function(f){return h.is(f,g)}}}while(p){if(p==i||!p.nodeType||p.nodeType===9){break}if(!k||k(p)){if(m){l.push(p)}else{return p}}p=p.parentNode}return m?l:null},get:function(f){var g;if(f&&this.doc&&typeof(f)=="string"){g=f;f=this.doc.getElementById(f);if(f&&f.id!==g){return this.doc.getElementsByName(g)[1]}}return f},select:function(h,g){var f=this;return c.dom.Sizzle(h,f.get(g)||f.get(f.settings.root_element)||f.doc,[])},add:function(j,l,f,i,k){var g=this;return this.run(j,function(n){var m,h;m=b(l,"string")?g.doc.createElement(l):l;g.setAttribs(m,f);if(i){if(i.nodeType){m.appendChild(i)}else{g.setHTML(m,i)}}return !k?n.appendChild(m):m})},create:function(i,f,g){return this.add(this.doc.createElement(i),i,f,g,1)},createHTML:function(m,f,j){var l="",i=this,g;l+="<"+m;for(g in f){if(f.hasOwnProperty(g)){l+=" "+g+'="'+i.encode(f[g])+'"'}}if(c.is(j)){return l+">"+j+"</"+m+">"}return l+" />"},remove:function(h,f){var g=this;return this.run(h,function(m){var l,k,j;l=m.parentNode;if(!l){return null}if(f){for(j=m.childNodes.length-1;j>=0;j--){g.insertAfter(m.childNodes[j],m)}}if(g.fixPsuedoLeaks){l=m.cloneNode(true);f="IELeakGarbageBin";k=g.get(f)||g.add(g.doc.body,"div",{id:f,style:"display:none"});k.appendChild(m);k.innerHTML="";return l}return l.removeChild(m)})},setStyle:function(i,f,g){var h=this;return h.run(i,function(l){var k,j;k=l.style;f=f.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(h.pixelStyles.test(f)&&(c.is(g,"number")||/^[\-0-9\.]+$/.test(g))){g+="px"}switch(f){case"opacity":if(a){k.filter=g===""?"":"alpha(opacity="+(g*100)+")";if(!i.currentStyle||!i.currentStyle.hasLayout){k.display="inline-block"}}k[f]=k["-moz-opacity"]=k["-khtml-opacity"]=g||"";break;case"float":a?k.styleFloat=g:k.cssFloat=g;break;default:k[f]=g||""}if(h.settings.update_styles){h.setAttrib(l,"mce_style")}})},getStyle:function(i,f,h){i=this.get(i);if(!i){return false}if(this.doc.defaultView&&h){f=f.replace(/[A-Z]/g,function(j){return"-"+j});try{return this.doc.defaultView.getComputedStyle(i,null).getPropertyValue(f)}catch(g){return null}}f=f.replace(/-(\D)/g,function(k,j){return j.toUpperCase()});if(f=="float"){f=a?"styleFloat":"cssFloat"}if(i.currentStyle&&h){return i.currentStyle[f]}return i.style[f]},setStyles:function(i,j){var g=this,h=g.settings,f;f=h.update_styles;h.update_styles=0;e(j,function(k,l){g.setStyle(i,l,k)});h.update_styles=f;if(h.update_styles){g.setAttrib(i,h.cssText)}},setAttrib:function(h,i,f){var g=this;if(!h||!i){return}if(g.settings.strict){i=i.toLowerCase()}return this.run(h,function(k){var j=g.settings;switch(i){case"style":if(!b(f,"string")){e(f,function(l,m){g.setStyle(k,m,l)});return}if(j.keep_values){if(f&&!g._isRes(f)){k.setAttribute("mce_style",f,2)}else{k.removeAttribute("mce_style",2)}}k.style.cssText=f;break;case"class":k.className=f||"";break;case"src":case"href":if(j.keep_values){if(j.url_converter){f=j.url_converter.call(j.url_converter_scope||g,f,i,k)}g.setAttrib(k,"mce_"+i,f,2)}break;case"shape":k.setAttribute("mce_style",f);break}if(b(f)&&f!==null&&f.length!==0){k.setAttribute(i,""+f,2)}else{k.removeAttribute(i,2)}})},setAttribs:function(g,h){var f=this;return this.run(g,function(i){e(h,function(j,k){f.setAttrib(i,k,j)})})},getAttrib:function(i,j,h){var f,g=this;i=g.get(i);if(!i||i.nodeType!==1){return false}if(!b(h)){h=""}if(/^(src|href|style|coords|shape)$/.test(j)){f=i.getAttribute("mce_"+j);if(f){return f}}if(a&&g.props[j]){f=i[g.props[j]];f=f&&f.nodeValue?f.nodeValue:f}if(!f){f=i.getAttribute(j,2)}if(j==="style"){f=f||i.style.cssText;if(f){f=g.serializeStyle(g.parseStyle(f));if(g.settings.keep_values&&!g._isRes(f)){i.setAttribute("mce_style",f)}}}if(d&&j==="class"&&f){f=f.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(a){switch(j){case"rowspan":case"colspan":if(f===1){f=""}break;case"size":if(f==="+0"||f===20||f===0){f=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(f===0){f=""}break;case"hspace":if(f===-1){f=""}break;case"maxlength":case"tabindex":if(f===32768||f===2147483647||f==="32768"){f=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(f===65535){return j}return h;case"shape":f=f.toLowerCase();break;default:if(j.indexOf("on")===0&&f){f=(""+f).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(f!==undefined&&f!==null&&f!=="")?""+f:h},getPos:function(m,i){var g=this,f=0,l=0,j,k=g.doc,h;m=g.get(m);i=i||k.body;if(m){if(a&&!g.stdMode){m=m.getBoundingClientRect();j=g.boxModel?k.documentElement:k.body;f=g.getStyle(g.select("html")[0],"borderWidth");f=(f=="medium"||g.boxModel&&!g.isIE6)&&2||f;m.top+=g.win.self!=g.win.top?2:0;return{x:m.left+j.scrollLeft-f,y:m.top+j.scrollTop-f}}h=m;while(h&&h!=i&&h.nodeType){f+=h.offsetLeft||0;l+=h.offsetTop||0;h=h.offsetParent}h=m.parentNode;while(h&&h!=i&&h.nodeType){f-=h.scrollLeft||0;l-=h.scrollTop||0;h=h.parentNode}}return{x:f,y:l}},parseStyle:function(h){var i=this,j=i.settings,k={};if(!h){return k}function f(w,q,v){var o,u,m,n;o=k[w+"-top"+q];if(!o){return}u=k[w+"-right"+q];if(o!=u){return}m=k[w+"-bottom"+q];if(u!=m){return}n=k[w+"-left"+q];if(m!=n){return}k[v]=n;delete k[w+"-top"+q];delete k[w+"-right"+q];delete k[w+"-bottom"+q];delete k[w+"-left"+q]}function g(n,m,l,p){var o;o=k[m];if(!o){return}o=k[l];if(!o){return}o=k[p];if(!o){return}k[n]=k[m]+" "+k[l]+" "+k[p];delete k[m];delete k[l];delete k[p]}h=h.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");e(h.split(";"),function(m){var l,n=[];if(m){m=m.replace(/_MCE_SEMI_/g,";");m=m.replace(/url\([^\)]+\)/g,function(o){n.push(o);return"url("+n.length+")"});m=m.split(":");l=c.trim(m[1]);l=l.replace(/url\(([^\)]+)\)/g,function(p,o){return n[parseInt(o)-1]});l=l.replace(/rgb\([^\)]+\)/g,function(o){return i.toHex(o)});if(j.url_converter){l=l.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(o,p){return"url("+j.url_converter.call(j.url_converter_scope||i,i.decode(p),"style",null)+")"})}k[c.trim(m[0]).toLowerCase()]=l}});f("border","","border");f("border","-width","border-width");f("border","-color","border-color");f("border","-style","border-style");f("padding","","padding");f("margin","","margin");g("border","border-width","border-style","border-color");if(a){if(k.border=="medium none"){k.border=""}}return k},serializeStyle:function(g){var f="";e(g,function(i,h){if(h&&i){if(c.isGecko&&h.indexOf("-moz-")===0){return}switch(h){case"color":case"background-color":i=i.toLowerCase();break}f+=(f?" ":"")+h+": "+i+";"}});return f},loadCSS:function(f){var g=this,h=g.doc;if(!f){f=""}e(f.split(","),function(i){if(g.files[i]){return}g.files[i]=true;g.add(g.select("head")[0],"link",{rel:"stylesheet",href:c._addVer(i)})})},addClass:function(f,g){return this.run(f,function(h){var i;if(!g){return 0}if(this.hasClass(h,g)){return h.className}i=this.removeClass(h,g);return h.className=(i!=""?(i+" "):"")+g})},removeClass:function(h,i){var f=this,g;return f.run(h,function(k){var j;if(f.hasClass(k,i)){if(!g){g=new RegExp("(^|\\s+)"+i+"(\\s+|$)","g")}j=k.className.replace(g," ");return k.className=c.trim(j!=" "?j:"")}return k.className})},hasClass:function(g,f){g=this.get(g);if(!g||!f){return false}return(" "+g.className+" ").indexOf(" "+f+" ")!==-1},show:function(f){return this.setStyle(f,"display","block")},hide:function(f){return this.setStyle(f,"display","none")},isHidden:function(f){f=this.get(f);return !f||f.style.display=="none"||this.getStyle(f,"display")=="none"},uniqueId:function(f){return(!f?"mce_":f)+(this.counter++)},setHTML:function(i,g){var f=this;return this.run(i,function(m){var h,k,j,q,l,h;g=f.processHTML(g);if(a){function o(){try{m.innerHTML="<br />"+g;m.removeChild(m.firstChild)}catch(n){while(m.firstChild){m.firstChild.removeNode()}h=f.create("div");h.innerHTML="<br />"+g;e(h.childNodes,function(r,p){if(p){m.appendChild(r)}})}}if(f.settings.fix_ie_paragraphs){g=g.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 mce_keep="true">&nbsp;</p>')}o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("p");for(k=j.length-1,h=0;k>=0;k--){q=j[k];if(!q.hasChildNodes()){if(!q.mce_keep){h=1;break}q.removeAttribute("mce_keep")}}}if(h){g=g.replace(/<p ([^>]+)>|<p>/g,'<div $1 mce_tmp="1">');g=g.replace(/<\/p>/g,"</div>");o();if(f.settings.fix_ie_paragraphs){j=m.getElementsByTagName("DIV");for(k=j.length-1;k>=0;k--){q=j[k];if(q.mce_tmp){l=f.doc.createElement("p");q.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(p,n){var r;if(n!=="mce_tmp"){r=q.getAttribute(n);if(!r&&n==="class"){r=q.className}l.setAttribute(n,r)}});for(h=0;h<q.childNodes.length;h++){l.appendChild(q.childNodes[h].cloneNode(true))}q.swapNode(l)}}}}}else{m.innerHTML=g}return g})},processHTML:function(j){var g=this,i=g.settings;if(!i.process_html){return j}if(c.isGecko){j=j.replace(/<(\/?)strong>|<strong( [^>]+)>/gi,"<$1b$2>");j=j.replace(/<(\/?)em>|<em( [^>]+)>/gi,"<$1i$2>")}else{if(a){j=j.replace(/&apos;/g,"&#39;");j=j.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,"")}}j=j.replace(/<a( )([^>]+)\/>|<a\/>/gi,"<a$1$2></a>");if(i.keep_values){if(/<script|style/.test(j)){function f(h){h=h.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n");h=h.replace(/^[\r\n]*|[\r\n]*$/g,"");h=h.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,"");h=h.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,"");return h}j=j.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(l,k,h){h=f(h);if(!k){k=' type="text/javascript"'}if(h){h="<!--\n"+h+"\n// -->"}return"<mce:script"+k+">"+h+"</mce:script>"});j=j.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g,function(l,k,h){h=f(h);return"<mce:style"+k+"><!--\n"+h+"\n--></mce:style><style"+k+' mce_bogus="1">'+h+"</style>"})}j=j.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,"<!--[CDATA[$1]]-->");j=j.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(h,l){function k(o,n,q){var p=q;if(h.indexOf("mce_"+n)!=-1){return o}if(n=="style"){if(g._isRes(q)){return o}if(i.hex_colors){p=p.replace(/rgb\([^\)]+\)/g,function(m){return g.toHex(m)})}if(i.url_converter){p=p.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(m,r){return"url("+g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(r),n,l))+")"})}}else{if(n!="coords"&&n!="shape"){if(i.url_converter){p=g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(q),n,l))}}}return" "+n+'="'+q+'" mce_'+n+'="'+p+'"'}h=h.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,k);h=h.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,k);return h.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,k)})}return j},getOuterHTML:function(f){var g;f=this.get(f);if(!f){return null}if(f.outerHTML!==undefined){return f.outerHTML}g=(f.ownerDocument||this.doc).createElement("body");g.appendChild(f.cloneNode(true));return g.innerHTML},setOuterHTML:function(i,g,j){var f=this;return this.run(i,function(h){var l,k;h=f.get(h);j=j||h.ownerDocument||f.doc;if(a&&h.nodeType==1){h.outerHTML=g}else{k=j.createElement("body");k.innerHTML=g;l=k.lastChild;while(l){f.insertAfter(l.cloneNode(true),h);l=l.previousSibling}f.remove(h)}})},decode:function(g){var h,i,f;if(/&[^;]+;/.test(g)){h=this.doc.createElement("div");h.innerHTML=g;i=h.firstChild;f="";if(i){do{f+=i.nodeValue}while(i.nextSibling)}return f||g}return g},encode:function(f){return f?(""+f).replace(/[<>&\"]/g,function(h,g){switch(h){case"&":return"&amp;";case'"':return"&quot;";case"<":return"&lt;";case">":return"&gt;"}return h}):f},insertAfter:function(h,g){var f=this;g=f.get(g);return this.run(h,function(k){var j,i;j=g.parentNode;i=g.nextSibling;if(i){j.insertBefore(k,i)}else{j.appendChild(k)}return k})},isBlock:function(f){if(f.nodeType&&f.nodeType!==1){return false}f=f.nodeName||f;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(f)},replace:function(i,h,f){var g=this;if(b(h,"array")){i=i.cloneNode(true)}return g.run(h,function(j){if(f){e(j.childNodes,function(k){i.appendChild(k.cloneNode(true))})}if(g.fixPsuedoLeaks&&j.nodeType===1){j.parentNode.insertBefore(i,j);g.remove(j);return i}return j.parentNode.replaceChild(i,j)})},findCommonAncestor:function(h,f){var i=h,g;while(i){g=f;while(g&&i!=g){g=g.parentNode}if(i==g){break}i=i.parentNode}if(!i&&h.ownerDocument){return h.ownerDocument.documentElement}return i},toHex:function(f){var h=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(f);function g(i){i=parseInt(i).toString(16);return i.length>1?i:"0"+i}if(h){f="#"+g(h[1])+g(h[2])+g(h[3]);return f}return f},getClasses:function(){var l=this,g=[],k,m={},n=l.settings.class_filter,j;if(l.classes){return l.classes}function o(f){e(f.imports,function(i){o(i)});e(f.cssRules||f.rules,function(i){switch(i.type||1){case 1:if(i.selectorText){e(i.selectorText.split(","),function(p){p=p.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(p)||!/\.[\w\-]+$/.test(p)){return}j=p;p=p.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(n&&!(p=n(p,j))){return}if(!m[p]){g.push({"class":p});m[p]=1}})}break;case 3:o(i.styleSheet);break}})}try{e(l.doc.styleSheets,o)}catch(h){}if(g.length>0){l.classes=g}return g},run:function(j,i,h){var g=this,k;if(g.doc&&typeof(j)==="string"){j=g.get(j)}if(!j){return false}h=h||this;if(!j.nodeType&&(j.length||j.length===0)){k=[];e(j,function(l,f){if(l){if(typeof(l)=="string"){l=g.doc.getElementById(l)}k.push(i.call(h,l,f))}});return k}return i.call(h,j)},getAttribs:function(g){var f;g=this.get(g);if(!g){return[]}if(a){f=[];if(g.nodeName=="OBJECT"){return g.attributes}g.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(i,h){f.push({specified:1,nodeName:h})});return f}return g.attributes},destroy:function(g){var f=this;f.win=f.doc=f.root=null;if(!g){c.removeUnload(f.destroy)}},createRng:function(){var f=this.doc;return f.createRange?f.createRange():new c.dom.Range(this)},split:function(k,j,n){var o=this,f=o.createRng(),l,i,m;function g(q,p){q=q[p];if(q&&q[p]&&q[p].nodeType==1&&h(q[p])){o.remove(q[p])}}function h(p){p=o.getOuterHTML(p);p=p.replace(/<(img|hr|table)/gi,"-");p=p.replace(/<[^>]+>/g,"");return p.replace(/[ \t\r\n]+|&nbsp;|&#160;/g,"")==""}if(k&&j){f.setStartBefore(k);f.setEndBefore(j);l=f.extractContents();f=o.createRng();f.setStartAfter(j);f.setEndAfter(k);i=f.extractContents();m=k.parentNode;g(l,"lastChild");if(!h(l)){m.insertBefore(l,k)}if(n){m.replaceChild(n,j)}else{m.insertBefore(j,k)}g(i,"firstChild");if(!h(i)){m.insertBefore(i,k)}o.remove(k);return n||j}},_isRes:function(f){return/^(top|left|bottom|right|width|height)/i.test(f)||/;\s*(top|left|bottom|right|width|height)/i.test(f)}});c.DOM=new c.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(f){var h=0,c=1,e=2,d=tinymce.extend;function g(m,k){var j,l;if(m.parentNode!=k){return -1}for(l=k.firstChild,j=0;l!=m;l=l.nextSibling){j++}return j}function b(k){var j=0;while(k.previousSibling){j++;k=k.previousSibling}return j}function i(j,k){var l;if(j.nodeType==3){return j}if(k<0){return j}l=j.firstChild;while(l!=null&&k>0){--k;l=l.nextSibling}if(l!=null){return l}return j}function a(k){var j=k.doc;d(this,{dom:k,startContainer:j,startOffset:0,endContainer:j,endOffset:0,collapsed:true,commonAncestorContainer:j,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3})}d(a.prototype,{setStart:function(k,j){this._setEndPoint(true,k,j)},setEnd:function(k,j){this._setEndPoint(false,k,j)},setStartBefore:function(j){this.setStart(j.parentNode,b(j))},setStartAfter:function(j){this.setStart(j.parentNode,b(j)+1)},setEndBefore:function(j){this.setEnd(j.parentNode,b(j))},setEndAfter:function(j){this.setEnd(j.parentNode,b(j)+1)},collapse:function(k){var j=this;if(k){j.endContainer=j.startContainer;j.endOffset=j.startOffset}else{j.startContainer=j.endContainer;j.startOffset=j.endOffset}j.collapsed=true},selectNode:function(j){this.setStartBefore(j);this.setEndAfter(j)},selectNodeContents:function(j){this.setStart(j,0);this.setEnd(j,j.nodeType===1?j.childNodes.length:j.nodeValue.length)},compareBoundaryPoints:function(m,n){var l=this,p=l.startContainer,o=l.startOffset,k=l.endContainer,j=l.endOffset;if(m===0){return l._compareBoundaryPoints(p,o,p,o)}if(m===1){return l._compareBoundaryPoints(p,o,k,j)}if(m===2){return l._compareBoundaryPoints(k,j,k,j)}if(m===3){return l._compareBoundaryPoints(k,j,p,o)}},deleteContents:function(){this._traverse(e)},extractContents:function(){return this._traverse(h)},cloneContents:function(){return this._traverse(c)},insertNode:function(m){var j=this,l,k;if(m.nodeType===3||m.nodeType===4){l=j.startContainer.splitText(j.startOffset);j.startContainer.parentNode.insertBefore(m,l)}else{if(j.startContainer.childNodes.length>0){k=j.startContainer.childNodes[j.startOffset]}j.startContainer.insertBefore(m,k)}},surroundContents:function(l){var j=this,k=j.extractContents();j.insertNode(l);l.appendChild(k);j.selectNode(l)},cloneRange:function(){var j=this;return d(new a(j.dom),{startContainer:j.startContainer,startOffset:j.startOffset,endContainer:j.endContainer,endOffset:j.endOffset,collapsed:j.collapsed,commonAncestorContainer:j.commonAncestorContainer})},_isCollapsed:function(){return(this.startContainer==this.endContainer&&this.startOffset==this.endOffset)},_compareBoundaryPoints:function(m,p,k,o){var q,l,j,r,t,s;if(m==k){if(p==o){return 0}else{if(p<o){return -1}else{return 1}}}q=k;while(q&&q.parentNode!=m){q=q.parentNode}if(q){l=0;j=m.firstChild;while(j!=q&&l<p){l++;j=j.nextSibling}if(p<=l){return -1}else{return 1}}q=m;while(q&&q.parentNode!=k){q=q.parentNode}if(q){l=0;j=k.firstChild;while(j!=q&&l<o){l++;j=j.nextSibling}if(l<o){return -1}else{return 1}}r=this.dom.findCommonAncestor(m,k);t=m;while(t&&t.parentNode!=r){t=t.parentNode}if(!t){t=r}s=k;while(s&&s.parentNode!=r){s=s.parentNode}if(!s){s=r}if(t==s){return 0}j=r.firstChild;while(j){if(j==t){return -1}if(j==s){return 1}j=j.nextSibling}},_setEndPoint:function(k,q,p){var l=this,j,m;if(k){l.startContainer=q;l.startOffset=p}else{l.endContainer=q;l.endOffset=p}j=l.endContainer;while(j.parentNode){j=j.parentNode}m=l.startContainer;while(m.parentNode){m=m.parentNode}if(m!=j){l.collapse(k)}else{if(l._compareBoundaryPoints(l.startContainer,l.startOffset,l.endContainer,l.endOffset)>0){l.collapse(k)}}l.collapsed=l._isCollapsed();l.commonAncestorContainer=l.dom.findCommonAncestor(l.startContainer,l.endContainer)},_traverse:function(r){var s=this,q,m=0,v=0,k,o,l,n,j,u;if(s.startContainer==s.endContainer){return s._traverseSameContainer(r)}for(q=s.endContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.startContainer){return s._traverseCommonStartContainer(q,r)}++m}for(q=s.startContainer,k=q.parentNode;k!=null;q=k,k=k.parentNode){if(k==s.endContainer){return s._traverseCommonEndContainer(q,r)}++v}o=v-m;l=s.startContainer;while(o>0){l=l.parentNode;o--}n=s.endContainer;while(o<0){n=n.parentNode;o++}for(j=l.parentNode,u=n.parentNode;j!=u;j=j.parentNode,u=u.parentNode){l=j;n=u}return s._traverseCommonAncestors(l,n,r)},_traverseSameContainer:function(o){var r=this,q,u,j,k,l,p,m;if(o!=e){q=r.dom.doc.createDocumentFragment()}if(r.startOffset==r.endOffset){return q}if(r.startContainer.nodeType==3){u=r.startContainer.nodeValue;j=u.substring(r.startOffset,r.endOffset);if(o!=c){r.startContainer.deleteData(r.startOffset,r.endOffset-r.startOffset);r.collapse(true)}if(o==e){return null}q.appendChild(r.dom.doc.createTextNode(j));return q}k=i(r.startContainer,r.startOffset);l=r.endOffset-r.startOffset;while(l>0){p=k.nextSibling;m=r._traverseFullySelected(k,o);if(q){q.appendChild(m)}--l;k=p}if(o!=c){r.collapse(true)}return q},_traverseCommonStartContainer:function(j,p){var s=this,r,k,l,m,q,o;if(p!=e){r=s.dom.doc.createDocumentFragment()}k=s._traverseRightBoundary(j,p);if(r){r.appendChild(k)}l=g(j,s.startContainer);m=l-s.startOffset;if(m<=0){if(p!=c){s.setEndBefore(j);s.collapse(false)}return r}k=j.previousSibling;while(m>0){q=k.previousSibling;o=s._traverseFullySelected(k,p);if(r){r.insertBefore(o,r.firstChild)}--m;k=q}if(p!=c){s.setEndBefore(j);s.collapse(false)}return r},_traverseCommonEndContainer:function(m,p){var s=this,r,o,j,k,q,l;if(p!=e){r=s.dom.doc.createDocumentFragment()}j=s._traverseLeftBoundary(m,p);if(r){r.appendChild(j)}o=g(m,s.endContainer);++o;k=s.endOffset-o;j=m.nextSibling;while(k>0){q=j.nextSibling;l=s._traverseFullySelected(j,p);if(r){r.appendChild(l)}--k;j=q}if(p!=c){s.setStartAfter(m);s.collapse(true)}return r},_traverseCommonAncestors:function(p,j,s){var w=this,l,v,o,q,r,k,u,m;if(s!=e){v=w.dom.doc.createDocumentFragment()}l=w._traverseLeftBoundary(p,s);if(v){v.appendChild(l)}o=p.parentNode;q=g(p,o);r=g(j,o);++q;k=r-q;u=p.nextSibling;while(k>0){m=u.nextSibling;l=w._traverseFullySelected(u,s);if(v){v.appendChild(l)}u=m;--k}l=w._traverseRightBoundary(j,s);if(v){v.appendChild(l)}if(s!=c){w.setStartAfter(p);w.collapse(true)}return v},_traverseRightBoundary:function(p,q){var s=this,l=i(s.endContainer,s.endOffset-1),r,o,n,j,k;var m=l!=s.endContainer;if(l==p){return s._traverseNode(l,m,false,q)}r=l.parentNode;o=s._traverseNode(r,false,false,q);while(r!=null){while(l!=null){n=l.previousSibling;j=s._traverseNode(l,m,false,q);if(q!=e){o.insertBefore(j,o.firstChild)}m=true;l=n}if(r==p){return o}l=r.previousSibling;r=r.parentNode;k=s._traverseNode(r,false,false,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseLeftBoundary:function(p,q){var s=this,m=i(s.startContainer,s.startOffset);var n=m!=s.startContainer,r,o,l,j,k;if(m==p){return s._traverseNode(m,n,true,q)}r=m.parentNode;o=s._traverseNode(r,false,true,q);while(r!=null){while(m!=null){l=m.nextSibling;j=s._traverseNode(m,n,true,q);if(q!=e){o.appendChild(j)}n=true;m=l}if(r==p){return o}m=r.nextSibling;r=r.parentNode;k=s._traverseNode(r,false,true,q);if(q!=e){k.appendChild(o)}o=k}return null},_traverseNode:function(j,o,r,s){var u=this,m,l,p,k,q;if(o){return u._traverseFullySelected(j,s)}if(j.nodeType==3){m=j.nodeValue;if(r){k=u.startOffset;l=m.substring(k);p=m.substring(0,k)}else{k=u.endOffset;l=m.substring(0,k);p=m.substring(k)}if(s!=c){j.nodeValue=p}if(s==e){return null}q=j.cloneNode(false);q.nodeValue=l;return q}if(s==e){return null}return j.cloneNode(false)},_traverseFullySelected:function(l,k){var j=this;if(k!=e){return k==c?l.cloneNode(true):l}l.parentNode.removeChild(l);return null}});f.Range=a})(tinymce.dom);(function(){function a(e){var d=this,h="\uFEFF",b,g;function c(j,i){if(j&&i){if(j.item&&i.item&&j.item(0)===i.item(0)){return 1}if(j.isEqual&&i.isEqual&&i.isEqual(j)){return 1}}return 0}function f(){var m=e.dom,j=e.getRng(),s=m.createRng(),p,k,n,q,o,l;function i(v){var t=v.parentNode.childNodes,u;for(u=t.length-1;u>=0;u--){if(t[u]==v){return u}}return -1}function r(v){var t=j.duplicate(),B,y,u,w,x=0,z=0,A,C;t.collapse(v);B=t.parentElement();t.pasteHTML(h);u=B.childNodes;for(y=0;y<u.length;y++){w=u[y];if(y>0&&(w.nodeType!==3||u[y-1].nodeType!==3)){z++}if(w.nodeType===3){A=w.nodeValue.indexOf(h);if(A!==-1){x+=A;break}x+=w.nodeValue.length}else{x=0}}t.moveStart("character",-1);t.text="";return{index:z,offset:x,parent:B}}n=j.item?j.item(0):j.parentElement();if(n.ownerDocument!=m.doc){return s}if(j.item||!n.hasChildNodes()){s.setStart(n.parentNode,i(n));s.setEnd(s.startContainer,s.startOffset+1);return s}l=e.isCollapsed();p=r(true);k=r(false);p.parent.normalize();k.parent.normalize();q=p.parent.childNodes[Math.min(p.index,p.parent.childNodes.length-1)];if(q.nodeType!=3){s.setStart(p.parent,p.index)}else{s.setStart(p.parent.childNodes[p.index],p.offset)}o=k.parent.childNodes[Math.min(k.index,k.parent.childNodes.length-1)];if(o.nodeType!=3){if(!l){k.index++}s.setEnd(k.parent,k.index)}else{s.setEnd(k.parent.childNodes[k.index],k.offset)}if(!l){q=s.startContainer;if(q.nodeType==1){s.setStart(q,Math.min(s.startOffset,q.childNodes.length))}o=s.endContainer;if(o.nodeType==1){s.setEnd(o,Math.min(s.endOffset,o.childNodes.length))}}d.addRange(s);return s}this.addRange=function(j){var o,m=e.dom.doc.body,p,k,q,l,n,i;q=j.startContainer;l=j.startOffset;n=j.endContainer;i=j.endOffset;o=m.createTextRange();q=q.nodeType==1?q.childNodes[Math.min(l,q.childNodes.length-1)]:q;n=n.nodeType==1?n.childNodes[Math.min(l==i?i:i-1,n.childNodes.length-1)]:n;if(q==n&&q.nodeType==1){if(/^(IMG|TABLE)$/.test(q.nodeName)&&l!=i){o=m.createControlRange();o.addElement(q)}else{o=m.createTextRange();if(!q.hasChildNodes()&&q.canHaveHTML){q.innerHTML=h}o.moveToElementText(q);if(q.innerHTML==h){o.collapse(true);q.removeChild(q.firstChild)}}if(l==i){o.collapse(i<=j.endContainer.childNodes.length-1)}o.select();return}function r(t,v){var u,s,w;if(t.nodeType!=3){return -1}u=t.nodeValue;s=m.createTextRange();t.nodeValue=u.substring(0,v)+h+u.substring(v);s.moveToElementText(t.parentNode);s.findText(h);w=Math.abs(s.moveStart("character",-1048575));t.nodeValue=u;return w}if(j.collapsed){pos=r(q,l);o=m.createTextRange();o.move("character",pos);o.select();return}else{if(q==n&&q.nodeType==3){p=r(q,l);o.move("character",p);o.moveEnd("character",i-l);o.select();return}p=r(q,l);k=r(n,i);o=m.createTextRange();if(p==-1){o.moveToElementText(q);p=0}else{o.move("character",p)}tmpRng=m.createTextRange();if(k==-1){tmpRng.moveToElementText(n)}else{tmpRng.move("character",k)}o.setEndPoint("EndToEnd",tmpRng);o.select();return}};this.getRangeAt=function(){if(!b||!c(g,e.getRng())){b=f();g=e.getRng()}return b};this.destroy=function(){g=b=null}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,i=0,d=Object.prototype.toString,n=false;var b=function(D,t,A,v){A=A||[];var e=t=t||document;if(t.nodeType!==1&&t.nodeType!==9){return[]}if(!D||typeof D!=="string"){return A}var B=[],C,y,G,F,z,s,r=true,w=o(t);p.lastIndex=0;while((C=p.exec(D))!==null){B.push(C[1]);if(C[2]){s=RegExp.rightContext;break}}if(B.length>1&&j.exec(D)){if(B.length===2&&f.relative[B[0]]){y=g(B[0]+B[1],t)}else{y=f.relative[B[0]]?[t]:b(B.shift(),t);while(B.length){D=B.shift();if(f.relative[D]){D+=B.shift()}y=g(D,y)}}}else{if(!v&&B.length>1&&t.nodeType===9&&!w&&f.match.ID.test(B[0])&&!f.match.ID.test(B[B.length-1])){var H=b.find(B.shift(),t,w);t=H.expr?b.filter(H.expr,H.set)[0]:H.set[0]}if(t){var H=v?{expr:B.pop(),set:a(v)}:b.find(B.pop(),B.length===1&&(B[0]==="~"||B[0]==="+")&&t.parentNode?t.parentNode:t,w);y=H.expr?b.filter(H.expr,H.set):H.set;if(B.length>0){G=a(y)}else{r=false}while(B.length){var u=B.pop(),x=u;if(!f.relative[u]){u=""}else{x=B.pop()}if(x==null){x=t}f.relative[u](G,x,w)}}else{G=B=[]}}if(!G){G=y}if(!G){throw"Syntax error, unrecognized expression: "+(u||D)}if(d.call(G)==="[object Array]"){if(!r){A.push.apply(A,G)}else{if(t&&t.nodeType===1){for(var E=0;G[E]!=null;E++){if(G[E]&&(G[E]===true||G[E].nodeType===1&&h(t,G[E]))){A.push(y[E])}}}else{for(var E=0;G[E]!=null;E++){if(G[E]&&G[E].nodeType===1){A.push(y[E])}}}}}else{a(G,A)}if(s){b(s,e,A,v);b.uniqueSort(A)}return A};b.uniqueSort=function(r){if(c){n=false;r.sort(c);if(n){for(var e=1;e<r.length;e++){if(r[e]===r[e-1]){r.splice(e--,1)}}}}};b.matches=function(e,r){return b(e,null,null,r)};b.find=function(x,e,y){var w,u;if(!x){return[]}for(var t=0,s=f.order.length;t<s;t++){var v=f.order[t],u;if((u=f.match[v].exec(x))){var r=RegExp.leftContext;if(r.substr(r.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");w=f.find[v](u,e,y);if(w!=null){x=x.replace(f.match[v],"");break}}}}if(!w){w=e.getElementsByTagName("*")}return{set:w,expr:x}};b.filter=function(A,z,D,t){var s=A,F=[],x=z,v,e,w=z&&z[0]&&o(z[0]);while(A&&z.length){for(var y in f.filter){if((v=f.match[y].exec(A))!=null){var r=f.filter[y],E,C;e=false;if(x==F){F=[]}if(f.preFilter[y]){v=f.preFilter[y](v,x,D,F,t,w);if(!v){e=E=true}else{if(v===true){continue}}}if(v){for(var u=0;(C=x[u])!=null;u++){if(C){E=r(C,v,u,x);var B=t^!!E;if(D&&E!=null){if(B){e=true}else{x[u]=false}}else{if(B){F.push(C);e=true}}}}}if(E!==undefined){if(!D){x=F}A=A.replace(f.match[y],"");if(!e){return[]}break}}}if(A==s){if(e==null){throw"Syntax error, unrecognized expression: "+A}else{break}}s=A}return x};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(x,e,w){var u=typeof e==="string",y=u&&!/\W/.test(e),v=u&&!y;if(y&&!w){e=e.toUpperCase()}for(var t=0,s=x.length,r;t<s;t++){if((r=x[t])){while((r=r.previousSibling)&&r.nodeType!==1){}x[t]=v||r&&r.nodeName===e?r||false:r===e}}if(v){b.filter(e,x,true)}},">":function(w,r,x){var u=typeof r==="string";if(u&&!/\W/.test(r)){r=x?r:r.toUpperCase();for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){var t=v.parentNode;w[s]=t.nodeName===r?t:false}}}else{for(var s=0,e=w.length;s<e;s++){var v=w[s];if(v){w[s]=u?v.parentNode:v.parentNode===r}}if(u){b.filter(r,w,true)}}},"":function(t,r,v){var s=i++,e=q;if(!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("parentNode",r,s,t,u,v)},"~":function(t,r,v){var s=i++,e=q;if(typeof r==="string"&&!r.match(/\W/)){var u=r=v?r:r.toUpperCase();e=m}e("previousSibling",r,s,t,u,v)}},find:{ID:function(r,s,t){if(typeof s.getElementById!=="undefined"&&!t){var e=s.getElementById(r[1]);return e?[e]:[]}},NAME:function(s,v,w){if(typeof v.getElementsByName!=="undefined"){var r=[],u=v.getElementsByName(s[1]);for(var t=0,e=u.length;t<e;t++){if(u[t].getAttribute("name")===s[1]){r.push(u[t])}}return r.length===0?null:r}},TAG:function(e,r){return r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,w,x){t=" "+t[1].replace(/\\/g,"")+" ";if(x){return t}for(var u=0,v;(v=r[u])!=null;u++){if(v){if(w^(v.className&&(" "+v.className+" ").indexOf(t)>=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){for(var s=0;e[s]===false;s++){}return e[s]&&o(e[s])?r[1]:r[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=i++;return e},ATTR:function(u,r,s,e,v,w){var t=u[1].replace(/\\/g,"");if(!w&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if(u[3].match(p).length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return e[3]-0==r},eq:function(s,r,e){return e[3]-0==r}},filter:{PSEUDO:function(w,s,t,x){var r=s[1],u=f.filters[r];if(u){return u(w,t,s,x)}else{if(r==="contains"){return(w.textContent||w.innerText||"").indexOf(s[3])>=0}else{if(r==="not"){var v=s[3];for(var t=0,e=v.length;t<e;t++){if(v[t]===w){return false}}return true}}}},CHILD:function(e,t){var w=t[1],r=e;switch(w){case"only":case"first":while(r=r.previousSibling){if(r.nodeType===1){return false}}if(w=="first"){return true}r=e;case"last":while(r=r.nextSibling){if(r.nodeType===1){return false}}return true;case"nth":var s=t[2],z=t[3];if(s==1&&z==0){return true}var v=t[0],y=e.parentNode;if(y&&(y.sizcache!==v||!e.nodeIndex)){var u=0;for(r=y.firstChild;r;r=r.nextSibling){if(r.nodeType===1){r.nodeIndex=++u}}y.sizcache=v}var x=e.nodeIndex-z;if(s==0){return x==0}else{return(x%s==0&&x/s>=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),w=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?w===r:u==="*="?w.indexOf(r)>=0:u==="~="?(" "+w+" ").indexOf(r)>=0:!r?w&&e!==false:u==="!="?w!=r:u==="^="?w.indexOf(r)===0:u==="$="?w.substr(w.length-r.length)===r:u==="|="?w===r||w.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var j=f.match.POS;for(var l in f.match){f.match[l]=new RegExp(f.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var a=function(r,e){r=Array.prototype.slice.call(r);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(k){a=function(u,t){var r=t||[];if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var s=0,e=u.length;s<e;s++){r.push(u[s])}}else{for(var s=0;u[s];s++){r.push(u[s])}}}return r}}var c;if(document.documentElement.compareDocumentPosition){c=function(r,e){var s=r.compareDocumentPosition(e)&4?-1:r===e?0:1;if(s===0){n=true}return s}}else{if("sourceIndex" in document.documentElement){c=function(r,e){var s=r.sourceIndex-e.sourceIndex;if(s===0){n=true}return s}}else{if(document.createRange){c=function(t,r){var s=t.ownerDocument.createRange(),e=r.ownerDocument.createRange();s.setStart(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var u=s.compareBoundaryPoints(Range.START_TO_END,e);if(u===0){n=true}return u}}}}(function(){var r=document.createElement("div"),s="script"+(new Date).getTime();r.innerHTML="<a name='"+s+"'/>";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(!!document.getElementById(s)){f.find.ID=function(u,v,w){if(typeof v.getElementById!=="undefined"&&!w){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r)})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="<p class='TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(w,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!o(v)){try{return a(v.querySelectorAll(w),t)}catch(x){}}return e(w,v,t,u)};for(var r in e){b[r]=e[r]}})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}}})()}function m(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1&&!z){e.sizcache=v;e.sizset=t}if(e.nodeName===w){u=e;break}e=e[r]}A[t]=u}}}function q(r,w,v,A,x,z){var y=r=="previousSibling"&&!z;for(var t=0,s=A.length;t<s;t++){var e=A[t];if(e){if(y&&e.nodeType===1){e.sizcache=v;e.sizset=t}e=e[r];var u=false;while(e){if(e.sizcache===v){u=A[e.sizset];break}if(e.nodeType===1){if(!z){e.sizcache=v;e.sizset=t}if(typeof w!=="string"){if(e===w){u=true;break}}else{if(b.filter(w,[e]).length>0){u=e;break}}}e=e[r]}A[t]=u}}}var h=document.compareDocumentPosition?function(r,e){return r.compareDocumentPosition(e)&16}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};var o=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,x){var t=[],u="",v,s=x.nodeType?[x]:x;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var w=0,r=s.length;w<r;w++){b(e,s[w],t)}return b.filter(u,t)};window.tinymce.dom.Sizzle=b})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("static tinymce.dom.Event",{inits:[],events:[],add:function(m,p,l,j){var g,h=this,i=h.events,k;if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){n=n||window.event;if(n&&!n.target&&b){n.target=n.srcElement}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},_unload:function(){var g=a;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(){var g=a;if(g.domLoaded){return}g._remove(window,"DOMContentLoaded",g._pageInit);g.domLoaded=true;f(g.inits,function(h){h()});g.inits=[]},_wait:function(){if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){a.domLoaded=1;return}if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);a._pageInit()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(a.domLoaded){return}try{document.documentElement.doScroll("left")}catch(g){setTimeout(arguments.callee,0);return}a._pageInit()})()}}else{if(document.addEventListener){a._add(window,"DOMContentLoaded",a._pageInit,a)}}a._add(window,"load",a._pageInit,a)}});a=d.dom.Event;a._wait();d.addUnload(a._unload)})(tinymce);(function(a){var b=a.each;a.create("tinymce.dom.Element",{Element:function(g,e){var c=this,f,d;e=e||{};c.id=g;c.dom=f=e.dom||a.DOM;c.settings=e;if(!a.isIE){d=c.dom.get(c.id)}b(["getPos","getRect","getParent","add","setStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","addClass","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","show","hide","isHidden","setHTML","get"],function(h){c[h]=function(){var j=[g],k;for(k=0;k<arguments.length;k++){j.push(arguments[k])}j=f[h].apply(f,j);c.update(h);return j}})},on:function(e,d,c){return a.dom.Event.add(this.id,e,d,c)},getXY:function(){return{x:parseInt(this.getStyle("left")),y:parseInt(this.getStyle("top"))}},getSize:function(){var c=this.dom.get(this.id);return{w:parseInt(this.getStyle("width")||c.clientWidth),h:parseInt(this.getStyle("height")||c.clientHeight)}},moveTo:function(c,d){this.setStyles({left:c,top:d})},moveBy:function(c,e){var d=this.getXY();this.moveTo(d.x+c,d.y+e)},resizeTo:function(c,d){this.setStyles({width:c,height:d})},resizeBy:function(c,e){var d=this.getSize();this.resizeTo(d.w+c,d.h+e)},update:function(d){var e=this,c,f=e.dom;if(a.isIE6&&e.settings.blocker){d=d||"";if(d.indexOf("get")===0||d.indexOf("has")===0||d.indexOf("is")===0){return}if(d=="remove"){f.remove(e.blocker);return}if(!e.blocker){e.blocker=f.uniqueId();c=f.add(e.settings.container||f.getRoot(),"iframe",{id:e.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});f.setStyle(c,"opacity",0)}else{c=f.get(e.blocker)}f.setStyle(c,"left",e.getStyle("left",1));f.setStyle(c,"top",e.getStyle("top",1));f.setStyle(c,"width",e.getStyle("width",1));f.setStyle(c,"height",e.getStyle("height",1));f.setStyle(c,"display",e.getStyle("display",1));f.setStyle(c,"zIndex",parseInt(e.getStyle("zIndex",1)||0)-1)}}})})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}c.addUnload(f.destroy,f)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML=h.item?h.item(0).outerHTML:h.htmlText}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(i,g){var f=this,j=f.getRng(),l,k=f.win.document;g=g||{format:"html"};g.set=true;i=g.content=f.dom.processHTML(i);f.onBeforeSetContent.dispatch(f,g);i=g.content;if(j.insertNode){i+='<span id="__caret">_</span>';j.deleteContents();j.insertNode(f.getRng().createContextualFragment(i));l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndAfter(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(1);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.firstChild}return h}else{h=g.startContainer;if(h.nodeName=="BODY"){return h.firstChild}return f.dom.getParent(h,"*")}},getEnd:function(){var f=this,g=f.getRng(),h;if(a){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);h=g.parentElement();if(h&&h.nodeName=="BODY"){return h.lastChild}return h}else{h=g.endContainer;if(h.nodeName=="BODY"){return h.lastChild}return f.dom.getParent(h,"*")}},getBookmark:function(x){var j=this,m=j.getRng(),f,n,l,u=j.dom.getViewPort(j.win),v,p,z,o,w=-16777215,k,h=j.dom.getRoot(),g=0,i=0,y;n=u.x;l=u.y;if(x=="simple"){return{rng:m,scrollX:n,scrollY:l}}if(a){if(m.item){v=m.item(0);d(j.dom.select(v.nodeName),function(s,r){if(v==s){p=r;return false}});return{tag:v.nodeName,index:p,scrollX:n,scrollY:l}}f=j.dom.doc.body.createTextRange();f.moveToElementText(h);f.collapse(true);z=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(true);p=Math.abs(f.move("character",w));f=m.duplicate();f.collapse(false);o=Math.abs(f.move("character",w))-p;return{start:p-z,length:o,scrollX:n,scrollY:l}}v=j.getNode();k=j.getSel();if(!k){return null}if(v&&v.nodeName=="IMG"){return{scrollX:n,scrollY:l}}function q(A,D,t){var s=j.dom.doc.createTreeWalker(A,NodeFilter.SHOW_TEXT,null,false),E,B=0,C={};while((E=s.nextNode())!=null){if(E==D){C.start=B}if(E==t){C.end=B;return C}B+=e(E.nodeValue||"").length}return null}if(k.anchorNode==k.focusNode&&k.anchorOffset==k.focusOffset){v=q(h,k.anchorNode,k.focusNode);if(!v){return{scrollX:n,scrollY:l}}e(k.anchorNode.nodeValue||"").replace(/^\s+/,function(r){g=r.length});return{start:Math.max(v.start+k.anchorOffset-g,0),end:Math.max(v.end+k.focusOffset-g,0),scrollX:n,scrollY:l,beg:k.anchorOffset-g==0}}else{v=q(h,m.startContainer,m.endContainer);if(!v){return{scrollX:n,scrollY:l}}return{start:Math.max(v.start+m.startOffset-g,0),end:Math.max(v.end+m.endOffset-i,0),scrollX:n,scrollY:l,beg:m.startOffset-g==0}}},moveToBookmark:function(n){var o=this,g=o.getRng(),p=o.getSel(),j=o.dom.getRoot(),m,h,k;function i(q,t,D){var B=o.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,false),x,s=0,A={},u,C,z,y;while((x=B.nextNode())!=null){z=y=0;k=x.nodeValue||"";h=e(k).length;s+=h;if(s>=t&&!A.startNode){u=t-(s-h);if(n.beg&&u>=h){continue}A.startNode=x;A.startOffset=u+y}if(s>=D){A.endNode=x;A.endOffset=D-(s-h)+y;return A}}return null}if(!n){return false}o.win.scrollTo(n.scrollX,n.scrollY);if(a){if(g=n.rng){try{g.select()}catch(l){}return true}o.win.focus();if(n.tag){g=j.createControlRange();d(o.dom.select(n.tag),function(r,q){if(q==n.index){g.addElement(r)}})}else{try{if(n.start<0){return true}g=p.createRange();g.moveToElementText(j);g.collapse(true);g.moveStart("character",n.start);g.moveEnd("character",n.length)}catch(f){return true}}try{g.select()}catch(l){}return true}if(!p){return false}if(n.rng){p.removeAllRanges();p.addRange(n.rng)}else{if(b(n.start)&&b(n.end)){try{m=i(j,n.start,n.end);if(m){g=o.dom.doc.createRange();g.setStart(m.startNode,m.startOffset);g.setEnd(m.endNode,m.endOffset);p.removeAllRanges();p.addRange(g)}if(!c.isOpera){o.win.focus()}}catch(l){}}}},select:function(g,l){var p=this,f=p.getRng(),q=p.getSel(),o,m,k,j=p.win.document;function h(u,t){var s,r;if(u){s=j.createTreeWalker(u,NodeFilter.SHOW_TEXT,null,false);while(u=s.nextNode()){r=u;if(c.trim(u.nodeValue).length!=0){if(t){return u}else{r=u}}}}return r}if(a){try{o=j.body;if(/^(IMG|TABLE)$/.test(g.nodeName)){f=o.createControlRange();f.addElement(g)}else{f=o.createTextRange();f.moveToElementText(g)}f.select()}catch(i){}}else{if(l){m=h(g,1)||p.dom.select("br:first",g)[0];k=h(g,0)||p.dom.select("br:last",g)[0];if(m&&k){f=j.createRange();if(m.nodeName=="BR"){f.setStartBefore(m)}else{f.setStart(m,0)}if(k.nodeName=="BR"){f.setEndBefore(k)}else{f.setEnd(k,k.nodeValue.length)}}else{f.selectNode(g)}}else{f.selectNode(g)}p.setRng(f)}return g},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}return !g||h.boundingWidth==0||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=a?g.win.document.body.createTextRange():g.win.document.createRange()}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){h.removeAllRanges();h.addRange(i)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var f=this,h=f.getRng(),g=f.getSel(),i;if(!a){if(!h){return f.dom.getRoot()}i=h.commonAncestorContainer;if(!h.collapsed){if(c.isWebKit&&g.anchorNode&&g.anchorNode.nodeType==1){return g.anchorNode.childNodes[g.anchorOffset]}if(h.startContainer==h.endContainer){if(h.startOffset-h.endOffset<2){if(h.startContainer.hasChildNodes()){i=h.startContainer.childNodes[h.startOffset]}}}}return f.dom.getParent(i,"*")}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATA(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,"&gt;")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:1},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("</"+b+">")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("</"+this.tags.pop()+">");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("<![CDATA["+b+"]]>");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("<!-- "+b+"-->");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case'"':return"&quot;"}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",bool_attrs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:"*[*]",extended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^<br \/>\s*<\//.test(n)){return"</"+o+">"}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,y,w=["ol","ul"],u,t,q,k=/^(OL|UL)$/,z;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p<o.length;p++){if(r.nodeName==o[p]){return r}}}return null}for(y=0;y<w.length;y++){l=i.dom.select(w[y],s.node);for(u=0;u<l.length;u++){t=l[u];q=t.parentNode;if(k.test(q.nodeName)){z=m(t,"LI");if(!z){z=i.dom.create("li");z.innerHTML="&nbsp;";z.appendChild(t);q.insertBefore(z,q.firstChild)}else{z.appendChild(t)}}}}})}if(j.fix_table_elements){i.onPreProcess.add(function(k,l){f(i.dom.select("p table",l.node),function(m){i.dom.split(i.dom.getParent(m,"p"),m)})})}},setEntities:function(p){var n=this,j,m,h={},o="",k;if(n.entityLookup){return}j=p.split(",");for(m=0;m<j.length;m+=2){k=j[m];if(k==34||k==38||k==60||k==62){continue}h[String.fromCharCode(j[m])]=j[m+1];k=parseInt(j[m]).toString(16);o+="\\u"+"0000".substring(k.length)+k}if(!o){n.settings.entity_encoding="raw";return}n.entitiesRE=new RegExp("["+o+"]","g");n.entityLookup=h},setValidChildRules:function(h){this.childRules=null;this.addValidChildRules(h)},addValidChildRules:function(k){var j=this,l,h,i;if(!k){return}l="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";h="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";i="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";f(k.split(","),function(n){var o=n.split(/\[|\]/),m;n="";f(o[1].split("|"),function(p){if(n){n+="|"}switch(p){case"%itrans":p=h;break;case"%itrans_na":p=h.substring(2);break;case"%istrict":p=l;break;case"%istrict_na":p=l.substring(2);break;case"%btrans":p=i;break;case"%bstrict":p=i;break}n+=p});m=new RegExp("^("+n.toLowerCase()+")$","i");f(o[0].split("/"),function(p){j.childRules=j.childRules||{};j.childRules[p]=m})});k="";f(j.childRules,function(n,m){if(k){k+="|"}k+=m});j.parentElementsRE=new RegExp("^("+k.toLowerCase()+")$","i")},setRules:function(i){var h=this;h._setup();h.rules={};h.wildRules=[];h.validElements={};return h.addRules(i)},addRules:function(i){var h=this,j;if(!i){return}h._setup();f(i.split(","),function(m){var q=m.split(/\[|\]/),l=q[0].split("/"),r,k,o,n=[];if(j){k=e.extend([],j.attribs)}if(q.length>1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t<k.length;t++){if(k[t].name==u[2]){k.splice(t,1);return}}}switch(u[3]){case"=":p.defaultVal=u[4]||"";break;case":":p.forcedVal=u[4];break;case"<":p.validVals=u[4].split("?");break}if(/[*.?]/.test(u[2])){o=o||[];p.nameRE=new RegExp("^"+c(u[2])+"$");o.push(p)}else{p.name=u[2];k.push(p)}n.push(u[2])})}f(l,function(v,u){var w=v.charAt(0),t=1,p={};if(j){if(j.noEmpty){p.noEmpty=j.noEmpty}if(j.fullEnd){p.fullEnd=j.fullEnd}if(j.padd){p.padd=j.padd}}switch(w){case"-":p.noEmpty=true;break;case"+":p.fullEnd=true;break;case"#":p.padd=true;break;default:t=0}l[u]=v=v.substring(t);h.validElements[v]=1;if(/[*.?]/.test(l[0])){p.nameRE=new RegExp("^"+c(l[0])+"$");h.wildRules=h.wildRules||{};h.wildRules.push(p)}else{p.name=l[0];if(l[0]=="@"){j=p}h.rules[v]=p}p.attribs=k;if(r){p.requiredAttribs=r}if(o){v="";f(n,function(s){if(v){v+="|"}v+="("+c(s)+")"});p.validAttribsRE=new RegExp("^"+v.toLowerCase()+"$");p.wildAttribs=o}})});i="";f(h.validElements,function(m,l){if(i){i+="|"}if(l!="@"){i+=l}});h.validElementsRE=new RegExp("^("+c(i.toLowerCase())+")$")},findRule:function(m){var j=this,l=j.rules,h,k;j._setup();k=l[m];if(k){return k}l=j.wildRules;for(h=0;h<l.length;h++){if(l[h].nameRE.test(m)){return l[h]}}return null},findAttribRule:function(h,l){var j,k=h.wildAttribs;for(j=0;j<k.length;j++){if(k[j].nameRE.test(l)){return k[j]}}return null},serialize:function(l,k){var j,i=this;i._setup();k=k||{};k.format=k.format||"html";i.processObj=k;l=l.cloneNode(true);i.key=""+(parseInt(i.key)+1);if(!k.no_events){k.node=l;i.onPreProcess.dispatch(i,k)}i.writer.reset();i._serializeNode(l,k.getInner);k.content=i.writer.getContent();if(!k.no_events){i.onPostProcess.dispatch(i,k)}i._postProcess(k);k.node=null;return e.trim(k.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?"<p$1>&#160;</p>":"<p$1>&nbsp;</p>");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"</$1>")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"</$1>\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,"<![CDATA[$1]]>");if(k.entity_encoding=="raw"){j=j.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&nbsp;<\/p>/g,"<p$1>\u00a0</p>")}}n.content=j},_serializeNode:function(C,m){var y=this,z=y.settings,u=y.writer,p,j,r,E,D,F,A,h,x,k,q,B,o;if(!z.node_filter||z.node_filter(C)){switch(C.nodeType){case 1:if(C.hasAttribute?C.hasAttribute("mce_bogus"):C.getAttribute("mce_bogus")){return}o=false;p=C.hasChildNodes();k=C.getAttribute("mce_name")||C.nodeName.toLowerCase();if(d){if(C.scopeName!=="HTML"&&C.scopeName!=="html"){k=C.scopeName+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!y.validElementsRE.test(k)||(y.invalidElementsRE&&y.invalidElementsRE.test(k))||m){o=true;break}if(d){if(z.fix_content_duplication){if(C.mce_serialized==y.key){return}C.mce_serialized=y.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(C.nodeName==="BR"&&C.getAttribute("type")=="_moz"){return}}}if(y.childRules){if(y.parentElementsRE.test(y.elementName)){if(!y.childRules[y.elementName].test(k)){o=true;break}}y.elementName=k}q=y.findRule(k);k=q.name||k;if((!p&&q.noEmpty)||(d&&!k)){o=true;break}if(q.requiredAttribs){F=q.requiredAttribs;for(E=F.length-1;E>=0;E--){if(this.dom.getAttrib(C,F[E])!==""){break}}if(E==-1){o=true;break}}u.writeStartElement(k);if(q.attribs){for(E=0,A=q.attribs,D=A.length;E<D;E++){F=A[E];x=y._getAttrib(C,F);if(x!==null){u.writeAttribute(F.name,x)}}}if(q.validAttribsRE){A=y.dom.getAttribs(C);for(E=A.length-1;E>-1;E--){h=A[E];if(h.specified){F=h.nodeName.toLowerCase();if(z.invalid_attrs.test(F)||!q.validAttribsRE.test(F)){continue}B=y.findAttribRule(q,F);x=y._getAttrib(C,B,F);if(x!==null){u.writeAttribute(F,x)}}}}if(q.padd){if(p&&(r=C.firstChild)&&r.nodeType===1&&C.childNodes.length===1){if(r.hasAttribute?r.hasAttribute("mce_bogus"):r.getAttribute("mce_bogus")){u.writeText("\u00a0")}}else{if(!p){u.writeText("\u00a0")}}}break;case 3:if(y.childRules&&y.parentElementsRE.test(y.elementName)){if(!y.childRules[y.elementName].test(C.nodeName)){return}}return u.writeText(C.nodeValue);case 4:return u.writeCDATA(C.nodeValue);case 8:return u.writeComment(C.nodeValue)}}else{if(C.nodeType==1){p=C.hasChildNodes()}}if(p){r=C.firstChild;while(r){y._serializeNode(r);y.elementName=k;r=r.nextSibling}}if(!o){if(p||!z.closed.test(k)){u.writeFullEndElement()}else{u.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+"<!--mce:"+(j.items.length-1)+"-->"+p}))});return j},_unprotect:function(i,j){i=i.replace(/\<!--mce:([0-9]+)--\>/g,function(k,h){return j.items[parseInt(h)]});j.items=[];return i},_encode:function(m){var j=this,k=j.settings,i;if(k.entity_encoding!=="raw"){if(k.entity_encoding.indexOf("named")!=-1){j.setEntities(k.entities);i=j.entityLookup;m=m.replace(j.entitiesRE,function(h){var l;if(l=i[h]){h="&"+l+";"}return h})}if(k.entity_encoding.indexOf("numeric")!=-1){m=m.replace(/[\u007E-\uFFFF]/g,function(h){return"&#"+h.charCodeAt(0)+";"})}}return m},_setup:function(){var h=this,i=this.settings;if(h.done){return}h.done=1;h.setRules(i.valid_elements);h.addRules(i.extended_valid_elements);h.addValidChildRules(i.valid_child_elements);if(i.invalid_elements){h.invalidElementsRE=new RegExp("^("+c(i.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}if(i.attrib_value_filter){h.attribValueFilter=i.attribValueFilter}},_getAttrib:function(m,j,h){var l,k;h=h||j.name;if(j.forcedVal&&(k=j.forcedVal)){if(k==="{$uid}"){return this.dom.uniqueId()}return k}k=this.dom.getAttrib(m,h);if(this.settings.bool_attrs.test(h)&&k){k=(""+k).toLowerCase();if(k==="false"||k==="0"){return null}k=h}switch(h){case"rowspan":case"colspan":if(k=="1"){k=""}break}if(this.attribValueFilter){k=this.attribValueFilter(h,k,m)}if(j.validVals){for(l=j.validVals.length-1;l>=0;l--){if(k==j.validVals[l]){break}}if(l==-1){return null}}if(k===""&&typeof(j.defaultVal)!="undefined"){k=j.defaultVal;if(k==="{$uid}"){return this.dom.uniqueId()}return k}else{if(h=="class"&&this.processObj.get){k=k.replace(/\s?mceItem\w+\s?/g,"")}}if(k===""){return null}return k}})})(tinymce);(function(tinymce){var each=tinymce.each,Event=tinymce.dom.Event;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(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.dom.ScriptLoader.loadScript(o.url,function(){done(o);allDone()})}each(sc,function(o){var u=o.url;if(!lo[u]){lo[u]=o;t.queue.push(o)}else{o=lo[u]}if(o.state>0){return}if(!Event.domLoaded&&!t.settings.strict_mode){var ix,ol="";if(cb||o.func){o.state=1;ix=tinymce.dom.ScriptLoader._addOnLoad(function(){done(o);allDone()});if(tinymce.isIE){ol=' onreadystatechange="'}else{ol=' onload="'}ol+="tinymce.dom.ScriptLoader._onLoad(this,'"+u+"',"+ix+');"'}document.write('<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)}},loadScript:function(u,cb){var id=tinymce.DOM.uniqueId(),e;function done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);cb=0}}if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),async:false,success:function(co){window.execScript(co);done()}})}else{e=tinymce.DOM.create("script",{id:id,type:"text/javascript",src:tinymce._addVer(u)});Event.add(e,"load",done);(document.getElementsByTagName("head")[0]||document.body).appendChild(e)}}}});tinymce.ScriptLoader=new tinymce.dom.ScriptLoader()})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(e,d){this.id=e;this.settings=d=d||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=d.scope||this;this.disabled=0;this.active=0},setDisabled:function(d){var f;if(d!=this.disabled){f=b.get(this.id);if(f&&this.settings.unavailable_prefix){if(d){this.prevTitle=f.title;f.title=this.settings.unavailable_prefix+": "+f.title}else{f.title=this.prevTitle}}this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(b,a){this.parent(b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator"},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(w){var h,t,s;w=w.target;if(w&&(w=c.getParent(w,"tr"))){h=z.items[w.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(w&&c.hasClass(w,m+"ItemSub")){t=c.getRect(w);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}z.onShowMenu.dispatch(z);if(A.keyboard_focus){a.add(o,"keydown",z._keyHandler,z);c.select("a","menu_"+z.id)[0].focus();z._focusIdx=0}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);a.remove(h,"mouseover",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000"});k=c.add(g,"div",{id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_keyHandler:function(j){var i=this,h=j.keyCode;function g(m){var k=i._focusIdx+m,l=c.select("a","menu_"+i.id)[k];if(l){i._focusIdx=k;l.focus()}}switch(h){case 38:g(-1);return;case 40:g(1);return;case 13:return;case 27:return this.hideMenu()}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,"td");i=p=c.add(i,"a",{href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(d,c){this.parent(d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" title="'+a.encode(e.title)+'">';if(e.image){d+='<img class="mceIcon" src="'+e.image+'" />'+c+"</a>"}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")+"</a>"}return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(h,g){var f=this;f.parent(h,g);f.items=[];f.onChange=new a(f);f.onPostRender=new a(f);f.onAdd=new a(f);f.onRenderMenu=new d.util.Dispatcher(this);f.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle")}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<table id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("a",{id:f.id+"_text",href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},"<span></span>")+"</td>";i+="</tr></tbody></table>";return i},showMenu:function(){var g=this,j,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}j=c.getPos(this.settings.menu_container);i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(k){if(k.value===g.selectedValue){f.items[k.id].setSelected(1);g.oldID=k.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(g.hideMenu,g);f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id+"_text","focus",function(h){if(!f._focused){f.keyDownHandler=b.add(f.id+"_text","keydown",function(l){var i=-1,j,k=l.keyCode;e(f.items,function(m,n){if(f.selectedValue==m.value){i=n}});if(k==38){j=f.items[i-1]}else{if(k==40){j=f.items[i+1]}else{if(k==13){j=f.selectedValue;f.selectedValue=null;f.settings.onselect(j);return b.cancel(l)}}}if(j){f.hideMenu();f.select(j.value)}})}f._focused=1});b.add(f.id+"_text","blur",function(){b.remove(f.id+"_text","keydown",f.keyDownHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return c.get(this.id).options.length-1},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox"},g);return g},postRender:function(){var g=this,h;g.rendered=true;function f(j){var i=g.items[j.target.selectedIndex-1];if(i&&(i=i.value)){g.onChange.dispatch(g,i);if(g.settings.onselect){g.settings.onselect(i)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(j){var i;b.remove(g.id,"change",h);i=b.add(g.id,"blur",function(){b.add(g.id,"change",f);b.remove(g.id,"blur",i)});if(j.keyCode==13||j.keyCode==32){f(j);return b.cancel(j)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(f,e){this.parent(f,e);this.onRenderMenu=new c.util.Dispatcher(this);e.menu_container=e.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(f.hideMenu,f);f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(f,e){this.parent(f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,"class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}i+="<td>"+b.createHTML("a",{id:f.id+"_action",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]});i+="<td>"+b.createHTML("a",{id:f.id+"_open",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";return b.createHTML("table",{id:f.id,"class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return false;",title:g.title},i)},postRender:function(){var e=this,f=e.settings;if(f.onclick){a.add(e.id+"_action","click",function(){if(!e.isDisabled()){f.onclick(e.value)}})}a.add(e.id+"_open","click",e.showMenu,e);a.add(e.id+"_open","focus",function(){e._focused=1});a.add(e.id+"_open","blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(h,g){var f=this;f.parent(h,g);f.settings=g=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},f.settings);f.onShowMenu=new d.util.Dispatcher(f);f.onHideMenu=new d.util.Dispatcher(f);f.value=g.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.onShowMenu.dispatch(f);f.isMenuVisible=1},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.onHideMenu.dispatch(f);f.isMenuVisible=0},renderMenu:function(){var k=this,f,j=0,l=k.settings,p,h,o,g;g=c.add(l.menu_container,"div",{id:k.id+"_menu","class":l.menu_class+" "+l["class"],style:"position:absolute;left:0;top:-1000px;"});f=c.add(g,"div",{"class":l["class"]+" mceSplitButtonMenu"});c.add(f,"span",{"class":"mceMenuLine"});p=c.add(f,"table",{"class":"mceColorSplitMenu"});h=c.add(p,"tbody");j=0;e(b(l.colors,"array")?l.colors:l.colors.split(","),function(i){i=i.replace(/^#/,"");if(!j--){o=c.add(h,"tr");j=l.grid_width-1}p=c.add(o,"td");p=c.add(p,"a",{href:"javascript:;",style:{backgroundColor:"#"+i},mce_color:"#"+i})});if(l.more_colors_func){p=c.add(h,"tr");p=c.add(p,"td",{colspan:l.grid_width,"class":"mceMoreColors"});p=c.add(p,"a",{id:k.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},l.more_colors_title);a.add(p,"click",function(i){l.more_colors_func.call(l.more_colors_scope||this);return a.cancel(i)})}c.addClass(f,"mceColorSplitMenu");a.add(k.id+"_menu","click",function(i){var m;i=i.target;if(i.nodeName=="A"&&(m=i.getAttribute("mce_color"))){k.setColor(m)}return a.cancel(i)});return g},setColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g;f.hideMenu();f.settings.onselect(g)},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var l=this,e="",g,j,b=tinymce.DOM,m=l.settings,d,a,f,k;k=l.controls;for(d=0;d<k.length;d++){j=k[d];a=k[d-1];f=k[d+1];if(d===0){g="mceToolbarStart";if(j.Button){g+=" mceToolbarStartButton"}else{if(j.SplitButton){g+=" mceToolbarStartSplitButton"}else{if(j.ListBox){g+=" mceToolbarStartListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,"<!-- IE -->"))}}if(b.stdMode){e+='<td style="position: relative">'+j.renderHTML()+"</td>"}else{e+="<td>"+j.renderHTML()+"</td>"}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,"<!-- IE -->"))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},"<tbody><tr>"+e+"</tr></tbody>")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(f){var d,e=b.EditorManager.settings;if(e&&e.language){d=this.urls[f]+"/langs/"+e.language+".js";if(!b.dom.Event.domLoaded&&!e.strict_mode){b.ScriptLoader.load(d)}else{b.ScriptLoader.add(d)}}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(f){var g=f.each,h=f.extend,e=f.DOM,a=f.dom.Event,c=f.ThemeManager,b=f.PluginManager,d=f.explode;f.create("static tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:function(){var i=this,j=window.location;f.documentBaseURL=j.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(f.documentBaseURL)){f.documentBaseURL+="/"}f.baseURL=new f.util.URI(f.documentBaseURL).toAbsolute(f.baseURL);f.EditorManager.baseURI=new f.util.URI(f.baseURL);if(document.domain&&j.hostname!=document.domain){f.relaxedDomain=document.domain}i.onBeforeUnload=new f.util.Dispatcher(i);a.add(window,"beforeunload",function(k){i.onBeforeUnload.dispatch(i,k)})},init:function(q){var p=this,l,k=f.ScriptLoader,o,n,i=[],m;function j(u,v,r){var t=u[v];if(!t){return}if(f.is(t,"string")){r=t.replace(/\.\w+$/,"");r=r?f.resolve(r):0;t=f.resolve(t)}return t.apply(r||this,Array.prototype.slice.call(arguments,2))}q=h({theme:"simple",language:"en",strict_loading_mode:document.contentType=="application/xhtml+xml"},q);p.settings=q;if(!a.domLoaded&&!q.strict_loading_mode){if(q.language){k.add(f.baseURL+"/langs/"+q.language+".js")}if(q.theme&&q.theme.charAt(0)!="-"&&!c.urls[q.theme]){c.load(q.theme,"themes/"+q.theme+"/editor_template"+f.suffix+".js")}if(q.plugins){l=d(q.plugins);if(f.inArray(l,"compat2x")!=-1){b.load("compat2x","plugins/compat2x/editor_plugin"+f.suffix+".js")}g(l,function(r){if(r&&r.charAt(0)!="-"&&!b.urls[r]){if(!f.isWebKit&&r=="safari"){return}b.load(r,"plugins/"+r+"/editor_plugin"+f.suffix+".js")}})}k.loadQueue()}a.add(document,"init",function(){var r,t;j(q,"onpageload");if(q.browsers){r=false;g(d(q.browsers),function(u){switch(u){case"ie":case"msie":if(f.isIE){r=true}break;case"gecko":if(f.isGecko){r=true}break;case"safari":case"webkit":if(f.isWebKit){r=true}break;case"opera":if(f.isOpera){r=true}break}});if(!r){return}}switch(q.mode){case"exact":r=q.elements||"";if(r.length>0){g(d(r),function(u){if(e.get(u)){m=new f.Editor(u,q);i.push(m);m.render(1)}else{o=0;g(document.forms,function(v){g(v.elements,function(w){if(w.name===u){u="mce_editor_"+o;e.setAttrib(w,"id",u);m=new f.Editor(u,q);i.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function s(v,u){return u.constructor===RegExp?u.test(v.className):e.hasClass(v,u)}g(e.select("textarea"),function(u){if(q.editor_deselector&&s(u,q.editor_deselector)){return}if(!q.editor_selector||s(u,q.editor_selector)){n=e.get(u.name);if(!u.id&&!n){u.id=u.name}if(!u.id||p.get(u.id)){u.id=e.uniqueId()}m=new f.Editor(u.id,q);i.push(m);m.render(1)}});break}if(q.oninit){r=t=0;g(i,function(u){t++;if(!u.initialized){u.onInit.add(function(){r++;if(r==t){j(q,"oninit")}})}else{r++}if(r==t){j(q,"oninit")}})}})},get:function(i){return this.editors[i]},getInstanceById:function(i){return this.get(i)},add:function(i){this.editors[i.id]=i;this._setActive(i);return i},remove:function(j){var i=this;if(!i.editors[j.id]){return null}delete i.editors[j.id];if(i.activeEditor==j){g(i.editors,function(k){i._setActive(k);return false})}j.destroy();return j},execCommand:function(o,m,l){var n=this,k=n.get(l),i;switch(o){case"mceFocus":k.focus();return true;case"mceAddEditor":case"mceAddControl":if(!n.get(l)){new f.Editor(l,n.settings).render()}return true;case"mceAddFrameControl":i=l.window;i.tinyMCE=tinyMCE;i.tinymce=f;f.DOM.doc=i.document;f.DOM.win=i;k=new f.Editor(l.element_id,l);k.render();if(f.isIE){function j(){k.destroy();i.detachEvent("onunload",j);i=i.tinyMCE=i.tinymce=null}i.attachEvent("onunload",j)}l.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(k){k.remove()}return true;case"mceToggleEditor":if(!k){n.execCommand("mceAddControl",0,l);return true}if(k.isHidden()){k.show()}else{k.hide()}return true}if(n.activeEditor){return n.activeEditor.execCommand(o,m,l)}return false},execInstanceCommand:function(m,l,k,j){var i=this.get(m);if(i){return i.execCommand(l,k,j)}return false},triggerSave:function(){g(this.editors,function(i){i.save()})},addI18n:function(k,l){var i,j=this.i18n;if(!f.is(k,"string")){g(k,function(n,m){g(n,function(q,p){g(q,function(s,r){if(p==="common"){j[m+"."+r]=s}else{j[m+"."+p+"."+r]=s}})})})}else{g(l,function(n,m){j[k+"."+m]=n})}},_setActive:function(i){this.selectedInstance=this.activeEditor=i}});f.EditorManager.preInit()})(tinymce);var tinyMCE=window.tinyMCE=tinymce.EditorManager;(function(n){var o=n.DOM,k=n.dom.Event,f=n.extend,l=n.util.Dispatcher;var j=n.each,a=n.isGecko,b=n.isIE,e=n.isWebKit;var d=n.is,h=n.ThemeManager,c=n.PluginManager,i=n.EditorManager;var p=n.inArray,m=n.grep,g=n.explode;n.create("tinymce.Editor",{Editor:function(u,r){var q=this;q.id=q.editorId=u;q.execCommands={};q.queryStateCommands={};q.queryValueCommands={};q.plugins={};j(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){q[s]=new l(q)});q.settings=r=f({id:u,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:n.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],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,removeformat_selector:"span,b,strong,em,i,font,u,strike"},r);q.documentBaseURI=new n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseURI});q.baseURI=i.baseURI;q.execCallback("setup",q)},render:function(u){var v=this,w=v.settings,x=v.id,q=n.ScriptLoader;if(!k.domLoaded){k.add(document,"init",function(){v.render()});return}if(!u){w.strict_loading_mode=1;tinyMCE.settings=w}if(!v.getElement()){return}if(w.strict_loading_mode){q.settings.strict_mode=w.strict_loading_mode;n.DOM.settings.strict=1}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&w.hidden_input&&o.getParent(x,"form")){o.insertAfter(o.create("input",{type:"hidden",name:x}),x)}if(n.WindowManager){v.windowManager=new n.WindowManager(v)}if(w.encoding=="xml"){v.onGetContent.add(function(s,t){if(t.save){t.content=o.encode(t.content)}})}if(w.add_form_submit_trigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNotDirty=1}})}if(w.add_unload_trigger){v._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.save({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(w.submit_patch){v.onBeforeRenderUI.add(function(){var s=v.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){v.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){i.triggerSave();v.isNotDirty=1;return v.formElement._mceOldSubmit(v.formElement)}}s=null})}function r(){if(w.language){q.add(n.baseURL+"/langs/"+w.language+".js")}if(w.theme&&w.theme.charAt(0)!="-"&&!h.urls[w.theme]){h.load(w.theme,"themes/"+w.theme+"/editor_template"+n.suffix+".js")}j(g(w.plugins),function(s){if(s&&s.charAt(0)!="-"&&!c.urls[s]){if(!e&&s=="safari"){return}c.load(s,"plugins/"+s+"/editor_plugin"+n.suffix+".js")}});q.loadQueue(function(){if(!v.removed){v.init()}})}if(w.plugins.indexOf("compat2x")!=-1){c.load("compat2x","plugins/compat2x/editor_plugin"+n.suffix+".js");q.loadQueue(r)}else{r()}},init:function(){var v,F=this,G=F.settings,C,z,B=F.getElement(),r,q,D,y,A,E;i.add(F);if(G.theme){G.theme=G.theme.replace(/-/,"");r=h.get(G.theme);F.theme=new r();if(F.theme.init&&G.init_theme){F.theme.init(F,h.urls[G.theme]||n.documentBaseURL.replace(/\/$/,""))}}j(g(G.plugins.replace(/\-/g,"")),function(w){var H=c.get(w),t=c.urls[w]||n.documentBaseURL.replace(/\/$/,""),s;if(H){s=new H(F,t);F.plugins[w]=s;if(s.init){s.init(F,t)}}});if(G.popup_css!==false){if(G.popup_css){G.popup_css=F.documentBaseURI.toAbsolute(G.popup_css)}else{G.popup_css=F.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=","+F.documentBaseURI.toAbsolute(G.popup_css_add)}F.controlManager=new n.ControlManager(F);F.undoManager=new n.UndoManager(F);F.undoManager.onAdd.add(function(t,s){if(!s.initial){return F.onChange.dispatch(F,s,t)}});F.undoManager.onUndo.add(function(t,s){return F.onUndo.dispatch(F,s,t)});F.undoManager.onRedo.add(function(t,s){return F.onRedo.dispatch(F,s,t)});if(G.custom_undo_redo){F.onExecCommand.add(function(t,w,u,H,s){if(w!="Undo"&&w!="Redo"&&w!="mceRepaint"&&(!s||!s.skip_undo)){F.undoManager.add()}})}F.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){F.nodeChanged()}});if(a){function x(s,t){if(!t||!t.initial){F.execCommand("mceRepaint")}}F.onUndo.add(x);F.onRedo.add(x);F.onSetContent.add(x)}F.onBeforeRenderUI.dispatch(F,F.controlManager);if(G.render_ui){C=G.width||B.style.width||B.offsetWidth;z=G.height||B.style.height||B.offsetHeight;F.orgDisplay=B.style.display;E=/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=Math.max(parseInt(C)+(r.deltaWidth||0),100)}if(E.test(""+z)){z=Math.max(parseInt(z)+(r.deltaHeight||0),100)}r=F.theme.renderUI({targetNode:B,width:C,height:z,deltaWidth:G.delta_width,deltaHeight:G.delta_height});F.editorContainer=r.editorContainer}o.setStyles(r.sizeContainer||r.editorContainer,{width:C,height:z});z=(r.iframeHeight||z)+(typeof(z)=="number"?(r.deltaHeight||0):"");if(z<100){z=100}F.iframeHTML=G.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+F.documentBaseURI.getURI()+'" />';F.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(n.relaxedDomain){F.iframeHTML+='<script type="text/javascript">document.domain = "'+n.relaxedDomain+'";<\/script>'}y=G.body_id||"tinymce";if(y.indexOf("=")!=-1){y=F.getParam("body_id","","hash");y=y[F.id]||y}A=G.body_class||"";if(A.indexOf("=")!=-1){A=F.getParam("body_class","","hash");A=A[F.id]||""}F.iframeHTML+='</head><body id="'+y+'" class="mceContentBody '+A+'"></body></html>';if(n.relaxedDomain){if(b||(n.isOpera&&parseFloat(opera.version())>=9.5)){D='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}else{if(n.isOpera){D='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()'}}}v=o.add(r.iframeContainer,"iframe",{id:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",style:{width:"100%",height:z}});F.contentAreaContainer=r.iframeContainer;o.get(r.editorContainer).style.display=F.orgDisplay;o.get(F.id).style.display="none";if(!b||!n.relaxedDomain){F.setupIframe()}B=v=r=null},setupIframe:function(){var z=this,A=z.settings,u=o.get(z.id),v=z.getDoc(),r,x;if(!b||!n.relaxedDomain){v.open();v.write(z.iframeHTML);v.close()}if(!b){try{if(!A.readonly){v.designMode="On"}}catch(w){}}if(b){x=z.getBody();o.hide(x);if(!A.readonly){x.contentEditable=true}o.show(x)}z.dom=new n.DOM.DOMUtils(z.getDoc(),{keep_values:true,url_converter:z.convertURL,url_converter_scope:z,hex_colors:A.force_hex_style_colors,class_filter:A.class_filter,update_styles:1,fix_ie_paragraphs:1});z.serializer=new n.dom.Serializer({entity_encoding:A.entity_encoding,entities:A.entities,valid_elements:A.verify_html===false?"*[*]":A.valid_elements,extended_valid_elements:A.extended_valid_elements,valid_child_elements:A.valid_child_elements,invalid_elements:A.invalid_elements,fix_table_elements:A.fix_table_elements,fix_list_elements:A.fix_list_elements,fix_content_duplication:A.fix_content_duplication,convert_fonts_to_spans:A.convert_fonts_to_spans,font_size_classes:A.font_size_classes,font_size_style_values:A.font_size_style_values,apply_source_formatting:A.apply_source_formatting,remove_linebreaks:A.remove_linebreaks,element_format:A.element_format,dom:z.dom});z.selection=new n.dom.Selection(z.dom,z.getWin(),z.serializer);z.forceBlocks=new n.ForceBlocks(z,{forced_root_block:A.forced_root_block});z.editorCommands=new n.EditorCommands(z);z.serializer.onPreProcess.add(function(s,t){return z.onPreProcess.dispatch(z,t,s)});z.serializer.onPostProcess.add(function(s,t){return z.onPostProcess.dispatch(z,t,s)});z.onPreInit.dispatch(z);if(!A.gecko_spellcheck){z.getBody().spellcheck=0}if(!A.readonly){z._addEvents()}z.controlManager.onPostRender.dispatch(z,z.controlManager);z.onPostRender.dispatch(z);if(A.directionality){z.getBody().dir=A.directionality}if(A.nowrap){z.getBody().style.whiteSpace="nowrap"}if(A.auto_resize){z.onNodeChange.add(z.resizeToContent,z)}if(A.custom_elements){function y(s,t){j(g(A.custom_elements),function(B){var C;if(B.indexOf("~")===0){B=B.substring(1);C="span"}else{C="div"}t.content=t.content.replace(new RegExp("<("+B+")([^>]*)>","g"),"<"+C+' mce_name="$1"$2>');t.content=t.content.replace(new RegExp("</("+B+")>","g"),"</"+C+">")})}z.onBeforeSetContent.add(y);z.onPostProcess.add(function(s,t){if(t.set){y(s,t)}})}if(A.handle_node_change_callback){z.onNodeChange.add(function(t,s,B){z.execCallback("handle_node_change_callback",z.id,B,-1,-1,true,z.selection.isCollapsed())})}if(A.save_callback){z.onSaveContent.add(function(s,B){var t=z.execCallback("save_callback",z.id,B.content,z.getBody());if(t){B.content=t}})}if(A.onchange_callback){z.onChange.add(function(t,s){z.execCallback("onchange_callback",z,s)})}if(A.convert_newlines_to_brs){z.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(A.fix_nesting&&b){z.onBeforeSetContent.add(function(s,t){t.content=z._fixNesting(t.content)})}if(A.preformatted){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(A.verify_css_classes){z.serializer.attribValueFilter=function(D,B){var C,t;if(D=="class"){if(!z.classesRE){t=z.dom.getClasses();if(t.length>0){C="";j(t,function(s){C+=(C?"|":"")+s["class"]});z.classesRE=new RegExp("("+C+")","gi")}}return !z.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B)||z.classesRE.test(B)?B:""}return B}}if(A.convert_fonts_to_spans){z._convertFonts()}if(A.inline_styles){z._convertInlineElements()}if(A.cleanup_callback){z.onBeforeSetContent.add(function(s,t){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)});z.onPreProcess.add(function(s,t){if(t.set){z.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){z.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});z.onPostProcess.add(function(s,t){if(t.set){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=z.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(A.save_callback){z.onGetContent.add(function(s,t){if(t.save){t.content=z.execCallback("save_callback",z.id,t.content,z.getBody())}})}if(A.handle_event_callback){z.onEvent.add(function(s,t,B){if(z.execCallback("handle_event_callback",t,s,B)===false){k.cancel(t)}})}z.onSetContent.add(function(){z.addVisual(z.getBody())});if(A.padd_empty_editor){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function q(s,t){j(s.dom.select("a"),function(C){var B=C.parentNode;if(s.dom.isBlock(B)&&B.lastChild===C){s.dom.add(B,"br",{mce_bogus:1})}})}z.onExecCommand.add(function(s,t){if(t==="CreateLink"){q(s)}});z.onSetContent.add(z.selection.onSetContent.add(q));if(!A.readonly){try{v.designMode="Off";v.designMode="On"}catch(w){}}}setTimeout(function(){if(z.removed){return}z.load({initial:true,format:(A.cleanup_on_startup?"html":"raw")});z.startContent=z.getContent({format:"raw"});z.undoManager.add({initial:true});z.initialized=true;z.onInit.dispatch(z);z.execCallback("setupcontent_callback",z.id,z.getBody(),z.getDoc());z.execCallback("init_instance_callback",z);z.focus(true);z.nodeChanged({initial:1});if(A.content_css){n.each(g(A.content_css),function(s){z.dom.loadCSS(z.documentBaseURI.toAbsolute(s))})}if(A.auto_focus){setTimeout(function(){var s=i.get(A.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getWin().focus()},100)}},1);u=null},focus:function(r){var u,q=this,s=q.settings.content_editable;if(!r){if(!s&&(!b||q.selection.getNode().ownerDocument!=q.getDoc())){q.getWin().focus()}}if(i.activeEditor!=q){if((u=i.activeEditor)!=null){u.onDeactivate.dispatch(u,q)}q.onActivate.dispatch(q,u)}i._setActive(q)},execCallback:function(v){var q=this,u=q.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=q.callbackLookup[v])){u=r.func;r=r.scope}if(d(u,"string")){r=u.replace(/\.\w+$/,"");r=r?n.resolve(r):0;u=n.resolve(u);q.callbackLookup=q.callbackLookup||{};q.callbackLookup[v]={func:u,scope:r}}return u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function(q){var t=this.settings.language||"en",r=i.i18n;if(!q){return""}return r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return i.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getParam:function(w,s,q){var t=n.trim,r=d(this.settings[w])?this.settings[w]:s,u;if(q==="hash"){u={};if(d(r,"string")){j(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(x){x=x.split("=");if(x.length>1){u[t(x[0])]=t(x[1])}else{u[t(x[0])]=t(x)}})}else{u=r}return u}return r},nodeChanged:function(u){var q=this,r=q.selection,v=r.getNode()||q.getBody();if(q.initialized){q.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlManager,b&&v.ownerDocument!=q.getDoc()?q.getBody():v,r.isCollapsed(),u)}},addButton:function(u,r){var q=this;q.buttons=q.buttons||{};q.buttons[u]=r},addCommand:function(t,r,q){this.execCommands[t]={func:r,scope:q||this}},addQueryStateHandler:function(t,r,q){this.queryStateCommands[t]={func:r,scope:q||this}},addQueryValueHandler:function(t,r,q){this.queryValueCommands[t]={func:r,scope:q||this}},addShortcut:function(s,v,q,u){var r=this,w;if(!r.settings.custom_shortcuts){return false}r.shortcuts=r.shortcuts||{};if(d(q,"string")){w=q;q=function(){r.execCommand(w,false,null)}}if(d(q,"object")){w=q;q=function(){r.execCommand(w[0],w[1],w[2])}}j(g(s),function(t){var x={func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};j(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});r.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,w,z,q){var u=this,v=0,y,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!q||!q.skip_focus)){u.focus()}y={};u.onBeforeExecCommand.dispatch(u,x,w,z,y);if(y.terminate){return false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode(),x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(y=u.execCommands[x]){r=y.func.call(y.scope,w,z);if(r!==true){u.onExecCommand.dispatch(u,x,w,z,q);return r}}j(u.plugins,function(s){if(s.execCommand&&s.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);v=1;return false}});if(v){return true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(n.GlobalCommands.execCommand(u,x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}if(u.editorCommands.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return true}u.getDoc().execCommand(x,w,z);u.onExecCommand.dispatch(u,x,w,z,q)},queryCommandState:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryStateCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandState(w);if(v!==-1){return v}try{return this.getDoc().queryCommandState(w)}catch(q){}},queryCommandValue:function(w){var r=this,v,u;if(r._isHidden()){return}if(v=r.queryValueCommands[w]){u=v.func.call(v.scope);if(u!==true){return u}}v=r.editorCommands.queryCommandValue(w);if(d(v)){return v}try{return this.getDoc().queryCommandValue(w)}catch(q){}},show:function(){var q=this;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){var q=this,r=q.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hide(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:function(){return !o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgressState.dispatch(this,q,r,s);return q},resizeToContent:function(){var q=this;o.setStyle(q.id+"_ifr","height",q.getBody().scrollHeight)},load:function(u){var q=this,s=q.getElement(),r;if(s){u=u||{};u.load=true;r=q.setContent(d(s.value)?s.value:s.innerHTML,u);u.element=s;if(!u.no_events){q.onLoadContent.dispatch(q,u)}u.element=s=null;return r}},save:function(v){var q=this,u=q.getElement(),r,s;if(!u||!q.initialized){return}v=v||{};v.save=true;if(!v.no_events){q.undoManager.typing=0;q.undoManager.add()}v.element=u;r=v.content=q.getContent(v);if(!v.no_events){q.onSaveContent.dispatch(q,v)}r=v.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName)){u.innerHTML=r;if(s=o.getParent(q.id,"form")){j(s.elements,function(t){if(t.name==q.id){t.value=r;return false}})}}else{u.value=r}v.element=u=null;return r},setContent:function(r,s){var q=this;s=s||{};s.format=s.format||"html";s.set=true;s.content=r;if(!s.no_events){q.onBeforeSetContent.dispatch(q,s)}if(!n.isIE&&(r.length===0||/^\s+$/.test(r))){s.content=q.dom.setHTML(q.getBody(),'<br mce_bogus="1" />');s.format="raw"}s.content=q.dom.setHTML(q.getBody(),n.trim(s.content));if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;s.content=q.dom.setHTML(q.getBody(),q.serializer.serialize(q.getBody(),s))}if(!s.no_events){q.onSetContent.dispatch(q,s)}return s.content},getContent:function(s){var q=this,r;s=s||{};s.format=s.format||"html";s.get=true;if(!s.no_events){q.onBeforeGetContent.dispatch(q,s)}if(s.format!="raw"&&q.settings.cleanup){s.getInner=true;r=q.serializer.serialize(q.getBody(),s)}else{r=q.getBody().innerHTML}r=r.replace(/^\s*|\s*$/g,"");s.content=r;if(!s.no_events){q.onGetContent.dispatch(q,s)}return s.content},isDirty:function(){var q=this;return n.trim(q.startContent)!=n.trim(q.getContent({format:"raw",no_events:1}))&&!q.isNotDirty},getContainer:function(){var q=this;if(!q.container){q.container=o.get(q.editorContainer||q.id+"_parent")}return q.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return o.get(this.settings.content_element||this.id)},getWin:function(){var q=this,r;if(!q.contentWindow){r=o.get(q.id+"_ifr");if(r){q.contentWindow=r.contentWindow}}return q.contentWindow},getDoc:function(){var r=this,q;if(!r.contentDocument){q=r.getWin();if(q){r.contentDocument=q.document}}return r.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(q,x,w){var r=this,v=r.settings;if(v.urlconverter_callback){return r.execCallback("urlconverter_callback",q,w,true,x)}if(!v.convert_urls||(w&&w.nodeName=="LINK")||q.indexOf("file:")===0){return q}if(v.relative_urls){return r.documentBaseURI.toRelative(q)}q=r.documentBaseURI.toAbsolute(q,v.remove_script_host);return q},addVisual:function(u){var q=this,r=q.settings;u=u||q.getBody();if(!d(q.hasVisual)){q.hasVisual=r.visual}j(q.dom.select("table,a",u),function(t){var s;switch(t.nodeName){case"TABLE":s=q.dom.getAttrib(t,"border");if(!s||s=="0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.dom.removeClass(t,r.visual_table_class)}}return;case"A":s=q.dom.getAttrib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q,u,q.hasVisual)},remove:function(){var q=this,r=q.getContainer();q.removed=1;q.hide();q.execCallback("remove_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=[];i.remove(q);o.remove(r)},destroy:function(r){var q=this;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.theme.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destroy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDoc())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.formElement.submit=q.formElement._mceOldSubmit;q.formElement._mceOldSubmit=null}q.contentAreaContainer=q.formElement=q.container=q.settings.content_element=q.bodyElement=q.contentDocument=q.contentWindow=null;if(q.selection){q.selection=q.selection.win=q.selection.dom=q.selection.dom.doc=null}q.destroyed=1},_addEvents:function(){var w=this,v,y=w.settings,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function u(t,A){var s=t.type;if(w.removed){return}if(w.onEvent.dispatch(w,t,A)!==false){w[x[t.fakeType||t.type]].dispatch(w,t,A)}}j(x,function(t,s){switch(s){case"contextmenu":if(n.isOpera){k.add(w.getBody(),"mousedown",function(A){if(A.ctrlKey){A.fakeType="contextmenu";u(A)}})}else{k.add(w.getBody(),s,u)}break;case"paste":k.add(w.getBody(),s,function(A){u(A)});break;case"submit":case"reset":k.add(w.getElement().form||o.getParent(w.id,"form"),s,u);break;default:k.add(y.content_editable?w.getBody():w.getDoc(),s,u)}});k.add(y.content_editable?w.getBody():(a?w.getDoc():w.getWin()),"focus",function(s){w.focus(true)});if(n.isGecko){k.add(w.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("mce_src"))){t.src=w.documentBaseURI.toAbsolute(s)}})}if(a){function q(){var B=this,D=B.getDoc(),C=B.settings;if(a&&!C.readonly){if(B._isHidden()){try{if(!C.content_editable){D.designMode="On"}}catch(A){}}try{D.execCommand("styleWithCSS",0,false)}catch(A){if(!B._isHidden()){try{D.execCommand("useCSS",0,true)}catch(A){}}}if(!C.table_inline_editing){try{D.execCommand("enableInlineTableEditing",false,false)}catch(A){}}if(!C.object_resizing){try{D.execCommand("enableObjectResizing",false,false)}catch(A){}}}}w.onBeforeExecCommand.add(q);w.onMouseDown.add(q)}w.onMouseUp.add(w.nodeChanged);w.onClick.add(w.nodeChanged);w.onKeyUp.add(function(s,t){var A=t.keyCode;if((A>=33&&A<=36)||(A>=37&&A<=40)||A==13||A==45||A==46||A==8||(n.isMac&&(A==91||A==93))||t.ctrlKey){w.nodeChanged()}});w.onReset.add(function(){w.setContent(w.startContent,{format:"raw"})});if(y.custom_shortcuts){if(y.custom_undo_redo_keyboard_shortcuts){w.addShortcut("ctrl+z",w.getLang("undo_desc"),"Undo");w.addShortcut("ctrl+y",w.getLang("redo_desc"),"Redo")}if(a){w.addShortcut("ctrl+b",w.getLang("bold_desc"),"Bold");w.addShortcut("ctrl+i",w.getLang("italic_desc"),"Italic");w.addShortcut("ctrl+u",w.getLang("underline_desc"),"Underline")}for(v=1;v<=6;v++){w.addShortcut("ctrl+"+v,"",["FormatBlock",false,"<h"+v+">"])}w.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);w.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);w.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function z(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}j(w.shortcuts,function(A){if(n.isMac&&A.ctrl!=t.metaKey){return}else{if(!n.isMac&&A.ctrl!=t.ctrlKey){return}}if(A.alt!=t.altKey){return}if(A.shift!=t.shiftKey){return}if(t.keyCode==A.keyCode||(t.charCode&&t.charCode==A.charCode)){s=A;return false}});return s}w.onKeyUp.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyPress.add(function(s,t){var A=z(t);if(A){return k.cancel(t)}});w.onKeyDown.add(function(s,t){var A=z(t);if(A){A.func.call(A.scope);return k.cancel(t)}})}if(n.isIE){k.add(w.getDoc(),"controlselect",function(A){var t=w.resizeInfo,s;A=A.target;if(A.nodeName!=="IMG"){return}if(t){k.remove(t.node,t.ev,t.cb)}if(!w.dom.hasClass(A,"mceItemNoResize")){ev="resizeend";s=k.add(A,ev,function(C){var B;C=C.target;if(B=w.dom.getStyle(C,"width")){w.dom.setAttrib(C,"width",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"width","")}if(B=w.dom.getStyle(C,"height")){w.dom.setAttrib(C,"height",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"height","")}})}else{ev="resizestart";s=k.add(A,"resizestart",k.cancel,k)}t=w.resizeInfo={node:A,ev:ev,cb:s}});w.onKeyDown.add(function(s,t){switch(t.keyCode){case 8:if(w.selection.getRng().item){w.selection.getRng().item(0).removeNode();return k.cancel(t)}}})}if(n.isOpera){w.onClick.add(function(s,t){k.prevent(t)})}if(y.custom_undo_redo){function r(){w.undoManager.typing=0;w.undoManager.add()}if(n.isIE){k.add(w.getWin(),"blur",function(s){var t;if(w.selection){t=w.selection.getNode();if(!w.removed&&t.ownerDocument&&t.ownerDocument!=w.getDoc()){r()}}})}else{k.add(w.getDoc(),"blur",function(){if(w.selection&&!w.removed){r()}})}w.onMouseDown.add(r);w.onKeyUp.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45||t.ctrlKey){w.undoManager.typing=0;w.undoManager.add()}});w.onKeyDown.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45){if(w.undoManager.typing){w.undoManager.add();w.undoManager.typing=0}return}if(!w.undoManager.typing){w.undoManager.add();w.undoManager.typing=1}})}},_convertInlineElements:function(){var z=this,B=z.settings,r=z.dom,y,w,u,A,q;function x(s,t){if(!B.inline_styles){return}if(t.get){j(z.dom.select("table,u,strike",t.node),function(v){switch(v.nodeName){case"TABLE":if(y=r.getAttrib(v,"height")){r.setStyle(v,"height",y);r.setAttrib(v,"height","")}break;case"U":case"STRIKE":v.style.textDecoration=v.nodeName=="U"?"underline":"line-through";r.setAttrib(v,"mce_style","");r.setAttrib(v,"mce_name","span");break}})}else{if(t.set){j(z.dom.select("table,span",t.node).reverse(),function(v){if(v.nodeName=="TABLE"){if(y=r.getStyle(v,"height")){r.setAttrib(v,"height",y.replace(/[^0-9%]+/g,""))}}else{if(v.style.textDecoration=="underline"){u="u"}else{if(v.style.textDecoration=="line-through"){u="strike"}else{u=""}}if(u){v.style.textDecoration="";r.setAttrib(v,"mce_style","");w=r.create(u,{style:r.getAttrib(v,"style")});r.replace(w,v,1)}}})}}}z.onPreProcess.add(x);if(!B.cleanup_on_startup){z.onSetContent.add(function(s,t){if(t.initial){x(z,{node:z.getBody(),set:1})}})}},_convertFonts:function(){var w=this,x=w.settings,z=w.dom,v,r,q,u;if(!x.inline_styles){return}v=[8,10,12,14,18,24,36];r=["xx-small","x-small","small","medium","large","x-large","xx-large"];if(q=x.font_size_style_values){q=g(q)}if(u=x.font_size_classes){u=g(u)}function y(B){var C,A,t,s;if(!x.inline_styles){return}t=w.dom.select("font",B);for(s=t.length-1;s>=0;s--){C=t[s];A=z.create("span",{style:z.getAttrib(C,"style"),"class":z.getAttrib(C,"class")});z.setStyles(A,{fontFamily:z.getAttrib(C,"face"),color:z.getAttrib(C,"color"),backgroundColor:C.style.backgroundColor});if(C.size){if(q){z.setStyle(A,"fontSize",q[parseInt(C.size)-1])}else{z.setAttrib(A,"class",u[parseInt(C.size)-1])}}z.setAttrib(A,"mce_style","");z.replace(A,C,1)}}w.onPreProcess.add(function(s,t){if(t.get){y(t.node)}});w.onSetContent.add(function(s,t){if(t.initial){y(t.node)}})},_isHidden:function(){var q;if(!a){return 0}q=this.selection.getSel();return(!q||!q.rangeCount||q.rangeCount==0)},_fixNesting:function(r){var t=[],q;r=r.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(u,s,w){var v;if(s==="/"){if(!t.length){return""}if(w!==t[t.length-1].tag){for(q=t.length-1;q>=0;q--){if(t[q].tag===w){t[q].close=1;break}}return""}else{t.pop();if(t.length&&t[t.length-1].close){u=u+"</"+t[t.length-1].tag+">";t.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(w)){return u}if(/\/>$/.test(u)){return u}t.push({tag:w})}return u});for(q=t.length-1;q>=0;q--){r+="</"+t[q].tag+">"}return r}})})(tinymce);(function(d){var f=d.each,c=d.isIE,a=d.isGecko,b=d.isOpera,e=d.isWebKit;d.create("tinymce.EditorCommands",{EditorCommands:function(g){this.editor=g},execCommand:function(k,j,l){var h=this,g=h.editor,i;switch(k){case"mceResetDesignMode":case"mceBeginUndoLevel":return true;case"unlink":h.UnLink();return true;case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":h.mceJustify(k,k.substring(7).toLowerCase());return true;default:i=this[k];if(i){i.call(this,j,l);return true}}return false},Indent:function(){var g=this.editor,l=g.dom,j=g.selection,k,h,i;h=g.settings.indentation;i=/[a-z%]+$/i.exec(h);h=parseInt(h);if(g.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(j.getSelectedBlocks(),function(m){l.setStyle(m,"paddingLeft",(parseInt(m.style.paddingLeft||0)+h)+i)});return}g.getDoc().execCommand("Indent",false,null);if(c){l.getParent(j.getNode(),function(m){if(m.nodeName=="BLOCKQUOTE"){m.dir=m.style.cssText=""}})}},Outdent:function(){var h=this.editor,m=h.dom,k=h.selection,l,g,i,j;i=h.settings.indentation;j=/[a-z%]+$/i.exec(i);i=parseInt(i);if(h.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){f(k.getSelectedBlocks(),function(n){g=Math.max(0,parseInt(n.style.paddingLeft||0)-i);m.setStyle(n,"paddingLeft",g?g+j:"")});return}h.getDoc().execCommand("Outdent",false,null)},mceSetContent:function(h,g){this.editor.setContent(g)},mceToggleVisualAid:function(){var g=this.editor;g.hasVisual=!g.hasVisual;g.addVisual()},mceReplaceContent:function(h,g){var i=this.editor.selection;i.setContent(g.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(i,h){var g=this.editor,j=g.selection,k=g.dom.getParent(j.getNode(),"a");if(d.is(h,"string")){h={href:h}}function l(m){f(h,function(o,n){g.dom.setAttrib(m,n,o)})}if(!k){g.execCommand("CreateLink",false,"javascript:mctmp(0);");f(g.dom.select("a[href=javascript:mctmp(0);]"),function(m){l(m)})}else{if(h.href){l(k)}else{g.dom.remove(k,1)}}},UnLink:function(){var g=this.editor,h=g.selection;if(h.isCollapsed()){h.select(h.getNode())}g.getDoc().execCommand("unlink",false,null);h.collapse(0)},FontName:function(i,h){var j=this,g=j.editor,k=g.selection,l;if(!h){if(k.isCollapsed()){k.select(k.getNode())}}else{if(g.settings.convert_fonts_to_spans){j._applyInlineStyle("span",{style:{fontFamily:h}})}else{g.getDoc().execCommand("FontName",false,h)}}},FontSize:function(j,i){var h=this.editor,l=h.settings,k,g;if(l.convert_fonts_to_spans&&i>=1&&i<=7){g=d.explode(l.font_size_style_values);k=d.explode(l.font_size_classes);if(k){i=k[i-1]||i}else{i=g[i-1]||i}}if(i>=1&&i<=7){h.getDoc().execCommand("FontSize",false,i)}else{this._applyInlineStyle("span",{style:{fontSize:i}})}},queryCommandValue:function(h){var g=this["queryValue"+h];if(g){return g.call(this,h)}return false},queryCommandState:function(h){var g;switch(h){case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"JustifyFull":return this.queryStateJustify(h,h.substring(7).toLowerCase());default:if(g=this["queryState"+h]){return g.call(this,h)}}return -1},_queryState:function(h){try{return this.editor.getDoc().queryCommandState(h)}catch(g){}},_queryVal:function(h){try{return this.editor.getDoc().queryCommandValue(h)}catch(g){}},queryValueFontSize:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontSize}if(!g&&(b||e)){if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.size}return g}return g||this._queryVal("FontSize")},queryValueFontName:function(){var h=this.editor,g=0,i;if(i=h.dom.getParent(h.selection.getNode(),"font")){g=i.face}if(i=h.dom.getParent(h.selection.getNode(),"span")){g=i.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}if(!g){g=this._queryVal("FontName")}return g},mceJustify:function(o,p){var k=this.editor,m=k.selection,g=m.getNode(),q=g.nodeName,h,j,i=k.dom,l;if(k.settings.inline_styles&&this.queryStateJustify(o,p)){l=1}h=i.getParent(g,k.dom.isBlock);if(q=="IMG"){if(p=="full"){return}if(l){if(p=="center"){i.setStyle(h||g.parentNode,"textAlign","")}i.setStyle(g,"float","");this.mceRepaint();return}if(p=="center"){if(h&&/^(TD|TH)$/.test(h.nodeName)){h=0}if(!h||h.childNodes.length>1){j=i.create("p");j.appendChild(g.cloneNode(false));if(h){i.insertAfter(j,h)}else{i.insertAfter(j,g)}i.remove(g);g=j.firstChild;h=j}i.setStyle(h,"textAlign",p);i.setStyle(g,"float","")}else{i.setStyle(g,"float",p);i.setStyle(h||g.parentNode,"textAlign","")}this.mceRepaint();return}if(k.settings.inline_styles&&k.settings.forced_root_block){if(l){p=""}f(m.getSelectedBlocks(i.getParent(m.getStart(),i.isBlock),i.getParent(m.getEnd(),i.isBlock)),function(n){i.setAttrib(n,"align","");i.setStyle(n,"textAlign",p=="full"?"justify":p)});return}else{if(!l){k.getDoc().execCommand(o,false,null)}}if(k.settings.inline_styles){if(l){i.getParent(k.selection.getNode(),function(r){if(r.style&&r.style.textAlign){i.setStyle(r,"textAlign","")}});return}f(i.select("*"),function(s){var r=s.align;if(r){if(r=="full"){r="justify"}i.setStyle(s,"textAlign",r);i.setAttrib(s,"align","")}})}},mceSetCSSClass:function(h,g){this.mceSetStyleInfo(0,{command:"setattrib",name:"class",value:g})},getSelectedElement:function(){var w=this,o=w.editor,n=o.dom,s=o.selection,h=s.getRng(),l,k,u,p,j,g,q,i,x,v;if(s.isCollapsed()||h.item){return s.getNode()}v=o.settings.merge_styles_invalid_parents;if(d.is(v,"string")){v=new RegExp(v,"i")}if(c){l=h.duplicate();l.collapse(true);u=l.parentElement();k=h.duplicate();k.collapse(false);p=k.parentElement();if(u!=p){l.move("character",1);u=l.parentElement()}if(u==p){l=h.duplicate();l.moveToElementText(u);if(l.compareEndPoints("StartToStart",h)==0&&l.compareEndPoints("EndToEnd",h)==0){return v&&v.test(u.nodeName)?null:u}}}else{function m(r){return n.getParent(r,"*")}u=h.startContainer;p=h.endContainer;j=h.startOffset;g=h.endOffset;if(!h.collapsed){if(u==p){if(j-g<2){if(u.hasChildNodes()){i=u.childNodes[j];return v&&v.test(i.nodeName)?null:i}}}}if(u.nodeType!=3||p.nodeType!=3){return null}if(j==0){i=m(u);if(i&&i.firstChild!=u){i=null}}if(j==u.nodeValue.length){q=u.nextSibling;if(q&&q.nodeType==1){i=u.nextSibling}}if(g==0){q=p.previousSibling;if(q&&q.nodeType==1){x=q}}if(g==p.nodeValue.length){x=m(p);if(x&&x.lastChild!=p){x=null}}if(i==x){return v&&i&&v.test(i.nodeName)?null:i}}return null},mceSetStyleInfo:function(n,m){var q=this,h=q.editor,j=h.getDoc(),g=h.dom,i,k,r=h.selection,p=m.wrapper||"span",k=r.getBookmark(),o;function l(t,s){if(t.nodeType==1){switch(m.command){case"setattrib":return g.setAttrib(t,m.name,m.value);case"setstyle":return g.setStyle(t,m.name,m.value);case"removeformat":return g.setAttrib(t,"class","")}}}o=h.settings.merge_styles_invalid_parents;if(d.is(o,"string")){o=new RegExp(o,"i")}if((i=q.getSelectedElement())&&!h.settings.force_span_wrappers){l(i,1)}else{j.execCommand("FontName",false,"__");f(g.select("span,font"),function(u){var s,t;if(g.getAttrib(u,"face")=="__"||u.style.fontFamily==="__"){s=g.create(p,{mce_new:"1"});l(s);f(u.childNodes,function(v){s.appendChild(v.cloneNode(true))});g.replace(s,u)}})}f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!g.getAttrib(t,"mce_new")){s=g.getParent(t,"*[mce_new]");if(s){g.remove(t,1)}}});f(g.select(p).reverse(),function(t){var s=t.parentNode;if(!s||!g.getAttrib(t,"mce_new")){return}if(h.settings.force_span_wrappers&&s.nodeName!="SPAN"){return}if(s.nodeName==p.toUpperCase()&&s.childNodes.length==1){return g.remove(s,1)}if(t.nodeType==1&&(!o||!o.test(s.nodeName))&&s.childNodes.length==1){l(s);g.setAttrib(t,"class","")}});f(g.select(p).reverse(),function(s){if(g.getAttrib(s,"mce_new")||(g.getAttribs(s).length<=1&&s.className==="")){if(!g.getAttrib(s,"class")&&!g.getAttrib(s,"style")){return g.remove(s,1)}g.setAttrib(s,"mce_new","")}});r.moveToBookmark(k)},queryStateJustify:function(k,h){var g=this.editor,j=g.selection.getNode(),i=g.dom;if(j&&j.nodeName=="IMG"){if(i.getStyle(j,"float")==h){return 1}return j.parentNode.style.textAlign==h}j=i.getParent(g.selection.getStart(),function(l){return l.nodeType==1&&l.style.textAlign});if(h=="full"){h="justify"}if(g.settings.inline_styles){return(j&&j.style.textAlign==h)}return this._queryState(k)},ForeColor:function(i,h){var g=this.editor;if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{color:h}});return}else{g.getDoc().execCommand("ForeColor",false,h)}},HiliteColor:function(i,k){var h=this,g=h.editor,j=g.getDoc();if(g.settings.convert_fonts_to_spans){this._applyInlineStyle("span",{style:{backgroundColor:k}});return}function l(n){if(!a){return}try{j.execCommand("styleWithCSS",0,n)}catch(m){j.execCommand("useCSS",0,!n)}}if(a||b){l(true);j.execCommand("hilitecolor",false,k);l(false)}else{j.execCommand("BackColor",false,k)}},FormatBlock:function(n,h){var o=this,l=o.editor,p=l.selection,j=l.dom,g,k,m;function i(q){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(q.nodeName)}g=j.getParent(p.getNode(),function(q){return i(q)});if(g){if((c&&i(g.parentNode))||g.nodeName=="DIV"){k=l.dom.create(h);f(j.getAttribs(g),function(q){j.setAttrib(k,q.nodeName,j.getAttrib(g,q.nodeName))});m=p.getBookmark();j.replace(k,g,1);p.moveToBookmark(m);l.nodeChanged();return}}h=l.settings.forced_root_block?(h||"<p>"):h;if(h.indexOf("<")==-1){h="<"+h+">"}if(d.isGecko){h=h.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,"$1")}l.getDoc().execCommand("FormatBlock",false,h)},mceCleanup:function(){var h=this.editor,i=h.selection,g=i.getBookmark();h.setContent(h.getContent());i.moveToBookmark(g)},mceRemoveNode:function(j,k){var h=this.editor,i=h.selection,g,l=k||i.getNode();if(l==h.getBody()){return}g=i.getBookmark();h.dom.remove(l,1);i.moveToBookmark(g);h.nodeChanged()},mceSelectNodeDepth:function(i,j){var g=this.editor,h=g.selection,k=0;g.dom.getParent(h.getNode(),function(l){if(l.nodeType==1&&k++==j){h.select(l);g.nodeChanged();return false}},g.getBody())},mceSelectNode:function(h,g){this.editor.selection.select(g)},mceInsertContent:function(g,h){this.editor.selection.setContent(h)},mceInsertRawHTML:function(h,i){var g=this.editor;g.selection.setContent("tiny_mce_marker");g.setContent(g.getContent().replace(/tiny_mce_marker/g,i))},mceRepaint:function(){var i,g,j=this.editor;if(d.isGecko){try{i=j.selection;g=i.getBookmark(true);if(i.getSel()){i.getSel().selectAllChildren(j.getBody())}i.collapse(true);i.moveToBookmark(g)}catch(h){}}},queryStateUnderline:function(){var g=this.editor,h=g.selection.getNode();if(h&&h.nodeName=="A"){return false}return this._queryState("Underline")},queryStateOutdent:function(){var g=this.editor,h;if(g.settings.inline_styles){if((h=g.dom.getParent(g.selection.getStart(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}if((h=g.dom.getParent(g.selection.getEnd(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){return true}}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!g.settings.inline_styles&&!!g.dom.getParent(g.selection.getNode(),"BLOCKQUOTE"))},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(g){return g.nodeName==="BLOCKQUOTE"})},_applyInlineStyle:function(o,j,m){var q=this,n=q.editor,l=n.dom,i,p={},k,r;o=o.toUpperCase();if(m&&m.check_classes&&j["class"]){m.check_classes.push(j["class"])}function h(){f(l.select(o).reverse(),function(t){var s=0;f(l.getAttribs(t),function(u){if(u.nodeName.substring(0,1)!="_"&&l.getAttrib(t,u.nodeName)!=""){s++}});if(s==0){l.remove(t,1)}})}function g(){var s;f(l.select("span,font"),function(t){if(t.style.fontFamily=="mceinline"||t.face=="mceinline"){if(!s){s=n.selection.getBookmark()}j._mce_new="1";l.replace(l.create(o,j),t,1)}});f(l.select(o+"[_mce_new]"),function(u){function t(v){if(v.nodeType==1){f(j.style,function(x,w){l.setStyle(v,w,"")});if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(v,w)}})}}}f(l.select(o,u),t);if(u.parentNode&&u.parentNode.nodeType==1&&u.parentNode.childNodes.length==1){t(u.parentNode)}l.getParent(u.parentNode,function(v){if(v.nodeType==1){if(j.style){f(j.style,function(y,x){var w;if(!p[x]&&(w=l.getStyle(v,x))){if(w===y){l.setStyle(u,x,"")}p[x]=1}})}if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass(v,w)){l.removeClass(u,w)}})}}return false});u.removeAttribute("_mce_new")});h();n.selection.moveToBookmark(s);return !!s}n.focus();n.getDoc().execCommand("FontName",false,"mceinline");g();if(k=q._applyInlineStyle.keyhandler){n.onKeyUp.remove(k);n.onKeyPress.remove(k);n.onKeyDown.remove(k);n.onSetContent.remove(q._applyInlineStyle.chandler)}if(n.selection.isCollapsed()){if(!c){f(l.getParents(n.selection.getNode(),"span"),function(s){f(j.style,function(u,t){var w;if(w=l.getStyle(s,t)){if(w==u){l.setStyle(s,t,"");r=2;return false}r=1;return false}});if(r){return false}});if(r==2){i=n.selection.getBookmark();h();n.selection.moveToBookmark(i);window.setTimeout(function(){n.nodeChanged()},1);return}}q._pendingStyles=d.extend(q._pendingStyles||{},j.style);q._applyInlineStyle.chandler=n.onSetContent.add(function(){delete q._pendingStyles});q._applyInlineStyle.keyhandler=k=function(s){if(q._pendingStyles){j.style=q._pendingStyles;delete q._pendingStyles}if(g()){n.onKeyDown.remove(q._applyInlineStyle.keyhandler);n.onKeyPress.remove(q._applyInlineStyle.keyhandler)}if(s.type=="keyup"){n.onKeyUp.remove(q._applyInlineStyle.keyhandler)}};n.onKeyDown.add(k);n.onKeyPress.add(k);n.onKeyUp.add(k)}else{q._pendingStyles=0}}})})(tinymce);(function(a){a.create("tinymce.UndoManager",{index:0,data:null,typing:0,UndoManager:function(c){var d=this,b=a.util.Dispatcher;d.editor=c;d.data=[];d.onAdd=new b(this);d.onUndo=new b(this);d.onRedo=new b(this)},add:function(d){var g=this,f,e=g.editor,c,h=e.settings,j;d=d||{};d.content=d.content||e.getContent({format:"raw",no_events:1});d.content=d.content.replace(/^\s*|\s*$/g,"");j=g.data[g.index>0&&(g.index==0||g.index==g.data.length)?g.index-1:g.index];if(!d.initial&&j&&d.content==j.content){return null}if(h.custom_undo_redo_levels){if(g.data.length>h.custom_undo_redo_levels){for(f=0;f<g.data.length-1;f++){g.data[f]=g.data[f+1]}g.data.length--;g.index=g.data.length}}if(h.custom_undo_redo_restore_selection&&!d.initial){d.bookmark=c=d.bookmark||e.selection.getBookmark()}if(g.index<g.data.length){g.index++}if(g.data.length===0&&!d.initial){return null}g.data.length=g.index+1;g.data[g.index++]=d;if(d.initial){g.index=0}if(g.data.length==2&&g.data[0].initial){g.data[0].bookmark=c}g.onAdd.dispatch(g,d);e.isNotDirty=0;return d},undo:function(){var e=this,c=e.editor,b=b,d;if(e.typing){e.add();e.typing=0}if(e.index>0){if(e.index==e.data.length&&e.index>1){d=e.index;e.typing=0;if(!e.add()){e.index=d}--e.index}b=e.data[--e.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);e.onUndo.dispatch(e,b)}return b},redo:function(){var d=this,c=d.editor,b=null;if(d.index<d.data.length-1){b=d.data[++d.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark(b.bookmark);d.onRedo.dispatch(d,b)}return b},clear:function(){var b=this;b.data=[];b.index=0;b.typing=0;b.add({initial:true})},hasUndo:function(){return this.index!=0||this.typing},hasRedo:function(){return this.index<this.data.length-1}})})(tinymce);(function(e){var b,d,a,c,f,h;b=e.dom.Event;d=e.isIE;a=e.isGecko;c=e.isOpera;f=e.each;h=e.extend;function g(i){i=i.innerHTML;i=i.replace(/<\w+ .*?mce_\w+\"?=.*?>/gi,"-");i=i.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi,"-");i=i.replace(/<[^>]+>/g,"");return i.replace(/[ \t\r\n]+/g,"")==""}e.create("tinymce.ForceBlocks",{ForceBlocks:function(j){var k=this,l=j.settings,m;k.editor=j;k.dom=j.dom;m=(l.forced_root_block||"p").toLowerCase();l.element=m.toUpperCase();j.onPreInit.add(k.setup,k);k.reOpera=new RegExp("(\\u00a0|&#160;|&nbsp;)</"+m+">","gi");k.rePadd=new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR1=new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,m),"gi");k.reNbsp2BR2=new RegExp("<%p()([^>]+)>(&nbsp;|&#160;)<\\/%p>|<%p>(&nbsp;|&#160;)<\\/%p>".replace(/%p/g,m),"gi");k.reBR2Nbsp=new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,m),"gi");function i(n,p){if(c){p.content=p.content.replace(k.reOpera,"</"+m+">")}p.content=p.content.replace(k.rePadd,"<"+m+"$1$2$3$4$5$6>\u00a0</"+m+">");if(!d&&!c&&p.set){p.content=p.content.replace(k.reNbsp2BR1,"<"+m+"$1$2><br /></"+m+">");p.content=p.content.replace(k.reNbsp2BR2,"<"+m+"$1$2><br /></"+m+">")}else{p.content=p.content.replace(k.reBR2Nbsp,"<"+m+"$1$2>\u00a0</"+m+">")}}j.onBeforeSetContent.add(i);j.onPostProcess.add(i);if(l.forced_root_block){j.onInit.add(k.forceRoots,k);j.onSetContent.add(k.forceRoots,k);j.onBeforeGetContent.add(k.forceRoots,k)}},setup:function(){var j=this,i=j.editor,k=i.settings;if(k.forced_root_block){i.onKeyUp.add(j.forceRoots,j);i.onPreProcess.add(j.forceRoots,j)}if(k.force_br_newlines){if(d){i.onKeyPress.add(function(m,p){var q,o=m.selection;if(p.keyCode==13&&o.getNode().nodeName!="LI"){o.setContent('<br id="__" /> ',{format:"raw"});q=m.dom.get("__");q.removeAttribute("id");o.select(q);o.collapse();return b.cancel(p)}})}return}if(!d&&k.force_p_newlines){i.onKeyPress.add(function(m,n){if(n.keyCode==13&&!n.shiftKey){if(!j.insertPara(n)){b.cancel(n)}}});if(a){i.onKeyDown.add(function(m,n){if((n.keyCode==8||n.keyCode==46)&&!n.shiftKey){j.backspaceDelete(n,n.keyCode==8)}})}}function l(n,m){var o=i.dom.create(m);f(n.attributes,function(p){if(p.specified&&p.nodeValue){o.setAttribute(p.nodeName.toLowerCase(),p.nodeValue)}});f(n.childNodes,function(p){o.appendChild(p.cloneNode(true))});n.parentNode.replaceChild(o,n);return o}if(d){i.onPreProcess.add(function(m,n){f(m.dom.select("p,h1,h2,h3,h4,h5,h6,div",n.node),function(o){if(g(o)){o.innerHTML=""}})});if(k.element!="P"){i.onKeyPress.add(function(m,n){j.lastElm=m.selection.getNode().nodeName});i.onKeyUp.add(function(o,q){var s,p=o.selection,r=p.getNode(),m=o.getBody();if(m.childNodes.length===1&&r.nodeName=="P"){r=l(r,k.element);p.select(r);p.collapse();o.nodeChanged()}else{if(q.keyCode==13&&!q.shiftKey&&j.lastElm!="P"){s=o.dom.getParent(r,"p");if(s){l(s,k.element);o.nodeChanged()}}}})}}},find:function(o,k,l){var j=this.editor,i=j.getDoc().createTreeWalker(o,4,null,false),m=-1;while(o=i.nextNode()){m++;if(k==0&&o==l){return m}if(k==1&&m==l){return o}}return -1},forceRoots:function(p,D){var u=this,p=u.editor,H=p.getBody(),E=p.getDoc(),K=p.selection,v=K.getSel(),w=K.getRng(),I=-2,o,B,j,k,F=-16777215;var G,l,J,A,x,m=H.childNodes,z,y,q;for(z=m.length-1;z>=0;z--){G=m[z];if(G.nodeType==3||(!u.dom.isBlock(G)&&G.nodeType!=8)){if(!l){if(G.nodeType!=3||/[^\s]/g.test(G.nodeValue)){if(I==-2&&w){if(!d){if(w.startContainer.nodeType==1&&(y=w.startContainer.childNodes[w.startOffset])&&y.nodeType==1){q=y.getAttribute("id");y.setAttribute("id","__mce")}else{if(p.dom.getParent(w.startContainer,function(i){return i===H})){B=w.startOffset;j=w.endOffset;I=u.find(H,0,w.startContainer);o=u.find(H,0,w.endContainer)}}}else{k=E.body.createTextRange();k.moveToElementText(H);k.collapse(1);J=k.move("character",F)*-1;k=w.duplicate();k.collapse(1);A=k.move("character",F)*-1;k=w.duplicate();k.collapse(0);x=(k.move("character",F)*-1)-A;I=A-J;o=x}}l=p.dom.create(p.settings.forced_root_block);l.appendChild(G.cloneNode(1));G.parentNode.replaceChild(l,G)}}else{if(l.hasChildNodes()){l.insertBefore(G,l.firstChild)}else{l.appendChild(G)}}}else{l=null}}if(I!=-2){if(!d){l=H.getElementsByTagName(p.settings.element)[0];w=E.createRange();if(I!=-1){w.setStart(u.find(H,1,I),B)}else{w.setStart(l,0)}if(o!=-1){w.setEnd(u.find(H,1,o),j)}else{w.setEnd(l,0)}if(v){v.removeAllRanges();v.addRange(w)}}else{try{w=v.createRange();w.moveToElementText(H);w.collapse(1);w.moveStart("character",I);w.moveEnd("character",o);w.select()}catch(C){}}}else{if(!d&&(y=p.dom.get("__mce"))){if(q){y.setAttribute("id",q)}else{y.removeAttribute("id")}w=E.createRange();w.setStartBefore(y);w.setEndBefore(y);K.setRng(w)}}},getParentBlock:function(j){var i=this.dom;return i.getParent(j,i.isBlock)},insertPara:function(M){var A=this,o=A.editor,I=o.dom,N=o.getDoc(),R=o.settings,B=o.selection.getSel(),C=B.getRangeAt(0),Q=N.body;var F,G,D,K,J,l,j,m,q,i,x,P,k,p,E,H=I.getViewPort(o.getWin()),w,z,v;F=N.createRange();F.setStart(B.anchorNode,B.anchorOffset);F.collapse(true);G=N.createRange();G.setStart(B.focusNode,B.focusOffset);G.collapse(true);D=F.compareBoundaryPoints(F.START_TO_END,G)<0;K=D?B.anchorNode:B.focusNode;J=D?B.anchorOffset:B.focusOffset;l=D?B.focusNode:B.anchorNode;j=D?B.focusOffset:B.anchorOffset;if(K===l&&/^(TD|TH)$/.test(K.nodeName)){if(K.firstChild.nodeName=="BR"){I.remove(K.firstChild)}if(K.childNodes.length==0){o.dom.add(K,R.element,null,"<br />");P=o.dom.add(K,R.element,null,"<br />")}else{E=K.innerHTML;K.innerHTML="";o.dom.add(K,R.element,null,E);P=o.dom.add(K,R.element,null,"<br />")}C=N.createRange();C.selectNodeContents(P);C.collapse(1);o.selection.setRng(C);return false}if(K==Q&&l==Q&&Q.firstChild&&o.dom.isBlock(Q.firstChild)){K=l=K.firstChild;J=j=0;F=N.createRange();F.setStart(K,0);G=N.createRange();G.setStart(l,0)}K=K.nodeName=="HTML"?N.body:K;K=K.nodeName=="BODY"?K.firstChild:K;l=l.nodeName=="HTML"?N.body:l;l=l.nodeName=="BODY"?l.firstChild:l;m=A.getParentBlock(K);q=A.getParentBlock(l);i=m?m.nodeName:R.element;if(A.dom.getParent(m,"ol,ul,pre")){return true}if(m&&(m.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;m=null}if(q&&(q.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1)))){i=R.element;q=null}if(/(TD|TABLE|TH|CAPTION)/.test(i)||(m&&i=="DIV"&&/left|right/gi.test(I.getStyle(m,"float",1)))){i=R.element;m=q=null}x=(m&&m.nodeName==i)?m.cloneNode(0):o.dom.create(i);P=(q&&q.nodeName==i)?q.cloneNode(0):o.dom.create(i);P.removeAttribute("id");if(/^(H[1-6])$/.test(i)&&K.nodeValue&&J==K.nodeValue.length){P=o.dom.create(R.element)}E=k=K;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}k=E}while((E=E.previousSibling?E.previousSibling:E.parentNode));E=p=l;do{if(E==Q||E.nodeType==9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}p=E}while((E=E.nextSibling?E.nextSibling:E.parentNode));if(k.nodeName==i){F.setStart(k,0)}else{F.setStartBefore(k)}F.setEnd(K,J);x.appendChild(F.cloneContents()||N.createTextNode(""));try{G.setEndAfter(p)}catch(L){}G.setStart(l,j);P.appendChild(G.cloneContents()||N.createTextNode(""));C=N.createRange();if(!k.previousSibling&&k.parentNode.nodeName==i){C.setStartBefore(k.parentNode)}else{if(F.startContainer.nodeName==i&&F.startOffset==0){C.setStartBefore(F.startContainer)}else{C.setStart(F.startContainer,F.startOffset)}}if(!p.nextSibling&&p.parentNode.nodeName==i){C.setEndAfter(p.parentNode)}else{C.setEnd(G.endContainer,G.endOffset)}C.deleteContents();if(c){o.getWin().scrollTo(0,H.y)}if(x.firstChild&&x.firstChild.nodeName==i){x.innerHTML=x.firstChild.innerHTML}if(P.firstChild&&P.firstChild.nodeName==i){P.innerHTML=P.firstChild.innerHTML}if(g(x)){x.innerHTML="<br />"}function O(y,s){var r=[],T,S,t;y.innerHTML="";if(R.keep_styles){S=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(S.nodeName)){T=S.cloneNode(false);I.setAttrib(T,"id","");r.push(T)}}while(S=S.parentNode)}if(r.length>0){for(t=r.length-1,T=y;t>=0;t--){T=T.appendChild(r[t])}r[0].innerHTML=c?"&nbsp;":"<br />";return r[0]}else{y.innerHTML=c?"&nbsp;":"<br />"}}if(g(P)){v=O(P,l)}if(c&&parseFloat(opera.version())<9.5){C.insertNode(x);C.insertNode(P)}else{C.insertNode(P);C.insertNode(x)}P.normalize();x.normalize();function u(r){return N.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false).nextNode()||r}C=N.createRange();C.selectNodeContents(a?u(v||P):v||P);C.collapse(1);B.removeAllRanges();B.addRange(C);w=o.dom.getPos(P).y;z=P.clientHeight;if(w<H.y||w+z>H.y+H.h){o.getWin().scrollTo(0,w<H.y?w:w-H.h+25)}return false},backspaceDelete:function(l,u){var x=this,k=x.editor,p=k.getBody(),j,m=k.selection,i=m.getRng(),o=i.startContainer,j,q,s;if(o&&k.dom.isBlock(o)&&!/^(TD|TH)$/.test(o.nodeName)&&u){if(o.childNodes.length==0||(o.childNodes.length==1&&o.firstChild.nodeName=="BR")){j=o;while((j=j.previousSibling)&&!k.dom.isBlock(j)){}if(j){if(o!=p.firstChild){q=k.dom.doc.createTreeWalker(j,NodeFilter.SHOW_TEXT,null,false);while(s=q.nextNode()){j=s}i=k.getDoc().createRange();i.setStart(j,j.nodeValue?j.nodeValue.length:0);i.setEnd(j,j.nodeValue?j.nodeValue.length:0);m.setRng(i);k.dom.remove(o)}return b.cancel(l)}}}function v(n){var r;n=n.target;if(n&&n.parentNode&&n.nodeName=="BR"&&(j=x.getParentBlock(n))){r=n.previousSibling;b.remove(p,"DOMNodeInserted",v);if(r&&r.nodeType==3&&/\s+$/.test(r.nodeValue)){return}if(n.previousSibling||n.nextSibling){k.dom.remove(n)}}}b._add(p,"DOMNodeInserted",v);window.setTimeout(function(){b._remove(p,"DOMNodeInserted",v)},1)}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){i.execCommand(p.cmd,p.ui||false,p.value)}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark("simple")});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.CommandManager=function(){var c={},b={},d={};function e(i,h,g,f){if(typeof(h)=="string"){h=[h]}a.each(h,function(j){i[j.toLowerCase()]={func:g,scope:f}})}a.extend(this,{add:function(h,g,f){e(c,h,g,f)},addQueryStateHandler:function(h,g,f){e(b,h,g,f)},addQueryValueHandler:function(h,g,f){e(d,h,g,f)},execCommand:function(g,j,i,h,f){if(j=c[j.toLowerCase()]){if(j.func.call(g||j.scope,i,h,f)!==false){return true}}},queryCommandValue:function(){if(cmd=d[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}},queryCommandState:function(){if(cmd=b[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}}})};a.GlobalCommands=new a.CommandManager()})(tinymce);(function(b){function a(i,d,h,m){var j,g,e,l,f;function k(p,o){do{if(p.parentNode==o){return p}p=p.parentNode}while(p)}function c(o){m(o);b.walk(o,m,"childNodes")}j=i.findCommonAncestor(d,h);e=k(d,j)||d;l=k(h,j)||h;for(g=d;g&&g!=e;g=g.parentNode){for(f=g.nextSibling;f;f=f.nextSibling){c(f)}}if(e!=l){for(g=e.nextSibling;g&&g!=l;g=g.nextSibling){c(g)}}else{c(e)}for(g=h;g&&g!=l;g=g.parentNode){for(f=g.previousSibling;f;f=f.previousSibling){c(f)}}}b.GlobalCommands.add("RemoveFormat",function(){var m=this,l=m.dom,u=m.selection,d=u.getRng(1),e=[],h,f,j,q,g,o,c,i;function k(s){var r;l.getParent(s,function(v){if(l.is(v,m.getParam("removeformat_selector"))){r=v}return l.isBlock(v)},m.getBody());return r}function p(r){if(l.is(r,m.getParam("removeformat_selector"))){e.push(r)}}function t(r){p(r);b.walk(r,p,"childNodes")}h=u.getBookmark();q=d.startContainer;o=d.endContainer;g=d.startOffset;c=d.endOffset;q=q.nodeType==1?q.childNodes[Math.min(g,q.childNodes.length-1)]:q;o=o.nodeType==1?o.childNodes[Math.min(g==c?c:c-1,o.childNodes.length-1)]:o;if(q==o){f=k(q);if(q.nodeType==3){if(f&&f.nodeType==1){i=q.splitText(g);i.splitText(c-g);l.split(f,i);u.moveToBookmark(h)}return}t(l.split(f,q)||q)}else{f=k(q);j=k(o);if(f){if(q.nodeType==3){if(g==q.nodeValue.length){q.nodeValue+="\uFEFF"}q=q.splitText(g)}}if(j){if(o.nodeType==3){o.splitText(c)}}if(f&&f==j){l.replace(l.create("span",{id:"__end"},o.cloneNode(true)),o)}if(f){f=l.split(f,q)}else{f=q}if(i=l.get("__end")){o=i;j=k(o)}if(j){j=l.split(j,o)}else{j=o}a(l,f,j,p);if(q.nodeValue=="\uFEFF"){q.nodeValue=""}t(o);t(q)}b.each(e,function(r){l.remove(r,1)});l.remove("__end",1);u.moveToBookmark(h)})})(tinymce);(function(a){a.GlobalCommands.add("mceBlockQuote",function(){var j=this,o=j.selection,f=j.dom,l,k,e,d,p,c,m,h,b;function g(i){return f.getParent(i,function(q){return q.nodeName==="BLOCKQUOTE"})}l=f.getParent(o.getStart(),f.isBlock);k=f.getParent(o.getEnd(),f.isBlock);if(p=g(l)){if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}if(g(k)){m=p.cloneNode(false);while(e=k.nextSibling){m.appendChild(e.parentNode.removeChild(e))}}if(m){f.insertAfter(m,p)}b=o.getSelectedBlocks(l,k);for(h=b.length-1;h>=0;h--){f.insertAfter(b[h],p)}if(/^\s*$/.test(p.innerHTML)){f.remove(p,1)}if(m&&/^\s*$/.test(m.innerHTML)){f.remove(m,1)}if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(0);if(f.getParent(o.getStart(),f.isBlock)!=l){c=o.getRng();c.move("character",-1);c.select()}}}else{j.selection.moveToBookmark(d)}return}if(a.isIE&&!l&&!k){j.getDoc().execCommand("Indent");e=g(o.getNode());e.style.margin=e.dir="";return}if(!l||!k){return}if(l!=k||l.childNodes.length>1||(l.childNodes.length==1&&l.firstChild.nodeName!="BR")){d=o.getBookmark()}a.each(o.getSelectedBlocks(g(o.getStart()),g(o.getEnd())),function(i){if(i.nodeName=="BLOCKQUOTE"&&!p){p=i;return}if(!p){p=f.create("blockquote");i.parentNode.insertBefore(p,i)}if(i.nodeName=="BLOCKQUOTE"&&p){e=i.firstChild;while(e){p.appendChild(e.cloneNode(true));e=e.nextSibling}f.remove(i);return}p.appendChild(f.remove(i))});if(!d){if(!a.isIE){c=j.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(1)}}else{o.moveToBookmark(d)}})})(tinymce);(function(a){a.each(["Cut","Copy","Paste"],function(b){a.GlobalCommands.add(b,function(){var c=this,e=c.getDoc();try{e.execCommand(b,false,null);if(!e.queryCommandSupported(b)){throw"Error"}}catch(d){c.windowManager.alert(c.getLang("clipboard_no_support"))}})})})(tinymce);(function(a){a.GlobalCommands.add("InsertHorizontalRule",function(){if(a.isOpera){return this.getDoc().execCommand("InsertHorizontalRule",false,"")}this.selection.setContent("<hr />")})})(tinymce);(function(){var a=tinymce.GlobalCommands;a.add(["mceEndUndoLevel","mceAddUndoLevel"],function(){this.undoManager.add()});a.add("Undo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.undo();b.nodeChanged();return true}return false});a.add("Redo",function(){var b=this;if(b.settings.custom_undo_redo){b.undoManager.redo();b.nodeChanged();return true}return false})})();
\ No newline at end of file
diff --git a/lib/editor/tinymce/tiny_mce_popup.js b/lib/editor/tinymce/tiny_mce_popup.js
new file mode 100644 (file)
index 0000000..d235abd
--- /dev/null
@@ -0,0 +1,5 @@
+
+// Uncomment and change this document.domain value if you are loading the script cross subdomains
+// document.domain = 'moxiecode.com';
+
+var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return window.dialogArguments||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var e=this,g,a=document.body,c=e.dom.getViewPort(window),d,f;d=e.getWindowArg("mce_width")-c.w;f=e.getWindowArg("mce_height")-c.h;if(e.isWindow){window.resizeBy(d,f)}else{e.editor.windowManager.resizeBy(d,f,e.id)}},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark("simple")},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
\ No newline at end of file
similarity index 50%
rename from lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js
rename to lib/editor/tinymce/tiny_mce_popup_src.js
index abe449848ca21f896c29f828891b37fb3b80ba1d..967a49f88ec6f94e3ee41a1fb21e6acfb2f9eeb0 100644 (file)
@@ -1,19 +1,31 @@
+/**\r
+ * $Id$\r
+ *\r
+ * @author Moxiecode\r
+ * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ */\r
+\r
 // Some global instances\r
 var tinymce = null, tinyMCEPopup, tinyMCE;\r
 \r
+/**#@+\r
+ * @class TinyMCE popup/dialog helper class. This gives you easy access to the\r
+ * parent editor instance and a bunch of other things. It's higly recommended\r
+ * that you load this script into your dialogs.\r
+ *\r
+ * @static\r
+ * @member tinyMCEPopup\r
+ */\r
 tinyMCEPopup = {\r
-       init : function() {\r
-               var t = this, w, ti, li, q, i, it;\r
-\r
-               li = ('' + document.location.search).replace(/^\?/, '').split('&');\r
-               q = {};\r
-               for (i=0; i<li.length; i++) {\r
-                       it = li[i].split('=');\r
-                       q[unescape(it[0])] = unescape(it[1]);\r
-               }\r
+       /**#@+\r
+        * @method\r
+        */\r
 \r
-               if (q.mce_rdomain)\r
-                       document.domain = q.mce_rdomain;\r
+       /**\r
+        * Initializes the popup this will be called automatically.\r
+        */\r
+       init : function() {\r
+               var t = this, w, ti;\r
 \r
                // Find window & API\r
                w = t.getWin();\r
@@ -43,24 +55,58 @@ tinyMCEPopup = {
                t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);\r
        },\r
 \r
+       /**\r
+        * Returns the reference to the parent window that opened the dialog.\r
+        *\r
+        * @return {Window} Reference to the parent window that opened the dialog.\r
+        */\r
        getWin : function() {\r
                return window.dialogArguments || opener || parent || top;\r
        },\r
 \r
+       /**\r
+        * Returns a window argument/parameter by name.\r
+        *\r
+        * @param {String} n Name of the window argument to retrive.\r
+        * @param {String} dv Optional default value to return.\r
+        * @return {String} Argument value or default value if it wasn't found.\r
+        */\r
        getWindowArg : function(n, dv) {\r
                var v = this.params[n];\r
 \r
                return tinymce.is(v) ? v : dv;\r
        },\r
 \r
+       /**\r
+        * Returns a editor parameter/config option value.\r
+        *\r
+        * @param {String} n Name of the editor config option to retrive.\r
+        * @param {String} dv Optional default value to return.\r
+        * @return {String} Parameter value or default value if it wasn't found.\r
+        */\r
        getParam : function(n, dv) {\r
                return this.editor.getParam(n, dv);\r
        },\r
 \r
+       /**\r
+        * Returns a language item by key.\r
+        *\r
+        * @param {String} n Language item like mydialog.something.\r
+        * @param {String} dv Optional default value to return.\r
+        * @return {String} Language value for the item like "my string" or the default value if it wasn't found.\r
+        */\r
        getLang : function(n, dv) {\r
                return this.editor.getLang(n, dv);\r
        },\r
 \r
+       /**\r
+        * Executed a command on editor that opened the dialog/popup.\r
+        *\r
+        * @param {String} cmd Command to execute.\r
+        * @param {bool} ui Optional boolean value if the UI for the command should be presented or not.\r
+        * @param {Object} val Optional value to pass with the comman like an URL.\r
+        * @param {Object} a Optional arguments object.\r
+        */\r
        execCommand : function(cmd, ui, val, a) {\r
                a = a || {};\r
                a.skip_focus = 1;\r
@@ -69,6 +115,10 @@ tinyMCEPopup = {
                return this.editor.execCommand(cmd, ui, val, a);\r
        },\r
 \r
+       /**\r
+        * Resizes the dialog to the inner size of the window. This is needed since various browsers\r
+        * have different border sizes on windows.\r
+        */\r
        resizeToInnerSize : function() {\r
                var t = this, n, b = document.body, vp = t.dom.getViewPort(window), dw, dh;\r
 \r
@@ -81,16 +131,30 @@ tinyMCEPopup = {
                        t.editor.windowManager.resizeBy(dw, dh, t.id);\r
        },\r
 \r
+       /**\r
+        * Will executed the specified string when the page has been loaded. This function\r
+        * was added for compatibility with the 2.x branch.\r
+        *\r
+        * @param {String} s String to evalutate on init.\r
+        */\r
        executeOnLoad : function(s) {\r
                this.onInit.add(function() {\r
                        eval(s);\r
                });\r
        },\r
 \r
+       /**\r
+        * Stores the current editor selection for later restoration. This can be useful since some browsers\r
+        * looses it's selection if a control element is selected/focused inside the dialogs.\r
+        */\r
        storeSelection : function() {\r
                this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');\r
        },\r
 \r
+       /**\r
+        * Restores any stored selection. This can be useful since some browsers\r
+        * looses it's selection if a control element is selected/focused inside the dialogs.\r
+        */\r
        restoreSelection : function() {\r
                var t = tinyMCEPopup;\r
 \r
@@ -98,13 +162,15 @@ tinyMCEPopup = {
                        t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);\r
        },\r
 \r
+       /**\r
+        * Loads a specific dialog language pack. If you pass in plugin_url as a arugment\r
+        * when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.\r
+        */\r
        requireLangPack : function() {\r
-        var u = tinyMCE.settings['document_base_url'];\r
-        var p = this.getWindowArg('plugin_url') || this.getWindowArg('theme_url');\r
+               var t = this, u = t.getWindowArg('plugin_url') || t.getWindowArg('theme_url');\r
 \r
-               if (u && this.editor.settings.language) {\r
-            l = tinyMCE.settings['language'];\r
-            u += '/lib/editor/tinymce/strings.php?lang='+l+'&dlg=1&context=' + p;\r
+               if (u && t.editor.settings.language && t.features.translate_i18n !== false) {\r
+                       u += '/langs/' + t.editor.settings.language + '_dlg.js';\r
 \r
                        if (!tinymce.ScriptLoader.isDone(u)) {\r
                                document.write('<script type="text/javascript" src="' + tinymce._addVer(u) + '"></script>');\r
@@ -113,6 +179,13 @@ tinyMCEPopup = {
                }\r
        },\r
 \r
+       /**\r
+        * Executes a color picker on the specified element id. When the user\r
+        * then selects a color it will be set as the value of the specified element.\r
+        *\r
+        * @param {DOMEvent} e DOM event object.\r
+        * @param {string} element_id Element id to be filled with the color value from the picker.\r
+        */\r
        pickColor : function(e, element_id) {\r
                this.execCommand('mceColorPicker', true, {\r
                        color : document.getElementById(element_id).value,\r
@@ -128,19 +201,46 @@ tinyMCEPopup = {
                });\r
        },\r
 \r
+       /**\r
+        * Opens a filebrowser/imagebrowser this will set the output value from\r
+        * the browser as a value on the specified element.\r
+        *\r
+        * @param {string} element_id Id of the element to set value in.\r
+        * @param {string} type Type of browser to open image/file/flash.\r
+        * @param {string} option Option name to get the file_broswer_callback function name from.\r
+        */\r
        openBrowser : function(element_id, type, option) {\r
                tinyMCEPopup.restoreSelection();\r
                this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);\r
        },\r
 \r
+       /**\r
+        * Creates a confirm dialog. Please don't use the blocking behavior of this\r
+        * native version use the callback method instead then it can be extended.\r
+        *\r
+        * @param {String} t Title for the new confirm dialog.\r
+        * @param {function} cb Callback function to be executed after the user has selected ok or cancel.\r
+        * @param {Object} s Optional scope to execute the callback in.\r
+        */\r
        confirm : function(t, cb, s) {\r
                this.editor.windowManager.confirm(t, cb, s, window);\r
        },\r
 \r
+       /**\r
+        * Creates a alert dialog. Please don't use the blocking behavior of this\r
+        * native version use the callback method instead then it can be extended.\r
+        *\r
+        * @param {String} t Title for the new alert dialog.\r
+        * @param {function} cb Callback function to be executed after the user has selected ok.\r
+        * @param {Object} s Optional scope to execute the callback in.\r
+        */\r
        alert : function(tx, cb, s) {\r
                this.editor.windowManager.alert(tx, cb, s, window);\r
        },\r
 \r
+       /**\r
+        * Closes the current window.\r
+        */\r
        close : function() {\r
                var t = this;\r
 \r
@@ -174,7 +274,12 @@ tinyMCEPopup = {
        },*/\r
 \r
        _onDOMLoaded : function() {\r
-               var t = this, ti = document.title, bm, h, nv;\r
+               var t = tinyMCEPopup, ti = document.title, bm, h, nv;\r
+\r
+               if (t.domLoaded)\r
+                       return;\r
+\r
+               t.domLoaded = 1;\r
 \r
                // Translate page\r
                if (t.features.translate_i18n !== false) {\r
@@ -196,9 +301,13 @@ tinyMCEPopup = {
                document.body.style.display = '';\r
 \r
                // Restore selection in IE when focus is placed on a non textarea or input element of the type text\r
-               if (tinymce.isIE)\r
+               if (tinymce.isIE) {\r
                        document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);\r
 \r
+                       // Add base target element for it since it would fail with modal dialogs\r
+                       t.dom.add(t.dom.select('head')[0], 'base', {target : '_self'});\r
+               }\r
+\r
                t.restoreSelection();\r
                t.resizeToInnerSize();\r
 \r
@@ -264,30 +373,37 @@ tinyMCEPopup = {
        },\r
 \r
        _wait : function() {\r
-               var t = this, ti;\r
-\r
-               if (tinymce.isIE && document.location.protocol != 'https:') {\r
-                       // Fake DOMContentLoaded on IE\r
-                       document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');\r
-                       document.getElementById("__ie_onload").onreadystatechange = function() {\r
-                               if (this.readyState == "complete") {\r
-                                       t._onDOMLoaded();\r
-                                       document.getElementById("__ie_onload").onreadystatechange = null; // Prevent leak\r
+               // Use IE method\r
+               if (document.attachEvent) {\r
+                       document.attachEvent("onreadystatechange", function() {\r
+                               if (document.readyState === "complete") {\r
+                                       document.detachEvent("onreadystatechange", arguments.callee);\r
+                                       tinyMCEPopup._onDOMLoaded();\r
                                }\r
-                       };\r
-               } else {\r
-                       if (tinymce.isIE || tinymce.isWebKit) {\r
-                               ti = setInterval(function() {\r
-                                       if (/loaded|complete/.test(document.readyState)) {\r
-                                               clearInterval(ti);\r
-                                               t._onDOMLoaded();\r
+                       });\r
+\r
+                       if (document.documentElement.doScroll && window == window.top) {\r
+                               (function() {\r
+                                       if (tinyMCEPopup.domLoaded)\r
+                                               return;\r
+\r
+                                       try {\r
+                                               // If IE is used, use the trick by Diego Perini\r
+                                               // http://javascript.nwbox.com/IEContentLoaded/\r
+                                               document.documentElement.doScroll("left");\r
+                                       } catch (ex) {\r
+                                               setTimeout(arguments.callee, 0);\r
+                                               return;\r
                                        }\r
-                               }, 10);\r
-                       } else {\r
-                               window.addEventListener('DOMContentLoaded', function() {\r
-                                       t._onDOMLoaded();\r
-                               }, false);\r
+\r
+                                       tinyMCEPopup._onDOMLoaded();\r
+                               })();\r
                        }\r
+\r
+                       document.attachEvent('onload', tinyMCEPopup._onDOMLoaded);\r
+               } else if (document.addEventListener) {\r
+                       window.addEventListener('DOMContentLoaded', tinyMCEPopup._onDOMLoaded, false);\r
+                       window.addEventListener('load', tinyMCEPopup._onDOMLoaded, false);\r
                }\r
        }\r
 };\r
similarity index 70%
rename from lib/editor/tinymce/jscripts/tiny_mce/tiny_mce_src.js
rename to lib/editor/tinymce/tiny_mce_src.js
index 695606ebf065043aea0180e02b7d33faeb280d30..b707fd56abf321495ecbaf98acb86c3aa98396fc 100644 (file)
@@ -1,10 +1,7 @@
-\r
-/* file:jscripts/tiny_mce/classes/tinymce.js */\r
-\r
 var tinymce = {\r
        majorVersion : '3',\r
-       minorVersion : '2.0.1',\r
-       releaseDate : '2008-09-17',\r
+       minorVersion : '2.3.1',\r
+       releaseDate : '2009-05-05',\r
 \r
        _init : function() {\r
                var t = this, d = document, w = window, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;\r
@@ -12,7 +9,6 @@ var tinymce = {
                // Browser checks\r
                t.isOpera = w.opera && opera.buildNumber;\r
                t.isWebKit = /WebKit/.test(ua);\r
-               t.isOldWebKit = t.isWebKit && !w.getSelection().getRangeAt;\r
                t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);\r
                t.isIE6 = t.isIE && /MSIE [56]/.test(ua);\r
                t.isGecko = !t.isWebKit && /Gecko/.test(ua);\r
@@ -88,13 +84,12 @@ var tinymce = {
                if (!t)\r
                        return n != 'undefined';\r
 \r
-               if (t == 'array' && (o instanceof Array))\r
+               if (t == 'array' && (o.hasOwnProperty && o instanceof Array))\r
                        return true;\r
 \r
                return n == t;\r
        },\r
 \r
-       // #if !jquery\r
 \r
        each : function(o, cb, s) {\r
                var n, l;\r
@@ -176,7 +171,6 @@ var tinymce = {
                return (s ? '' + s : '').replace(/^\s*|\s*$/g, '');\r
        },\r
 \r
-       // #endif\r
 \r
        create : function(s, p) {\r
                var t = this, sp, ns, cn, scn, c, de = 0;\r
@@ -338,7 +332,7 @@ var tinymce = {
                                                w.removeEventListener('unload', unload, false);\r
 \r
                                        // Destroy references\r
-                                       t.unloads = o = li = w = unload = null;\r
+                                       t.unloads = o = li = w = unload = 0;\r
 \r
                                        // Run garbarge collector on IE\r
                                        if (window.CollectGarbage)\r
@@ -356,19 +350,22 @@ var tinymce = {
                                                d.detachEvent('onstop', stop);\r
 \r
                                                // Call unload handler\r
-                                               unload();\r
+                                               if (unload)\r
+                                                       unload();\r
 \r
-                                               d = null;\r
+                                               d = 0;\r
                                        };\r
 \r
                                        // Fire unload when the currently loading page is stopped\r
-                                       d.attachEvent('onstop', stop);\r
+                                       if (d)\r
+                                               d.attachEvent('onstop', stop);\r
 \r
                                        // Remove onstop listener after a while to prevent the unload function\r
                                        // to execute if the user presses cancel in an onbeforeunload\r
                                        // confirm dialog and then presses the browser stop button\r
                                        window.setTimeout(function() {\r
-                                               d.detachEvent('onstop', stop);\r
+                                               if (d)\r
+                                                       d.detachEvent('onstop', stop);\r
                                        }, 0);\r
                                }\r
                        };\r
@@ -427,15 +424,6 @@ window.tinymce = tinymce;
 \r
 // Initialize the API\r
 tinymce._init();\r
-\r
-/* file:jscripts/tiny_mce/classes/adapter/jquery/adapter.js */\r
-\r
-\r
-/* file:jscripts/tiny_mce/classes/adapter/prototype/adapter.js */\r
-\r
-\r
-/* file:jscripts/tiny_mce/classes/util/Dispatcher.js */\r
-\r
 tinymce.create('tinymce.util.Dispatcher', {\r
        scope : null,\r
        listeners : null,\r
@@ -488,9 +476,6 @@ tinymce.create('tinymce.util.Dispatcher', {
        }\r
 \r
        });\r
-\r
-/* file:jscripts/tiny_mce/classes/util/URI.js */\r
-\r
 (function() {\r
        var each = tinymce.each;\r
 \r
@@ -502,7 +487,7 @@ tinymce.create('tinymce.util.Dispatcher', {
                        s = t.settings = s || {};\r
 \r
                        // Strange app protocol or local anchor\r
-                       if (/^(mailto|news|javascript|about):/i.test(u) || /^\s*#/.test(u)) {\r
+                       if (/^(mailto|tel|news|javascript|about):/i.test(u) || /^\s*#/.test(u)) {\r
                                t.source = u;\r
                                return;\r
                        }\r
@@ -636,9 +621,10 @@ tinymce.create('tinymce.util.Dispatcher', {
                },\r
 \r
                toAbsPath : function(base, path) {\r
-                       var i, nb = 0, o = [];\r
+                       var i, nb = 0, o = [], tr;\r
 \r
                        // Split paths\r
+                       tr = /\/$/.test(path) ? '/' : '';\r
                        base = base.split('/');\r
                        path = path.split('/');\r
 \r
@@ -675,9 +661,9 @@ tinymce.create('tinymce.util.Dispatcher', {
 \r
                        // If /a/b/c or /\r
                        if (i <= 0)\r
-                               return '/' + o.reverse().join('/');\r
+                               return '/' + o.reverse().join('/') + tr;\r
 \r
-                       return '/' + base.slice(0, i).join('/') + '/' + o.reverse().join('/');\r
+                       return '/' + base.slice(0, i).join('/') + '/' + o.reverse().join('/') + tr;\r
                },\r
 \r
                getURI : function(nh) {\r
@@ -718,9 +704,6 @@ tinymce.create('tinymce.util.Dispatcher', {
 \r
                });\r
 })();\r
-\r
-/* file:jscripts/tiny_mce/classes/util/Cookie.js */\r
-\r
 (function() {\r
        var each = tinymce.each;\r
 \r
@@ -792,9 +775,6 @@ tinymce.create('tinymce.util.Dispatcher', {
 \r
                });\r
 })();\r
-\r
-/* file:jscripts/tiny_mce/classes/util/JSON.js */\r
-\r
 tinymce.create('static tinymce.util.JSON', {\r
        serialize : function(o) {\r
                var i, v, s = tinymce.util.JSON.serialize, t;\r
@@ -820,7 +800,7 @@ tinymce.create('static tinymce.util.JSON', {
                }\r
 \r
                if (t == 'object') {\r
-                       if (o instanceof Array) {\r
+                       if (o.hasOwnProperty && o instanceof Array) {\r
                                        for (i=0, v = '['; i<o.length; i++)\r
                                                v += (i > 0 ? ',' : '') + s(o[i]);\r
 \r
@@ -847,9 +827,6 @@ tinymce.create('static tinymce.util.JSON', {
        }\r
 \r
        });\r
-\r
-/* file:jscripts/tiny_mce/classes/util/XHR.js */\r
-\r
 tinymce.create('static tinymce.util.XHR', {\r
        send : function(o) {\r
                var x, t, w = window, c = 0;\r
@@ -907,9 +884,6 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                }\r
 });\r
-\r
-/* file:jscripts/tiny_mce/classes/util/JSONRequest.js */\r
-\r
 (function() {\r
        var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR;\r
 \r
@@ -963,10 +937,7 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
 \r
                });\r
-}());\r
-/* file:jscripts/tiny_mce/classes/dom/DOMUtils.js */\r
-\r
-(function() {\r
+}());(function(tinymce) {\r
        // Shorten names\r
        var each = tinymce.each, is = tinymce.is;\r
        var isWebKit = tinymce.isWebKit, isIE = tinymce.isIE;\r
@@ -975,12 +946,7 @@ tinymce.create('static tinymce.util.XHR', {
                doc : null,\r
                root : null,\r
                files : null,\r
-               listeners : {},\r
                pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,\r
-               cache : {},\r
-               idPattern : /^#[\w]+$/,\r
-               elmPattern : /^[\w_*]+$/,\r
-               elmClassPattern : /^([\w_]*)\.([\w_]+)$/,\r
                props : {\r
                        "for" : "htmlFor",\r
                        "class" : "className",\r
@@ -990,7 +956,10 @@ tinymce.create('static tinymce.util.XHR', {
                        maxlength : "maxLength",\r
                        readonly : "readOnly",\r
                        selected : "selected",\r
-                       value : "value"\r
+                       value : "value",\r
+                       id : "id",\r
+                       name : "name",\r
+                       type : "type"\r
                },\r
 \r
                DOMUtils : function(d, s) {\r
@@ -1080,49 +1049,51 @@ tinymce.create('static tinymce.util.XHR', {
                        };\r
                },\r
 \r
+               is : function(n, patt) {\r
+                       return tinymce.dom.Sizzle.matches(patt, n.nodeType ? [n] : n).length > 0;\r
+               },\r
+\r
                getParent : function(n, f, r) {\r
-                       var na, se = this.settings;\r
+                       return this.getParents(n, f, r, false);\r
+               },\r
 \r
-                       n = this.get(n);\r
+               getParents : function(n, f, r, c) {\r
+                       var t = this, na, se = t.settings, o = [];\r
+\r
+                       n = t.get(n);\r
+                       c = c === undefined;\r
 \r
                        if (se.strict_root)\r
-                               r = r || this.getRoot();\r
+                               r = r || t.getRoot();\r
 \r
                        // Wrap node name as func\r
                        if (is(f, 'string')) {\r
-                               na = f.toUpperCase();\r
-\r
-                               f = function(n) {\r
-                                       var s = false;\r
-\r
-                                       // Any element\r
-                                       if (n.nodeType == 1 && na === '*') {\r
-                                               s = true;\r
-                                               return false;\r
-                                       }\r
-\r
-                                       each(na.split(','), function(v) {\r
-                                               if (n.nodeType == 1 && ((se.strict && n.nodeName.toUpperCase() == v) || n.nodeName.toUpperCase() == v)) {\r
-                                                       s = true;\r
-                                                       return false; // Break loop\r
-                                               }\r
-                                       });\r
+                               na = f;\r
 \r
-                                       return s;\r
-                               };\r
+                               if (f === '*') {\r
+                                       f = function(n) {return n.nodeType == 1;};\r
+                               } else {\r
+                                       f = function(n) {\r
+                                               return t.is(n, na);\r
+                                       };\r
+                               }\r
                        }\r
 \r
                        while (n) {\r
-                               if (n == r)\r
-                                       return null;\r
+                               if (n == r || !n.nodeType || n.nodeType === 9)\r
+                                       break;\r
 \r
-                               if (f(n))\r
-                                       return n;\r
+                               if (!f || f(n)) {\r
+                                       if (c)\r
+                                               o.push(n);\r
+                                       else\r
+                                               return n;\r
+                               }\r
 \r
                                n = n.parentNode;\r
                        }\r
 \r
-                       return null;\r
+                       return c ? o : null;\r
                },\r
 \r
                get : function(e) {\r
@@ -1140,207 +1111,13 @@ tinymce.create('static tinymce.util.XHR', {
                        return e;\r
                },\r
 \r
-               // #if !jquery\r
 \r
                select : function(pa, s) {\r
-                       var t = this, cs, c, pl, o = [], x, i, l, n, xp;\r
-\r
-                       s = t.get(s) || t.doc;\r
-\r
-                       // Look for native support and use that if it's found\r
-                       if (s.querySelectorAll) {\r
-                               // Element scope then use temp id\r
-                               // We need to do this to be compatible with other implementations\r
-                               // See bug report: http://bugs.webkit.org/show_bug.cgi?id=17461\r
-                               if (s != t.doc) {\r
-                                       i = s.id;\r
-                                       s.id = '_mc_tmp';\r
-                                       pa = '#_mc_tmp ' + pa;\r
-                               }\r
-\r
-                               // Select elements\r
-                               l = tinymce.grep(s.querySelectorAll(pa));\r
-\r
-                               // Restore old id\r
-                               s.id = i;\r
-\r
-                               return l;\r
-                       }\r
-\r
-                       if (!t.selectorRe)\r
-                               t.selectorRe = /^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i;;\r
-\r
-                       // Air doesn't support eval due to security sandboxing and querySelectorAll isn't supported yet\r
-                       if (tinymce.isAir) {\r
-                               each(tinymce.explode(pa), function(v) {\r
-                                       if (!(xp = t.cache[v])) {\r
-                                               xp = '';\r
-\r
-                                               each(v.split(' '), function(v) {\r
-                                                       v = t.selectorRe.exec(v);\r
-\r
-                                                       xp += v[1] ? '//' + v[1] : '//*';\r
-\r
-                                                       // Id\r
-                                                       if (v[2])\r
-                                                               xp += "[@id='" + v[2] + "']";\r
-\r
-                                                       // Class\r
-                                                       if (v[3]) {\r
-                                                               each(v[3].split('.'), function(n) {\r
-                                                                       xp += "[@class = '" + n + "' or contains(concat(' ', @class, ' '), ' " + n + " ')]";\r
-                                                               });\r
-                                                       }\r
-                                               });\r
-\r
-                                               t.cache[v] = xp;\r
-                                       }\r
-\r
-                                       xp = t.doc.evaluate(xp, s, null, 4, null);\r
-\r
-                                       while (n = xp.iterateNext())\r
-                                               o.push(n);\r
-                               });\r
-\r
-                               return o;\r
-                       }\r
-\r
-                       if (t.settings.strict) {\r
-                               function get(s, n) {\r
-                                       return s.getElementsByTagName(n.toLowerCase());\r
-                               };\r
-                       } else {\r
-                               function get(s, n) {\r
-                                       return s.getElementsByTagName(n);\r
-                               };\r
-                       }\r
-\r
-                       // Simple element pattern. For example: "p" or "*"\r
-                       if (t.elmPattern.test(pa)) {\r
-                               x = get(s, pa);\r
-\r
-                               for (i = 0, l = x.length; i<l; i++)\r
-                                       o.push(x[i]);\r
-\r
-                               return o;\r
-                       }\r
-\r
-                       // Simple class pattern. For example: "p.class" or ".class"\r
-                       if (t.elmClassPattern.test(pa)) {\r
-                               pl = t.elmClassPattern.exec(pa);\r
-                               x = get(s, pl[1] || '*');\r
-                               c = ' ' + pl[2] + ' ';\r
-\r
-                               for (i = 0, l = x.length; i<l; i++) {\r
-                                       n = x[i];\r
-\r
-                                       if (n.className && (' ' + n.className + ' ').indexOf(c) !== -1)\r
-                                               o.push(n);\r
-                               }\r
-\r
-                               return o;\r
-                       }\r
-\r
-                       function collect(n) {\r
-                               if (!n.mce_save) {\r
-                                       n.mce_save = 1;\r
-                                       o.push(n);\r
-                               }\r
-                       };\r
-\r
-                       function collectIE(n) {\r
-                               if (!n.getAttribute('mce_save')) {\r
-                                       n.setAttribute('mce_save', '1');\r
-                                       o.push(n);\r
-                               }\r
-                       };\r
-\r
-                       function find(n, f, r) {\r
-                               var i, l, nl = get(r, n);\r
-\r
-                               for (i = 0, l = nl.length; i < l; i++)\r
-                                       f(nl[i]);\r
-                       };\r
-\r
-                       each(pa.split(','), function(v, i) {\r
-                               v = tinymce.trim(v);\r
-\r
-                               // Simple element pattern, most common in TinyMCE\r
-                               if (t.elmPattern.test(v)) {\r
-                                       each(get(s, v), function(n) {\r
-                                               collect(n);\r
-                                       });\r
-\r
-                                       return;\r
-                               }\r
-\r
-                               // Simple element pattern with class, fairly common in TinyMCE\r
-                               if (t.elmClassPattern.test(v)) {\r
-                                       x = t.elmClassPattern.exec(v);\r
-\r
-                                       each(get(s, x[1]), function(n) {\r
-                                               if (t.hasClass(n, x[2]))\r
-                                                       collect(n);\r
-                                       });\r
-\r
-                                       return;\r
-                               }\r
-\r
-                               if (!(cs = t.cache[pa])) {\r
-                                       cs = 'x=(function(cf, s) {';\r
-                                       pl = v.split(' ');\r
-\r
-                                       each(pl, function(v) {\r
-                                               var p = t.selectorRe.exec(v);\r
-\r
-                                               // Find elements\r
-                                               p[1] = p[1] || '*';\r
-                                               cs += 'find("' + p[1] + '", function(n) {';\r
-\r
-                                               // Check id\r
-                                               if (p[2])\r
-                                                       cs += 'if (n.id !== "' + p[2] + '") return;';\r
-\r
-                                               // Check classes\r
-                                               if (p[3]) {\r
-                                                       cs += 'var c = " " + n.className + " ";';\r
-                                                       cs += 'if (';\r
-                                                       c = '';\r
-                                                       each(p[3].split('.'), function(v) {\r
-                                                               if (v)\r
-                                                                       c += (c ? '||' : '') + 'c.indexOf(" ' + v + ' ") === -1';\r
-                                                       });\r
-                                                       cs += c + ') return;';\r
-                                               }\r
-                                       });\r
-\r
-                                       cs += 'cf(n);';\r
-\r
-                                       for (i = pl.length - 1; i >= 0; i--)\r
-                                               cs += '}, ' + (i ? 'n' : 's') + ');';\r
-\r
-                                       cs += '})';\r
-\r
-                                       // Compile CSS pattern function\r
-                                       t.cache[pa] = cs = eval(cs);\r
-                               }\r
-\r
-                               // Run selector function\r
-                               cs(isIE ? collectIE : collect, s);\r
-                       });\r
-\r
-                       // Cleanup\r
-                       each(o, function(n) {\r
-                               if (isIE)\r
-                                       n.removeAttribute('mce_save');\r
-                               else\r
-                                       delete n.mce_save;\r
-                       });\r
+                       var t = this;\r
 \r
-                       return o;\r
+                       return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []);\r
                },\r
 \r
-               // #endif\r
 \r
                add : function(p, n, a, h, c) {\r
                        var t = this;\r
@@ -1383,8 +1160,10 @@ tinymce.create('static tinymce.util.XHR', {
                },\r
 \r
                remove : function(n, k) {\r
+                       var t = this;\r
+\r
                        return this.run(n, function(n) {\r
-                               var p, g;\r
+                               var p, g, i;\r
 \r
                                p = n.parentNode;\r
 \r
@@ -1392,24 +1171,29 @@ tinymce.create('static tinymce.util.XHR', {
                                        return null;\r
 \r
                                if (k) {\r
-                                       each (n.childNodes, function(c) {\r
-                                               p.insertBefore(c.cloneNode(true), n);\r
-                                       });\r
+                                       for (i = n.childNodes.length - 1; i >= 0; i--)\r
+                                               t.insertAfter(n.childNodes[i], n);\r
+\r
+                                       //each(n.childNodes, function(c) {\r
+                                       //      p.insertBefore(c.cloneNode(true), n);\r
+                                       //});\r
                                }\r
 \r
                                // Fix IE psuedo leak\r
-               /*              if (isIE) {\r
+                               if (t.fixPsuedoLeaks) {\r
                                        p = n.cloneNode(true);\r
-                                       n.outerHTML = '';\r
+                                       k = 'IELeakGarbageBin';\r
+                                       g = t.get(k) || t.add(t.doc.body, 'div', {id : k, style : 'display:none'});\r
+                                       g.appendChild(n);\r
+                                       g.innerHTML = '';\r
 \r
                                        return p;\r
-                               }*/\r
+                               }\r
 \r
                                return p.removeChild(n);\r
                        });\r
                },\r
 \r
-               // #if !jquery\r
 \r
                setStyle : function(n, na, v) {\r
                        var t = this;\r
@@ -1580,7 +1364,6 @@ tinymce.create('static tinymce.util.XHR', {
                        });\r
                },\r
 \r
-               // #endif\r
 \r
                getAttrib : function(e, n, dv) {\r
                        var v, t = this;\r
@@ -1637,7 +1420,7 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                                        case 'size':\r
                                                // IE returns +0 as default value for size\r
-                                               if (v === '+0' || v === 20)\r
+                                               if (v === '+0' || v === 20 || v === 0)\r
                                                        v = '';\r
 \r
                                                break;\r
@@ -1645,6 +1428,9 @@ tinymce.create('static tinymce.util.XHR', {
                                        case 'width':\r
                                        case 'height':\r
                                        case 'vspace':\r
+                                       case 'checked':\r
+                                       case 'disabled':\r
+                                       case 'readonly':\r
                                                if (v === 0)\r
                                                        v = '';\r
 \r
@@ -1660,13 +1446,15 @@ tinymce.create('static tinymce.util.XHR', {
                                        case 'maxlength':\r
                                        case 'tabindex':\r
                                                // IE returns default value\r
-                                               if (v === 32768 || v === 2147483647)\r
+                                               if (v === 32768 || v === 2147483647 || v === '32768')\r
                                                        v = '';\r
 \r
                                                break;\r
 \r
+                                       case 'multiple':\r
                                        case 'compact':\r
                                        case 'noshade':\r
+                                       case 'nowrap':\r
                                                if (v === 65535)\r
                                                        return n;\r
 \r
@@ -1679,48 +1467,44 @@ tinymce.create('static tinymce.util.XHR', {
                                        default:\r
                                                // IE has odd anonymous function for event attributes\r
                                                if (n.indexOf('on') === 0 && v)\r
-                                                       v = ('' + v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/, '$1');\r
+                                                       v = ('' + v).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1');\r
                                }\r
                        }\r
 \r
                        return (v !== undefined && v !== null && v !== '') ? '' + v : dv;\r
                },\r
 \r
-               getPos : function(n) {\r
+               getPos : function(n, ro) {\r
                        var t = this, x = 0, y = 0, e, d = t.doc, r;\r
 \r
                        n = t.get(n);\r
+                       ro = ro || d.body;\r
 \r
-                       // Use getBoundingClientRect on IE, Opera has it but it's not perfect\r
-                       if (n && isIE) {\r
-                               n = n.getBoundingClientRect();\r
-                               e = t.boxModel ? d.documentElement : d.body;\r
-                               x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border\r
-                               x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;\r
-                               n.top += t.win.self != t.win.top ? 2 : 0; // IE adds some strange extra cord if used in a frameset\r
+                       if (n) {\r
+                               // Use getBoundingClientRect on IE, Opera has it but it's not perfect\r
+                               if (isIE && !t.stdMode) {\r
+                                       n = n.getBoundingClientRect();\r
+                                       e = t.boxModel ? d.documentElement : d.body;\r
+                                       x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border\r
+                                       x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;\r
+                                       n.top += t.win.self != t.win.top ? 2 : 0; // IE adds some strange extra cord if used in a frameset\r
 \r
-                               return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};\r
-                       }\r
+                                       return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};\r
+                               }\r
 \r
-                       r = n;\r
-                       while (r) {\r
-                               x += r.offsetLeft || 0;\r
-                               y += r.offsetTop || 0;\r
-                               r = r.offsetParent;\r
-                       }\r
+                               r = n;\r
+                               while (r && r != ro && r.nodeType) {\r
+                                       x += r.offsetLeft || 0;\r
+                                       y += r.offsetTop || 0;\r
+                                       r = r.offsetParent;\r
+                               }\r
 \r
-                       r = n;\r
-                       while (r) {\r
-                               // Opera 9.25 bug fix, fixed in 9.50\r
-                               if (!/^table-row|inline.*/i.test(t.getStyle(r, "display", 1))) {\r
+                               r = n.parentNode;\r
+                               while (r && r != ro && r.nodeType) {\r
                                        x -= r.scrollLeft || 0;\r
                                        y -= r.scrollTop || 0;\r
+                                       r = r.parentNode;\r
                                }\r
-\r
-                               r = r.parentNode;\r
-\r
-                               if (r == d.body)\r
-                                       break;\r
                        }\r
 \r
                        return {x : x, y : y};\r
@@ -1862,7 +1646,6 @@ tinymce.create('static tinymce.util.XHR', {
                        });\r
                },\r
 \r
-               // #if !jquery\r
 \r
                addClass : function(e, c) {\r
                        return this.run(e, function(e) {\r
@@ -1919,10 +1702,9 @@ tinymce.create('static tinymce.util.XHR', {
                isHidden : function(e) {\r
                        e = this.get(e);\r
 \r
-                       return e.style.display == 'none' || this.getStyle(e, 'display') == 'none';\r
+                       return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none';\r
                },\r
 \r
-               // #endif\r
 \r
                uniqueId : function(p) {\r
                        return (!p ? 'mce_' : p) + (this.counter++);\r
@@ -1993,7 +1775,7 @@ tinymce.create('static tinymce.util.XHR', {
                                        if (x) {\r
                                                // So if we replace the p elements with divs and mark them and then replace them back to paragraphs\r
                                                // after we use innerHTML we can fix the DOM tree\r
-                                               h = h.replace(/<p([^>]+)>|<p>/g, '<div$1 mce_tmp="1">');\r
+                                               h = h.replace(/<p ([^>]+)>|<p>/g, '<div $1 mce_tmp="1">');\r
                                                h = h.replace(/<\/p>/g, '</div>');\r
 \r
                                                // Set the new HTML with DIVs\r
@@ -2053,23 +1835,24 @@ tinymce.create('static tinymce.util.XHR', {
                        if (tinymce.isGecko) {\r
                                h = h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi, '<$1b$2>');\r
                                h = h.replace(/<(\/?)em>|<em( [^>]+)>/gi, '<$1i$2>');\r
-                       } else if (isIE)\r
+                       } else if (isIE) {\r
                                h = h.replace(/&apos;/g, '&#39;'); // IE can't handle apos\r
+                               h = h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi, ''); // IE doesn't handle default values correct\r
+                       }\r
 \r
                        // Fix some issues\r
                        h = h.replace(/<a( )([^>]+)\/>|<a\/>/gi, '<a$1$2></a>'); // Force open\r
 \r
                        // Store away src and href in mce_src and mce_href since browsers mess them up\r
                        if (s.keep_values) {\r
-                               h = h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g, '<!--[CDATA[$1]]-->');\r
-\r
                                // Wrap scripts and styles in comments for serialization purposes\r
                                if (/<script|style/.test(h)) {\r
                                        function trim(s) {\r
                                                // Remove prefix and suffix code for element\r
+                                               s = s.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n');\r
                                                s = s.replace(/^[\r\n]*|[\r\n]*$/g, '');\r
-                                               s = s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<\[CDATA\[|<!--|<\[CDATA\[)[\r\n]*/g, '');\r
-                                               s = s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->)\s*$/g, '');\r
+                                               s = s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g, '');\r
+                                               s = s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g, '');\r
 \r
                                                return s;\r
                                        };\r
@@ -2098,6 +1881,8 @@ tinymce.create('static tinymce.util.XHR', {
                                        });\r
                                }\r
 \r
+                               h = h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g, '<!--[CDATA[$1]]-->');\r
+\r
                                // Process all tags with src, href or style\r
                                h = h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi, function(a, n) {\r
                                        function handle(m, b, c) {\r
@@ -2108,10 +1893,6 @@ tinymce.create('static tinymce.util.XHR', {
                                                        return m;\r
 \r
                                                if (b == 'style') {\r
-                                                       // Why did I need this one?\r
-                                                       //if (isIE)\r
-                                                       //      u = t.serializeStyle(t.parseStyle(u));\r
-\r
                                                        // No mce_style for elements with these since they might get resized by the user\r
                                                        if (t._isRes(c))\r
                                                                return m;\r
@@ -2153,7 +1934,7 @@ tinymce.create('static tinymce.util.XHR', {
                        if (!e)\r
                                return null;\r
 \r
-                       if (isIE)\r
+                       if (e.outerHTML !== undefined)\r
                                return e.outerHTML;\r
 \r
                        d = (e.ownerDocument || this.doc).createElement("body");\r
@@ -2189,15 +1970,23 @@ tinymce.create('static tinymce.util.XHR', {
                },\r
 \r
                decode : function(s) {\r
-                       var e;\r
+                       var e, n, v;\r
 \r
                        // Look for entities to decode\r
                        if (/&[^;]+;/.test(s)) {\r
                                // Decode the entities using a div element not super efficient but less code\r
                                e = this.doc.createElement("div");\r
                                e.innerHTML = s;\r
+                               n = e.firstChild;\r
+                               v = '';\r
+\r
+                               if (n) {\r
+                                       do {\r
+                                               v += n.nodeValue;\r
+                                       } while (n.nextSibling);\r
+                               }\r
 \r
-                               return !e.firstChild ? s : e.firstChild.nodeValue;\r
+                               return v || s;\r
                        }\r
 \r
                        return s;\r
@@ -2223,7 +2012,6 @@ tinymce.create('static tinymce.util.XHR', {
                        }) : s;\r
                },\r
 \r
-               // #if !jquery\r
 \r
                insertAfter : function(n, r) {\r
                        var t = this;\r
@@ -2245,7 +2033,6 @@ tinymce.create('static tinymce.util.XHR', {
                        });\r
                },\r
 \r
-               // #endif\r
 \r
                isBlock : function(n) {\r
                        if (n.nodeType && n.nodeType !== 1)\r
@@ -2253,16 +2040,17 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                        n = n.nodeName || n;\r
 \r
-                       return /^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);\r
+                       return /^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);\r
                },\r
 \r
-               // #if !jquery\r
 \r
                replace : function(n, o, k) {\r
+                       var t = this;\r
+\r
                        if (is(o, 'array'))\r
                                n = n.cloneNode(true);\r
 \r
-                       return this.run(o, function(o) {\r
+                       return t.run(o, function(o) {\r
                                if (k) {\r
                                        each(o.childNodes, function(c) {\r
                                                n.appendChild(c.cloneNode(true));\r
@@ -2271,17 +2059,37 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                                // Fix IE psuedo leak for elements since replacing elements if fairly common\r
                                // Will break parentNode for some unknown reason\r
-       /*                      if (isIE && o.nodeType === 1) {\r
+                               if (t.fixPsuedoLeaks && o.nodeType === 1) {\r
                                        o.parentNode.insertBefore(n, o);\r
-                                       o.outerHTML = '';\r
+                                       t.remove(o);\r
                                        return n;\r
-                               }*/\r
+                               }\r
 \r
                                return o.parentNode.replaceChild(n, o);\r
                        });\r
                },\r
 \r
-               // #endif\r
+\r
+               findCommonAncestor : function(a, b) {\r
+                       var ps = a, pe;\r
+\r
+                       while (ps) {\r
+                               pe = b;\r
+\r
+                               while (pe && ps != pe)\r
+                                       pe = pe.parentNode;\r
+\r
+                               if (ps == pe)\r
+                                       break;\r
+\r
+                               ps = ps.parentNode;\r
+                       }\r
+\r
+                       if (!ps && a.ownerDocument)\r
+                               return a.ownerDocument.documentElement;\r
+\r
+                       return ps;\r
+               },\r
 \r
                toHex : function(s) {\r
                        var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);\r
@@ -2426,6 +2234,77 @@ tinymce.create('static tinymce.util.XHR', {
                                tinymce.removeUnload(t.destroy);\r
                },\r
 \r
+               createRng : function() {\r
+                       var d = this.doc;\r
+\r
+                       return d.createRange ? d.createRange() : new tinymce.dom.Range(this);\r
+               },\r
+\r
+               split : function(pe, e, re) {\r
+                       var t = this, r = t.createRng(), bef, aft, pa;\r
+\r
+                       // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sence\r
+                       // but we don't want that in our code since it serves no purpose\r
+                       // For example if this is chopped:\r
+                       //   <p>text 1<span><b>CHOP</b></span>text 2</p>\r
+                       // would produce:\r
+                       //   <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>\r
+                       // this function will then trim of empty edges and produce:\r
+                       //   <p>text 1</p><b>CHOP</b><p>text 2</p>\r
+                       function trimEdge(n, na) {\r
+                               n = n[na];\r
+\r
+                               if (n && n[na] && n[na].nodeType == 1 && isEmpty(n[na]))\r
+                                       t.remove(n[na]);\r
+                       };\r
+\r
+                       function isEmpty(n) {\r
+                               n = t.getOuterHTML(n);\r
+                               n = n.replace(/<(img|hr|table)/gi, '-'); // Keep these convert them to - chars\r
+                               n = n.replace(/<[^>]+>/g, ''); // Remove all tags\r
+\r
+                               return n.replace(/[ \t\r\n]+|&nbsp;|&#160;/g, '') == '';\r
+                       };\r
+\r
+                       if (pe && e) {\r
+                               // Get before chunk\r
+                               r.setStartBefore(pe);\r
+                               r.setEndBefore(e);\r
+                               bef = r.extractContents();\r
+\r
+                               // Get after chunk\r
+                               r = t.createRng();\r
+                               r.setStartAfter(e);\r
+                               r.setEndAfter(pe);\r
+                               aft = r.extractContents();\r
+\r
+                               // Insert chunks and remove parent\r
+                               pa = pe.parentNode;\r
+\r
+                               // Remove right side edge of the before contents\r
+                               trimEdge(bef, 'lastChild');\r
+\r
+                               if (!isEmpty(bef))\r
+                                       pa.insertBefore(bef, pe);\r
+\r
+                               if (re)\r
+                                       pa.replaceChild(re, e);\r
+                               else\r
+                                       pa.insertBefore(e, pe);\r
+\r
+                               // Remove left site edge of the after contents\r
+                               trimEdge(aft, 'firstChild');\r
+\r
+                               if (!isEmpty(aft))\r
+                                       pa.insertBefore(aft, pe);\r
+\r
+                               t.remove(pe);\r
+\r
+                               return re || e;\r
+                       }\r
+               },\r
+\r
+\r
                _isRes : function(c) {\r
                        // Is live resizble element\r
                        return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);\r
@@ -2465,78 +2344,2009 @@ tinymce.create('static tinymce.util.XHR', {
 \r
        // Setup page DOM\r
        tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});\r
-})();\r
+})(tinymce);\r
+(function(ns) {\r
+       // Traverse constants\r
+       var EXTRACT = 0, CLONE = 1, DELETE = 2, extend = tinymce.extend;\r
 \r
-/* file:jscripts/tiny_mce/classes/dom/Event.js */\r
+       function indexOf(child, parent) {\r
+               var i, node;\r
 \r
-(function() {\r
-       // Shorten names\r
-       var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;\r
+               if (child.parentNode != parent)\r
+                       return -1;\r
 \r
-       tinymce.create('static tinymce.dom.Event', {\r
-               inits : [],\r
-               events : [],\r
+               for (node = parent.firstChild, i = 0; node != child; node = node.nextSibling)\r
+                       i++;\r
 \r
-               // #if !jquery\r
+               return i;\r
+       };\r
 \r
-               add : function(o, n, f, s) {\r
-                       var cb, t = this, el = t.events, r;\r
+       function nodeIndex(n) {\r
+               var i = 0;\r
 \r
-                       // Handle array\r
-                       if (o && o instanceof Array) {\r
-                               r = [];\r
+               while (n.previousSibling) {\r
+                       i++;\r
+                       n = n.previousSibling;\r
+               }\r
 \r
-                               each(o, function(o) {\r
-                                       o = DOM.get(o);\r
-                                       r.push(t.add(o, n, f, s));\r
-                               });\r
+               return i;\r
+       };\r
 \r
-                               return r;\r
-                       }\r
+       function getSelectedNode(container, offset) {\r
+               var child;\r
 \r
-                       o = DOM.get(o);\r
+               if (container.nodeType == 3 /* TEXT_NODE */)\r
+                       return container;\r
 \r
-                       if (!o)\r
-                               return;\r
+               if (offset < 0)\r
+                       return container;\r
 \r
-                       // Setup event callback\r
-                       cb = function(e) {\r
-                               e = e || window.event;\r
+               child = container.firstChild;\r
+               while (child != null && offset > 0) {\r
+                       --offset;\r
+                       child = child.nextSibling;\r
+               }\r
 \r
-                               // Patch in target in IE it's W3C valid\r
-                               if (e && !e.target && isIE)\r
-                                       e.target = e.srcElement;\r
+               if (child != null)\r
+                       return child;\r
 \r
-                               if (!s)\r
-                                       return f(e);\r
+               return container;\r
+       };\r
 \r
-                               return f.call(s, e);\r
-                       };\r
+       // Range constructor\r
+       function Range(dom) {\r
+               var d = dom.doc;\r
+\r
+               extend(this, {\r
+                       dom : dom,\r
+\r
+                       // Inital states\r
+                       startContainer : d,\r
+                       startOffset : 0,\r
+                       endContainer : d,\r
+                       endOffset : 0,\r
+                       collapsed : true,\r
+                       commonAncestorContainer : d,\r
+\r
+                       // Range constants\r
+                       START_TO_START : 0,\r
+                       START_TO_END : 1,\r
+                       END_TO_END : 2,\r
+                       END_TO_START : 3\r
+               });\r
+       };\r
 \r
-                       if (n == 'unload') {\r
-                               tinymce.unloads.unshift({func : cb});\r
-                               return cb;\r
-                       }\r
+       // Add range methods\r
+       extend(Range.prototype, {\r
+               setStart : function(n, o) {\r
+                       this._setEndPoint(true, n, o);\r
+               },\r
 \r
-                       if (n == 'init') {\r
-                               if (t.domLoaded)\r
-                                       cb();\r
-                               else\r
-                                       t.inits.push(cb);\r
+               setEnd : function(n, o) {\r
+                       this._setEndPoint(false, n, o);\r
+               },\r
 \r
-                               return cb;\r
-                       }\r
+               setStartBefore : function(n) {\r
+                       this.setStart(n.parentNode, nodeIndex(n));\r
+               },\r
 \r
-                       // Store away listener reference\r
-                       el.push({\r
-                               obj : o,\r
-                               name : n,\r
-                               func : f,\r
-                               cfunc : cb,\r
-                               scope : s\r
-                       });\r
+               setStartAfter : function(n) {\r
+                       this.setStart(n.parentNode, nodeIndex(n) + 1);\r
+               },\r
 \r
-                       t._add(o, n, cb);\r
+               setEndBefore : function(n) {\r
+                       this.setEnd(n.parentNode, nodeIndex(n));\r
+               },\r
+\r
+               setEndAfter : function(n) {\r
+                       this.setEnd(n.parentNode, nodeIndex(n) + 1);\r
+               },\r
+\r
+               collapse : function(ts) {\r
+                       var t = this;\r
+\r
+                       if (ts) {\r
+                               t.endContainer = t.startContainer;\r
+                               t.endOffset = t.startOffset;\r
+                       } else {\r
+                               t.startContainer = t.endContainer;\r
+                               t.startOffset = t.endOffset;\r
+                       }\r
+\r
+                       t.collapsed = true;\r
+               },\r
+\r
+               selectNode : function(n) {\r
+                       this.setStartBefore(n);\r
+                       this.setEndAfter(n);\r
+               },\r
+\r
+               selectNodeContents : function(n) {\r
+                       this.setStart(n, 0);\r
+                       this.setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);\r
+               },\r
+\r
+               compareBoundaryPoints : function(h, r) {\r
+                       var t = this, sc = t.startContainer, so = t.startOffset, ec = t.endContainer, eo = t.endOffset;\r
+\r
+                       // Check START_TO_START\r
+                       if (h === 0)\r
+                               return t._compareBoundaryPoints(sc, so, sc, so);\r
+\r
+                       // Check START_TO_END\r
+                       if (h === 1)\r
+                               return t._compareBoundaryPoints(sc, so, ec, eo);\r
+\r
+                       // Check END_TO_END\r
+                       if (h === 2)\r
+                               return t._compareBoundaryPoints(ec, eo, ec, eo);\r
+\r
+                       // Check END_TO_START\r
+                       if (h === 3)\r
+                               return t._compareBoundaryPoints(ec, eo, sc, so);\r
+               },\r
+\r
+               deleteContents : function() {\r
+                       this._traverse(DELETE);\r
+               },\r
+\r
+               extractContents : function() {\r
+                       return this._traverse(EXTRACT);\r
+               },\r
+\r
+               cloneContents : function() {\r
+                       return this._traverse(CLONE);\r
+               },\r
+\r
+               insertNode : function(n) {\r
+                       var t = this, nn, o;\r
+\r
+                       // Node is TEXT_NODE or CDATA\r
+                       if (n.nodeType === 3 || n.nodeType === 4) {\r
+                               nn = t.startContainer.splitText(t.startOffset);\r
+                               t.startContainer.parentNode.insertBefore(n, nn);\r
+                       } else {\r
+                               // Insert element node\r
+                               if (t.startContainer.childNodes.length > 0)\r
+                                       o = t.startContainer.childNodes[t.startOffset];\r
+\r
+                               t.startContainer.insertBefore(n, o);\r
+                       }\r
+               },\r
+\r
+               surroundContents : function(n) {\r
+                       var t = this, f = t.extractContents();\r
+\r
+                       t.insertNode(n);\r
+                       n.appendChild(f);\r
+                       t.selectNode(n);\r
+               },\r
+\r
+               cloneRange : function() {\r
+                       var t = this;\r
+\r
+                       return extend(new Range(t.dom), {\r
+                               startContainer : t.startContainer,\r
+                               startOffset : t.startOffset,\r
+                               endContainer : t.endContainer,\r
+                               endOffset : t.endOffset,\r
+                               collapsed : t.collapsed,\r
+                               commonAncestorContainer : t.commonAncestorContainer\r
+                       });\r
+               },\r
+\r
+/*\r
+               detach : function() {\r
+                       // Not implemented\r
+               },\r
+*/\r
+               // Internal methods\r
+\r
+               _isCollapsed : function() {\r
+                       return (this.startContainer == this.endContainer && this.startOffset == this.endOffset);\r
+               },\r
+\r
+               _compareBoundaryPoints : function (containerA, offsetA, containerB, offsetB) {\r
+                       var c, offsetC, n, cmnRoot, childA, childB;\r
+\r
+                       // In the first case the boundary-points have the same container. A is before B \r
+                       // if its offset is less than the offset of B, A is equal to B if its offset is \r
+                       // equal to the offset of B, and A is after B if its offset is greater than the \r
+                       // offset of B.\r
+                       if (containerA == containerB) {\r
+                               if (offsetA == offsetB) {\r
+                                       return 0; // equal\r
+                               } else if (offsetA < offsetB) {\r
+                                       return -1; // before\r
+                               } else {\r
+                                       return 1; // after\r
+                               }\r
+                       }\r
+\r
+                       // In the second case a child node C of the container of A is an ancestor \r
+                       // container of B. In this case, A is before B if the offset of A is less than or \r
+                       // equal to the index of the child node C and A is after B otherwise.\r
+                       c = containerB;\r
+                       while (c && c.parentNode != containerA) {\r
+                               c = c.parentNode;\r
+                       }\r
+                       if (c) {\r
+                               offsetC = 0;\r
+                               n = containerA.firstChild;\r
+\r
+                               while (n != c && offsetC < offsetA) {\r
+                                       offsetC++;\r
+                                       n = n.nextSibling;\r
+                               }\r
+\r
+                               if (offsetA <= offsetC) {\r
+                                       return -1; // before\r
+                               } else {\r
+                                       return 1; // after\r
+                               }\r
+                       }\r
+\r
+                       // In the third case a child node C of the container of B is an ancestor container \r
+                       // of A. In this case, A is before B if the index of the child node C is less than \r
+                       // the offset of B and A is after B otherwise.\r
+                       c = containerA;\r
+                       while (c && c.parentNode != containerB) {\r
+                               c = c.parentNode;\r
+                       }\r
+\r
+                       if (c) {\r
+                               offsetC = 0;\r
+                               n = containerB.firstChild;\r
+\r
+                               while (n != c && offsetC < offsetB) {\r
+                                       offsetC++;\r
+                                       n = n.nextSibling;\r
+                               }\r
+\r
+                               if (offsetC < offsetB) {\r
+                                       return -1; // before\r
+                               } else {\r
+                                       return 1; // after\r
+                               }\r
+                       }\r
+\r
+                       // In the fourth case, none of three other cases hold: the containers of A and B \r
+                       // are siblings or descendants of sibling nodes. In this case, A is before B if \r
+                       // the container of A is before the container of B in a pre-order traversal of the\r
+                       // Ranges' context tree and A is after B otherwise.\r
+                       cmnRoot = this.dom.findCommonAncestor(containerA, containerB);\r
+                       childA = containerA;\r
+\r
+                       while (childA && childA.parentNode != cmnRoot) {\r
+                               childA = childA.parentNode;  \r
+                       }\r
+\r
+                       if (!childA) {\r
+                               childA = cmnRoot;\r
+                       }\r
+\r
+                       childB = containerB;\r
+                       while (childB && childB.parentNode != cmnRoot) {\r
+                               childB = childB.parentNode;\r
+                       }\r
+\r
+                       if (!childB) {\r
+                               childB = cmnRoot;\r
+                       }\r
+\r
+                       if (childA == childB) {\r
+                               return 0; // equal\r
+                       }\r
+\r
+                       n = cmnRoot.firstChild;\r
+                       while (n) {\r
+                               if (n == childA) {\r
+                                       return -1; // before\r
+                               }\r
+\r
+                               if (n == childB) {\r
+                                       return 1; // after\r
+                               }\r
+\r
+                               n = n.nextSibling;\r
+                       }\r
+               },\r
+\r
+               _setEndPoint : function(st, n, o) {\r
+                       var t = this, ec, sc;\r
+\r
+                       if (st) {\r
+                               t.startContainer = n;\r
+                               t.startOffset = o;\r
+                       } else {\r
+                               t.endContainer = n;\r
+                               t.endOffset = o;\r
+                       }\r
+\r
+                       // If one boundary-point of a Range is set to have a root container \r
+                       // other than the current one for the Range, the Range is collapsed to \r
+                       // the new position. This enforces the restriction that both boundary-\r
+                       // points of a Range must have the same root container.\r
+                       ec = t.endContainer;\r
+                       while (ec.parentNode)\r
+                               ec = ec.parentNode;\r
+\r
+                       sc = t.startContainer;\r
+                       while (sc.parentNode)\r
+                               sc = sc.parentNode;\r
+\r
+                       if (sc != ec) {\r
+                               t.collapse(st);\r
+                       } else {\r
+                               // The start position of a Range is guaranteed to never be after the \r
+                               // end position. To enforce this restriction, if the start is set to \r
+                               // be at a position after the end, the Range is collapsed to that \r
+                               // position.\r
+                               if (t._compareBoundaryPoints(t.startContainer, t.startOffset, t.endContainer, t.endOffset) > 0)\r
+                                       t.collapse(st);\r
+                       }\r
+\r
+                       t.collapsed = t._isCollapsed();\r
+                       t.commonAncestorContainer = t.dom.findCommonAncestor(t.startContainer, t.endContainer);\r
+               },\r
+\r
+               // This code is heavily "inspired" by the Apache Xerces implementation. I hope they don't mind. :)\r
+\r
+               _traverse : function(how) {\r
+                       var t = this, c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;\r
+\r
+                       if (t.startContainer == t.endContainer)\r
+                               return t._traverseSameContainer(how);\r
+\r
+                       for (c = t.endContainer, p = c.parentNode; p != null; c = p, p = p.parentNode) {\r
+                               if (p == t.startContainer)\r
+                                       return t._traverseCommonStartContainer(c, how);\r
+\r
+                               ++endContainerDepth;\r
+                       }\r
+\r
+                       for (c = t.startContainer, p = c.parentNode; p != null; c = p, p = p.parentNode) {\r
+                               if (p == t.endContainer)\r
+                                       return t._traverseCommonEndContainer(c, how);\r
+\r
+                               ++startContainerDepth;\r
+                       }\r
+\r
+                       depthDiff = startContainerDepth - endContainerDepth;\r
+\r
+                       startNode = t.startContainer;\r
+                       while (depthDiff > 0) {\r
+                               startNode = startNode.parentNode;\r
+                               depthDiff--;\r
+                       }\r
+\r
+                       endNode = t.endContainer;\r
+                       while (depthDiff < 0) {\r
+                               endNode = endNode.parentNode;\r
+                               depthDiff++;\r
+                       }\r
+\r
+                       // ascend the ancestor hierarchy until we have a common parent.\r
+                       for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {\r
+                               startNode = sp;\r
+                               endNode = ep;\r
+                       }\r
+\r
+                       return t._traverseCommonAncestors(startNode, endNode, how);\r
+               },\r
+\r
+               _traverseSameContainer : function(how) {\r
+                       var t = this, frag, s, sub, n, cnt, sibling, xferNode;\r
+\r
+                       if (how != DELETE)\r
+                               frag = t.dom.doc.createDocumentFragment();\r
+\r
+                       // If selection is empty, just return the fragment\r
+                       if (t.startOffset == t.endOffset)\r
+                               return frag;\r
+\r
+                       // Text node needs special case handling\r
+                       if (t.startContainer.nodeType == 3 /* TEXT_NODE */) {\r
+                               // get the substring\r
+                               s = t.startContainer.nodeValue;\r
+                               sub = s.substring(t.startOffset, t.endOffset);\r
+\r
+                               // set the original text node to its new value\r
+                               if (how != CLONE) {\r
+                                       t.startContainer.deleteData(t.startOffset, t.endOffset - t.startOffset);\r
+\r
+                                       // Nothing is partially selected, so collapse to start point\r
+                                       t.collapse(true);\r
+                               }\r
+\r
+                               if (how == DELETE)\r
+                                       return null;\r
+\r
+                               frag.appendChild(t.dom.doc.createTextNode(sub));\r
+                               return frag;\r
+                       }\r
+\r
+                       // Copy nodes between the start/end offsets.\r
+                       n = getSelectedNode(t.startContainer, t.startOffset);\r
+                       cnt = t.endOffset - t.startOffset;\r
+\r
+                       while (cnt > 0) {\r
+                               sibling = n.nextSibling;\r
+                               xferNode = t._traverseFullySelected(n, how);\r
+\r
+                               if (frag)\r
+                                       frag.appendChild( xferNode );\r
+\r
+                               --cnt;\r
+                               n = sibling;\r
+                       }\r
+\r
+                       // Nothing is partially selected, so collapse to start point\r
+                       if (how != CLONE)\r
+                               t.collapse(true);\r
+\r
+                       return frag;\r
+               },\r
+\r
+               _traverseCommonStartContainer : function(endAncestor, how) {\r
+                       var t = this, frag, n, endIdx, cnt, sibling, xferNode;\r
+\r
+                       if (how != DELETE)\r
+                               frag = t.dom.doc.createDocumentFragment();\r
+\r
+                       n = t._traverseRightBoundary(endAncestor, how);\r
+\r
+                       if (frag)\r
+                               frag.appendChild(n);\r
+\r
+                       endIdx = indexOf(endAncestor, t.startContainer);\r
+                       cnt = endIdx - t.startOffset;\r
+\r
+                       if (cnt <= 0) {\r
+                               // Collapse to just before the endAncestor, which \r
+                               // is partially selected.\r
+                               if (how != CLONE) {\r
+                                       t.setEndBefore(endAncestor);\r
+                                       t.collapse(false);\r
+                               }\r
+\r
+                               return frag;\r
+                       }\r
+\r
+                       n = endAncestor.previousSibling;\r
+                       while (cnt > 0) {\r
+                               sibling = n.previousSibling;\r
+                               xferNode = t._traverseFullySelected(n, how);\r
+\r
+                               if (frag)\r
+                                       frag.insertBefore(xferNode, frag.firstChild);\r
+\r
+                               --cnt;\r
+                               n = sibling;\r
+                       }\r
+\r
+                       // Collapse to just before the endAncestor, which \r
+                       // is partially selected.\r
+                       if (how != CLONE) {\r
+                               t.setEndBefore(endAncestor);\r
+                               t.collapse(false);\r
+                       }\r
+\r
+                       return frag;\r
+               },\r
+\r
+               _traverseCommonEndContainer : function(startAncestor, how) {\r
+                       var t = this, frag, startIdx, n, cnt, sibling, xferNode;\r
+\r
+                       if (how != DELETE)\r
+                               frag = t.dom.doc.createDocumentFragment();\r
+\r
+                       n = t._traverseLeftBoundary(startAncestor, how);\r
+                       if (frag)\r
+                               frag.appendChild(n);\r
+\r
+                       startIdx = indexOf(startAncestor, t.endContainer);\r
+                       ++startIdx;  // Because we already traversed it....\r
+\r
+                       cnt = t.endOffset - startIdx;\r
+                       n = startAncestor.nextSibling;\r
+                       while (cnt > 0) {\r
+                               sibling = n.nextSibling;\r
+                               xferNode = t._traverseFullySelected(n, how);\r
+\r
+                               if (frag)\r
+                                       frag.appendChild(xferNode);\r
+\r
+                               --cnt;\r
+                               n = sibling;\r
+                       }\r
+\r
+                       if (how != CLONE) {\r
+                               t.setStartAfter(startAncestor);\r
+                               t.collapse(true);\r
+                       }\r
+\r
+                       return frag;\r
+               },\r
+\r
+               _traverseCommonAncestors : function(startAncestor, endAncestor, how) {\r
+                       var t = this, n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling;\r
+\r
+                       if (how != DELETE)\r
+                               frag = t.dom.doc.createDocumentFragment();\r
+\r
+                       n = t._traverseLeftBoundary(startAncestor, how);\r
+                       if (frag)\r
+                               frag.appendChild(n);\r
+\r
+                       commonParent = startAncestor.parentNode;\r
+                       startOffset = indexOf(startAncestor, commonParent);\r
+                       endOffset = indexOf(endAncestor, commonParent);\r
+                       ++startOffset;\r
+\r
+                       cnt = endOffset - startOffset;\r
+                       sibling = startAncestor.nextSibling;\r
+\r
+                       while (cnt > 0) {\r
+                               nextSibling = sibling.nextSibling;\r
+                               n = t._traverseFullySelected(sibling, how);\r
+\r
+                               if (frag)\r
+                                       frag.appendChild(n);\r
+\r
+                               sibling = nextSibling;\r
+                               --cnt;\r
+                       }\r
+\r
+                       n = t._traverseRightBoundary(endAncestor, how);\r
+\r
+                       if (frag)\r
+                               frag.appendChild(n);\r
+\r
+                       if (how != CLONE) {\r
+                               t.setStartAfter(startAncestor);\r
+                               t.collapse(true);\r
+                       }\r
+\r
+                       return frag;\r
+               },\r
+\r
+               _traverseRightBoundary : function(root, how) {\r
+                       var t = this, next = getSelectedNode(t.endContainer, t.endOffset - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent;\r
+                       var isFullySelected = next != t.endContainer;\r
+\r
+                       if (next == root)\r
+                               return t._traverseNode(next, isFullySelected, false, how);\r
+\r
+                       parent = next.parentNode;\r
+                       clonedParent = t._traverseNode(parent, false, false, how);\r
+\r
+                       while (parent != null) {\r
+                               while (next != null) {\r
+                                       prevSibling = next.previousSibling;\r
+                                       clonedChild = t._traverseNode(next, isFullySelected, false, how);\r
+\r
+                                       if (how != DELETE)\r
+                                               clonedParent.insertBefore(clonedChild, clonedParent.firstChild);\r
+\r
+                                       isFullySelected = true;\r
+                                       next = prevSibling;\r
+                               }\r
+\r
+                               if (parent == root)\r
+                                       return clonedParent;\r
+\r
+                               next = parent.previousSibling;\r
+                               parent = parent.parentNode;\r
+\r
+                               clonedGrandParent = t._traverseNode(parent, false, false, how);\r
+\r
+                               if (how != DELETE)\r
+                                       clonedGrandParent.appendChild(clonedParent);\r
+\r
+                               clonedParent = clonedGrandParent;\r
+                       }\r
+\r
+                       // should never occur\r
+                       return null;\r
+               },\r
+\r
+               _traverseLeftBoundary : function(root, how) {\r
+                       var t = this, next = getSelectedNode(t.startContainer, t.startOffset);\r
+                       var isFullySelected = next != t.startContainer, parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;\r
+\r
+                       if (next == root)\r
+                               return t._traverseNode(next, isFullySelected, true, how);\r
+\r
+                       parent = next.parentNode;\r
+                       clonedParent = t._traverseNode(parent, false, true, how);\r
+\r
+                       while (parent != null) {\r
+                               while (next != null) {\r
+                                       nextSibling = next.nextSibling;\r
+                                       clonedChild = t._traverseNode(next, isFullySelected, true, how);\r
+\r
+                                       if (how != DELETE)\r
+                                               clonedParent.appendChild(clonedChild);\r
+\r
+                                       isFullySelected = true;\r
+                                       next = nextSibling;\r
+                               }\r
+\r
+                               if (parent == root)\r
+                                       return clonedParent;\r
+\r
+                               next = parent.nextSibling;\r
+                               parent = parent.parentNode;\r
+\r
+                               clonedGrandParent = t._traverseNode(parent, false, true, how);\r
+\r
+                               if (how != DELETE)\r
+                                       clonedGrandParent.appendChild(clonedParent);\r
+\r
+                               clonedParent = clonedGrandParent;\r
+                       }\r
+\r
+                       // should never occur\r
+                       return null;\r
+               },\r
+\r
+               _traverseNode : function(n, isFullySelected, isLeft, how) {\r
+                       var t = this, txtValue, newNodeValue, oldNodeValue, offset, newNode;\r
+\r
+                       if (isFullySelected)\r
+                               return t._traverseFullySelected(n, how);\r
+\r
+                       if (n.nodeType == 3 /* TEXT_NODE */) {\r
+                               txtValue = n.nodeValue;\r
+\r
+                               if (isLeft) {\r
+                                       offset = t.startOffset;\r
+                                       newNodeValue = txtValue.substring(offset);\r
+                                       oldNodeValue = txtValue.substring(0, offset);\r
+                               } else {\r
+                                       offset = t.endOffset;\r
+                                       newNodeValue = txtValue.substring(0, offset);\r
+                                       oldNodeValue = txtValue.substring(offset);\r
+                               }\r
+\r
+                               if (how != CLONE)\r
+                                       n.nodeValue = oldNodeValue;\r
+\r
+                               if (how == DELETE)\r
+                                       return null;\r
+\r
+                               newNode = n.cloneNode(false);\r
+                               newNode.nodeValue = newNodeValue;\r
+\r
+                               return newNode;\r
+                       }\r
+\r
+                       if (how == DELETE)\r
+                               return null;\r
+\r
+                       return n.cloneNode(false);\r
+               },\r
+\r
+               _traverseFullySelected : function(n, how) {\r
+                       var t = this;\r
+\r
+                       if (how != DELETE)\r
+                               return how == CLONE ? n.cloneNode(true) : n;\r
+\r
+                       n.parentNode.removeChild(n);\r
+                       return null;\r
+               }\r
+       });\r
+\r
+       ns.Range = Range;\r
+})(tinymce.dom);\r
+(function() {\r
+       function Selection(selection) {\r
+               var t = this, invisibleChar = '\uFEFF', range, lastIERng;\r
+\r
+               function compareRanges(rng1, rng2) {\r
+                       if (rng1 && rng2) {\r
+                               // Both are control ranges and the selected element matches\r
+                               if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0))\r
+                                       return 1;\r
+\r
+                               // Both are text ranges and the range matches\r
+                               if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1))\r
+                                       return 1;\r
+                       }\r
+\r
+                       return 0;\r
+               };\r
+\r
+               function getRange() {\r
+                       var dom = selection.dom, ieRange = selection.getRng(), domRange = dom.createRng(), startPos, endPos, element, sc, ec, collapsed;\r
+\r
+                       function findIndex(element) {\r
+                               var nl = element.parentNode.childNodes, i;\r
+\r
+                               for (i = nl.length - 1; i >= 0; i--) {\r
+                                       if (nl[i] == element)\r
+                                               return i;\r
+                               }\r
+\r
+                               return -1;\r
+                       };\r
+\r
+                       function findEndPoint(start) {\r
+                               var rng = ieRange.duplicate(), parent, i, nl, n, offset = 0, index = 0, pos, tmpRng;\r
+\r
+                               // Insert marker character\r
+                               rng.collapse(start);\r
+                               parent = rng.parentElement();\r
+                               rng.pasteHTML(invisibleChar); // Needs to be a pasteHTML instead of .text = since IE has a bug with nodeValue\r
+\r
+                               // Find marker character\r
+                               nl = parent.childNodes;\r
+                               for (i = 0; i < nl.length; i++) {\r
+                                       n = nl[i];\r
+\r
+                                       // Calculate node index excluding text node fragmentation\r
+                                       if (i > 0 && (n.nodeType !== 3 || nl[i - 1].nodeType !== 3))\r
+                                               index++;\r
+\r
+                                       // If text node then calculate offset\r
+                                       if (n.nodeType === 3) {\r
+                                               // Look for marker\r
+                                               pos = n.nodeValue.indexOf(invisibleChar);\r
+                                               if (pos !== -1) {\r
+                                                       offset += pos;\r
+                                                       break;\r
+                                               }\r
+\r
+                                               offset += n.nodeValue.length;\r
+                                       } else\r
+                                               offset = 0;\r
+                               }\r
+\r
+                               // Remove marker character\r
+                               rng.moveStart('character', -1);\r
+                               rng.text = '';\r
+\r
+                               return {index : index, offset : offset, parent : parent};\r
+                       };\r
+\r
+                       // If selection is outside the current document just return an empty range\r
+                       element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();\r
+                       if (element.ownerDocument != dom.doc)\r
+                               return domRange;\r
+\r
+                       // Handle control selection or text selection of a image\r
+                       if (ieRange.item || !element.hasChildNodes()) {\r
+                               domRange.setStart(element.parentNode, findIndex(element));\r
+                               domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);\r
+\r
+                               return domRange;\r
+                       }\r
+\r
+                       // Check collapsed state\r
+                       collapsed = selection.isCollapsed();\r
+\r
+                       // Find start and end pos index and offset\r
+                       startPos = findEndPoint(true);\r
+                       endPos = findEndPoint(false);\r
+\r
+                       // Normalize the elements to avoid fragmented dom\r
+                       startPos.parent.normalize();\r
+                       endPos.parent.normalize();\r
+\r
+                       // Set start container and offset\r
+                       sc = startPos.parent.childNodes[Math.min(startPos.index, startPos.parent.childNodes.length - 1)];\r
+\r
+                       if (sc.nodeType != 3)\r
+                               domRange.setStart(startPos.parent, startPos.index);\r
+                       else\r
+                               domRange.setStart(startPos.parent.childNodes[startPos.index], startPos.offset);\r
+\r
+                       // Set end container and offset\r
+                       ec = endPos.parent.childNodes[Math.min(endPos.index, endPos.parent.childNodes.length - 1)];\r
+\r
+                       if (ec.nodeType != 3) {\r
+                               if (!collapsed)\r
+                                       endPos.index++;\r
+\r
+                               domRange.setEnd(endPos.parent, endPos.index);\r
+                       } else\r
+                               domRange.setEnd(endPos.parent.childNodes[endPos.index], endPos.offset);\r
+\r
+                       // If not collapsed then make sure offsets are valid\r
+                       if (!collapsed) {\r
+                               sc = domRange.startContainer;\r
+                               if (sc.nodeType == 1)\r
+                                       domRange.setStart(sc, Math.min(domRange.startOffset, sc.childNodes.length));\r
+\r
+                               ec = domRange.endContainer;\r
+                               if (ec.nodeType == 1)\r
+                                       domRange.setEnd(ec, Math.min(domRange.endOffset, ec.childNodes.length));\r
+                       }\r
+\r
+                       // Restore selection to new range\r
+                       t.addRange(domRange);\r
+\r
+                       return domRange;\r
+               };\r
+\r
+               this.addRange = function(rng) {\r
+                       var ieRng, body = selection.dom.doc.body, startPos, endPos, sc, so, ec, eo;\r
+\r
+                       // Setup some shorter versions\r
+                       sc = rng.startContainer;\r
+                       so = rng.startOffset;\r
+                       ec = rng.endContainer;\r
+                       eo = rng.endOffset;\r
+                       ieRng = body.createTextRange();\r
+\r
+                       // Find element\r
+                       sc = sc.nodeType == 1 ? sc.childNodes[Math.min(so, sc.childNodes.length - 1)] : sc;\r
+                       ec = ec.nodeType == 1 ? ec.childNodes[Math.min(so == eo ? eo : eo - 1, ec.childNodes.length - 1)] : ec;\r
+\r
+                       // Single element selection\r
+                       if (sc == ec && sc.nodeType == 1) {\r
+                               // Make control selection for some elements\r
+                               if (/^(IMG|TABLE)$/.test(sc.nodeName) && so != eo) {\r
+                                       ieRng = body.createControlRange();\r
+                                       ieRng.addElement(sc);\r
+                               } else {\r
+                                       ieRng = body.createTextRange();\r
+\r
+                                       // Padd empty elements with invisible character\r
+                                       if (!sc.hasChildNodes() && sc.canHaveHTML)\r
+                                               sc.innerHTML = invisibleChar;\r
+\r
+                                       // Select element contents\r
+                                       ieRng.moveToElementText(sc);\r
+\r
+                                       // If it's only containing a padding remove it so the caret remains\r
+                                       if (sc.innerHTML == invisibleChar) {\r
+                                               ieRng.collapse(true);\r
+                                               sc.removeChild(sc.firstChild);\r
+                                       }\r
+                               }\r
+\r
+                               if (so == eo)\r
+                                       ieRng.collapse(eo <= rng.endContainer.childNodes.length - 1);\r
+\r
+                               ieRng.select();\r
+\r
+                               return;\r
+                       }\r
+\r
+                       function getCharPos(container, offset) {\r
+                               var nodeVal, rng, pos;\r
+\r
+                               if (container.nodeType != 3)\r
+                                       return -1;\r
+\r
+                               nodeVal = container.nodeValue;\r
+                               rng = body.createTextRange();\r
+\r
+                               // Insert marker at offset position\r
+                               container.nodeValue = nodeVal.substring(0, offset) + invisibleChar + nodeVal.substring(offset);\r
+\r
+                               // Find char pos of marker and remove it\r
+                               rng.moveToElementText(container.parentNode);\r
+                               rng.findText(invisibleChar);\r
+                               pos = Math.abs(rng.moveStart('character', -0xFFFFF));\r
+                               container.nodeValue = nodeVal;\r
+\r
+                               return pos;\r
+                       };\r
+\r
+                       // Collapsed range\r
+                       if (rng.collapsed) {\r
+                               pos = getCharPos(sc, so);\r
+\r
+                               ieRng = body.createTextRange();\r
+                               ieRng.move('character', pos);\r
+                               ieRng.select();\r
+\r
+                               return;\r
+                       } else {\r
+                               // If same text container\r
+                               if (sc == ec && sc.nodeType == 3) {\r
+                                       startPos = getCharPos(sc, so);\r
+\r
+                                       ieRng.move('character', startPos);\r
+                                       ieRng.moveEnd('character', eo - so);\r
+                                       ieRng.select();\r
+\r
+                                       return;\r
+                               }\r
+\r
+                               // Get caret positions\r
+                               startPos = getCharPos(sc, so);\r
+                               endPos = getCharPos(ec, eo);\r
+                               ieRng = body.createTextRange();\r
+\r
+                               // Move start of range to start character position or start element\r
+                               if (startPos == -1) {\r
+                                       ieRng.moveToElementText(sc);\r
+                                       startPos = 0;\r
+                               } else\r
+                                       ieRng.move('character', startPos);\r
+\r
+                               // Move end of range to end character position or end element\r
+                               tmpRng = body.createTextRange();\r
+\r
+                               if (endPos == -1)\r
+                                       tmpRng.moveToElementText(ec);\r
+                               else\r
+                                       tmpRng.move('character', endPos);\r
+\r
+                               ieRng.setEndPoint('EndToEnd', tmpRng);\r
+                               ieRng.select();\r
+\r
+                               return;\r
+                       }\r
+               };\r
+\r
+               this.getRangeAt = function() {\r
+                       // Setup new range if the cache is empty\r
+                       if (!range || !compareRanges(lastIERng, selection.getRng())) {\r
+                               range = getRange();\r
+\r
+                               // Store away text range for next call\r
+                               lastIERng = selection.getRng();\r
+                       }\r
+\r
+                       // Return cached range\r
+                       return range;\r
+               };\r
+\r
+               this.destroy = function() {\r
+                       // Destroy cached range and last IE range to avoid memory leaks\r
+                       lastIERng = range = null;\r
+               };\r
+       };\r
+\r
+       // Expose the selection object\r
+       tinymce.dom.TridentSelection = Selection;\r
+})();\r
+\r
+/*\r
+ * Sizzle CSS Selector Engine - v1.0\r
+ *  Copyright 2009, The Dojo Foundation\r
+ *  Released under the MIT, BSD, and GPL Licenses.\r
+ *  More information: http://sizzlejs.com/\r
+ */\r
+(function(){\r
+\r
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,\r
+       done = 0,\r
+       toString = Object.prototype.toString,\r
+       hasDuplicate = false;\r
+\r
+var Sizzle = function(selector, context, results, seed) {\r
+       results = results || [];\r
+       var origContext = context = context || document;\r
+\r
+       if ( context.nodeType !== 1 && context.nodeType !== 9 ) {\r
+               return [];\r
+       }\r
+       \r
+       if ( !selector || typeof selector !== "string" ) {\r
+               return results;\r
+       }\r
+\r
+       var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context);\r
+       \r
+       // Reset the position of the chunker regexp (start from head)\r
+       chunker.lastIndex = 0;\r
+       \r
+       while ( (m = chunker.exec(selector)) !== null ) {\r
+               parts.push( m[1] );\r
+               \r
+               if ( m[2] ) {\r
+                       extra = RegExp.rightContext;\r
+                       break;\r
+               }\r
+       }\r
+\r
+       if ( parts.length > 1 && origPOS.exec( selector ) ) {\r
+               if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {\r
+                       set = posProcess( parts[0] + parts[1], context );\r
+               } else {\r
+                       set = Expr.relative[ parts[0] ] ?\r
+                               [ context ] :\r
+                               Sizzle( parts.shift(), context );\r
+\r
+                       while ( parts.length ) {\r
+                               selector = parts.shift();\r
+\r
+                               if ( Expr.relative[ selector ] )\r
+                                       selector += parts.shift();\r
+\r
+                               set = posProcess( selector, set );\r
+                       }\r
+               }\r
+       } else {\r
+               // Take a shortcut and set the context if the root selector is an ID\r
+               // (but not if it'll be faster if the inner selector is an ID)\r
+               if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&\r
+                               Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {\r
+                       var ret = Sizzle.find( parts.shift(), context, contextXML );\r
+                       context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];\r
+               }\r
+\r
+               if ( context ) {\r
+                       var ret = seed ?\r
+                               { expr: parts.pop(), set: makeArray(seed) } :\r
+                               Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );\r
+                       set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;\r
+\r
+                       if ( parts.length > 0 ) {\r
+                               checkSet = makeArray(set);\r
+                       } else {\r
+                               prune = false;\r
+                       }\r
+\r
+                       while ( parts.length ) {\r
+                               var cur = parts.pop(), pop = cur;\r
+\r
+                               if ( !Expr.relative[ cur ] ) {\r
+                                       cur = "";\r
+                               } else {\r
+                                       pop = parts.pop();\r
+                               }\r
+\r
+                               if ( pop == null ) {\r
+                                       pop = context;\r
+                               }\r
+\r
+                               Expr.relative[ cur ]( checkSet, pop, contextXML );\r
+                       }\r
+               } else {\r
+                       checkSet = parts = [];\r
+               }\r
+       }\r
+\r
+       if ( !checkSet ) {\r
+               checkSet = set;\r
+       }\r
+\r
+       if ( !checkSet ) {\r
+               throw "Syntax error, unrecognized expression: " + (cur || selector);\r
+       }\r
+\r
+       if ( toString.call(checkSet) === "[object Array]" ) {\r
+               if ( !prune ) {\r
+                       results.push.apply( results, checkSet );\r
+               } else if ( context && context.nodeType === 1 ) {\r
+                       for ( var i = 0; checkSet[i] != null; i++ ) {\r
+                               if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {\r
+                                       results.push( set[i] );\r
+                               }\r
+                       }\r
+               } else {\r
+                       for ( var i = 0; checkSet[i] != null; i++ ) {\r
+                               if ( checkSet[i] && checkSet[i].nodeType === 1 ) {\r
+                                       results.push( set[i] );\r
+                               }\r
+                       }\r
+               }\r
+       } else {\r
+               makeArray( checkSet, results );\r
+       }\r
+\r
+       if ( extra ) {\r
+               Sizzle( extra, origContext, results, seed );\r
+               Sizzle.uniqueSort( results );\r
+       }\r
+\r
+       return results;\r
+};\r
+\r
+Sizzle.uniqueSort = function(results){\r
+       if ( sortOrder ) {\r
+               hasDuplicate = false;\r
+               results.sort(sortOrder);\r
+\r
+               if ( hasDuplicate ) {\r
+                       for ( var i = 1; i < results.length; i++ ) {\r
+                               if ( results[i] === results[i-1] ) {\r
+                                       results.splice(i--, 1);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+};\r
+\r
+Sizzle.matches = function(expr, set){\r
+       return Sizzle(expr, null, null, set);\r
+};\r
+\r
+Sizzle.find = function(expr, context, isXML){\r
+       var set, match;\r
+\r
+       if ( !expr ) {\r
+               return [];\r
+       }\r
+\r
+       for ( var i = 0, l = Expr.order.length; i < l; i++ ) {\r
+               var type = Expr.order[i], match;\r
+               \r
+               if ( (match = Expr.match[ type ].exec( expr )) ) {\r
+                       var left = RegExp.leftContext;\r
+\r
+                       if ( left.substr( left.length - 1 ) !== "\\" ) {\r
+                               match[1] = (match[1] || "").replace(/\\/g, "");\r
+                               set = Expr.find[ type ]( match, context, isXML );\r
+                               if ( set != null ) {\r
+                                       expr = expr.replace( Expr.match[ type ], "" );\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       if ( !set ) {\r
+               set = context.getElementsByTagName("*");\r
+       }\r
+\r
+       return {set: set, expr: expr};\r
+};\r
+\r
+Sizzle.filter = function(expr, set, inplace, not){\r
+       var old = expr, result = [], curLoop = set, match, anyFound,\r
+               isXMLFilter = set && set[0] && isXML(set[0]);\r
+\r
+       while ( expr && set.length ) {\r
+               for ( var type in Expr.filter ) {\r
+                       if ( (match = Expr.match[ type ].exec( expr )) != null ) {\r
+                               var filter = Expr.filter[ type ], found, item;\r
+                               anyFound = false;\r
+\r
+                               if ( curLoop == result ) {\r
+                                       result = [];\r
+                               }\r
+\r
+                               if ( Expr.preFilter[ type ] ) {\r
+                                       match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );\r
+\r
+                                       if ( !match ) {\r
+                                               anyFound = found = true;\r
+                                       } else if ( match === true ) {\r
+                                               continue;\r
+                                       }\r
+                               }\r
+\r
+                               if ( match ) {\r
+                                       for ( var i = 0; (item = curLoop[i]) != null; i++ ) {\r
+                                               if ( item ) {\r
+                                                       found = filter( item, match, i, curLoop );\r
+                                                       var pass = not ^ !!found;\r
+\r
+                                                       if ( inplace && found != null ) {\r
+                                                               if ( pass ) {\r
+                                                                       anyFound = true;\r
+                                                               } else {\r
+                                                                       curLoop[i] = false;\r
+                                                               }\r
+                                                       } else if ( pass ) {\r
+                                                               result.push( item );\r
+                                                               anyFound = true;\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+\r
+                               if ( found !== undefined ) {\r
+                                       if ( !inplace ) {\r
+                                               curLoop = result;\r
+                                       }\r
+\r
+                                       expr = expr.replace( Expr.match[ type ], "" );\r
+\r
+                                       if ( !anyFound ) {\r
+                                               return [];\r
+                                       }\r
+\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+\r
+               // Improper expression\r
+               if ( expr == old ) {\r
+                       if ( anyFound == null ) {\r
+                               throw "Syntax error, unrecognized expression: " + expr;\r
+                       } else {\r
+                               break;\r
+                       }\r
+               }\r
+\r
+               old = expr;\r
+       }\r
+\r
+       return curLoop;\r
+};\r
+\r
+var Expr = Sizzle.selectors = {\r
+       order: [ "ID", "NAME", "TAG" ],\r
+       match: {\r
+               ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,\r
+               CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,\r
+               NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,\r
+               ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,\r
+               TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,\r
+               CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,\r
+               POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,\r
+               PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/\r
+       },\r
+       attrMap: {\r
+               "class": "className",\r
+               "for": "htmlFor"\r
+       },\r
+       attrHandle: {\r
+               href: function(elem){\r
+                       return elem.getAttribute("href");\r
+               }\r
+       },\r
+       relative: {\r
+               "+": function(checkSet, part, isXML){\r
+                       var isPartStr = typeof part === "string",\r
+                               isTag = isPartStr && !/\W/.test(part),\r
+                               isPartStrNotTag = isPartStr && !isTag;\r
+\r
+                       if ( isTag && !isXML ) {\r
+                               part = part.toUpperCase();\r
+                       }\r
+\r
+                       for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {\r
+                               if ( (elem = checkSet[i]) ) {\r
+                                       while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}\r
+\r
+                                       checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?\r
+                                               elem || false :\r
+                                               elem === part;\r
+                               }\r
+                       }\r
+\r
+                       if ( isPartStrNotTag ) {\r
+                               Sizzle.filter( part, checkSet, true );\r
+                       }\r
+               },\r
+               ">": function(checkSet, part, isXML){\r
+                       var isPartStr = typeof part === "string";\r
+\r
+                       if ( isPartStr && !/\W/.test(part) ) {\r
+                               part = isXML ? part : part.toUpperCase();\r
+\r
+                               for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
+                                       var elem = checkSet[i];\r
+                                       if ( elem ) {\r
+                                               var parent = elem.parentNode;\r
+                                               checkSet[i] = parent.nodeName === part ? parent : false;\r
+                                       }\r
+                               }\r
+                       } else {\r
+                               for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
+                                       var elem = checkSet[i];\r
+                                       if ( elem ) {\r
+                                               checkSet[i] = isPartStr ?\r
+                                                       elem.parentNode :\r
+                                                       elem.parentNode === part;\r
+                                       }\r
+                               }\r
+\r
+                               if ( isPartStr ) {\r
+                                       Sizzle.filter( part, checkSet, true );\r
+                               }\r
+                       }\r
+               },\r
+               "": function(checkSet, part, isXML){\r
+                       var doneName = done++, checkFn = dirCheck;\r
+\r
+                       if ( !part.match(/\W/) ) {\r
+                               var nodeCheck = part = isXML ? part : part.toUpperCase();\r
+                               checkFn = dirNodeCheck;\r
+                       }\r
+\r
+                       checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);\r
+               },\r
+               "~": function(checkSet, part, isXML){\r
+                       var doneName = done++, checkFn = dirCheck;\r
+\r
+                       if ( typeof part === "string" && !part.match(/\W/) ) {\r
+                               var nodeCheck = part = isXML ? part : part.toUpperCase();\r
+                               checkFn = dirNodeCheck;\r
+                       }\r
+\r
+                       checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);\r
+               }\r
+       },\r
+       find: {\r
+               ID: function(match, context, isXML){\r
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {\r
+                               var m = context.getElementById(match[1]);\r
+                               return m ? [m] : [];\r
+                       }\r
+               },\r
+               NAME: function(match, context, isXML){\r
+                       if ( typeof context.getElementsByName !== "undefined" ) {\r
+                               var ret = [], results = context.getElementsByName(match[1]);\r
+\r
+                               for ( var i = 0, l = results.length; i < l; i++ ) {\r
+                                       if ( results[i].getAttribute("name") === match[1] ) {\r
+                                               ret.push( results[i] );\r
+                                       }\r
+                               }\r
+\r
+                               return ret.length === 0 ? null : ret;\r
+                       }\r
+               },\r
+               TAG: function(match, context){\r
+                       return context.getElementsByTagName(match[1]);\r
+               }\r
+       },\r
+       preFilter: {\r
+               CLASS: function(match, curLoop, inplace, result, not, isXML){\r
+                       match = " " + match[1].replace(/\\/g, "") + " ";\r
+\r
+                       if ( isXML ) {\r
+                               return match;\r
+                       }\r
+\r
+                       for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {\r
+                               if ( elem ) {\r
+                                       if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {\r
+                                               if ( !inplace )\r
+                                                       result.push( elem );\r
+                                       } else if ( inplace ) {\r
+                                               curLoop[i] = false;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       return false;\r
+               },\r
+               ID: function(match){\r
+                       return match[1].replace(/\\/g, "");\r
+               },\r
+               TAG: function(match, curLoop){\r
+                       for ( var i = 0; curLoop[i] === false; i++ ){}\r
+                       return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();\r
+               },\r
+               CHILD: function(match){\r
+                       if ( match[1] == "nth" ) {\r
+                               // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'\r
+                               var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(\r
+                                       match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||\r
+                                       !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);\r
+\r
+                               // calculate the numbers (first)n+(last) including if they are negative\r
+                               match[2] = (test[1] + (test[2] || 1)) - 0;\r
+                               match[3] = test[3] - 0;\r
+                       }\r
+\r
+                       // TODO: Move to normal caching system\r
+                       match[0] = done++;\r
+\r
+                       return match;\r
+               },\r
+               ATTR: function(match, curLoop, inplace, result, not, isXML){\r
+                       var name = match[1].replace(/\\/g, "");\r
+                       \r
+                       if ( !isXML && Expr.attrMap[name] ) {\r
+                               match[1] = Expr.attrMap[name];\r
+                       }\r
+\r
+                       if ( match[2] === "~=" ) {\r
+                               match[4] = " " + match[4] + " ";\r
+                       }\r
+\r
+                       return match;\r
+               },\r
+               PSEUDO: function(match, curLoop, inplace, result, not){\r
+                       if ( match[1] === "not" ) {\r
+                               // If we're dealing with a complex expression, or a simple one\r
+                               if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {\r
+                                       match[3] = Sizzle(match[3], null, null, curLoop);\r
+                               } else {\r
+                                       var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);\r
+                                       if ( !inplace ) {\r
+                                               result.push.apply( result, ret );\r
+                                       }\r
+                                       return false;\r
+                               }\r
+                       } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {\r
+                               return true;\r
+                       }\r
+                       \r
+                       return match;\r
+               },\r
+               POS: function(match){\r
+                       match.unshift( true );\r
+                       return match;\r
+               }\r
+       },\r
+       filters: {\r
+               enabled: function(elem){\r
+                       return elem.disabled === false && elem.type !== "hidden";\r
+               },\r
+               disabled: function(elem){\r
+                       return elem.disabled === true;\r
+               },\r
+               checked: function(elem){\r
+                       return elem.checked === true;\r
+               },\r
+               selected: function(elem){\r
+                       // Accessing this property makes selected-by-default\r
+                       // options in Safari work properly\r
+                       elem.parentNode.selectedIndex;\r
+                       return elem.selected === true;\r
+               },\r
+               parent: function(elem){\r
+                       return !!elem.firstChild;\r
+               },\r
+               empty: function(elem){\r
+                       return !elem.firstChild;\r
+               },\r
+               has: function(elem, i, match){\r
+                       return !!Sizzle( match[3], elem ).length;\r
+               },\r
+               header: function(elem){\r
+                       return /h\d/i.test( elem.nodeName );\r
+               },\r
+               text: function(elem){\r
+                       return "text" === elem.type;\r
+               },\r
+               radio: function(elem){\r
+                       return "radio" === elem.type;\r
+               },\r
+               checkbox: function(elem){\r
+                       return "checkbox" === elem.type;\r
+               },\r
+               file: function(elem){\r
+                       return "file" === elem.type;\r
+               },\r
+               password: function(elem){\r
+                       return "password" === elem.type;\r
+               },\r
+               submit: function(elem){\r
+                       return "submit" === elem.type;\r
+               },\r
+               image: function(elem){\r
+                       return "image" === elem.type;\r
+               },\r
+               reset: function(elem){\r
+                       return "reset" === elem.type;\r
+               },\r
+               button: function(elem){\r
+                       return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";\r
+               },\r
+               input: function(elem){\r
+                       return /input|select|textarea|button/i.test(elem.nodeName);\r
+               }\r
+       },\r
+       setFilters: {\r
+               first: function(elem, i){\r
+                       return i === 0;\r
+               },\r
+               last: function(elem, i, match, array){\r
+                       return i === array.length - 1;\r
+               },\r
+               even: function(elem, i){\r
+                       return i % 2 === 0;\r
+               },\r
+               odd: function(elem, i){\r
+                       return i % 2 === 1;\r
+               },\r
+               lt: function(elem, i, match){\r
+                       return i < match[3] - 0;\r
+               },\r
+               gt: function(elem, i, match){\r
+                       return i > match[3] - 0;\r
+               },\r
+               nth: function(elem, i, match){\r
+                       return match[3] - 0 == i;\r
+               },\r
+               eq: function(elem, i, match){\r
+                       return match[3] - 0 == i;\r
+               }\r
+       },\r
+       filter: {\r
+               PSEUDO: function(elem, match, i, array){\r
+                       var name = match[1], filter = Expr.filters[ name ];\r
+\r
+                       if ( filter ) {\r
+                               return filter( elem, i, match, array );\r
+                       } else if ( name === "contains" ) {\r
+                               return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;\r
+                       } else if ( name === "not" ) {\r
+                               var not = match[3];\r
+\r
+                               for ( var i = 0, l = not.length; i < l; i++ ) {\r
+                                       if ( not[i] === elem ) {\r
+                                               return false;\r
+                                       }\r
+                               }\r
+\r
+                               return true;\r
+                       }\r
+               },\r
+               CHILD: function(elem, match){\r
+                       var type = match[1], node = elem;\r
+                       switch (type) {\r
+                               case 'only':\r
+                               case 'first':\r
+                                       while (node = node.previousSibling)  {\r
+                                               if ( node.nodeType === 1 ) return false;\r
+                                       }\r
+                                       if ( type == 'first') return true;\r
+                                       node = elem;\r
+                               case 'last':\r
+                                       while (node = node.nextSibling)  {\r
+                                               if ( node.nodeType === 1 ) return false;\r
+                                       }\r
+                                       return true;\r
+                               case 'nth':\r
+                                       var first = match[2], last = match[3];\r
+\r
+                                       if ( first == 1 && last == 0 ) {\r
+                                               return true;\r
+                                       }\r
+                                       \r
+                                       var doneName = match[0],\r
+                                               parent = elem.parentNode;\r
+       \r
+                                       if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {\r
+                                               var count = 0;\r
+                                               for ( node = parent.firstChild; node; node = node.nextSibling ) {\r
+                                                       if ( node.nodeType === 1 ) {\r
+                                                               node.nodeIndex = ++count;\r
+                                                       }\r
+                                               } \r
+                                               parent.sizcache = doneName;\r
+                                       }\r
+                                       \r
+                                       var diff = elem.nodeIndex - last;\r
+                                       if ( first == 0 ) {\r
+                                               return diff == 0;\r
+                                       } else {\r
+                                               return ( diff % first == 0 && diff / first >= 0 );\r
+                                       }\r
+                       }\r
+               },\r
+               ID: function(elem, match){\r
+                       return elem.nodeType === 1 && elem.getAttribute("id") === match;\r
+               },\r
+               TAG: function(elem, match){\r
+                       return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;\r
+               },\r
+               CLASS: function(elem, match){\r
+                       return (" " + (elem.className || elem.getAttribute("class")) + " ")\r
+                               .indexOf( match ) > -1;\r
+               },\r
+               ATTR: function(elem, match){\r
+                       var name = match[1],\r
+                               result = Expr.attrHandle[ name ] ?\r
+                                       Expr.attrHandle[ name ]( elem ) :\r
+                                       elem[ name ] != null ?\r
+                                               elem[ name ] :\r
+                                               elem.getAttribute( name ),\r
+                               value = result + "",\r
+                               type = match[2],\r
+                               check = match[4];\r
+\r
+                       return result == null ?\r
+                               type === "!=" :\r
+                               type === "=" ?\r
+                               value === check :\r
+                               type === "*=" ?\r
+                               value.indexOf(check) >= 0 :\r
+                               type === "~=" ?\r
+                               (" " + value + " ").indexOf(check) >= 0 :\r
+                               !check ?\r
+                               value && result !== false :\r
+                               type === "!=" ?\r
+                               value != check :\r
+                               type === "^=" ?\r
+                               value.indexOf(check) === 0 :\r
+                               type === "$=" ?\r
+                               value.substr(value.length - check.length) === check :\r
+                               type === "|=" ?\r
+                               value === check || value.substr(0, check.length + 1) === check + "-" :\r
+                               false;\r
+               },\r
+               POS: function(elem, match, i, array){\r
+                       var name = match[2], filter = Expr.setFilters[ name ];\r
+\r
+                       if ( filter ) {\r
+                               return filter( elem, i, match, array );\r
+                       }\r
+               }\r
+       }\r
+};\r
+\r
+var origPOS = Expr.match.POS;\r
+\r
+for ( var type in Expr.match ) {\r
+       Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );\r
+}\r
+\r
+var makeArray = function(array, results) {\r
+       array = Array.prototype.slice.call( array );\r
+\r
+       if ( results ) {\r
+               results.push.apply( results, array );\r
+               return results;\r
+       }\r
+       \r
+       return array;\r
+};\r
+\r
+// Perform a simple check to determine if the browser is capable of\r
+// converting a NodeList to an array using builtin methods.\r
+try {\r
+       Array.prototype.slice.call( document.documentElement.childNodes );\r
+\r
+// Provide a fallback method if it does not work\r
+} catch(e){\r
+       makeArray = function(array, results) {\r
+               var ret = results || [];\r
+\r
+               if ( toString.call(array) === "[object Array]" ) {\r
+                       Array.prototype.push.apply( ret, array );\r
+               } else {\r
+                       if ( typeof array.length === "number" ) {\r
+                               for ( var i = 0, l = array.length; i < l; i++ ) {\r
+                                       ret.push( array[i] );\r
+                               }\r
+                       } else {\r
+                               for ( var i = 0; array[i]; i++ ) {\r
+                                       ret.push( array[i] );\r
+                               }\r
+                       }\r
+               }\r
+\r
+               return ret;\r
+       };\r
+}\r
+\r
+var sortOrder;\r
+\r
+if ( document.documentElement.compareDocumentPosition ) {\r
+       sortOrder = function( a, b ) {\r
+               var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;\r
+               if ( ret === 0 ) {\r
+                       hasDuplicate = true;\r
+               }\r
+               return ret;\r
+       };\r
+} else if ( "sourceIndex" in document.documentElement ) {\r
+       sortOrder = function( a, b ) {\r
+               var ret = a.sourceIndex - b.sourceIndex;\r
+               if ( ret === 0 ) {\r
+                       hasDuplicate = true;\r
+               }\r
+               return ret;\r
+       };\r
+} else if ( document.createRange ) {\r
+       sortOrder = function( a, b ) {\r
+               var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();\r
+               aRange.setStart(a, 0);\r
+               aRange.setEnd(a, 0);\r
+               bRange.setStart(b, 0);\r
+               bRange.setEnd(b, 0);\r
+               var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);\r
+               if ( ret === 0 ) {\r
+                       hasDuplicate = true;\r
+               }\r
+               return ret;\r
+       };\r
+}\r
+\r
+// Check to see if the browser returns elements by name when\r
+// querying by getElementById (and provide a workaround)\r
+(function(){\r
+       // We're going to inject a fake input element with a specified name\r
+       var form = document.createElement("div"),\r
+               id = "script" + (new Date).getTime();\r
+       form.innerHTML = "<a name='" + id + "'/>";\r
+\r
+       // Inject it into the root element, check its status, and remove it quickly\r
+       var root = document.documentElement;\r
+       root.insertBefore( form, root.firstChild );\r
+\r
+       // The workaround has to do additional checks after a getElementById\r
+       // Which slows things down for other browsers (hence the branching)\r
+       if ( !!document.getElementById( id ) ) {\r
+               Expr.find.ID = function(match, context, isXML){\r
+                       if ( typeof context.getElementById !== "undefined" && !isXML ) {\r
+                               var m = context.getElementById(match[1]);\r
+                               return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];\r
+                       }\r
+               };\r
+\r
+               Expr.filter.ID = function(elem, match){\r
+                       var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");\r
+                       return elem.nodeType === 1 && node && node.nodeValue === match;\r
+               };\r
+       }\r
+\r
+       root.removeChild( form );\r
+})();\r
+\r
+(function(){\r
+       // Check to see if the browser returns only elements\r
+       // when doing getElementsByTagName("*")\r
+\r
+       // Create a fake element\r
+       var div = document.createElement("div");\r
+       div.appendChild( document.createComment("") );\r
+\r
+       // Make sure no comments are found\r
+       if ( div.getElementsByTagName("*").length > 0 ) {\r
+               Expr.find.TAG = function(match, context){\r
+                       var results = context.getElementsByTagName(match[1]);\r
+\r
+                       // Filter out possible comments\r
+                       if ( match[1] === "*" ) {\r
+                               var tmp = [];\r
+\r
+                               for ( var i = 0; results[i]; i++ ) {\r
+                                       if ( results[i].nodeType === 1 ) {\r
+                                               tmp.push( results[i] );\r
+                                       }\r
+                               }\r
+\r
+                               results = tmp;\r
+                       }\r
+\r
+                       return results;\r
+               };\r
+       }\r
+\r
+       // Check to see if an attribute returns normalized href attributes\r
+       div.innerHTML = "<a href='#'></a>";\r
+       if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&\r
+                       div.firstChild.getAttribute("href") !== "#" ) {\r
+               Expr.attrHandle.href = function(elem){\r
+                       return elem.getAttribute("href", 2);\r
+               };\r
+       }\r
+})();\r
+\r
+if ( document.querySelectorAll ) (function(){\r
+       var oldSizzle = Sizzle, div = document.createElement("div");\r
+       div.innerHTML = "<p class='TEST'></p>";\r
+\r
+       // Safari can't handle uppercase or unicode characters when\r
+       // in quirks mode.\r
+       if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {\r
+               return;\r
+       }\r
+       \r
+       Sizzle = function(query, context, extra, seed){\r
+               context = context || document;\r
+\r
+               // Only use querySelectorAll on non-XML documents\r
+               // (ID selectors don't work in non-HTML documents)\r
+               if ( !seed && context.nodeType === 9 && !isXML(context) ) {\r
+                       try {\r
+                               return makeArray( context.querySelectorAll(query), extra );\r
+                       } catch(e){}\r
+               }\r
+               \r
+               return oldSizzle(query, context, extra, seed);\r
+       };\r
+\r
+       for ( var prop in oldSizzle ) {\r
+               Sizzle[ prop ] = oldSizzle[ prop ];\r
+       }\r
+})();\r
+\r
+if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){\r
+       var div = document.createElement("div");\r
+       div.innerHTML = "<div class='test e'></div><div class='test'></div>";\r
+\r
+       // Opera can't find a second classname (in 9.6)\r
+       if ( div.getElementsByClassName("e").length === 0 )\r
+               return;\r
+\r
+       // Safari caches class attributes, doesn't catch changes (in 3.2)\r
+       div.lastChild.className = "e";\r
+\r
+       if ( div.getElementsByClassName("e").length === 1 )\r
+               return;\r
+\r
+       Expr.order.splice(1, 0, "CLASS");\r
+       Expr.find.CLASS = function(match, context, isXML) {\r
+               if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {\r
+                       return context.getElementsByClassName(match[1]);\r
+               }\r
+       };\r
+})();\r
+\r
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\r
+       var sibDir = dir == "previousSibling" && !isXML;\r
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
+               var elem = checkSet[i];\r
+               if ( elem ) {\r
+                       if ( sibDir && elem.nodeType === 1 ){\r
+                               elem.sizcache = doneName;\r
+                               elem.sizset = i;\r
+                       }\r
+                       elem = elem[dir];\r
+                       var match = false;\r
+\r
+                       while ( elem ) {\r
+                               if ( elem.sizcache === doneName ) {\r
+                                       match = checkSet[elem.sizset];\r
+                                       break;\r
+                               }\r
+\r
+                               if ( elem.nodeType === 1 && !isXML ){\r
+                                       elem.sizcache = doneName;\r
+                                       elem.sizset = i;\r
+                               }\r
+\r
+                               if ( elem.nodeName === cur ) {\r
+                                       match = elem;\r
+                                       break;\r
+                               }\r
+\r
+                               elem = elem[dir];\r
+                       }\r
+\r
+                       checkSet[i] = match;\r
+               }\r
+       }\r
+}\r
+\r
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {\r
+       var sibDir = dir == "previousSibling" && !isXML;\r
+       for ( var i = 0, l = checkSet.length; i < l; i++ ) {\r
+               var elem = checkSet[i];\r
+               if ( elem ) {\r
+                       if ( sibDir && elem.nodeType === 1 ) {\r
+                               elem.sizcache = doneName;\r
+                               elem.sizset = i;\r
+                       }\r
+                       elem = elem[dir];\r
+                       var match = false;\r
+\r
+                       while ( elem ) {\r
+                               if ( elem.sizcache === doneName ) {\r
+                                       match = checkSet[elem.sizset];\r
+                                       break;\r
+                               }\r
+\r
+                               if ( elem.nodeType === 1 ) {\r
+                                       if ( !isXML ) {\r
+                                               elem.sizcache = doneName;\r
+                                               elem.sizset = i;\r
+                                       }\r
+                                       if ( typeof cur !== "string" ) {\r
+                                               if ( elem === cur ) {\r
+                                                       match = true;\r
+                                                       break;\r
+                                               }\r
+\r
+                                       } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {\r
+                                               match = elem;\r
+                                               break;\r
+                                       }\r
+                               }\r
+\r
+                               elem = elem[dir];\r
+                       }\r
+\r
+                       checkSet[i] = match;\r
+               }\r
+       }\r
+}\r
+\r
+var contains = document.compareDocumentPosition ?  function(a, b){\r
+       return a.compareDocumentPosition(b) & 16;\r
+} : function(a, b){\r
+       return a !== b && (a.contains ? a.contains(b) : true);\r
+};\r
+\r
+var isXML = function(elem){\r
+       return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||\r
+               !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";\r
+};\r
+\r
+var posProcess = function(selector, context){\r
+       var tmpSet = [], later = "", match,\r
+               root = context.nodeType ? [context] : context;\r
+\r
+       // Position selectors must be done after the filter\r
+       // And so must :not(positional) so we move all PSEUDOs to the end\r
+       while ( (match = Expr.match.PSEUDO.exec( selector )) ) {\r
+               later += match[0];\r
+               selector = selector.replace( Expr.match.PSEUDO, "" );\r
+       }\r
+\r
+       selector = Expr.relative[selector] ? selector + "*" : selector;\r
+\r
+       for ( var i = 0, l = root.length; i < l; i++ ) {\r
+               Sizzle( selector, root[i], tmpSet );\r
+       }\r
+\r
+       return Sizzle.filter( later, tmpSet );\r
+};\r
+\r
+// EXPOSE\r
+\r
+window.tinymce.dom.Sizzle = Sizzle;\r
+\r
+})();\r
+\r
+(function(tinymce) {\r
+       // Shorten names\r
+       var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;\r
+\r
+       tinymce.create('static tinymce.dom.Event', {\r
+               inits : [],\r
+               events : [],\r
+\r
+\r
+               add : function(o, n, f, s) {\r
+                       var cb, t = this, el = t.events, r;\r
+\r
+                       // Handle array\r
+                       if (o && o.hasOwnProperty && o instanceof Array) {\r
+                               r = [];\r
+\r
+                               each(o, function(o) {\r
+                                       o = DOM.get(o);\r
+                                       r.push(t.add(o, n, f, s));\r
+                               });\r
+\r
+                               return r;\r
+                       }\r
+\r
+                       o = DOM.get(o);\r
+\r
+                       if (!o)\r
+                               return;\r
+\r
+                       // Setup event callback\r
+                       cb = function(e) {\r
+                               e = e || window.event;\r
+\r
+                               // Patch in target in IE it's W3C valid\r
+                               if (e && !e.target && isIE)\r
+                                       e.target = e.srcElement;\r
+\r
+                               if (!s)\r
+                                       return f(e);\r
+\r
+                               return f.call(s, e);\r
+                       };\r
+\r
+                       if (n == 'unload') {\r
+                               tinymce.unloads.unshift({func : cb});\r
+                               return cb;\r
+                       }\r
+\r
+                       if (n == 'init') {\r
+                               if (t.domLoaded)\r
+                                       cb();\r
+                               else\r
+                                       t.inits.push(cb);\r
+\r
+                               return cb;\r
+                       }\r
+\r
+                       // Store away listener reference\r
+                       el.push({\r
+                               obj : o,\r
+                               name : n,\r
+                               func : f,\r
+                               cfunc : cb,\r
+                               scope : s\r
+                       });\r
+\r
+                       t._add(o, n, cb);\r
 \r
                        return f;\r
                },\r
@@ -2545,7 +4355,7 @@ tinymce.create('static tinymce.util.XHR', {
                        var t = this, a = t.events, s = false, r;\r
 \r
                        // Handle array\r
-                       if (o && o instanceof Array) {\r
+                       if (o && o.hasOwnProperty && o instanceof Array) {\r
                                r = [];\r
 \r
                                each(o, function(o) {\r
@@ -2588,7 +4398,6 @@ tinymce.create('static tinymce.util.XHR', {
                        }\r
                },\r
 \r
-               // #endif\r
 \r
                cancel : function(e) {\r
                        if (!e)\r
@@ -2655,6 +4464,10 @@ tinymce.create('static tinymce.util.XHR', {
                _pageInit : function() {\r
                        var e = Event;\r
 \r
+                       // Keep it from running more than once\r
+                       if (e.domLoaded)\r
+                               return;\r
+\r
                        e._remove(window, 'DOMContentLoaded', e._pageInit);\r
                        e.domLoaded = true;\r
 \r
@@ -2666,35 +4479,42 @@ tinymce.create('static tinymce.util.XHR', {
                },\r
 \r
                _wait : function() {\r
-                       var t;\r
-\r
                        // No need since the document is already loaded\r
                        if (window.tinyMCE_GZ && tinyMCE_GZ.loaded) {\r
                                Event.domLoaded = 1;\r
                                return;\r
                        }\r
 \r
-                       if (isIE && document.location.protocol != 'https:') {\r
-                               // Fake DOMContentLoaded on IE\r
-                               document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');\r
-                               DOM.get("__ie_onload").onreadystatechange = function() {\r
-                                       if (this.readyState == "complete") {\r
+                       // Use IE method\r
+                       if (document.attachEvent) {\r
+                               document.attachEvent("onreadystatechange", function() {\r
+                                       if (document.readyState === "complete") {\r
+                                               document.detachEvent("onreadystatechange", arguments.callee);\r
                                                Event._pageInit();\r
-                                               DOM.get("__ie_onload").onreadystatechange = null; // Prevent leak\r
                                        }\r
-                               };\r
-                       } else {\r
-                               Event._add(window, 'DOMContentLoaded', Event._pageInit, Event);\r
+                               });\r
+\r
+                               if (document.documentElement.doScroll && window == window.top) {\r
+                                       (function() {\r
+                                               if (Event.domLoaded)\r
+                                                       return;\r
 \r
-                               if (isIE || isWebKit) {\r
-                                       t = setInterval(function() {\r
-                                               if (/loaded|complete/.test(document.readyState)) {\r
-                                                       clearInterval(t);\r
-                                                       Event._pageInit();\r
+                                               try {\r
+                                                       // If IE is used, use the trick by Diego Perini\r
+                                                       // http://javascript.nwbox.com/IEContentLoaded/\r
+                                                       document.documentElement.doScroll("left");\r
+                                               } catch (ex) {\r
+                                                       setTimeout(arguments.callee, 0);\r
+                                                       return;\r
                                                }\r
-                                       }, 10);\r
+\r
+                                               Event._pageInit();\r
+                                       })();\r
                                }\r
-                       }\r
+                       } else if (document.addEventListener)\r
+                               Event._add(window, 'DOMContentLoaded', Event._pageInit, Event);\r
+\r
+                       Event._add(window, 'load', Event._pageInit, Event);\r
                }\r
 \r
                });\r
@@ -2705,11 +4525,8 @@ tinymce.create('static tinymce.util.XHR', {
        // Dispatch DOM content loaded event for IE and Safari\r
        Event._wait();\r
        tinymce.addUnload(Event._unload);\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/dom/Element.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var each = tinymce.each;\r
 \r
        tinymce.create('tinymce.dom.Element', {\r
@@ -2749,22 +4566,15 @@ tinymce.create('static tinymce.util.XHR', {
                                'get'\r
                        ], function(k) {\r
                                t[k] = function() {\r
-                                       var a = arguments, o;\r
-\r
-                                       // Opera fails\r
-                                       if (tinymce.isOpera) {\r
-                                               a = [id];\r
+                                       var a = [id], i;\r
 \r
-                                               each(arguments, function(v) {\r
-                                                       a.push(v);\r
-                                               });\r
-                                       } else\r
-                                               Array.prototype.unshift.call(a, el || id);\r
+                                       for (i = 0; i < arguments.length; i++)\r
+                                               a.push(arguments[i]);\r
 \r
-                                       o = dom[k].apply(dom, a);\r
+                                       a = dom[k].apply(dom, a);\r
                                        t.update(k);\r
 \r
-                                       return o;\r
+                                       return a;\r
                                };\r
                        });\r
                },\r
@@ -2842,11 +4652,8 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/dom/Selection.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        function trimNl(s) {\r
                return s.replace(/[\n\r]+/g, '');\r
        };\r
@@ -2872,6 +4679,10 @@ tinymce.create('static tinymce.util.XHR', {
                                t[e] = new tinymce.util.Dispatcher(t);\r
                        });\r
 \r
+                       // No W3C Range support\r
+                       if (!t.win.getSelection)\r
+                               t.tridentSel = new tinymce.dom.TridentSelection(t);\r
+\r
                        // Prevent leaks\r
                        tinymce.addUnload(t.destroy, t);\r
                },\r
@@ -2942,9 +4753,11 @@ tinymce.create('static tinymce.util.XHR', {
                                t.setRng(r);\r
 \r
                                // Delete the marker, and hopefully the caret gets placed in the right location\r
-                               d.execCommand('Delete', false, null);\r
+                               // Removed this since it seems to remove &nbsp; in FF and simply deleting it\r
+                               // doesn't seem to affect the caret position in any browser\r
+                               //d.execCommand('Delete', false, null);\r
 \r
-                               // In case it's still there\r
+                               // Remove the caret position\r
                                t.dom.remove('__caret');\r
                        } else {\r
                                if (r.item) {\r
@@ -2981,7 +4794,7 @@ tinymce.create('static tinymce.util.XHR', {
                                if (e.nodeName == 'BODY')\r
                                        return e.firstChild;\r
 \r
-                               return t.dom.getParent(e, function(n) {return n.nodeType == 1;});\r
+                               return t.dom.getParent(e, '*');\r
                        }\r
                },\r
 \r
@@ -3006,7 +4819,7 @@ tinymce.create('static tinymce.util.XHR', {
                                if (e.nodeName == 'BODY')\r
                                        return e.lastChild;\r
 \r
-                               return t.dom.getParent(e, function(n) {return n.nodeType == 1;});\r
+                               return t.dom.getParent(e, '*');\r
                        }\r
                },\r
 \r
@@ -3258,19 +5071,24 @@ tinymce.create('static tinymce.util.XHR', {
                select : function(n, c) {\r
                        var t = this, r = t.getRng(), s = t.getSel(), b, fn, ln, d = t.win.document;\r
 \r
-                       function first(n) {\r
-                               return n ? d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false).nextNode() : null;\r
-                       };\r
+                       function find(n, start) {\r
+                               var walker, o;\r
 \r
-                       function last(n) {\r
-                               var c, o, w;\r
+                               if (n) {\r
+                                       walker = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);\r
 \r
-                               if (!n)\r
-                                       return null;\r
+                                       // Find first/last non empty text node\r
+                                       while (n = walker.nextNode()) {\r
+                                               o = n;\r
 \r
-                               w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);\r
-                               while (c = w.nextNode())\r
-                                       o = c;\r
+                                               if (tinymce.trim(n.nodeValue).length != 0) {\r
+                                                       if (start)\r
+                                                               return n;\r
+                                                       else\r
+                                                               o = n;\r
+                                               }\r
+                                       }\r
+                               }\r
 \r
                                return o;\r
                        };\r
@@ -3293,14 +5111,21 @@ tinymce.create('static tinymce.util.XHR', {
                                }\r
                        } else {\r
                                if (c) {\r
-                                       fn = first(n);\r
-                                       ln = last(n);\r
+                                       fn = find(n, 1) || t.dom.select('br:first', n)[0];\r
+                                       ln = find(n, 0) || t.dom.select('br:last', n)[0];\r
 \r
                                        if (fn && ln) {\r
-                                               //console.debug(fn, ln);\r
                                                r = d.createRange();\r
-                                               r.setStart(fn, 0);\r
-                                               r.setEnd(ln, ln.nodeValue.length);\r
+\r
+                                               if (fn.nodeName == 'BR')\r
+                                                       r.setStartBefore(fn);\r
+                                               else\r
+                                                       r.setStart(fn, 0);\r
+\r
+                                               if (ln.nodeName == 'BR')\r
+                                                       r.setEndBefore(ln);\r
+                                               else\r
+                                                       r.setEnd(ln, ln.nodeValue.length);\r
                                        } else\r
                                                r.selectNode(n);\r
                                } else\r
@@ -3341,11 +5166,15 @@ tinymce.create('static tinymce.util.XHR', {
                        return w.getSelection ? w.getSelection() : w.document.selection;\r
                },\r
 \r
-               getRng : function() {\r
-                       var t = this, s = t.getSel(), r;\r
+               getRng : function(w3c) {\r
+                       var t = this, s, r;\r
+\r
+                       // Found tridentSel object then we need to use that one\r
+                       if (w3c && t.tridentSel)\r
+                               return t.tridentSel.getRangeAt(0);\r
 \r
                        try {\r
-                               if (s)\r
+                               if (s = t.getSel())\r
                                        r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : t.win.document.createRange());\r
                        } catch (ex) {\r
                                // IE throws unspecified error here if TinyMCE is placed in a frame/iframe\r
@@ -3361,16 +5190,23 @@ tinymce.create('static tinymce.util.XHR', {
                },\r
 \r
                setRng : function(r) {\r
-                       var s;\r
+                       var s, t = this;\r
 \r
-                       if (!isIE) {\r
-                               s = this.getSel();\r
+                       if (!t.tridentSel) {\r
+                               s = t.getSel();\r
 \r
                                if (s) {\r
                                        s.removeAllRanges();\r
                                        s.addRange(r);\r
                                }\r
                        } else {\r
+                               // Is W3C Range\r
+                               if (r.cloneRange) {\r
+                                       t.tridentSel.addRange(r);\r
+                                       return;\r
+                               }\r
+\r
+                               // Is IE specific range\r
                                try {\r
                                        r.select();\r
                                } catch (ex) {\r
@@ -3411,30 +5247,52 @@ tinymce.create('static tinymce.util.XHR', {
                                        }\r
                                }\r
 \r
-                               return t.dom.getParent(e, function(n) {\r
-                                       return n.nodeType == 1;\r
-                               });\r
+                               return t.dom.getParent(e, '*');\r
                        }\r
 \r
                        return r.item ? r.item(0) : r.parentElement();\r
                },\r
 \r
+               getSelectedBlocks : function(st, en) {\r
+                       var t = this, dom = t.dom, sb, eb, n, bl = [];\r
+\r
+                       sb = dom.getParent(st || t.getStart(), dom.isBlock);\r
+                       eb = dom.getParent(en || t.getEnd(), dom.isBlock);\r
+\r
+                       if (sb)\r
+                               bl.push(sb);\r
+\r
+                       if (sb && eb && sb != eb) {\r
+                               n = sb;\r
+\r
+                               while ((n = n.nextSibling) && n != eb) {\r
+                                       if (dom.isBlock(n))\r
+                                               bl.push(n);\r
+                               }\r
+                       }\r
+\r
+                       if (eb && sb != eb)\r
+                               bl.push(eb);\r
+\r
+                       return bl;\r
+               },\r
+\r
                destroy : function(s) {\r
                        var t = this;\r
 \r
                        t.win = null;\r
 \r
+                       if (t.tridentSel)\r
+                               t.tridentSel.destroy();\r
+\r
                        // Manual destroy then remove unload handler\r
                        if (!s)\r
                                tinymce.removeUnload(t.destroy);\r
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/dom/XMLWriter.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        tinymce.create('tinymce.dom.XMLWriter', {\r
                node : null,\r
 \r
@@ -3525,11 +5383,8 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/dom/StringWriter.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        tinymce.create('tinymce.dom.StringWriter', {\r
                str : null,\r
                tags : null,\r
@@ -3655,29 +5510,11 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/dom/Serializer.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        // Shorten names\r
        var extend = tinymce.extend, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, isIE = tinymce.isIE, isGecko = tinymce.isGecko;\r
 \r
-       // Returns only attribites that have values not all attributes in IE\r
-       function getIEAtts(n) {\r
-               var o = [];\r
-\r
-               // Object will throw exception in IE\r
-               if (n.nodeName == 'OBJECT')\r
-                       return n.attributes;\r
-\r
-               n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi, function(a, b) {\r
-                       o.push({specified : 1, nodeName : b});\r
-               });\r
-\r
-               return o;\r
-       };\r
-\r
        function wildcardToRE(s) {\r
                return s.replace(/([?+*])/g, '.$1');\r
        };\r
@@ -3690,16 +5527,11 @@ tinymce.create('static tinymce.util.XHR', {
                        t.onPreProcess = new Dispatcher(t);\r
                        t.onPostProcess = new Dispatcher(t);\r
 \r
-                       if (tinymce.relaxedDomain && tinymce.isGecko) {\r
-                               // Gecko has a bug where we can't create a new XML document if domain relaxing is used\r
+                       try {\r
+                               t.writer = new tinymce.dom.XMLWriter();\r
+                       } catch (ex) {\r
+                               // IE might throw exception if ActiveX is disabled so we then switch to the slightly slower StringWriter\r
                                t.writer = new tinymce.dom.StringWriter();\r
-                       } else {\r
-                               try {\r
-                                       t.writer = new tinymce.dom.XMLWriter();\r
-                               } catch (ex) {\r
-                                       // IE might throw exception if ActiveX is disabled so we then switch to the slightly slower StringWriter\r
-                                       t.writer = new tinymce.dom.StringWriter();\r
-                               }\r
                        }\r
 \r
                        // Default settings\r
@@ -3709,14 +5541,15 @@ tinymce.create('static tinymce.util.XHR', {
                                node_filter : 0,\r
                                attr_filter : 0,\r
                                invalid_attrs : /^(mce_|_moz_)/,\r
-                               closed : /(br|hr|input|meta|img|link|param)/,\r
+                               closed : /^(br|hr|input|meta|img|link|param|area)$/,\r
                                entity_encoding : 'named',\r
                                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',\r
+                               bool_attrs : /(checked|disabled|readonly|selected|nowrap)/,\r
                                valid_elements : '*[*]',\r
                                extended_valid_elements : 0,\r
                                valid_child_elements : 0,\r
                                invalid_elements : 0,\r
-                               fix_table_elements : 0,\r
+                               fix_table_elements : 1,\r
                                fix_list_elements : true,\r
                                fix_content_duplication : true,\r
                                convert_fonts_to_spans : false,\r
@@ -3735,8 +5568,14 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                        if (s.remove_redundant_brs) {\r
                                t.onPostProcess.add(function(se, o) {\r
-                                       // Remove BR elements at end of list elements since they get rendered in IE\r
-                                       o.content = o.content.replace(/<br \/>(\s*<\/li>)/g, '$1');\r
+                                       // Remove single BR at end of block elements since they get rendered\r
+                                       o.content = o.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi, function(a, b, c) {\r
+                                               // Check if it's a single element\r
+                                               if (/^<br \/>\s*<\//.test(a))\r
+                                                       return '</' + c + '>';\r
+\r
+                                               return a;\r
+                                       });\r
                                });\r
                        }\r
 \r
@@ -3789,41 +5628,8 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                        if (s.fix_table_elements) {\r
                                t.onPreProcess.add(function(se, o) {\r
-                                       each(t.dom.select('table', o.node), function(e) {\r
-                                               var pa = t.dom.getParent(e, 'H1,H2,H3,H4,H5,H6,P'), pa2, n, tm, pl = [], i, ns;\r
-\r
-                                               if (pa) {\r
-                                                       pa2 = pa.cloneNode(false);\r
-\r
-                                                       pl.push(e);\r
-                                                       for (n = e; n = n.parentNode;) {\r
-                                                               pl.push(n);\r
-\r
-                                                               if (n == pa)\r
-                                                                       break;\r
-                                                       }\r
-\r
-                                                       tm = pa2;\r
-                                                       for (i = pl.length - 1; i >= 0; i--) {\r
-                                                               if (i == pl.length - 1) {\r
-                                                                       while (ns = pl[i - 1].nextSibling)\r
-                                                                               tm.appendChild(ns.parentNode.removeChild(ns));\r
-                                                               } else {\r
-                                                                       n = pl[i].cloneNode(false);\r
-\r
-                                                                       if (i != 0) {\r
-                                                                               while (ns = pl[i - 1].nextSibling)\r
-                                                                                       n.appendChild(ns.parentNode.removeChild(ns));\r
-                                                                       }\r
-\r
-                                                                       tm = tm.appendChild(n);\r
-                                                               }\r
-                                                       }\r
-\r
-                                                       e = t.dom.insertAfter(e.parentNode.removeChild(e), pa);\r
-                                                       t.dom.insertAfter(e, pa);\r
-                                                       t.dom.insertAfter(pa2, e);\r
-                                               }\r
+                                       each(t.dom.select('p table', o.node), function(n) {\r
+                                               t.dom.split(t.dom.getParent(n, 'p'), n);\r
                                        });\r
                                });\r
                        }\r
@@ -4338,7 +6144,7 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                                                // Add wild attributes\r
                                                if (ru.validAttribsRE) {\r
-                                                       at = isIE ? getIEAtts(n) : n.attributes;\r
+                                                       at = t.dom.getAttribs(n);\r
                                                        for (i=at.length-1; i>-1; i--) {\r
                                                                no = at[i];\r
 \r
@@ -4520,6 +6326,16 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                        v = this.dom.getAttrib(n, na);\r
 \r
+                       // Bool attr\r
+                       if (this.settings.bool_attrs.test(na) && v) {\r
+                               v = ('' + v).toLowerCase();\r
+\r
+                               if (v === 'false' || v === '0')\r
+                                       return null;\r
+\r
+                               v = na;\r
+                       }\r
+\r
                        switch (na) {\r
                                case 'rowspan':\r
                                case 'colspan':\r
@@ -4564,12 +6380,9 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/dom/ScriptLoader.js */\r
-\r
-(function() {\r
-       var each = tinymce.each;\r
+})(tinymce);\r
+(function(tinymce) {\r
+       var each = tinymce.each, Event = tinymce.dom.Event;\r
 \r
        tinymce.create('tinymce.dom.ScriptLoader', {\r
                ScriptLoader : function(s) {\r
@@ -4621,7 +6434,7 @@ tinymce.create('static tinymce.util.XHR', {
                        }\r
 \r
                        function loadScript(u) {\r
-                               if (tinymce.dom.Event.domLoaded || t.settings.strict_mode) {\r
+                               if (Event.domLoaded || t.settings.strict_mode) {\r
                                        tinymce.util.XHR.send({\r
                                                url : tinymce._addVer(u),\r
                                                error : t.settings.error,\r
@@ -4723,6 +6536,12 @@ tinymce.create('static tinymce.util.XHR', {
 \r
                                o.state = 1; // Is loading\r
 \r
+                               tinymce.dom.ScriptLoader.loadScript(o.url, function() {\r
+                                       done(o);\r
+                                       allDone();\r
+                               });\r
+\r
+                               /*\r
                                tinymce.util.XHR.send({\r
                                        url : o.url,\r
                                        error : t.settings.error,\r
@@ -4732,6 +6551,7 @@ tinymce.create('static tinymce.util.XHR', {
                                                allDone();\r
                                        }\r
                                });\r
+                               */\r
                        };\r
 \r
                        each(sc, function(o) {\r
@@ -4748,7 +6568,7 @@ tinymce.create('static tinymce.util.XHR', {
                                if (o.state > 0)\r
                                        return;\r
 \r
-                               if (!tinymce.dom.Event.domLoaded && !t.settings.strict_mode) {\r
+                               if (!Event.domLoaded && !t.settings.strict_mode) {\r
                                        var ix, ol = '';\r
 \r
                                        // Add onload events\r
@@ -4793,6 +6613,42 @@ tinymce.create('static tinymce.util.XHR', {
                        _onLoad : function(e, u, ix) {\r
                                if (!tinymce.isIE || e.readyState == 'complete')\r
                                        this._funcs[ix].call(this);\r
+                       },\r
+\r
+                       loadScript : function(u, cb) {\r
+                               var id = tinymce.DOM.uniqueId(), e;\r
+\r
+                               function done() {\r
+                                       Event.clear(id);\r
+                                       tinymce.DOM.remove(id);\r
+\r
+                                       if (cb) {\r
+                                               cb.call(document, u);\r
+                                               cb = 0;\r
+                                       }\r
+                               };\r
+\r
+                               if (tinymce.isIE) {\r
+/*                                     Event.add(e, 'readystatechange', function(e) {\r
+                                               if (e.target && e.target.readyState == 'complete')\r
+                                                       done();\r
+                                       });*/\r
+\r
+                                       tinymce.util.XHR.send({\r
+                                               url : tinymce._addVer(u),\r
+                                               async : false,\r
+                                               success : function(co) {\r
+                                                       window.execScript(co);\r
+                                                       done();\r
+                                               }\r
+                                       });\r
+                               } else {\r
+                                       e = tinymce.DOM.create('script', {id : id, type : 'text/javascript', src : tinymce._addVer(u)});\r
+                                       Event.add(e, 'load', done);\r
+\r
+                                       // Check for head or body\r
+                                       (document.getElementsByTagName('head')[0] || document.body).appendChild(e);\r
+                               }\r
                        }\r
                }\r
 \r
@@ -4800,11 +6656,8 @@ tinymce.create('static tinymce.util.XHR', {
 \r
        // Global script loader\r
        tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/Control.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        // Shorten class names\r
        var DOM = tinymce.DOM, is = tinymce.is;\r
 \r
@@ -4905,10 +6758,7 @@ tinymce.create('static tinymce.util.XHR', {
                }\r
 \r
                });\r
-})();\r
-/* file:jscripts/tiny_mce/classes/ui/Container.js */\r
-\r
-tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {\r
+})(tinymce);tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {\r
        Container : function(id, s) {\r
                this.parent(id, s);\r
                this.controls = [];\r
@@ -4928,9 +6778,6 @@ tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {
 \r
        });\r
 \r
-\r
-/* file:jscripts/tiny_mce/classes/ui/Separator.js */\r
-\r
 tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {\r
        Separator : function(id, s) {\r
                this.parent(id, s);\r
@@ -4942,10 +6789,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
        }\r
 \r
        });\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/MenuItem.js */\r
-\r
-(function() {\r
+(function(tinymce) {\r
        var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;\r
 \r
        tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', {\r
@@ -4974,11 +6818,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/Menu.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;\r
 \r
        tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', {\r
@@ -5076,10 +6917,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-/* file:jscripts/tiny_mce/classes/ui/DropMenu.js */\r
-\r
-(function() {\r
+})(tinymce);(function(tinymce) {\r
        var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element;\r
 \r
        tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', {\r
@@ -5192,7 +7030,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 \r
                                e = e.target;\r
 \r
-                               if (e && (e = DOM.getParent(e, 'TR')) && !DOM.hasClass(e, cp + 'ItemSub')) {\r
+                               if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) {\r
                                        m = t.items[e.id];\r
 \r
                                        if (m.isDisabled())\r
@@ -5219,7 +7057,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                        var m, r, mi;\r
 \r
                                        e = e.target;\r
-                                       if (e && (e = DOM.getParent(e, 'TR'))) {\r
+                                       if (e && (e = DOM.getParent(e, 'tr'))) {\r
                                                m = t.items[e.id];\r
 \r
                                                if (t.lastMenu)\r
@@ -5362,7 +7200,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                },\r
 \r
                _add : function(tb, o) {\r
-                       var n, s = o.settings, a, ro, it, cp = this.classPrefix;\r
+                       var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic;\r
 \r
                        if (s.separator) {\r
                                ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'});\r
@@ -5380,7 +7218,12 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 \r
                        DOM.addClass(it, s['class']);\r
 //                     n = DOM.add(n, 'span', {'class' : 'item'});\r
-                       DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});\r
+\r
+                       ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});\r
+\r
+                       if (s.icon_src)\r
+                               DOM.add(ic, 'img', {src : s.icon_src});\r
+\r
                        n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);\r
 \r
                        if (o.settings.style)\r
@@ -5402,10 +7245,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-/* file:jscripts/tiny_mce/classes/ui/Button.js */\r
-\r
-(function() {\r
+})(tinymce);(function(tinymce) {\r
        var DOM = tinymce.DOM;\r
 \r
        tinymce.create('tinymce.ui.Button:tinymce.ui.Control', {\r
@@ -5438,11 +7278,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/ListBox.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;\r
 \r
        tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {\r
@@ -5462,7 +7299,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        var t = this, fv, f;\r
 \r
                        if (va == undefined)\r
-                               return;\r
+                               return t.selectByIndex(-1);\r
 \r
                        // Is string or number make function selector\r
                        if (va && va.call)\r
@@ -5508,8 +7345,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                                }\r
 \r
                                e = 0;\r
-                       } else\r
-                               t.selectedValue = t.selectedIndex = null;\r
+                       }\r
                },\r
 \r
                add : function(n, v, o) {\r
@@ -5588,7 +7424,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open'))\r
                                return;\r
 \r
-                       if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceMenu');})) {\r
+                       if (!e || !DOM.getParent(e.target, '.mceMenu')) {\r
                                DOM.removeClass(t.id, t.classPrefix + 'Selected');\r
                                Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);\r
 \r
@@ -5694,10 +7530,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-/* file:jscripts/tiny_mce/classes/ui/NativeListBox.js */\r
-\r
-(function() {\r
+})(tinymce);(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;\r
 \r
        tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {\r
@@ -5718,7 +7551,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        var t = this, fv, f;\r
 \r
                        if (va == undefined)\r
-                               return;\r
+                               return t.selectByIndex(-1);\r
 \r
                        // Is string or number make function selector\r
                        if (va && va.call)\r
@@ -5795,7 +7628,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        function onChange(e) {\r
                                var v = t.items[e.target.selectedIndex - 1];\r
 \r
-                               if (v = v.value) {\r
+                               if (v && (v = v.value)) {\r
                                        t.onChange.dispatch(t, v);\r
 \r
                                        if (t.settings.onselect)\r
@@ -5826,10 +7659,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-/* file:jscripts/tiny_mce/classes/ui/MenuButton.js */\r
-\r
-(function() {\r
+})(tinymce);(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;\r
 \r
        tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', {\r
@@ -5892,7 +7722,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';}))\r
                                return;\r
 \r
-                       if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceMenu');})) {\r
+                       if (!e || !DOM.getParent(e.target, '.mceMenu')) {\r
                                t.setState('Selected', 0);\r
                                Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);\r
                                if (t.menu)\r
@@ -5916,11 +7746,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/SplitButton.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;\r
 \r
        tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', {\r
@@ -5985,11 +7812,8 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/ColorSplitButton.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each;\r
 \r
        tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', {\r
@@ -6058,7 +7882,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                        if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';}))\r
                                return;\r
 \r
-                       if (!e || !DOM.getParent(e.target, function(n) {return DOM.hasClass(n, 'mceSplitButtonMenu');})) {\r
+                       if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) {\r
                                DOM.removeClass(t.id, 'mceSplitButtonSelected');\r
                                Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);\r
                                Event.remove(t.id + '_menu', 'keydown', t._keyHandler);\r
@@ -6143,6 +7967,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
 \r
                        t.parent();\r
                        DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'});\r
+                       DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value);\r
                },\r
 \r
                destroy : function() {\r
@@ -6154,10 +7979,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ui/Toolbar.js */\r
-\r
+})(tinymce);\r
 tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {\r
        renderHTML : function() {\r
                var t = this, h = '', c, co, dom = tinymce.DOM, s = t.settings, i, pr, nx, cl;\r
@@ -6221,10 +8043,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
        }\r
 \r
        });\r
-\r
-/* file:jscripts/tiny_mce/classes/AddOnManager.js */\r
-\r
-(function() {\r
+(function(tinymce) {\r
        var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;\r
 \r
        tinymce.create('tinymce.AddOnManager', {\r
@@ -6241,8 +8060,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        var u, s = tinymce.EditorManager.settings;\r
 \r
                        if (s && s.language) {\r
-                l = tinyMCE.settings['language'];\r
-                u = tinyMCE.settings['document_base_url'] + '/lib/editor/tinymce/strings.php?lang='+l+'&dlg=0&context=' + this.urls[n];\r
+                               u = this.urls[n] + '/langs/' + s.language + '.js';\r
 \r
                                if (!tinymce.dom.Event.domLoaded && !s.strict_mode)\r
                                        tinymce.ScriptLoader.load(u);\r
@@ -6277,10 +8095,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
        // Create plugin and theme managers\r
        tinymce.PluginManager = new tinymce.AddOnManager();\r
        tinymce.ThemeManager = new tinymce.AddOnManager();\r
-}());\r
-/* file:jscripts/tiny_mce/classes/EditorManager.js */\r
-\r
-(function() {\r
+}(tinymce));(function(tinymce) {\r
        // Shorten names\r
        var each = tinymce.each, extend = tinymce.extend, DOM = tinymce.DOM, Event = tinymce.dom.Event, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, explode = tinymce.explode;\r
 \r
@@ -6300,14 +8115,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);\r
                        tinymce.EditorManager.baseURI = new tinymce.util.URI(tinymce.baseURL);\r
 \r
-                       // User already specified a document.domain value\r
+                       // User specified a document.domain value\r
                        if (document.domain && lo.hostname != document.domain)\r
                                tinymce.relaxedDomain = document.domain;\r
 \r
-                       // Setup document domain if tinymce is loaded from other domain\r
-                       if (!tinymce.relaxedDomain && tinymce.EditorManager.baseURI.host != lo.hostname && lo.hostname)\r
-                               document.domain = tinymce.relaxedDomain = lo.hostname.replace(/.*\.(.+\..+)$/, '$1');\r
-\r
                        // Add before unload listener\r
                        // This was required since IE was leaking memory if you added and removed beforeunload listeners\r
                        // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event\r
@@ -6348,10 +8159,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                        // If page not loaded and strict mode isn't enabled then load them\r
                        if (!Event.domLoaded && !s.strict_loading_mode) {\r
                                // Load language\r
-                               if (s.language) {\r
-                    l = tinyMCE.settings['language'];\r
-                    sl.add(tinyMCE.settings['document_base_url'] + '/lib/editor/tinymce/strings.php?lang='+l+'&dlg=0');\r
-                }\r
+                               if (s.language)\r
+                                       sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');\r
 \r
                                // Load theme\r
                                if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])\r
@@ -6661,14 +8470,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
                });\r
 \r
        tinymce.EditorManager.preInit();\r
-})();\r
+})(tinymce);\r
 \r
 // Short for editor manager window.tinyMCE is needed when TinyMCE gets loaded though a XHR call\r
 var tinyMCE = window.tinyMCE = tinymce.EditorManager;\r
-\r
-/* file:jscripts/tiny_mce/classes/Editor.js */\r
-\r
-(function() {\r
+(function(tinymce) {\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, Dispatcher = tinymce.util.Dispatcher;\r
        var each = tinymce.each, isGecko = tinymce.isGecko, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit;\r
        var is = tinymce.is, ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager, EditorManager = tinymce.EditorManager;\r
@@ -6767,7 +8573,9 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                init_theme : 1,\r
                                force_p_newlines : 1,\r
                                indentation : '30px',\r
-                               keep_styles : 1\r
+                               keep_styles : 1,\r
+                               fix_table_elements : 1,\r
+                               removeformat_selector : 'span,b,strong,em,i,font,u,strike'\r
                        }, s);\r
 \r
                        // Setup URIs\r
@@ -6810,7 +8618,8 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))\r
                                DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);\r
 \r
-                       t.windowManager = new tinymce.WindowManager(t);\r
+                       if (tinymce.WindowManager)\r
+                               t.windowManager = new tinymce.WindowManager(t);\r
 \r
                        if (s.encoding == 'xml') {\r
                                t.onGetContent.add(function(ed, o) {\r
@@ -6828,7 +8637,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                });\r
                        }\r
 \r
-                       if (s.add_unload_trigger && !s.ask) {\r
+                       if (s.add_unload_trigger) {\r
                                t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {\r
                                        if (t.initialized && !t.destroyed && !t.isHidden())\r
                                                t.save({format : 'raw', no_events : true});\r
@@ -6857,7 +8666,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                                        EditorManager.triggerSave();\r
                                                        t.isNotDirty = 1;\r
 \r
-                                                       return this._mceOldSubmit(this);\r
+                                                       return t.formElement._mceOldSubmit(t.formElement);\r
                                                };\r
                                        }\r
 \r
@@ -6867,12 +8676,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
 \r
                        // Load scripts\r
                        function loadScripts() {\r
-                               if (s.language) {\r
-                    l = tinyMCE.settings['language'];\r
-                    sl.add(tinyMCE.settings['document_base_url'] + '/lib/editor/tinymce/strings.php?lang='+l+'&dlg=0');\r
-                }\r
+                               if (s.language)\r
+                                       sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');\r
 \r
-                               if (s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])\r
+                               if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])\r
                                        ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');\r
 \r
                                each(explode(s.plugins), function(p) {\r
@@ -6887,23 +8694,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
 \r
                                // Init when que is loaded\r
                                sl.loadQueue(function() {\r
-                                       if (s.ask) {\r
-                                               function ask() {\r
-                                                       // Yield for awhile to avoid focus bug on FF 3 when cancel is pressed\r
-                                                       window.setTimeout(function() {\r
-                                                               Event.remove(t.id, 'focus', ask);\r
-\r
-                                                               t.windowManager.confirm(t.getLang('edit_confirm'), function(s) {\r
-                                                                       if (s)\r
-                                                                               t.init();\r
-                                                               });\r
-                                                       }, 0);\r
-                                               };\r
-\r
-                                               Event.add(t.id, 'focus', ask);\r
-                                               return;\r
-                                       }\r
-\r
                                        if (!t.removed)\r
                                                t.init();\r
                                });\r
@@ -6923,12 +8713,14 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        EditorManager.add(t);\r
 \r
                        // Create theme\r
-                       s.theme = s.theme.replace(/-/, '');\r
-                       o = ThemeManager.get(s.theme);\r
-                       t.theme = new o();\r
+                       if (s.theme) {\r
+                               s.theme = s.theme.replace(/-/, '');\r
+                               o = ThemeManager.get(s.theme);\r
+                               t.theme = new o();\r
 \r
-                       if (t.theme.init && s.init_theme)\r
-                               t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));\r
+                               if (t.theme.init && s.init_theme)\r
+                                       t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));\r
+                       }\r
 \r
                        // Create all plugins\r
                        each(explode(s.plugins.replace(/\-/g, '')), function(p) {\r
@@ -6945,10 +8737,12 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        });\r
 \r
                        // Setup popup CSS path(s)\r
-                       if (s.popup_css)\r
-                               s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);\r
-                       else\r
-                               s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");\r
+                       if (s.popup_css !== false) {\r
+                               if (s.popup_css)\r
+                                       s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);\r
+                               else\r
+                                       s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");\r
+                       }\r
 \r
                        if (s.popup_css_add)\r
                                s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);\r
@@ -7024,14 +8818,14 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                t.editorContainer = o.editorContainer;\r
                        }\r
 \r
-                       \r
+\r
                        // Resize editor\r
                        DOM.setStyles(o.sizeContainer || o.editorContainer, {\r
                                width : w,\r
                                height : h\r
                        });\r
 \r
-                       h = (o.iframeHeight || h) + ((h + '').indexOf('%') == -1 ? (o.deltaHeight || 0) : '');\r
+                       h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');\r
                        if (h < 100)\r
                                h = 100;\r
 \r
@@ -7079,16 +8873,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        DOM.get(o.editorContainer).style.display = t.orgDisplay;\r
                        DOM.get(t.id).style.display = 'none';\r
 \r
-                       // Safari 2.x requires us to wait for the load event and load a real HTML doc\r
-                       if (tinymce.isOldWebKit) {\r
-                               Event.add(n, 'load', t.setupIframe, t);\r
-                               n.src = tinymce.baseURL + '/plugins/safari/blank.htm';\r
-                       } else {\r
-                               if (!isIE || !tinymce.relaxedDomain)\r
-                                       t.setupIframe();\r
+                       if (!isIE || !tinymce.relaxedDomain)\r
+                               t.setupIframe();\r
 \r
-                               e = n = o = null; // Cleanup\r
-                       }\r
+                       e = n = o = null; // Cleanup\r
                },\r
 \r
                setupIframe : function() {\r
@@ -7325,30 +9113,47 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                });\r
                        }\r
 \r
+                       // Add visual aids when new contents is added\r
                        t.onSetContent.add(function() {\r
-                               // Safari needs some time, it will crash the browser when a link is created otherwise\r
-                               // I think this crash issue is resolved in the latest 3.0.4\r
-                               //window.setTimeout(function() {\r
-                                       t.addVisual(t.getBody());\r
-                               //}, 1);\r
+                               t.addVisual(t.getBody());\r
                        });\r
 \r
                        // Remove empty contents\r
                        if (s.padd_empty_editor) {\r
                                t.onPostProcess.add(function(ed, o) {\r
-                                       o.content = o.content.replace(/^(<p>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');\r
+                                       o.content = o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');\r
                                });\r
                        }\r
 \r
-                       if (isGecko && !s.readonly) {\r
-                               try {\r
-                                       // Design mode must be set here once again to fix a bug where\r
-                                       // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again\r
-                                       d.designMode = 'Off';\r
-                                       d.designMode = 'On';\r
-                               } catch (ex) {\r
-                                       // Will fail on Gecko if the editor is placed in an hidden container element\r
-                                       // The design mode will be set ones the editor is focused\r
+                       if (isGecko) {\r
+                               // Fix gecko link bug, when a link is placed at the end of block elements there is\r
+                               // no way to move the caret behind the link. This fix adds a bogus br element after the link\r
+                               function fixLinks(ed, o) {\r
+                                       each(ed.dom.select('a'), function(n) {\r
+                                               var pn = n.parentNode;\r
+\r
+                                               if (ed.dom.isBlock(pn) && pn.lastChild === n)\r
+                                                       ed.dom.add(pn, 'br', {'mce_bogus' : 1});\r
+                                       });\r
+                               };\r
+\r
+                               t.onExecCommand.add(function(ed, cmd) {\r
+                                       if (cmd === 'CreateLink')\r
+                                               fixLinks(ed);\r
+                               });\r
+\r
+                               t.onSetContent.add(t.selection.onSetContent.add(fixLinks));\r
+\r
+                               if (!s.readonly) {\r
+                                       try {\r
+                                               // Design mode must be set here once again to fix a bug where\r
+                                               // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again\r
+                                               d.designMode = 'Off';\r
+                                               d.designMode = 'On';\r
+                                       } catch (ex) {\r
+                                               // Will fail on Gecko if the editor is placed in an hidden container element\r
+                                               // The design mode will be set ones the editor is focused\r
+                                       }\r
                                }\r
                        }\r
 \r
@@ -7390,7 +9195,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        e = null;\r
                },\r
 \r
-               \r
+\r
                focus : function(sf) {\r
                        var oed, t = this, ce = t.settings.content_editable;\r
 \r
@@ -7401,7 +9206,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                if (!ce && (!isIE || t.selection.getNode().ownerDocument != t.getDoc()))\r
                                        t.getWin().focus();\r
 \r
-                                                       }\r
+                       }\r
 \r
                        if (EditorManager.activeEditor != t) {\r
                                if ((oed = EditorManager.activeEditor) != null)\r
@@ -7604,7 +9409,13 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                return true;\r
 \r
                        // Theme commands\r
-                       if (t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {\r
+                       if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {\r
+                               t.onExecCommand.dispatch(t, cmd, ui, val, a);\r
+                               return true;\r
+                       }\r
+\r
+                       // Execute global commands\r
+                       if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) {\r
                                t.onExecCommand.dispatch(t, cmd, ui, val, a);\r
                                return true;\r
                        }\r
@@ -7718,24 +9529,27 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                load : function(o) {\r
                        var t = this, e = t.getElement(), h;\r
 \r
-                       o = o || {};\r
-                       o.load = true;\r
+                       if (e) {\r
+                               o = o || {};\r
+                               o.load = true;\r
 \r
-                       h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);\r
-                       o.element = e;\r
+                               // Double encode existing entities in the value\r
+                               h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);\r
+                               o.element = e;\r
 \r
-                       if (!o.no_events)\r
-                               t.onLoadContent.dispatch(t, o);\r
+                               if (!o.no_events)\r
+                                       t.onLoadContent.dispatch(t, o);\r
 \r
-                       o.element = e = null;\r
+                               o.element = e = null;\r
 \r
-                       return h;\r
+                               return h;\r
+                       }\r
                },\r
 \r
                save : function(o) {\r
                        var t = this, e = t.getElement(), h, f;\r
 \r
-                       if (!t.initialized)\r
+                       if (!e || !t.initialized)\r
                                return;\r
 \r
                        o = o || {};\r
@@ -7974,7 +9788,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                tinyMCE.onBeforeUnload.remove(t._beforeUnload);\r
 \r
                                // Manual destroy\r
-                               if (t.theme.destroy)\r
+                               if (t.theme && t.theme.destroy)\r
                                        t.theme.destroy();\r
 \r
                                // Destroy controls, selection and dom\r
@@ -8058,25 +9872,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
 \r
                                        case 'paste':\r
                                                Event.add(t.getBody(), k, function(e) {\r
-                                                       var tx, h, el, r;\r
-\r
-                                                       // Get plain text data\r
-                                                       if (e.clipboardData)\r
-                                                               tx = e.clipboardData.getData('text/plain');\r
-                                                       else if (tinymce.isIE)\r
-                                                               tx = t.getWin().clipboardData.getData('Text');\r
-\r
-                                                       // Get HTML data\r
-                                                       /*if (tinymce.isIE) {\r
-                                                               el = DOM.add(DOM.doc.body, 'div', {style : 'visibility:hidden;overflow:hidden;position:absolute;width:1px;height:1px'});\r
-                                                               r = DOM.doc.body.createTextRange();\r
-                                                               r.moveToElementText(el);\r
-                                                               r.execCommand('Paste');\r
-                                                               h = el.innerHTML;\r
-                                                               DOM.remove(el);\r
-                                                       }*/\r
-\r
-                                                       eventHandler(e, {text : tx, html : h});\r
+                                                       eventHandler(e);\r
                                                });\r
                                                break;\r
 \r
@@ -8094,7 +9890,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                t.focus(true);\r
                        });\r
 \r
-                       \r
+\r
                        // Fixes bug where a specified document_base_uri could result in broken images\r
                        // This will also fix drag drop of images in Gecko\r
                        if (tinymce.isGecko) {\r
@@ -8169,84 +9965,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                t.setContent(t.startContent, {format : 'raw'});\r
                        });\r
 \r
-                       if (t.getParam('tab_focus')) {\r
-                               function tabCancel(ed, e) {\r
-                                       if (e.keyCode === 9)\r
-                                               return Event.cancel(e);\r
-                               };\r
-\r
-                               function tabHandler(ed, e) {\r
-                                       var x, i, f, el, v;\r
-\r
-                                       function find(d) {\r
-                                               f = DOM.getParent(ed.id, 'form');\r
-                                               el = f.elements;\r
-\r
-                                               if (f) {\r
-                                                       each(el, function(e, i) {\r
-                                                               if (e.id == ed.id) {\r
-                                                                       x = i;\r
-                                                                       return false;\r
-                                                               }\r
-                                                       });\r
-\r
-                                                       if (d > 0) {\r
-                                                               for (i = x + 1; i < el.length; i++) {\r
-                                                                       if (el[i].type != 'hidden')\r
-                                                                               return el[i];\r
-                                                               }\r
-                                                       } else {\r
-                                                               for (i = x - 1; i >= 0; i--) {\r
-                                                                       if (el[i].type != 'hidden')\r
-                                                                               return el[i];\r
-                                                               }\r
-                                                       }\r
-                                               }\r
-\r
-                                               return null;\r
-                                       };\r
-\r
-                                       if (e.keyCode === 9) {\r
-                                               v = explode(ed.getParam('tab_focus'));\r
-\r
-                                               if (v.length == 1) {\r
-                                                       v[1] = v[0];\r
-                                                       v[0] = ':prev';\r
-                                               }\r
-\r
-                                               // Find element to focus\r
-                                               if (e.shiftKey) {\r
-                                                       if (v[0] == ':prev')\r
-                                                               el = find(-1);\r
-                                                       else\r
-                                                               el = DOM.get(v[0]);\r
-                                               } else {\r
-                                                       if (v[1] == ':next')\r
-                                                               el = find(1);\r
-                                                       else\r
-                                                               el = DOM.get(v[1]);\r
-                                               }\r
-\r
-                                               if (el) {\r
-                                                       if (ed = EditorManager.get(el.id || el.name))\r
-                                                               ed.focus();\r
-                                                       else\r
-                                                               window.setTimeout(function() {window.focus();el.focus();}, 10);\r
-\r
-                                                       return Event.cancel(e);\r
-                                               }\r
-                                       }\r
-                               };\r
-\r
-                               t.onKeyUp.add(tabCancel);\r
-\r
-                               if (isGecko) {\r
-                                       t.onKeyPress.add(tabHandler);\r
-                                       t.onKeyDown.add(tabCancel);\r
-                               } else\r
-                                       t.onKeyDown.add(tabHandler);\r
-                       }\r
-\r
                        // Add shortcuts\r
                        if (s.custom_shortcuts) {\r
                                if (s.custom_undo_redo_keyboard_shortcuts) {\r
@@ -8276,7 +9994,9 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                                return v;\r
 \r
                                        each(t.shortcuts, function(o) {\r
-                                               if (o.ctrl != e.ctrlKey && (!tinymce.isMac || o.ctrl == e.metaKey))\r
+                                               if (tinymce.isMac && o.ctrl != e.metaKey)\r
+                                                       return;\r
+                                               else if (!tinymce.isMac && o.ctrl != e.ctrlKey)\r
                                                        return;\r
 \r
                                                if (o.alt != e.altKey)\r
@@ -8372,6 +10092,16 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                                        }\r
                                        }\r
                                });\r
+\r
+                               /*if (t.dom.boxModel) {\r
+                                       t.getBody().style.height = '100%';\r
+\r
+                                       Event.add(t.getWin(), 'resize', function(e) {\r
+                                               var docElm = t.getDoc().documentElement;\r
+\r
+                                               docElm.style.height = (docElm.offsetHeight - 10) + 'px';\r
+                                       });\r
+                               }*/\r
                        }\r
 \r
                        if (tinymce.isOpera) {\r
@@ -8517,105 +10247,50 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
 \r
                        if (cl = s.font_size_classes)\r
                                cl = explode(cl);\r
-/*\r
-                       function convertToFonts(no) {\r
-                               var n, f, nl, x, i, v, st;\r
 \r
-                               // Convert spans to fonts on non WebKit browsers\r
-                               if (tinymce.isWebKit || !s.inline_styles)\r
+                       function process(no) {\r
+                               var n, sp, nl, x;\r
+\r
+                               // Keep unit tests happy\r
+                               if (!s.inline_styles)\r
                                        return;\r
 \r
-                               nl = t.dom.select('span', no);\r
+                               nl = t.dom.select('font', no);\r
                                for (x = nl.length - 1; x >= 0; x--) {\r
                                        n = nl[x];\r
 \r
-                                       f = dom.create('font', {\r
-                                               color : dom.toHex(dom.getStyle(n, 'color')),\r
-                                               face : dom.getStyle(n, 'fontFamily'),\r
+                                       sp = dom.create('span', {\r
                                                style : dom.getAttrib(n, 'style'),\r
                                                'class' : dom.getAttrib(n, 'class')\r
                                        });\r
 \r
-                                       // Clear color and font family\r
-                                       st = f.style;\r
-                                       if (st.color || st.fontFamily) {\r
-                                               st.color = st.fontFamily = '';\r
-                                               dom.setAttrib(f, 'mce_style', ''); // Remove cached style data\r
-                                       }\r
-\r
-                                       if (sl) {\r
-                                               i = inArray(sl, dom.getStyle(n, 'fontSize'));\r
-\r
-                                               if (i != -1) {\r
-                                                       dom.setAttrib(f, 'size', '' + (i + 1 || 1));\r
-                                                       //f.style.fontSize = '';\r
-                                               }\r
-                                       } else if (cl) {\r
-                                               i = inArray(cl, dom.getAttrib(n, 'class'));\r
-                                               v = dom.getStyle(n, 'fontSize');\r
-\r
-                                               if (i == -1 && v.indexOf('pt') > 0)\r
-                                                       i = inArray(fz, parseInt(v));\r
-\r
-                                               if (i == -1)\r
-                                                       i = inArray(fzn, v);\r
-\r
-                                               if (i != -1) {\r
-                                                       dom.setAttrib(f, 'size', '' + (i + 1 || 1));\r
-                                                       f.style.fontSize = '';\r
-                                               }\r
-                                       }\r
+                                       dom.setStyles(sp, {\r
+                                               fontFamily : dom.getAttrib(n, 'face'),\r
+                                               color : dom.getAttrib(n, 'color'),\r
+                                               backgroundColor : n.style.backgroundColor\r
+                                       });\r
 \r
-                                       if (f.color || f.face || f.size) {\r
-                                               f.style.fontFamily = '';\r
-                                               dom.setAttrib(f, 'mce_style', '');\r
-                                               dom.replace(f, n, 1);\r
+                                       if (n.size) {\r
+                                               if (sl)\r
+                                                       dom.setStyle(sp, 'fontSize', sl[parseInt(n.size) - 1]);\r
+                                               else\r
+                                                       dom.setAttrib(sp, 'class', cl[parseInt(n.size) - 1]);\r
                                        }\r
 \r
-                                       f = n = null;\r
+                                       dom.setAttrib(sp, 'mce_style', '');\r
+                                       dom.replace(sp, n, 1);\r
                                }\r
                        };\r
 \r
-                       // Run on setup\r
-                       t.onSetContent.add(function(ed, o) {\r
-                               convertToFonts(ed.getBody());\r
-                       });\r
-*/\r
                        // Run on cleanup\r
                        t.onPreProcess.add(function(ed, o) {\r
-                               var n, sp, nl, x;\r
-\r
-                               // Keep unit tests happy\r
-                               if (!s.inline_styles)\r
-                                       return;\r
-\r
-                               if (o.get) {\r
-                                       nl = t.dom.select('font', o.node);\r
-                                       for (x = nl.length - 1; x >= 0; x--) {\r
-                                               n = nl[x];\r
-\r
-                                               sp = dom.create('span', {\r
-                                                       style : dom.getAttrib(n, 'style'),\r
-                                                       'class' : dom.getAttrib(n, 'class')\r
-                                               });\r
-\r
-                                               dom.setStyles(sp, {\r
-                                                       fontFamily : dom.getAttrib(n, 'face'),\r
-                                                       color : dom.getAttrib(n, 'color'),\r
-                                                       backgroundColor : n.style.backgroundColor\r
-                                               });\r
-\r
-                                               if (n.size) {\r
-                                                       if (sl)\r
-                                                               dom.setStyle(sp, 'fontSize', sl[parseInt(n.size) - 1]);\r
-                                                       else\r
-                                                               dom.setAttrib(sp, 'class', cl[parseInt(n.size) - 1]);\r
-                                               }\r
+                               if (o.get)\r
+                                       process(o.node);\r
+                       });\r
 \r
-                                               dom.setAttrib(sp, 'mce_style', '');\r
-                                               dom.replace(sp, n, 1);\r
-                                       }\r
-                               }\r
+                       t.onSetContent.add(function(ed, o) {\r
+                               if (o.initial)\r
+                                       process(o.node);\r
                        });\r
                },\r
 \r
@@ -8682,17 +10357,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/EditorCommands.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var each = tinymce.each, isIE = tinymce.isIE, isGecko = tinymce.isGecko, isOpera = tinymce.isOpera, isWebKit = tinymce.isWebKit;\r
 \r
-       function isBlock(n) {\r
-               return /^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);\r
-       };\r
-\r
        tinymce.create('tinymce.EditorCommands', {\r
                EditorCommands : function(ed) {\r
                        this.editor = ed;\r
@@ -8702,23 +10370,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        var t = this, ed = t.editor, f;\r
 \r
                        switch (cmd) {\r
-                               case 'Cut':\r
-                               case 'Copy':\r
-                               case 'Paste':\r
-                                       try {\r
-                                               ed.getDoc().execCommand(cmd, ui, val);\r
-                                       } catch (ex) {\r
-                                               if (isGecko) {\r
-                                                       ed.windowManager.confirm(ed.getLang('clipboard_msg'), function(s) {\r
-                                                               if (s)\r
-                                                                       window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', 'mceExternal');\r
-                                                       });\r
-                                               } else\r
-                                                       ed.windowManager.alert(ed.getLang('clipboard_no_support'));\r
-                                       }\r
-\r
-                                       return true;\r
-\r
                                // Ignore these\r
                                case 'mceResetDesignMode':\r
                                case 'mceBeginUndoLevel':\r
@@ -8737,11 +10388,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                        t.mceJustify(cmd, cmd.substring(7).toLowerCase());\r
                                        return true;\r
 \r
-                               case 'mceEndUndoLevel':\r
-                               case 'mceAddUndoLevel':\r
-                                       ed.undoManager.add();\r
-                                       return true;\r
-\r
                                default:\r
                                        f = this[cmd];\r
 \r
@@ -8763,7 +10409,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        iv = parseInt(iv);\r
 \r
                        if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) {\r
-                               each(this._getSelectedBlocks(), function(e) {\r
+                               each(s.getSelectedBlocks(), function(e) {\r
                                        d.setStyle(e, 'paddingLeft', (parseInt(e.style.paddingLeft || 0) + iv) + iu);\r
                                });\r
 \r
@@ -8790,7 +10436,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        iv = parseInt(iv);\r
 \r
                        if (ed.settings.inline_styles && (!this.queryStateInsertUnorderedList() && !this.queryStateInsertOrderedList())) {\r
-                               each(this._getSelectedBlocks(), function(e) {\r
+                               each(s.getSelectedBlocks(), function(e) {\r
                                        v = Math.max(0, parseInt(e.style.paddingLeft || 0) - iv);\r
                                        d.setStyle(e, 'paddingLeft', v ? v + iu : '');\r
                                });\r
@@ -8801,13 +10447,14 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        ed.getDoc().execCommand('Outdent', false, null);\r
                },\r
 \r
+/*\r
                mceSetAttribute : function(u, v) {\r
                        var ed = this.editor, d = ed.dom, e;\r
 \r
                        if (e = d.getParent(ed.selection.getNode(), d.isBlock))\r
                                d.setAttrib(e, v.name, v.value);\r
                },\r
-\r
+*/\r
                mceSetContent : function(u, v) {\r
                        this.editor.setContent(v);\r
                },\r
@@ -8826,7 +10473,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                },\r
 \r
                mceInsertLink : function(u, v) {\r
-                       var ed = this.editor, s = ed.selection, e = ed.dom.getParent(s.getNode(), 'A');\r
+                       var ed = this.editor, s = ed.selection, e = ed.dom.getParent(s.getNode(), 'a');\r
 \r
                        if (tinymce.is(v, 'string'))\r
                                v = {href : v};\r
@@ -8839,9 +10486,8 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
 \r
                        if (!e) {\r
                                ed.execCommand('CreateLink', false, 'javascript:mctmp(0);');\r
-                               each(ed.dom.select('a'), function(e) {\r
-                                       if (e.href == 'javascript:mctmp(0);')\r
-                                               set(e);\r
+                               each(ed.dom.select('a[href=javascript:mctmp(0);]'), function(e) {\r
+                                       set(e);\r
                                });\r
                        } else {\r
                                if (v.href)\r
@@ -8867,8 +10513,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        if (!v) {\r
                                if (s.isCollapsed())\r
                                        s.select(s.getNode());\r
-\r
-                               t.RemoveFormat();\r
                        } else {\r
                                if (ed.settings.convert_fonts_to_spans)\r
                                        t._applyInlineStyle('span', {style : {fontFamily : v}});\r
@@ -8944,11 +10588,11 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                queryValueFontSize : function() {\r
                        var ed = this.editor, v = 0, p;\r
 \r
-                       if (p = ed.dom.getParent(ed.selection.getNode(), 'SPAN'))\r
+                       if (p = ed.dom.getParent(ed.selection.getNode(), 'span'))\r
                                v = p.style.fontSize;\r
 \r
                        if (!v && (isOpera || isWebKit)) {\r
-                               if (p = ed.dom.getParent(ed.selection.getNode(), 'FONT'))\r
+                               if (p = ed.dom.getParent(ed.selection.getNode(), 'font'))\r
                                        v = p.size;\r
 \r
                                return v;\r
@@ -8960,10 +10604,10 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                queryValueFontName : function() {\r
                        var ed = this.editor, v = 0, p;\r
 \r
-                       if (p = ed.dom.getParent(ed.selection.getNode(), 'FONT'))\r
+                       if (p = ed.dom.getParent(ed.selection.getNode(), 'font'))\r
                                v = p.face;\r
 \r
-                       if (p = ed.dom.getParent(ed.selection.getNode(), 'SPAN'))\r
+                       if (p = ed.dom.getParent(ed.selection.getNode(), 'span'))\r
                                v = p.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();\r
 \r
                        if (!v)\r
@@ -9028,7 +10672,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                if (rm)\r
                                        v = '';\r
 \r
-                               each(this._getSelectedBlocks(dom.getParent(se.getStart(), dom.isBlock), dom.getParent(se.getEnd(), dom.isBlock)), function(e) {\r
+                               each(se.getSelectedBlocks(dom.getParent(se.getStart(), dom.isBlock), dom.getParent(se.getEnd(), dom.isBlock)), function(e) {\r
                                        dom.setAttrib(e, 'align', '');\r
                                        dom.setStyle(e, 'textAlign', v == 'full' ? 'justify' : v);\r
                                });\r
@@ -9099,7 +10743,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                }\r
                        } else {\r
                                function getParent(n) {\r
-                                       return dom.getParent(n, function(n) {return n.nodeType == 1;});\r
+                                       return dom.getParent(n, '*');\r
                                };\r
 \r
                                sc = r.startContainer;\r
@@ -9157,27 +10801,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        return null;\r
                },\r
 \r
-               InsertHorizontalRule : function() {\r
-                       // Fix for Gecko <hr size="1" /> issue and IE bug rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");\r
-                       if (isGecko || isIE)\r
-                               this.editor.selection.setContent('<hr />');\r
-                       else\r
-                               this.editor.getDoc().execCommand('InsertHorizontalRule', false, '');\r
-               },\r
-\r
-               RemoveFormat : function() {\r
-                       var t = this, ed = t.editor, s = ed.selection, b;\r
-\r
-                       // Safari breaks tables\r
-                       if (isWebKit)\r
-                               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'});\r
-                       else\r
-                               ed.getDoc().execCommand('RemoveFormat', false, null);\r
-\r
-                       t.mceSetStyleInfo(0, {command : 'removeformat'});\r
-                       ed.addVisual();\r
-               },\r
-\r
                mceSetStyleInfo : function(u, v) {\r
                        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;\r
 \r
@@ -9207,7 +10830,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        else {\r
                                // Generate wrappers and set styles on them\r
                                d.execCommand('FontName', false, '__');\r
-                               each(isWebKit ? dom.select('span') : dom.select('font'), function(n) {\r
+                               each(dom.select('span,font'), function(n) {\r
                                        var sp, e;\r
 \r
                                        if (dom.getAttrib(n, 'face') == '__' || n.style.fontFamily === '__') {\r
@@ -9231,9 +10854,7 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                // Check if it's an old span in a new wrapper\r
                                if (!dom.getAttrib(n, 'mce_new')) {\r
                                        // Find new wrapper\r
-                                       p = dom.getParent(n, function(n) {\r
-                                               return n.nodeType == 1 && dom.getAttrib(n, 'mce_new');\r
-                                       });\r
+                                       p = dom.getParent(n, '*[mce_new]');\r
 \r
                                        if (p)\r
                                                dom.remove(n, 1);\r
@@ -9336,26 +10957,6 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                d.execCommand('BackColor', false, val);\r
                },\r
 \r
-               Undo : function() {\r
-                       var ed = this.editor;\r
-\r
-                       if (ed.settings.custom_undo_redo) {\r
-                               ed.undoManager.undo();\r
-                               ed.nodeChanged();\r
-                       } else\r
-                               ed.getDoc().execCommand('Undo', false, null);\r
-               },\r
-\r
-               Redo : function() {\r
-                       var ed = this.editor;\r
-\r
-                       if (ed.settings.custom_undo_redo) {\r
-                               ed.undoManager.redo();\r
-                               ed.nodeChanged();\r
-                       } else\r
-                               ed.getDoc().execCommand('Redo', false, null);\r
-               },\r
-\r
                FormatBlock : function(ui, val) {\r
                        var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, bl, nb, b;\r
 \r
@@ -9497,145 +11098,36 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                        return !!this.editor.dom.getParent(this.editor.selection.getStart(), function(n) {return n.nodeName === 'BLOCKQUOTE';});\r
                },\r
 \r
-               mceBlockQuote : function() {\r
-                       var t = this, ed = t.editor, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl;\r
-\r
-                       function getBQ(e) {\r
-                               return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});\r
-                       };\r
-\r
-                       // Get start/end block\r
-                       sb = dom.getParent(s.getStart(), isBlock);\r
-                       eb = dom.getParent(s.getEnd(), isBlock);\r
-\r
-                       // Remove blockquote(s)\r
-                       if (bq = getBQ(sb)) {\r
-                               if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))\r
-                                       bm = s.getBookmark();\r
-\r
-                               // Move all elements after the end block into new bq\r
-                               if (getBQ(eb)) {\r
-                                       bq2 = bq.cloneNode(false);\r
-\r
-                                       while (n = eb.nextSibling)\r
-                                               bq2.appendChild(n.parentNode.removeChild(n));\r
-                               }\r
-\r
-                               // Add new bq after\r
-                               if (bq2)\r
-                                       dom.insertAfter(bq2, bq);\r
-\r
-                               // Move all selected blocks after the current bq\r
-                               nl = t._getSelectedBlocks(sb, eb);\r
-                               for (i = nl.length - 1; i >= 0; i--) {\r
-                                       dom.insertAfter(nl[i], bq);\r
-                               }\r
-\r
-                               // Empty bq, then remove it\r
-                               if (/^\s*$/.test(bq.innerHTML))\r
-                                       dom.remove(bq, 1); // Keep children so boomark restoration works correctly\r
-\r
-                               // Empty bq, then remote it\r
-                               if (bq2 && /^\s*$/.test(bq2.innerHTML))\r
-                                       dom.remove(bq2, 1); // Keep children so boomark restoration works correctly\r
-\r
-                               if (!bm) {\r
-                                       // Move caret inside empty block element\r
-                                       if (!isIE) {\r
-                                               r = ed.getDoc().createRange();\r
-                                               r.setStart(sb, 0);\r
-                                               r.setEnd(sb, 0);\r
-                                               s.setRng(r);\r
-                                       } else {\r
-                                               s.select(sb);\r
-                                               s.collapse(0);\r
-\r
-                                               // IE misses the empty block some times element so we must move back the caret\r
-                                               if (dom.getParent(s.getStart(), isBlock) != sb) {\r
-                                                       r = s.getRng();\r
-                                                       r.move('character', -1);\r
-                                                       r.select();\r
-                                               }\r
-                                       }\r
-                               } else\r
-                                       t.editor.selection.moveToBookmark(bm);\r
-\r
-                               return;\r
-                       }\r
-\r
-                       // Since IE can start with a totally empty document we need to add the first bq and paragraph\r
-                       if (isIE && !sb && !eb) {\r
-                               t.editor.getDoc().execCommand('Indent');\r
-                               n = getBQ(s.getNode());\r
-                               n.style.margin = n.dir = ''; // IE adds margin and dir to bq\r
-                               return;\r
-                       }\r
-\r
-                       if (!sb || !eb)\r
-                               return;\r
-\r
-                       // If empty paragraph node then do not use bookmark\r
-                       if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))\r
-                               bm = s.getBookmark();\r
-\r
-                       // Move selected block elements into a bq\r
-                       each(t._getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) {\r
-                               // Found existing BQ add to this one\r
-                               if (e.nodeName == 'BLOCKQUOTE' && !bq) {\r
-                                       bq = e;\r
-                                       return;\r
-                               }\r
-\r
-                               // No BQ found, create one\r
-                               if (!bq) {\r
-                                       bq = dom.create('blockquote');\r
-                                       e.parentNode.insertBefore(bq, e);\r
-                               }\r
-\r
-                               // Add children from existing BQ\r
-                               if (e.nodeName == 'BLOCKQUOTE' && bq) {\r
-                                       n = e.firstChild;\r
-\r
-                                       while (n) {\r
-                                               bq.appendChild(n.cloneNode(true));\r
-                                               n = n.nextSibling;\r
-                                       }\r
-\r
-                                       dom.remove(e);\r
-                                       return;\r
-                               }\r
-\r
-                               // Add non BQ element to BQ\r
-                               bq.appendChild(dom.remove(e));\r
-                       });\r
-\r
-                       if (!bm) {\r
-                               // Move caret inside empty block element\r
-                               if (!isIE) {\r
-                                       r = ed.getDoc().createRange();\r
-                                       r.setStart(sb, 0);\r
-                                       r.setEnd(sb, 0);\r
-                                       s.setRng(r);\r
-                               } else {\r
-                                       s.select(sb);\r
-                                       s.collapse(1);\r
-                               }\r
-                       } else\r
-                               s.moveToBookmark(bm);\r
-               },\r
-\r
                _applyInlineStyle : function(na, at, op) {\r
-                       var t = this, ed = t.editor, dom = ed.dom, bm, lo = {}, kh;\r
+                       var t = this, ed = t.editor, dom = ed.dom, bm, lo = {}, kh, found;\r
 \r
                        na = na.toUpperCase();\r
 \r
                        if (op && op.check_classes && at['class'])\r
                                op.check_classes.push(at['class']);\r
 \r
+                       function removeEmpty() {\r
+                               each(dom.select(na).reverse(), function(n) {\r
+                                       var c = 0;\r
+\r
+                                       // Check if there is any attributes\r
+                                       each(dom.getAttribs(n), function(an) {\r
+                                               if (an.nodeName.substring(0, 1) != '_' && dom.getAttrib(n, an.nodeName) != '') {\r
+                                                       //console.log(dom.getOuterHTML(n), dom.getAttrib(n, an.nodeName));\r
+                                                       c++;\r
+                                               }\r
+                                       });\r
+\r
+                                       // No attributes then remove the element and keep the children\r
+                                       if (c == 0)\r
+                                               dom.remove(n, 1);\r
+                               });\r
+                       };\r
+\r
                        function replaceFonts() {\r
                                var bm;\r
 \r
-                               each(dom.select(tinymce.isWebKit ? 'span' : 'font'), function(n) {\r
+                               each(dom.select('span,font'), function(n) {\r
                                        if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') {\r
                                                if (!bm)\r
                                                        bm = ed.selection.getBookmark();\r
@@ -9646,80 +11138,62 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
                                });\r
 \r
                                // Remove redundant elements\r
-                               each(dom.select(na), function(n) {\r
-                                       if (n.getAttribute('_mce_new')) {\r
-                                               function removeStyle(n) {\r
-                                                       if (n.nodeType == 1) {\r
-                                                               each(at.style, function(v, k) {\r
-                                                                       dom.setStyle(n, k, '');\r
-                                                               });\r
+                               each(dom.select(na + '[_mce_new]'), function(n) {\r
+                                       function removeStyle(n) {\r
+                                               if (n.nodeType == 1) {\r
+                                                       each(at.style, function(v, k) {\r
+                                                               dom.setStyle(n, k, '');\r
+                                                       });\r
 \r
-                                                               // Remove spans with the same class or marked classes\r
-                                                               if (at['class'] && n.className && op) {\r
-                                                                       each(op.check_classes, function(c) {\r
-                                                                               if (dom.hasClass(n, c))\r
-                                                                                       dom.removeClass(n, c);\r
-                                                                       });\r
-                                                               }\r
+                                                       // Remove spans with the same class or marked classes\r
+                                                       if (at['class'] && n.className && op) {\r
+                                                               each(op.check_classes, function(c) {\r
+                                                                       if (dom.hasClass(n, c))\r
+                                                                               dom.removeClass(n, c);\r
+                                                               });\r
                                                        }\r
-                                               };\r
-\r
-                                               // Remove specified style information from child elements\r
-                                               each(dom.select(na, n), removeStyle);\r
+                                               }\r
+                                       };\r
 \r
-                                               // Remove the specified style information on parent if current node is only child (IE)\r
-                                               if (n.parentNode && n.parentNode.nodeType == 1 && n.parentNode.childNodes.length == 1)\r
-                                                       removeStyle(n.parentNode);\r
+                                       // Remove specified style information from child elements\r
+                                       each(dom.select(na, n), removeStyle);\r
 \r
-                                               // Remove the child elements style info if a parent already has it\r
-                                               dom.getParent(n.parentNode, function(pn) {\r
-                                                       if (pn.nodeType == 1) {\r
-                                                               if (at.style) {\r
-                                                                       each(at.style, function(v, k) {\r
-                                                                               var sv;\r
+                                       // Remove the specified style information on parent if current node is only child (IE)\r
+                                       if (n.parentNode && n.parentNode.nodeType == 1 && n.parentNode.childNodes.length == 1)\r
+                                               removeStyle(n.parentNode);\r
 \r
-                                                                               if (!lo[k] && (sv = dom.getStyle(pn, k))) {\r
-                                                                                       if (sv === v)\r
-                                                                                               dom.setStyle(n, k, '');\r
+                                       // Remove the child elements style info if a parent already has it\r
+                                       dom.getParent(n.parentNode, function(pn) {\r
+                                               if (pn.nodeType == 1) {\r
+                                                       if (at.style) {\r
+                                                               each(at.style, function(v, k) {\r
+                                                                       var sv;\r
 \r
-                                                                                       lo[k] = 1;\r
-                                                                               }\r
-                                                                       });\r
-                                                               }\r
+                                                                       if (!lo[k] && (sv = dom.getStyle(pn, k))) {\r
+                                                                               if (sv === v)\r
+                                                                                       dom.setStyle(n, k, '');\r
 \r
-                                                               // Remove spans with the same class or marked classes\r
-                                                               if (at['class'] && pn.className && op) {\r
-                                                                       each(op.check_classes, function(c) {\r
-                                                                               if (dom.hasClass(pn, c))\r
-                                                                                       dom.removeClass(n, c);\r
-                                                                       });\r
-                                                               }\r
+                                                                               lo[k] = 1;\r
+                                                                       }\r
+                                                               });\r
                                                        }\r
 \r
-                                                       return false;\r
-                                               });\r
-\r
-                                               n.removeAttribute('_mce_new');\r
-                                       }\r
-                               });\r
-\r
-                               // Remove empty span elements\r
-                               each(dom.select(na).reverse(), function(n) {\r
-                                       var c = 0;\r
-\r
-                                       // Check if there is any attributes\r
-                                       each(dom.getAttribs(n), function(an) {\r
-                                               if (an.nodeName.substring(0, 1) != '_' && dom.getAttrib(n, an.nodeName) != '') {\r
-                                                       //console.log(dom.getOuterHTML(n), dom.getAttrib(n, an.nodeName));\r
-                                                       c++;\r
+                                                       // Remove spans with the same class or marked classes\r
+                                                       if (at['class'] && pn.className && op) {\r
+                                                               each(op.check_classes, function(c) {\r
+                                                                       if (dom.hasClass(pn, c))\r
+                                                                               dom.removeClass(n, c);\r
+                                                               });\r
+                                                       }\r
                                                }\r
+\r
+                                               return false;\r
                                        });\r
 \r
-                                       // No attributes then remove the element and keep the children\r
-                                       if (c == 0)\r
-                                               dom.remove(n, 1);\r
+                                       n.removeAttribute('_mce_new');\r
                                });\r
 \r
+                               removeEmpty();\r
                                ed.selection.moveToBookmark(bm);\r
 \r
                                return !!bm;\r
@@ -9732,244 +11206,214 @@ var tinyMCE = window.tinyMCE = tinymce.EditorManager;
 \r
                        if (kh = t._applyInlineStyle.keyhandler) {\r
                                ed.onKeyUp.remove(kh);\r
+                               ed.onKeyPress.remove(kh);\r
                                ed.onKeyDown.remove(kh);\r
+                               ed.onSetContent.remove(t._applyInlineStyle.chandler);\r
                        }\r
 \r
                        if (ed.selection.isCollapsed()) {\r
-                               t._applyInlineStyle.keyhandler = kh = function(e) {\r
-                                       if (replaceFonts()) {\r
-                                               ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);\r
-                                               ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);\r
-                                       }\r
-\r
-                                       if (e.type == 'keyup')\r
-                                               ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);\r
-                               };\r
-\r
-                               ed.onKeyDown.add(kh);\r
-                               ed.onKeyPress.add(kh);\r
-                               ed.onKeyUp.add(kh);\r
-                       }\r
-               },\r
-\r
-/*\r
-               _mceBlockQuote : function() {\r
-                       var t = this, s = t.editor.selection, b = s.getBookmark(), bq, dom = t.editor.dom;\r
+                               // IE will format the current word so this code can't be executed on that browser\r
+                               if (!isIE) {\r
+                                       each(dom.getParents(ed.selection.getNode(), 'span'), function(n) {\r
+                                               each(at.style, function(v, k) {\r
+                                                       var kv;\r
 \r
-                       function findBQ(e) {\r
-                               return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});\r
-                       };\r
+                                                       if (kv = dom.getStyle(n, k)) {\r
+                                                               if (kv == v) {\r
+                                                                       dom.setStyle(n, k, '');\r
+                                                                       found = 2;\r
+                                                                       return false;\r
+                                                               }\r
 \r
-                       // Remove blockquote(s)\r
-                       if (findBQ(s.getStart())) {\r
-                               each(t._getSelectedBlocks(findBQ(s.getStart()), findBQ(s.getEnd())), function(e) {\r
-                                       // Found BQ lets remove it\r
-                                       if (e.nodeName == 'BLOCKQUOTE')\r
-                                               dom.remove(e, 1);\r
-                               });\r
+                                                               found = 1;\r
+                                                               return false;\r
+                                                       }\r
+                                               });\r
 \r
-                               t.editor.selection.moveToBookmark(b);\r
-                               return;\r
-                       }\r
+                                               if (found)\r
+                                                       return false;\r
+                                       });\r
 \r
-                       each(t._getSelectedBlocks(findBQ(s.getStart()), findBQ(s.getEnd())), function(e) {\r
-                               var n;\r
+                                       if (found == 2) {\r
+                                               bm = ed.selection.getBookmark();\r
 \r
-                               // Found existing BQ add to this one\r
-                               if (e.nodeName == 'BLOCKQUOTE' && !bq) {\r
-                                       bq = e;\r
-                                       return;\r
-                               }\r
+                                               removeEmpty();\r
 \r
-                               // No BQ found, create one\r
-                               if (!bq) {\r
-                                       bq = dom.create('blockquote');\r
-                                       e.parentNode.insertBefore(bq, e);\r
-                               }\r
+                                               ed.selection.moveToBookmark(bm);\r
 \r
-                               // Add children from existing BQ\r
-                               if (e.nodeName == 'BLOCKQUOTE' && bq) {\r
-                                       n = e.firstChild;\r
+                                               // Node change needs to be detached since the onselect event\r
+                                               // for the select box will run the onclick handler after onselect call. Todo: Add a nicer fix!\r
+                                               window.setTimeout(function() {\r
+                                                       ed.nodeChanged();\r
+                                               }, 1);\r
 \r
-                                       while (n) {\r
-                                               bq.appendChild(n.cloneNode(true));\r
-                                               n = n.nextSibling;\r
+                                               return;\r
                                        }\r
-\r
-                                       dom.remove(e);\r
-\r
-                                       return;\r
                                }\r
 \r
-                               // Add non BQ element to BQ\r
-                               bq.appendChild(dom.remove(e));\r
-                       });\r
-\r
-                       t.editor.selection.moveToBookmark(b);\r
-               },\r
-*/\r
-               _getSelectedBlocks : function(st, en) {\r
-                       var ed = this.editor, dom = ed.dom, s = ed.selection, sb, eb, n, bl = [];\r
-\r
-                       sb = dom.getParent(st || s.getStart(), isBlock);\r
-                       eb = dom.getParent(en || s.getEnd(), isBlock);\r
+                               // Start collecting styles\r
+                               t._pendingStyles = tinymce.extend(t._pendingStyles || {}, at.style);\r
 \r
-                       if (sb)\r
-                               bl.push(sb);\r
+                               t._applyInlineStyle.chandler = ed.onSetContent.add(function() {\r
+                                       delete t._pendingStyles;\r
+                               });\r
 \r
-                       if (sb && eb && sb != eb) {\r
-                               n = sb;\r
+                               t._applyInlineStyle.keyhandler = kh = function(e) {\r
+                                       // Use pending styles\r
+                                       if (t._pendingStyles) {\r
+                                               at.style = t._pendingStyles;\r
+                                               delete t._pendingStyles;\r
+                                       }\r
 \r
-                               while ((n = n.nextSibling) && n != eb) {\r
-                                       if (isBlock(n))\r
-                                               bl.push(n);\r
-                               }\r
-                       }\r
+                                       if (replaceFonts()) {\r
+                                               ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);\r
+                                               ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);\r
+                                       }\r
 \r
-                       if (eb && sb != eb)\r
-                               bl.push(eb);\r
+                                       if (e.type == 'keyup')\r
+                                               ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);\r
+                               };\r
 \r
-                       return bl;\r
+                               ed.onKeyDown.add(kh);\r
+                               ed.onKeyPress.add(kh);\r
+                               ed.onKeyUp.add(kh);\r
+                       } else\r
+                               t._pendingStyles = 0;\r
                }\r
        });\r
-})();\r
-\r
+})(tinymce);(function(tinymce) {\r
+       tinymce.create('tinymce.UndoManager', {\r
+               index : 0,\r
+               data : null,\r
+               typing : 0,\r
 \r
-/* file:jscripts/tiny_mce/classes/UndoManager.js */\r
+               UndoManager : function(ed) {\r
+                       var t = this, Dispatcher = tinymce.util.Dispatcher;\r
 \r
-tinymce.create('tinymce.UndoManager', {\r
-       index : 0,\r
-       data : null,\r
-       typing : 0,\r
-\r
-       UndoManager : function(ed) {\r
-               var t = this, Dispatcher = tinymce.util.Dispatcher;\r
-\r
-               t.editor = ed;\r
-               t.data = [];\r
-               t.onAdd = new Dispatcher(this);\r
-               t.onUndo = new Dispatcher(this);\r
-               t.onRedo = new Dispatcher(this);\r
-       },\r
+                       t.editor = ed;\r
+                       t.data = [];\r
+                       t.onAdd = new Dispatcher(this);\r
+                       t.onUndo = new Dispatcher(this);\r
+                       t.onRedo = new Dispatcher(this);\r
+               },\r
 \r
-       add : function(l) {\r
-               var t = this, i, ed = t.editor, b, s = ed.settings, la;\r
+               add : function(l) {\r
+                       var t = this, i, ed = t.editor, b, s = ed.settings, la;\r
 \r
-               l = l || {};\r
-               l.content = l.content || ed.getContent({format : 'raw', no_events : 1});\r
+                       l = l || {};\r
+                       l.content = l.content || ed.getContent({format : 'raw', no_events : 1});\r
 \r
-               // Add undo level if needed\r
-               l.content = l.content.replace(/^\s*|\s*$/g, '');\r
-               la = t.data[t.index > 0 && (t.index == 0 || t.index == t.data.length) ? t.index - 1 : t.index];\r
-               if (!l.initial && la && l.content == la.content)\r
-                       return null;\r
+                       // Add undo level if needed\r
+                       l.content = l.content.replace(/^\s*|\s*$/g, '');\r
+                       la = t.data[t.index > 0 && (t.index == 0 || t.index == t.data.length) ? t.index - 1 : t.index];\r
+                       if (!l.initial && la && l.content == la.content)\r
+                               return null;\r
 \r
-               // Time to compress\r
-               if (s.custom_undo_redo_levels) {\r
-                       if (t.data.length > s.custom_undo_redo_levels) {\r
-                               for (i = 0; i < t.data.length - 1; i++)\r
-                                       t.data[i] = t.data[i + 1];\r
+                       // Time to compress\r
+                       if (s.custom_undo_redo_levels) {\r
+                               if (t.data.length > s.custom_undo_redo_levels) {\r
+                                       for (i = 0; i < t.data.length - 1; i++)\r
+                                               t.data[i] = t.data[i + 1];\r
 \r
-                               t.data.length--;\r
-                               t.index = t.data.length;\r
+                                       t.data.length--;\r
+                                       t.index = t.data.length;\r
+                               }\r
                        }\r
-               }\r
-\r
-               if (s.custom_undo_redo_restore_selection && !l.initial)\r
-                       l.bookmark = b = l.bookmark || ed.selection.getBookmark();\r
 \r
-               if (t.index < t.data.length)\r
-                       t.index++;\r
+                       if (s.custom_undo_redo_restore_selection && !l.initial)\r
+                               l.bookmark = b = l.bookmark || ed.selection.getBookmark();\r
 \r
-               // Only initial marked undo levels should be allowed as first item\r
-               // This to workaround a bug with Firefox and the blur event\r
-               if (t.data.length === 0 && !l.initial)\r
-                       return null;\r
+                       if (t.index < t.data.length)\r
+                               t.index++;\r
 \r
-               // Add level\r
-               t.data.length = t.index + 1;\r
-               t.data[t.index++] = l;\r
+                       // Only initial marked undo levels should be allowed as first item\r
+                       // This to workaround a bug with Firefox and the blur event\r
+                       if (t.data.length === 0 && !l.initial)\r
+                               return null;\r
 \r
-               if (l.initial)\r
-                       t.index = 0;\r
+                       // Add level\r
+                       t.data.length = t.index + 1;\r
+                       t.data[t.index++] = l;\r
 \r
-               // Set initial bookmark use first real undo level\r
-               if (t.data.length == 2 && t.data[0].initial)\r
-                       t.data[0].bookmark = b;\r
+                       if (l.initial)\r
+                               t.index = 0;\r
 \r
-               t.onAdd.dispatch(t, l);\r
-               ed.isNotDirty = 0;\r
+                       // Set initial bookmark use first real undo level\r
+                       if (t.data.length == 2 && t.data[0].initial)\r
+                               t.data[0].bookmark = b;\r
 \r
-               //console.dir(t.data);\r
+                       t.onAdd.dispatch(t, l);\r
+                       ed.isNotDirty = 0;\r
 \r
-               return l;\r
-       },\r
+                       //console.dir(t.data);\r
 \r
-       undo : function() {\r
-               var t = this, ed = t.editor, l = l, i;\r
+                       return l;\r
+               },\r
 \r
-               if (t.typing) {\r
-                       t.add();\r
-                       t.typing = 0;\r
-               }\r
+               undo : function() {\r
+                       var t = this, ed = t.editor, l = l, i;\r
 \r
-               if (t.index > 0) {\r
-                       // If undo on last index then take snapshot\r
-                       if (t.index == t.data.length && t.index > 1) {\r
-                               i = t.index;\r
+                       if (t.typing) {\r
+                               t.add();\r
                                t.typing = 0;\r
+                       }\r
 \r
-                               if (!t.add())\r
-                                       t.index = i;\r
+                       if (t.index > 0) {\r
+                               // If undo on last index then take snapshot\r
+                               if (t.index == t.data.length && t.index > 1) {\r
+                                       i = t.index;\r
+                                       t.typing = 0;\r
 \r
-                               --t.index;\r
-                       }\r
+                                       if (!t.add())\r
+                                               t.index = i;\r
 \r
-                       l = t.data[--t.index];\r
-                       ed.setContent(l.content, {format : 'raw'});\r
-                       ed.selection.moveToBookmark(l.bookmark);\r
+                                       --t.index;\r
+                               }\r
 \r
-                       t.onUndo.dispatch(t, l);\r
-               }\r
+                               l = t.data[--t.index];\r
+                               ed.setContent(l.content, {format : 'raw'});\r
+                               ed.selection.moveToBookmark(l.bookmark);\r
 \r
-               return l;\r
-       },\r
+                               t.onUndo.dispatch(t, l);\r
+                       }\r
 \r
-       redo : function() {\r
-               var t = this, ed = t.editor, l = null;\r
+                       return l;\r
+               },\r
 \r
-               if (t.index < t.data.length - 1) {\r
-                       l = t.data[++t.index];\r
-                       ed.setContent(l.content, {format : 'raw'});\r
-                       ed.selection.moveToBookmark(l.bookmark);\r
+               redo : function() {\r
+                       var t = this, ed = t.editor, l = null;\r
 \r
-                       t.onRedo.dispatch(t, l);\r
-               }\r
+                       if (t.index < t.data.length - 1) {\r
+                               l = t.data[++t.index];\r
+                               ed.setContent(l.content, {format : 'raw'});\r
+                               ed.selection.moveToBookmark(l.bookmark);\r
 \r
-               return l;\r
-       },\r
+                               t.onRedo.dispatch(t, l);\r
+                       }\r
 \r
-       clear : function() {\r
-               var t = this;\r
+                       return l;\r
+               },\r
 \r
-               t.data = [];\r
-               t.index = 0;\r
-               t.typing = 0;\r
-               t.add({initial : true});\r
-       },\r
+               clear : function() {\r
+                       var t = this;\r
 \r
-       hasUndo : function() {\r
-               return this.index != 0 || this.typing;\r
-       },\r
+                       t.data = [];\r
+                       t.index = 0;\r
+                       t.typing = 0;\r
+                       t.add({initial : true});\r
+               },\r
 \r
-       hasRedo : function() {\r
-               return this.index < this.data.length - 1;\r
-       }\r
+               hasUndo : function() {\r
+                       return this.index != 0 || this.typing;\r
+               },\r
 \r
-       });\r
-/* file:jscripts/tiny_mce/classes/ForceBlocks.js */\r
+               hasRedo : function() {\r
+                       return this.index < this.data.length - 1;\r
+               }\r
 \r
-(function() {\r
+               });\r
+})(tinymce);\r
+(function(tinymce) {\r
        // Shorten names\r
        var Event, isIE, isGecko, isOpera, each, extend;\r
 \r
@@ -9980,6 +11424,15 @@ tinymce.create('tinymce.UndoManager', {
        each = tinymce.each;\r
        extend = tinymce.extend;\r
 \r
+       function isEmpty(n) {\r
+               n = n.innerHTML;\r
+               n = n.replace(/<\w+ .*?mce_\w+\"?=.*?>/gi, '-'); // Keep tags with mce_ attribs\r
+               n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars\r
+               n = n.replace(/<[^>]+>/g, ''); // Remove all tags\r
+\r
+               return n.replace(/[ \t\r\n]+/g, '') == '';\r
+       };\r
+\r
        tinymce.create('tinymce.ForceBlocks', {\r
                ForceBlocks : function(ed) {\r
                        var t = this, s = ed.settings, elm;\r
@@ -9994,9 +11447,8 @@ tinymce.create('tinymce.UndoManager', {
                        t.reOpera = new RegExp('(\\u00a0|&#160;|&nbsp;)<\/' + elm + '>', 'gi');\r
                        t.rePadd = new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g, elm), 'gi');\r
                        t.reNbsp2BR1 = new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi');\r
-                       t.reNbsp2BR2 = new RegExp('<p( )([^>]+)>(&nbsp;|&#160;)<\\\/p>|<p>(&nbsp;|&#160;)<\\\/p>'.replace(/p/g, elm), 'gi');\r
+                       t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>(&nbsp;|&#160;)<\\\/%p>|<%p>(&nbsp;|&#160;)<\\\/%p>'.replace(/%p/g, elm), 'gi');\r
                        t.reBR2Nbsp = new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');\r
-                       t.reTrailBr = new RegExp('\\s*<br \\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');\r
 \r
                        function padd(ed, o) {\r
                                if (isOpera)\r
@@ -10008,10 +11460,8 @@ tinymce.create('tinymce.UndoManager', {
                                        // Use &nbsp; instead of BR in padded paragraphs\r
                                        o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2><br /></' + elm + '>');\r
                                        o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2><br /></' + elm + '>');\r
-                               } else {\r
+                               } else\r
                                        o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0</' + elm + '>');\r
-                                       o.content = o.content.replace(t.reTrailBr, '</' + elm + '>');\r
-                               }\r
                        };\r
 \r
                        ed.onBeforeSetContent.add(padd);\r
@@ -10097,29 +11547,41 @@ tinymce.create('tinymce.UndoManager', {
                                return ne;\r
                        };\r
 \r
-                       // Replaces IE:s auto generated paragraphs with the specified element name\r
-                       if (isIE && s.element != 'P') {\r
-                               ed.onKeyPress.add(function(ed, e) {\r
-                                       t.lastElm = ed.selection.getNode().nodeName;\r
+                       // IE specific fixes\r
+                       if (isIE) {\r
+                               // Remove empty inline elements within block elements\r
+                               // For example: <p><strong><em></em></strong></p>\r
+                               ed.onPreProcess.add(function(ed, o) {\r
+                                       each(ed.dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) {\r
+                                               if (isEmpty(p))\r
+                                                       p.innerHTML = '';\r
+                                       });\r
                                });\r
 \r
-                               ed.onKeyUp.add(function(ed, e) {\r
-                                       var bl, sel = ed.selection, n = sel.getNode(), b = ed.getBody();\r
+                               // Replaces IE:s auto generated paragraphs with the specified element name\r
+                               if (s.element != 'P') {\r
+                                       ed.onKeyPress.add(function(ed, e) {\r
+                                               t.lastElm = ed.selection.getNode().nodeName;\r
+                                       });\r
 \r
-                                       if (b.childNodes.length === 1 && n.nodeName == 'P') {\r
-                                               n = ren(n, s.element);\r
-                                               sel.select(n);\r
-                                               sel.collapse();\r
-                                               ed.nodeChanged();\r
-                                       } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {\r
-                                               bl = ed.dom.getParent(n, 'P');\r
+                                       ed.onKeyUp.add(function(ed, e) {\r
+                                               var bl, sel = ed.selection, n = sel.getNode(), b = ed.getBody();\r
 \r
-                                               if (bl) {\r
-                                                       ren(bl, s.element);\r
+                                               if (b.childNodes.length === 1 && n.nodeName == 'P') {\r
+                                                       n = ren(n, s.element);\r
+                                                       sel.select(n);\r
+                                                       sel.collapse();\r
                                                        ed.nodeChanged();\r
+                                               } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {\r
+                                                       bl = ed.dom.getParent(n, 'p');\r
+\r
+                                                       if (bl) {\r
+                                                               ren(bl, s.element);\r
+                                                               ed.nodeChanged();\r
+                                                       }\r
                                                }\r
-                                       }\r
-                               });\r
+                                       });\r
+                               }\r
                        }\r
                },\r
 \r
@@ -10143,7 +11605,7 @@ tinymce.create('tinymce.UndoManager', {
 \r
                forceRoots : function(ed, e) {\r
                        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;\r
-                       var nx, bl, bp, sp, le, nl = b.childNodes, i, n;\r
+                       var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid;\r
 \r
                        // Fix for bug #1863847\r
                        //if (e && e.keyCode == 13)\r
@@ -10163,6 +11625,8 @@ tinymce.create('tinymce.UndoManager', {
                                                                if (!isIE) {\r
                                                                        // If selection is element then mark it\r
                                                                        if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) {\r
+                                                                               // Save the id of the selected element\r
+                                                                               eid = n.getAttribute("id");\r
                                                                                n.setAttribute("id", "__mce");\r
                                                                        } else {\r
                                                                                // If element is inside body, might not be the case in contentEdiable mode\r
@@ -10241,8 +11705,13 @@ tinymce.create('tinymce.UndoManager', {
                                        }\r
                                }\r
                        } else if (!isIE && (n = ed.dom.get('__mce'))) {\r
+                               // Restore the id of the selected element\r
+                               if (eid)\r
+                                       n.setAttribute('id', eid);\r
+                               else\r
+                                       n.removeAttribute('id');\r
+\r
                                // Move caret before selected element\r
-                               n.removeAttribute('id');\r
                                r = d.createRange();\r
                                r.setStartBefore(n);\r
                                r.setEndBefore(n);\r
@@ -10260,14 +11729,6 @@ tinymce.create('tinymce.UndoManager', {
                        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;\r
                        var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car;\r
 \r
-                       function isEmpty(n) {\r
-                               n = n.innerHTML;\r
-                               n = n.replace(/<(img|hr|table)/gi, '-'); // Keep these convert them to - chars\r
-                               n = n.replace(/<[^>]+>/g, ''); // Remove all tags\r
-\r
-                               return n.replace(/[ \t\r\n]+/g, '') == '';\r
-                       };\r
-\r
                        // If root blocks are forced then use Operas default behavior since it's really good\r
 // Removed due to bug: #1853816\r
 //                     if (se.forced_root_block && isOpera)\r
@@ -10296,11 +11757,19 @@ tinymce.create('tinymce.UndoManager', {
 \r
                        // If selection is in empty table cell\r
                        if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {\r
-                               dom.remove(sn.firstChild); // Remove BR\r
+                               if (sn.firstChild.nodeName == 'BR')\r
+                                       dom.remove(sn.firstChild); // Remove BR\r
 \r
                                // Create two new block elements\r
-                               ed.dom.add(sn, se.element, null, '<br />');\r
-                               aft = ed.dom.add(sn, se.element, null, '<br />');\r
+                               if (sn.childNodes.length == 0) {\r
+                                       ed.dom.add(sn, se.element, null, '<br />');\r
+                                       aft = ed.dom.add(sn, se.element, null, '<br />');\r
+                               } else {\r
+                                       n = sn.innerHTML;\r
+                                       sn.innerHTML = '';\r
+                                       ed.dom.add(sn, se.element, null, n);\r
+                                       aft = ed.dom.add(sn, se.element, null, '<br />');\r
+                               }\r
 \r
                                // Move caret into the last one\r
                                r = d.createRange();\r
@@ -10333,23 +11802,23 @@ tinymce.create('tinymce.UndoManager', {
                        bn = sb ? sb.nodeName : se.element; // Get block name to create\r
 \r
                        // Return inside list use default browser behavior\r
-                       if (t.dom.getParent(sb, function(n) { return /OL|UL|PRE/.test(n.nodeName); }))\r
+                       if (t.dom.getParent(sb, 'ol,ul,pre'))\r
                                return true;\r
 \r
                        // If caption or absolute layers then always generate new blocks within\r
-                       if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(sb.style.position))) {\r
+                       if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {\r
                                bn = se.element;\r
                                sb = null;\r
                        }\r
 \r
                        // If caption or absolute layers then always generate new blocks within\r
-                       if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|static/gi.test(eb.style.position))) {\r
+                       if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {\r
                                bn = se.element;\r
                                eb = null;\r
                        }\r
 \r
                        // Use P instead\r
-                       if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(sb.style.cssFloat))) {\r
+                       if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) {\r
                                bn = se.element;\r
                                sb = eb = null;\r
                        }\r
@@ -10571,11 +12040,8 @@ tinymce.create('tinymce.UndoManager', {
                        }, 1);\r
                }\r
        });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/ControlManager.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        // Shorten names\r
        var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;\r
 \r
@@ -10689,12 +12155,17 @@ tinymce.create('tinymce.UndoManager', {
                        // Fix for bug #1897785, #1898007\r
                        if (tinymce.isIE) {\r
                                c.onShowMenu.add(function() {\r
+                                       // IE 8 needs focus in order to store away a range with the current collapsed caret location\r
+                                       ed.focus();\r
+\r
                                        bm = ed.selection.getBookmark(1);\r
                                });\r
 \r
                                c.onHideMenu.add(function() {\r
-                                       if (bm)\r
+                                       if (bm) {\r
                                                ed.selection.moveToBookmark(bm);\r
+                                               bm = 0;\r
+                                       }\r
                                });\r
                        }\r
 \r
@@ -10848,6 +12319,9 @@ tinymce.create('tinymce.UndoManager', {
 \r
                        if (!s.onclick) {\r
                                s.onclick = function(v) {\r
+                                       if (tinymce.isIE)\r
+                                               bm = ed.selection.getBookmark(1);\r
+       \r
                                        ed.execCommand(s.cmd, s.ui || false, v || s.value);\r
                                };\r
                        }\r
@@ -10878,10 +12352,6 @@ tinymce.create('tinymce.UndoManager', {
 \r
                        // Fix for bug #1897785, #1898007\r
                        if (tinymce.isIE) {\r
-                               c.onShowMenu.add(function() {\r
-                                       bm = ed.selection.getBookmark(1);\r
-                               });\r
-\r
                                c.onHideMenu.add(function() {\r
                                        if (bm) {\r
                                                ed.selection.moveToBookmark(bm);\r
@@ -10925,11 +12395,8 @@ tinymce.create('tinymce.UndoManager', {
                }\r
 \r
                });\r
-})();\r
-\r
-/* file:jscripts/tiny_mce/classes/WindowManager.js */\r
-\r
-(function() {\r
+})(tinymce);\r
+(function(tinymce) {\r
        var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;\r
 \r
        tinymce.create('tinymce.WindowManager', {\r
@@ -10990,9 +12457,6 @@ tinymce.create('tinymce.UndoManager', {
                        t.onOpen.dispatch(t, s, p);\r
 \r
                        u = s.url || s.file;\r
-                       if (tinymce.relaxedDomain)\r
-                               u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;\r
-\r
                        u = tinymce._addVer(u);\r
 \r
                        try {\r
@@ -11043,4 +12507,399 @@ tinymce.create('tinymce.UndoManager', {
                }\r
 \r
                });\r
-}());
\ No newline at end of file
+}(tinymce));(function(tinymce) {\r
+       tinymce.CommandManager = function() {\r
+               var execCommands = {}, queryStateCommands = {}, queryValueCommands = {};\r
+\r
+               function add(collection, cmd, func, scope) {\r
+                       if (typeof(cmd) == 'string')\r
+                               cmd = [cmd];\r
+\r
+                       tinymce.each(cmd, function(cmd) {\r
+                               collection[cmd.toLowerCase()] = {func : func, scope : scope};\r
+                       });\r
+               };\r
+\r
+               tinymce.extend(this, {\r
+                       add : function(cmd, func, scope) {\r
+                               add(execCommands, cmd, func, scope);\r
+                       },\r
+\r
+                       addQueryStateHandler : function(cmd, func, scope) {\r
+                               add(queryStateCommands, cmd, func, scope);\r
+                       },\r
+\r
+                       addQueryValueHandler : function(cmd, func, scope) {\r
+                               add(queryValueCommands, cmd, func, scope);\r
+                       },\r
+\r
+                       execCommand : function(scope, cmd, ui, value, args) {\r
+                               if (cmd = execCommands[cmd.toLowerCase()]) {\r
+                                       if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false)\r
+                                               return true;\r
+                               }\r
+                       },\r
+\r
+                       queryCommandValue : function() {\r
+                               if (cmd = queryValueCommands[cmd.toLowerCase()])\r
+                                       return cmd.func.call(scope || cmd.scope, ui, value, args);\r
+                       },\r
+\r
+                       queryCommandState : function() {\r
+                               if (cmd = queryStateCommands[cmd.toLowerCase()])\r
+                                       return cmd.func.call(scope || cmd.scope, ui, value, args);\r
+                       }\r
+               });\r
+       };\r
+\r
+       tinymce.GlobalCommands = new tinymce.CommandManager();\r
+})(tinymce);(function(tinymce) {\r
+       function processRange(dom, start, end, callback) {\r
+               var ancestor, n, startPoint, endPoint, sib;\r
+\r
+               function findEndPoint(n, c) {\r
+                       do {\r
+                               if (n.parentNode == c)\r
+                                       return n;\r
+\r
+                               n = n.parentNode;\r
+                       } while(n);\r
+               };\r
+\r
+               function process(n) {\r
+                       callback(n);\r
+                       tinymce.walk(n, callback, 'childNodes');\r
+               };\r
+\r
+               // Find common ancestor and end points\r
+               ancestor = dom.findCommonAncestor(start, end);\r
+               startPoint = findEndPoint(start, ancestor) || start;\r
+               endPoint = findEndPoint(end, ancestor) || end;\r
+\r
+               // Process left leaf\r
+               for (n = start; n && n != startPoint; n = n.parentNode) {\r
+                       for (sib = n.nextSibling; sib; sib = sib.nextSibling)\r
+                               process(sib);\r
+               }\r
+\r
+               // Process middle from start to end point\r
+               if (startPoint != endPoint) {\r
+                       for (n = startPoint.nextSibling; n && n != endPoint; n = n.nextSibling)\r
+                               process(n);\r
+               } else\r
+                       process(startPoint);\r
+\r
+               // Process right leaf\r
+               for (n = end; n && n != endPoint; n = n.parentNode) {\r
+                       for (sib = n.previousSibling; sib; sib = sib.previousSibling)\r
+                               process(sib);\r
+               }\r
+       };\r
+\r
+       tinymce.GlobalCommands.add('RemoveFormat', function() {\r
+               var ed = this, dom = ed.dom, s = ed.selection, r = s.getRng(1), nodes = [], bm, start, end, sc, so, ec, eo, n;\r
+\r
+               function findFormatRoot(n) {\r
+                       var sp;\r
+\r
+                       dom.getParent(n, function(n) {\r
+                               if (dom.is(n, ed.getParam('removeformat_selector')))\r
+                                       sp = n;\r
+\r
+                               return dom.isBlock(n);\r
+                       }, ed.getBody());\r
+\r
+                       return sp;\r
+               };\r
+\r
+               function collect(n) {\r
+                       if (dom.is(n, ed.getParam('removeformat_selector')))\r
+                               nodes.push(n);\r
+               };\r
+\r
+               function walk(n) {\r
+                       collect(n);\r
+                       tinymce.walk(n, collect, 'childNodes');\r
+               };\r
+\r
+               bm = s.getBookmark();\r
+               sc = r.startContainer;\r
+               ec = r.endContainer;\r
+               so = r.startOffset;\r
+               eo = r.endOffset;\r
+               sc = sc.nodeType == 1 ? sc.childNodes[Math.min(so, sc.childNodes.length - 1)] : sc;\r
+               ec = ec.nodeType == 1 ? ec.childNodes[Math.min(so == eo ? eo : eo - 1, ec.childNodes.length - 1)] : ec;\r
+\r
+               // Same container\r
+               if (sc == ec) { // TEXT_NODE\r
+                       start = findFormatRoot(sc);\r
+\r
+                       // Handle single text node\r
+                       if (sc.nodeType == 3) {\r
+                               if (start && start.nodeType == 1) { // ELEMENT\r
+                                       n = sc.splitText(so);\r
+                                       n.splitText(eo - so);\r
+                                       dom.split(start, n);\r
+\r
+                                       s.moveToBookmark(bm);\r
+                               }\r
+\r
+                               return;\r
+                       }\r
+\r
+                       // Handle single element\r
+                       walk(dom.split(start, sc) || sc);\r
+               } else {\r
+                       // Find start/end format root\r
+                       start = findFormatRoot(sc);\r
+                       end = findFormatRoot(ec);\r
+\r
+                       // Split start text node\r
+                       if (start) {\r
+                               if (sc.nodeType == 3) { // TEXT\r
+                                       // Since IE doesn't support white space nodes in the DOM we need to\r
+                                       // add this invisible character so that the splitText function can split the contents\r
+                                       if (so == sc.nodeValue.length)\r
+                                               sc.nodeValue += '\uFEFF'; // Yet another pesky IE fix\r
+\r
+                                       sc = sc.splitText(so);\r
+                               }\r
+                       }\r
+\r
+                       // Split end text node\r
+                       if (end) {\r
+                               if (ec.nodeType == 3) // TEXT\r
+                                       ec.splitText(eo);\r
+                       }\r
+\r
+                       // If the start and end format root is the same then we need to wrap\r
+                       // the end node in a span since the split calls might change the reference\r
+                       // Example: <p><b><em>x[yz<span>---</span>12]3</em></b></p>\r
+                       if (start && start == end)\r
+                               dom.replace(dom.create('span', {id : '__end'}, ec.cloneNode(true)), ec);\r
+\r
+                       // Split all start containers down to the format root\r
+                       if (start)\r
+                               start = dom.split(start, sc);\r
+                       else\r
+                               start = sc;\r
+\r
+                       // If there is a span wrapper use that one instead\r
+                       if (n = dom.get('__end')) {\r
+                               ec = n;\r
+                               end = findFormatRoot(ec);\r
+                       }\r
+\r
+                       // Split all end containers down to the format root\r
+                       if (end)\r
+                               end = dom.split(end, ec);\r
+                       else\r
+                               end = ec;\r
+\r
+                       // Collect nodes in between\r
+                       processRange(dom, start, end, collect);\r
+\r
+                       // Remove invisible character for IE workaround if we find it\r
+                       if (sc.nodeValue == '\uFEFF')\r
+                               sc.nodeValue = '';\r
+\r
+                       // Process start/end container elements\r
+                       walk(ec);\r
+                       walk(sc);\r
+               }\r
+\r
+               // Remove all collected nodes\r
+               tinymce.each(nodes, function(n) {\r
+                       dom.remove(n, 1);\r
+               });\r
+\r
+               // Remove leftover wrapper\r
+               dom.remove('__end', 1);\r
+\r
+               s.moveToBookmark(bm);\r
+       });\r
+})(tinymce);\r
+(function(tinymce) {\r
+       tinymce.GlobalCommands.add('mceBlockQuote', function() {\r
+               var ed = this, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl;\r
+\r
+               function getBQ(e) {\r
+                       return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});\r
+               };\r
+\r
+               // Get start/end block\r
+               sb = dom.getParent(s.getStart(), dom.isBlock);\r
+               eb = dom.getParent(s.getEnd(), dom.isBlock);\r
+\r
+               // Remove blockquote(s)\r
+               if (bq = getBQ(sb)) {\r
+                       if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))\r
+                               bm = s.getBookmark();\r
+\r
+                       // Move all elements after the end block into new bq\r
+                       if (getBQ(eb)) {\r
+                               bq2 = bq.cloneNode(false);\r
+\r
+                               while (n = eb.nextSibling)\r
+                                       bq2.appendChild(n.parentNode.removeChild(n));\r
+                       }\r
+\r
+                       // Add new bq after\r
+                       if (bq2)\r
+                               dom.insertAfter(bq2, bq);\r
+\r
+                       // Move all selected blocks after the current bq\r
+                       nl = s.getSelectedBlocks(sb, eb);\r
+                       for (i = nl.length - 1; i >= 0; i--) {\r
+                               dom.insertAfter(nl[i], bq);\r
+                       }\r
+\r
+                       // Empty bq, then remove it\r
+                       if (/^\s*$/.test(bq.innerHTML))\r
+                               dom.remove(bq, 1); // Keep children so boomark restoration works correctly\r
+\r
+                       // Empty bq, then remote it\r
+                       if (bq2 && /^\s*$/.test(bq2.innerHTML))\r
+                               dom.remove(bq2, 1); // Keep children so boomark restoration works correctly\r
+\r
+                       if (!bm) {\r
+                               // Move caret inside empty block element\r
+                               if (!tinymce.isIE) {\r
+                                       r = ed.getDoc().createRange();\r
+                                       r.setStart(sb, 0);\r
+                                       r.setEnd(sb, 0);\r
+                                       s.setRng(r);\r
+                               } else {\r
+                                       s.select(sb);\r
+                                       s.collapse(0);\r
+\r
+                                       // IE misses the empty block some times element so we must move back the caret\r
+                                       if (dom.getParent(s.getStart(), dom.isBlock) != sb) {\r
+                                               r = s.getRng();\r
+                                               r.move('character', -1);\r
+                                               r.select();\r
+                                       }\r
+                               }\r
+                       } else\r
+                               ed.selection.moveToBookmark(bm);\r
+\r
+                       return;\r
+               }\r
+\r
+               // Since IE can start with a totally empty document we need to add the first bq and paragraph\r
+               if (tinymce.isIE && !sb && !eb) {\r
+                       ed.getDoc().execCommand('Indent');\r
+                       n = getBQ(s.getNode());\r
+                       n.style.margin = n.dir = ''; // IE adds margin and dir to bq\r
+                       return;\r
+               }\r
+\r
+               if (!sb || !eb)\r
+                       return;\r
+\r
+               // If empty paragraph node then do not use bookmark\r
+               if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))\r
+                       bm = s.getBookmark();\r
+\r
+               // Move selected block elements into a bq\r
+               tinymce.each(s.getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) {\r
+                       // Found existing BQ add to this one\r
+                       if (e.nodeName == 'BLOCKQUOTE' && !bq) {\r
+                               bq = e;\r
+                               return;\r
+                       }\r
+\r
+                       // No BQ found, create one\r
+                       if (!bq) {\r
+                               bq = dom.create('blockquote');\r
+                               e.parentNode.insertBefore(bq, e);\r
+                       }\r
+\r
+                       // Add children from existing BQ\r
+                       if (e.nodeName == 'BLOCKQUOTE' && bq) {\r
+                               n = e.firstChild;\r
+\r
+                               while (n) {\r
+                                       bq.appendChild(n.cloneNode(true));\r
+                                       n = n.nextSibling;\r
+                               }\r
+\r
+                               dom.remove(e);\r
+                               return;\r
+                       }\r
+\r
+                       // Add non BQ element to BQ\r
+                       bq.appendChild(dom.remove(e));\r
+               });\r
+\r
+               if (!bm) {\r
+                       // Move caret inside empty block element\r
+                       if (!tinymce.isIE) {\r
+                               r = ed.getDoc().createRange();\r
+                               r.setStart(sb, 0);\r
+                               r.setEnd(sb, 0);\r
+                               s.setRng(r);\r
+                       } else {\r
+                               s.select(sb);\r
+                               s.collapse(1);\r
+                       }\r
+               } else\r
+                       s.moveToBookmark(bm);\r
+       });\r
+})(tinymce);\r
+(function(tinymce) {\r
+       tinymce.each(['Cut', 'Copy', 'Paste'], function(cmd) {\r
+               tinymce.GlobalCommands.add(cmd, function() {\r
+                       var ed = this, doc = ed.getDoc();\r
+\r
+                       try {\r
+                               doc.execCommand(cmd, false, null);\r
+\r
+                               // On WebKit the command will just be ignored if it's not enabled\r
+                               if (!doc.queryCommandSupported(cmd))\r
+                                       throw 'Error';\r
+                       } catch (ex) {\r
+                               ed.windowManager.alert(ed.getLang('clipboard_no_support'));\r
+                       }\r
+               });\r
+       });\r
+})(tinymce);\r
+(function(tinymce) {\r
+       tinymce.GlobalCommands.add('InsertHorizontalRule', function() {\r
+               if (tinymce.isOpera)\r
+                       return this.getDoc().execCommand('InsertHorizontalRule', false, '');\r
+\r
+               this.selection.setContent('<hr />');\r
+       });\r
+})(tinymce);\r
+(function() {\r
+       var cmds = tinymce.GlobalCommands;\r
+\r
+       cmds.add(['mceEndUndoLevel', 'mceAddUndoLevel'], function() {\r
+               this.undoManager.add();\r
+       });\r
+\r
+       cmds.add('Undo', function() {\r
+               var ed = this;\r
+\r
+               if (ed.settings.custom_undo_redo) {\r
+                       ed.undoManager.undo();\r
+                       ed.nodeChanged();\r
+                       return true;\r
+               }\r
+\r
+               return false; // Run browser command\r
+       });\r
+\r
+       cmds.add('Redo', function() {\r
+               var ed = this;\r
+\r
+               if (ed.settings.custom_undo_redo) {\r
+                       ed.undoManager.redo();\r
+                       ed.nodeChanged();\r
+                       return true;\r
+               }\r
+\r
+               return false; // Run browser command\r
+       });\r
+})();\r
diff --git a/lib/editor/tinymce/tinymce.js.php b/lib/editor/tinymce/tinymce.js.php
deleted file mode 100644 (file)
index eb160e5..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-<?php  //$Id$
-
-define('NO_MOODLE_COOKIES', true);
-
-require_once('../../../config.php');
-
-$editorlanguage = optional_param('editorlanguage', 'en_utf8', PARAM_ALPHANUMEXT);
-
-$SESSION->lang = $editorlanguage;
-$directionality = get_string('thisdirection');
-
-$strtime = get_string('strftimetime');
-$strdate = get_string('strftimedaydate');
-
-// $contentcss should be customizable, but default to this.
-$contentcss = $CFG->themewww .'/'. current_theme() .'/styles.php';
-
-$output = <<<EOF
-    tinyMCE.init({
-        mode: "textareas",
-        relative_urls: false,
-        editor_selector: "form-textarea-simple",
-        document_base_url: "$CFG->httpswwwroot",
-        content_css: "$contentcss",
-        theme: "simple",
-        skin: "o2k7",
-        skin_variant: "silver",
-        apply_source_formatting: true, 
-        remove_script_host: false,
-        entity_encoding: "raw",
-        language: "$editorlanguage",
-        directionality: "$directionality",
-        plugins: "spellchecker,emoticons,paste,directionality,contextmenu"
-    });
-    tinyMCE.init({
-        mode: "textareas",
-        relative_urls: false,
-        editor_selector: "form-textarea-advanced",
-        document_base_url: "$CFG->httpswwwroot",
-        content_css: "$contentcss",
-        theme: "advanced",
-        skin: "o2k7",
-        skin_variant: "silver",
-        apply_source_formatting: true, 
-        remove_script_host: false,
-        entity_encoding: "raw",
-        language: "$editorlanguage",
-        directionality: "$directionality",
-        plugins: "safari,spellchecker,table,style,layer,advhr,advimage,advlink,emoticons,inlinepopups,media,searchreplace,paste,directionality,fullscreen,moodlenolink,dragmath,nonbreaking,contextmenu,insertdatetime,save,iespell,preview,print,noneditable,visualchars,xhtmlxtras,template,pagebreak",
-        plugin_insertdate_dateFormat : "$strdate",
-        plugin_insertdate_timeFormat : "$strtime",
-        theme_advanced_font_sizes: "1,2,3,4,5,6,7",
-        theme_advanced_layout_manager: "SimpleLayout",
-        theme_advanced_toolbar_align : "left",
-        theme_advanced_buttons1: "fontselect,fontsizeselect,formatselect,styleselect",
-        theme_advanced_buttons1_add: "|,undo,redo,|,search,replace,spellchecker,|,fullscreen",
-        theme_advanced_buttons2: "bold,italic,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,justifyfull,|,cite,abbr,acronym",
-        theme_advanced_buttons2_add: "|,selectall,cleanup,removeformat,pastetext,pasteword,|,forecolor,backcolor,|,ltr,rtl",
-        theme_advanced_buttons3: "bullist,numlist,outdent,indent,|,link,unlink,moodlenolink,anchor,|,insertdate,inserttime,|,emoticons,image,media,dragmath,advhr,nonbreaking,charmap",
-        theme_advanced_buttons3_add: "|,table,insertlayer,styleprops,visualchars,|,code,preview",
-        theme_advanced_fonts: "Trebuchet=Trebuchet MS,Verdana,Arial,Helvetica,sans-serif;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", 
-        theme_advanced_resize_horizontal: true,
-        theme_advanced_resizing: true,
-        theme_advanced_toolbar_location : "top",
-        theme_advanced_statusbar_location : "bottom",
-        file_browser_callback : "moodlefilemanager",
-
-EOF;
-// the xhtml ruleset must be the last one - no comma at the end of the file
-$output .= file_get_contents('xhtml_ruleset.txt');
-$output .= <<<EOF
-    });
-
-    function mce_toggleEditor(id) {
-        tinyMCE.execCommand('mceToggleEditor',false,id);
-    }
-
-    function mce_saveOnSubmit(id) {
-        var prevOnSubmit = document.getElementById(id).form.onsubmit;
-        document.getElementById(id).form.onsubmit = function() { 
-            tinyMCE.triggerSave(); 
-            var ret = true;
-            if (prevOnSubmit != undefined) {
-              if (prevOnSubmit()) {
-                ret = true;
-                prevOnSubmit = null;
-              } else {
-                ret = false;
-              }
-            }
-            return ret;
-        };
-    }
-    function moodlefilemanager(field_name, url, type, win) {
-        var client_id = id2clientid[tinyMCE.selectedInstance.editorId];
-        document.body.className += ' yui-skin-sam';
-        var picker = document.createElement('DIV');
-        picker.className = "file-picker";
-        picker.id = 'file-picker-'+client_id;
-        document.body.appendChild(picker);
-        var el = win.document.getElementById(field_name);
-        eval('open_filepicker(client_id, {"env":"editor","target":el,"filetype":type})');
-    }
-EOF;
-
-$lifetime = '86400';
-@header('Content-type: text/javascript; charset=utf-8');
-@header('Content-length: '.strlen($output));
-@header('Last-Modified: '. gmdate('D, d M Y H:i:s', time()) .' GMT');
-@header('Cache-control: max-age='.$lifetime);
-@header('Expires: '. gmdate('D, d M Y H:i:s', time() + $lifetime) .'GMT');
-@header('Pragma: ');
-
-echo $output;
-
-?>
similarity index 95%
rename from lib/editor/tinymce/jscripts/tiny_mce/utils/form_utils.js
rename to lib/editor/tinymce/utils/form_utils.js
index 68e0f6073f342f5b87267c07c09f77542fe84fa6..b8860b280ac87402b1f5ca71aa0ff148be2b6627 100644 (file)
@@ -13,7 +13,7 @@ function getColorPickerHTML(id, target_form_element) {
        var h = "";\r
 \r
        h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';\r
-       h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
+       h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';\r
 \r
        return h;\r
 }\r
@@ -50,7 +50,7 @@ function getBrowserHTML(id, target_form_element, type, prefix) {
 \r
        html = "";\r
        html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';\r
-       html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
+       html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';\r
 \r
        return html;\r
 }\r
diff --git a/lib/editor/tinymce/version.php b/lib/editor/tinymce/version.php
new file mode 100644 (file)
index 0000000..2d77cba
--- /dev/null
@@ -0,0 +1,28 @@
+<?PHP
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.org                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards Martin Dougiamas  http://dougiamas.com     //
+//                                                                       //
+// 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; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// 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 for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+$plugin->version  = 2009051600;
+$plugin->requires = 2009051200;
+$module->release  = 'v3.2.3.1-01';
\ No newline at end of file
diff --git a/lib/editorlib.php b/lib/editorlib.php
new file mode 100644 (file)
index 0000000..f1ccd5c
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+///////////////////////////////////////////////////////////////////////////
+//                                                                       //
+// NOTICE OF COPYRIGHT                                                   //
+//                                                                       //
+// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
+//          http://moodle.com                                            //
+//                                                                       //
+// Copyright (C) 1999 onwards  Martin Dougiamas  http://moodle.com       //
+//                                                                       //
+// 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; either version 2 of the License, or     //
+// (at your option) any later version.                                   //
+//                                                                       //
+// 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 for more details:                          //
+//                                                                       //
+//          http://www.gnu.org/copyleft/gpl.html                         //
+//                                                                       //
+///////////////////////////////////////////////////////////////////////////
+
+//TODO:
+// * remove $CFG->htmleditor and $CFG->defaulthtmleditor and $USER->htmleditor
+// *
+
+
+function get_preferred_texteditor($format=null) {
+    global $CFG, $USER;
+
+    if (empty($CFG->texteditors)) {
+        $CFG->texteditors = 'tinymce,textarea';
+    }
+    $active = explode(',', $CFG->texteditors);
+
+    // TODO: implement user preferences for text editors
+
+    // now find some plugin that supports format and is available
+    $editor = false;
+    foreach ($active as $editorname) {
+        if (!$e = get_texteditor($editorname)) {
+            continue;
+        }
+        if (!$e->supported_by_browser()) {
+            // bad luck, this editor is not compatible
+            continue;
+        }
+        if (!$supports = $e->get_supported_formats()) {
+            continue;
+        }
+        if (is_null($format)) {
+            // format does not matter
+            $editor = $e;
+            break;
+        }
+        if (in_array($format, $supports)) {
+            // editor supports this format, yay!
+            $editor = $e;
+            break;
+        }
+    }
+
+    if (!$editor) {
+        $editor = get_texteditor('textarea'); // must exist and can edit anything
+    }
+
+    return $editor;
+}
+
+function get_texteditor($editor) {
+    global $CFG;
+
+    $libfile = "$CFG->libdir/editor/$editor/lib.php";
+    if (!file_exists($libfile)) {
+        return false;
+    }
+    require_once($libfile);
+    $classname = $editor.'_texteditor';
+    if (!class_exists($classname)) {
+        return false;
+    }
+    return new $classname();
+}
+
+ /**
+ * Get the list of available editors
+ */
+function get_available_editors() {
+    $editors = array();
+    foreach (get_list_of_plugins('lib/editor') as $editor) {
+        $editors['editor'] = get_string('modulename', 'editor_'.$editor);
+    }
+    return $editors;
+}
+
+/**
+ * Base text editor class
+ */
+abstract class texteditor {
+    public abstract function supported_by_browser();
+    public abstract function get_supported_formats();
+    public abstract function get_preferred_format();
+    public abstract function supports_repositories();
+    public abstract function get_editor_element_class();
+    public abstract function get_legacy_textarea_class();
+    public abstract function header_js();
+}
+
+
+
+//=== DEPRECATED =====================
+/**
+ * Deprecated...
+ */
+function can_use_html_editor() {
+    //TODO: eradicate completely
+
+    return true;
+}
index a5d95888950ccb42779a8824f93a058f84afd9a8..87ec286c251c2e2969cecc4311dbb8dc8077f4a3 100755 (executable)
@@ -41,6 +41,9 @@ function events_load_def($component) {
             // are stored in 'course/format'.
             $defpath = $CFG->dirroot.'/course/format/'.$compparts[1].'/db/events.php';
 
+        } else if ($compparts[0] == 'editor') {
+            $defpath = $CFG->dirroot.'/lib/editor/'.$compparts[1].'/db/events.php';
+
         } else if ($compparts[0] == 'gradeimport') {
             $defpath = $CFG->dirroot.'/grade/import/'.$compparts[1].'/db/events.php';  
         
index 287d52934f54b38263e0b5c4039b610658869263..6f2e35c59afbf79cbd8862440f3a8469f2a4cf6a 100644 (file)
@@ -6,7 +6,6 @@ require_once('HTML/QuickForm/element.php');
 //  * locking
 //  * freezing
 //  * ajax format conversion
-//  * tinymce integration
 //  * better area files handling
 
 class MoodleQuickForm_editor extends HTML_QuickForm_element {
@@ -129,37 +128,27 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
         $str = $this->_getTabs();
         $str .= '<div>';
 
-
-    /// format option - TODO: ajax conversion and switching
-        $formats = array(FORMAT_MOODLE=>'Moodle', FORMAT_HTML=>'HTML', FORMAT_PLAIN=>'Plaintext', FORMAT_WIKI=>'Wiki'); // TODO: localise & switch to new formats plugins
-
-        if (!isset($formats[$format])) {
-            $format = FORMAT_HTML; // TODO: some user pref
+        $editor = get_preferred_texteditor($format);
+        $strformats = format_text_menu();
+        $formats =  $editor->get_supported_formats();
+        foreach ($formats as $fid) {
+            $formats[$fid] = $strformats[$fid];
         }
 
-    /// print text area - TODO: add on-the-fly switching to tinymce, size configuration
-        $editorclass = 'form-textarea';
-        if ($format == FORMAT_HTML or $format == FORMAT_MOODLE) {
-            $editorclass = 'form-textarea-advanced';
-        }
+    /// print text area - TODO: add on-the-fly switching, size configuration, etc.
+        $editorclass = $editor->get_editor_element_class();
 
         $str .= '<div><textarea class="'.$editorclass.'" id="'.$id.'" name="'.$elname.'[text]" rows="15" cols="80">';
         $str .= s($text);
         $str .= '</textarea></div>';
 
         $str .= '<div>';
-        if ($changeformat) {
-            $str .= '<select name="'.$elname.'[format]">';
-            foreach ($formats as $key=>$desc) {
-                $selected = ($format == $key) ? 'selected="selected"' : '';
-                $str .= '<option value="'.s($key).'" '.$selected.'>'.$desc.'</option>';
-            }
-            $str .= '</select>';
-        } else {
-            // no changes of format allowed
-            $str .= '<input type="hidden" name="'.$elname.'[format]" value="' . $format . '" />';
-            $str .= $formats[$format];
+        $str .= '<select name="'.$elname.'[format]">';
+        foreach ($formats as $key=>$desc) {
+            $selected = ($format == $key) ? 'selected="selected"' : '';
+            $str .= '<option value="'.s($key).'" '.$selected.'>'.$desc.'</option>';
         }
+        $str .= '</select>';
         $str .= '</div>';
 
         if ($maxfiles != 0 ) { // 0 means no files, -1 unlimited
@@ -178,7 +167,7 @@ class MoodleQuickForm_editor extends HTML_QuickForm_element {
             $str .= '</div>';
 
         require_once($CFG->dirroot.'/repository/lib.php');
-        if(empty($COURSE->context)) {
+        if (empty($COURSE->context)) {
             $ctx = get_context_instance(CONTEXT_SYSTEM);
         } else {
             $ctx = $COURSE->context;
@@ -194,8 +183,7 @@ id2itemid['$id']   = '$draftitemid';
 </script>
 EOD;
 
-        /// TODO: hide embedded file manager if tinymce used
-        if ($editorclass === 'form-textarea-advanced') {
+        if ($editor->supports_repositories()) {
             $str .= <<<EOD
 <script type="text/javascript">
 //<![CDATA[
@@ -205,11 +193,9 @@ fileman.style.height = "0";
 //]]>
 </script>
 EOD;
-
             }
         }
 
-
         $str .= '</div>';
 
         return $str;
index 5c16f7c94f3c36e61b9d43117b74da893ed709f4..b7c5fbeaaf0742710bf1e286ae0544d3da5ab8c5 100644 (file)
@@ -4,13 +4,8 @@
 if (!defined('MOODLE_INTERNAL')) {
     die('Direct access to this script is forbidden.');    ///  It must be included from a Moodle page
 }
-
-if (can_use_html_editor() && !empty($CFG->editorsrc)) {
-    foreach ( $CFG->editorsrc as $scriptsource ) {
-        echo '<script type="text/javascript" src="'. $scriptsource .'"></script>'."\n";
-    }
-}
 ?>
+
 <!--<style type="text/css">/*<![CDATA[*/ body{behavior:url(<?php echo $CFG->httpswwwroot ?>/lib/csshover.htc);} /*]]>*/</style>-->
 
 <script type="text/javascript" src="<?php echo $CFG->httpswwwroot ?>/lib/javascript-static.js"></script>
@@ -45,3 +40,15 @@ if (!empty($focus)) {
 ?>
 //]]>
 </script>
+<?php 
+    // editors integrations
+    //TODO: optimise loading of editors
+    if (empty($CFG->texteditors)) {
+        $CFG->texteditors = 'tinymce,textarea';
+    }
+    $activeeditors = explode(',', $CFG->texteditors);
+    foreach ($activeeditors as $editor) {
+        $editor = get_texteditor($editor);
+        echo $editor->header_js();
+    }
+?>
\ No newline at end of file
index accd03680023f0ded5014ef1c28318a6f188be3c..16e153c5be001c84489474d10162b88891c07890 100644 (file)
@@ -5240,6 +5240,7 @@ class string_manager {
             'enrol_' => array('enrol'),
             'filter_' => array('filter'),
             'format_' => array('course/format'),
+            'editor_' => array('lib/editor'),
             'quiz_' => array('mod/quiz/report'),
             'qtype_' => array('question/type'),
             'qformat_' => array('question/format'),
@@ -6475,39 +6476,6 @@ function ini_get_bool($ini_get_arg) {
     return false;
 }
 
- /**
- * Get the list of available HTML editors
- */
-function get_available_html_editors() {
-    return array('tinymce'=>'TinyMCE');
-}
-
-/**
- * Determines if the HTML editor is enabled.
- *
- * This depends on site and user settings, as well as the current browser being
- * used.  The current requirements are based on Tinymce's, which are available
- * on http://wiki.moxiecode.com/index.php/TinyMCE:Compatiblity
- *
- * @return mixed false if editor cannot be used, or a string representing the compatible browser
- */
-function can_use_html_editor() {
-    global $USER, $CFG;
-
-    if (!empty($USER->htmleditor) and !empty($CFG->htmleditor)) {
-        if (check_browser_version('MSIE', 5.5)) {
-            return 'MSIE';
-        } else if (check_browser_version('Gecko', 20030516)) {
-            return 'Gecko';
-        } else if (check_browser_version('Safari', 3)) {
-            return 'Safari';
-        } else if (check_browser_version('Opera', 9)) {
-            return 'Opera';
-        }
-    }
-    return false;
-}
-
 /**
  * Can handle rotated text. Whether it is safe to use the trickery in textrotate.js.
  */
index 525286041ab8fb9a5749f4d655547a47bb92e4b4..23e5aafa817228f5050ef2b3b385c4f10e266c8b 100644 (file)
@@ -183,6 +183,7 @@ global $SCRIPT;
     require_once($CFG->libdir .'/eventslib.php');       // Events functions
     require_once($CFG->libdir .'/grouplib.php');        // Groups functions
     require_once($CFG->libdir .'/sessionlib.php');      // All session and cookie related stuff
+    require_once($CFG->libdir .'/editorlib.php');       // All text editor related functions and classes 
 
     //point pear include path to moodles lib/pear so that includes and requires will search there for files before anywhere else
     //the problem is that we need specific version of quickforms and hacked excel files :-(
index a547edcaf97c441c1cdec124bfa7036f23355431..a49ba3c23611538f932297f96b6be6e696f01f7b 100644 (file)
@@ -2356,10 +2356,6 @@ function print_header ($title='', $heading='', $navigation='', $focus='',
     $pageclass = $PAGE->bodyclasses;
     $bodytags .= ' class="'.$pageclass.'" id="'.$pageid.'"';
 
-    require_once($CFG->libdir .'/editor/htmlEditor.class.php');
-    $htmlEditorObject = new htmlEditor();
-    $htmlEditor = $htmlEditorObject->configure(NULL, $COURSE->id);
-
     ob_start();
     include($CFG->header);
     $output = ob_get_contents();
@@ -4880,11 +4876,11 @@ function print_recent_activity_note($time, $user, $text, $link, $return=false, $
  * @param string $id CSS ID to add to the textarea element.
  * @param string $editorclass CSS classes to add to the textarea element when using the htmleditor. Use 'form-textarea-simple' to get a basic editor. Defaults to 'form-textarea-advanced' (complete editor). If this is null or invalid, the htmleditor will not show for this field.
  */
-function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value='', $obsolete=0, $return=false, $id='', $editorclass='form-textarea-advanced') {
+function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value='', $obsolete=0, $return=false, $id='') {
     /// $width and height are legacy fields and no longer used as pixels like they used to be.
     /// However, you can set them to zero to override the mincols and minrows values below.
 
-    global $CFG, $COURSE, $HTTPSPAGEREQUIRED, $THEME;
+    global $CFG;
 
     $mincols = 65;
     $minrows = 10;
@@ -4894,7 +4890,7 @@ function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $v
         $id = 'edit-'.$name;
     }
 
-    if ( empty($CFG->editorsrc) && $usehtmleditor ) { // for backward compatibility.
+    if ($usehtmleditor) {
         if ($height && ($rows < $minrows)) {
             $rows = $minrows;
         }
@@ -4904,12 +4900,13 @@ function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $v
     }
 
     if ($usehtmleditor) {
-        $THEME->htmleditors[] = $id;
+        $editor = get_preferred_texteditor(FORMAT_HTML);
+        $editorclass = $editor->get_legacy_textarea_class();
     } else {
         $editorclass = '';
     }
 
-    $str .= "\n".'<textarea class="form-textarea '. $editorclass .'" id="'. $id .'" name="'. $name .'" rows="'. $rows .'" cols="'. $cols .'">'."\n";
+    $str .= "\n".'<textarea class="form-textarea '.$editorclass.'" id="'. $id .'" name="'. $name .'" rows="'. $rows .'" cols="'. $cols .'">'."\n";
     if ($usehtmleditor) {
         $str .= htmlspecialchars($value); // needed for editing of cleaned text!
     } else {
@@ -4917,31 +4914,6 @@ function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $v
     }
     $str .= '</textarea>'."\n";
 
-    if ($usehtmleditor) {
-        require_once("$CFG->dirroot/repository/lib.php");
-        $str_toggle = '<span class="helplink"><a href="javascript:mce_toggleEditor(\''. $id .'\');"><img width="50" height="17" src="'. $CFG->httpswwwroot .'/lib/editor/tinymce/images/toggle.gif" alt="'. get_string('editortoggle') .'" title="'. get_string('editortoggle') .'" class="icontoggle" /></a></span>';
-        // Show shortcuts button if HTML editor is in use, but only if JavaScript is enabled (MDL-9556)
-        if(empty($COURSE->context)) {
-            $ctx = get_context_instance(CONTEXT_SYSTEM);
-        } else {
-            $ctx = $COURSE->context;
-        }
-        $client_id = uniqid();
-        $ret = repository_get_client($ctx, $client_id, array('image', 'video', 'media'), '*');
-
-        $str .= $ret['css'].$ret['js'];
-        $str .= '<div class="textareaicons">';
-        $str .= '<script type="text/javascript">
-//<![CDATA[
-id2clientid[\''.$id.'\']=\''.$client_id.'\';
-mce_saveOnSubmit(\''.addslashes_js($id).'\');
-document.write(\''.addslashes_js($str_toggle).'\');
-document.write(\''.addslashes_js(editorshortcutshelpbutton()).'\');
-//]]>
-</script>';
-        $str .= '</div>';
-    }
-
     if ($return) {
         return $str;
     }
index aaa4a70936cdbd572d2ca426d7f9346280507dad..c935843bb4ce983193c5fcf544a33885b640dd6c 100644 (file)
@@ -166,7 +166,7 @@ function useredit_shared_definition(&$mform) {
         $mform->setDefault('trackforums', 0);
         $mform->setAdvanced('trackforums');
     }
-
+/* TODO: reimplement editor preferences
     if (!empty($CFG->htmleditor)) {
         $choices = array();
         $choices['0'] = get_string('texteditor');
@@ -175,7 +175,7 @@ function useredit_shared_definition(&$mform) {
         $mform->setDefault('htmleditor', 1);
         $mform->setAdvanced('htmleditor');
     }
-
+*/
     if (empty($CFG->enableajax)) {
         $mform->addElement('static', 'ajaxdisabled', get_string('ajaxuse'), get_string('ajaxno'));
         $mform->setAdvanced('ajaxdisabled');