$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));
$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);
--- /dev/null
+<?php
+
+$string['modulename'] = 'Plain text area';
-<?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';
$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';
$string['themes/simple:undo_desc'] = 'Undo (Ctrl+Z)';
$string['themes/simple:redo_desc'] = 'Redo (Ctrl+Y)';
$string['themes/simple:cleanup_desc'] = 'Cleanup messy code';
-
-?>
$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];
$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;
'auth' => 'auth',
'enrol' => 'enrol',
'format' => 'course/format',
+ 'editor' => 'lib/editor',
'gradeexport' => 'grade/export',
'gradeimport' => 'grade/import',
'gradereport' => 'grade/report',
+++ /dev/null
-<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
+++ /dev/null
- 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
+++ /dev/null
-<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
+++ /dev/null
-<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
+++ /dev/null
-<!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
+++ /dev/null
-<!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
+++ /dev/null
-<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
+++ /dev/null
-\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 & Close" onclick="updateit()">\r
-</body>\r
-</html>\r
+++ /dev/null
-<?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>
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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> + </mo>]]></output> \r
- </Add>\r
- <Multiply>\r
- <output><![CDATA[<mo> ⋅ </mo>]]></output>\r
- </Multiply> \r
- <Multiply2>\r
- <output><![CDATA[<mo> × </mo>]]></output>\r
- </Multiply2>\r
- <Equals>\r
- <output><![CDATA[<mo> = </mo>]]></output>\r
- </Equals>\r
- <Union>\r
- <output><![CDATA[<mo> ⋃ </mo>]]></output>\r
- </Union>\r
- <Intersection>\r
- <output><![CDATA[<mo> ⋂ </mo>]]></output>\r
- </Intersection>\r
- <Comma>\r
- <output><![CDATA[<mo> , </mo>]]></output>\r
- </Comma>\r
- <Equiv>\r
- <output><![CDATA[ <mo> ≡ </mo>]]></output>\r
- </Equiv>\r
- \r
- \r
- \r
- <!-- Functions -->\r
- <UMinus>\r
- <output1><![CDATA[<mo> − </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> ≠ </mo>]]></output2>\r
- <output3></output3>\r
- </NotEqual>\r
- <PlusMinus>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ± </mo>]]></output2>\r
- <output3></output3>\r
- </PlusMinus>\r
- <Assignment>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ≔ </mo>]]></output2>\r
- <output3></output3>\r
- </Assignment>\r
- <Subtract>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> − </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> ÷ </mo>]]></output2>\r
- <output3></output3>\r
- </Divide2>\r
- <LessThan>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> < </mo>]]></output2>\r
- <output3></output3>\r
- </LessThan> \r
- <GreaterThan>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> > </mo>]]></output2>\r
- <output3></output3>\r
- </GreaterThan> \r
- <LTEQ>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ≤ </mo>]]></output2>\r
- <output3></output3>\r
- </LTEQ> \r
- <GTEQ>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ≥ </mo>]]></output2>\r
- <output3></output3>\r
- </GTEQ> \r
- <Subset>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ⊂ </mo>]]></output2>\r
- <output3></output3>\r
- </Subset> \r
- <SubsetEq>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ⊆ </mo>]]></output2>\r
- <output3></output3>\r
- </SubsetEq> \r
- <NSubset>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ⊄ </mo> ]]></output2>\r
- <output3></output3>\r
- </NSubset> \r
- <NSubsetEq>\r
- <output1></output1>\r
- <output2><![CDATA[<mo> ⊈ </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>∫</mo> <mrow>]]></output1>\r
- <output2><![CDATA[</mrow> <mo>ⅆ</mo> <mrow>]]></output2>\r
- <output3><![CDATA[</mrow> </mrow>]]></output3>\r
- </Integral>\r
- <Differential order="1,0">\r
- <output1><![CDATA[<mrow> <mfrac> <mrow><mo>ⅆ</mo></mrow> <mrow><mo>ⅆ</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>∂</mo></mrow> <mrow><mo>∂</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>∑</mo> <mrow>]]></output1>\r
- <output2><![CDATA[ <mo> = </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>∏</mo> <mrow>]]></output1>\r
- <output2><![CDATA[<mo> = </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>→</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> = </mo>]]></output3>\r
- <output4><![CDATA[ </mrow> </msub>]]></output4>\r
- </Evaluate>\r
- <DefiniteIntegral order="2,3,0,1">\r
- <output1><![CDATA[<mrow> <msubsup> <mo>∫</mo> <mrow>]]></output1>\r
- <output2><![CDATA[</mrow> <mrow>]]></output2>\r
- <output3><![CDATA[</mrow> </msubsup> <mrow>]]></output3>\r
- <output4><![CDATA[</mrow> <mo>ⅆ</mo> <mrow>]]></output4>\r
- <output5><![CDATA[</mrow> </mrow>]]></output5>\r
- </DefiniteIntegral>\r
- <LeftArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ← </mo>]]></output2>\r
- <output3></output3>\r
- </LeftArrow> \r
- <RightArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> → </mo>]]></output2>\r
- <output3></output3>\r
- </RightArrow> \r
- <UpArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↑ </mo>]]></output2>\r
- <output3></output3>\r
- </UpArrow> \r
- <DownArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↓ </mo>]]></output2>\r
- <output3></output3>\r
- </DownArrow> \r
- <LeftDblArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ⇐ </mo>]]></output2>\r
- <output3></output3>\r
- </LeftDblArrow> \r
- <RightDblArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ⇒ </mo>]]></output2>\r
- <output3></output3>\r
- </RightDblArrow> \r
- <LeftRightArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↔ </mo>]]></output2>\r
- <output3></output3>\r
- </LeftRightArrow> \r
- <LeftRightDblArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ⇔ </mo>]]></output2>\r
- <output3></output3>\r
- </LeftRightDblArrow> \r
- <NorthEastArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↗ </mo>]]></output2>\r
- <output3></output3>\r
- </NorthEastArrow> \r
- <SouthEastArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↘ </mo>]]></output2>\r
- <output3></output3>\r
- </SouthEastArrow> \r
- <NorthWestArrow> \r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↖ </mo>]]></output2>\r
- <output3></output3>\r
- </NorthWestArrow> \r
- <SouthWestArrow>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ↙ </mo>]]></output2>\r
- <output3></output3>\r
- </SouthWestArrow> \r
- \r
- <Exists>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∃ </mo>]]></output2>\r
- <output3></output3>\r
- </Exists>\r
- <ForAll>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∀ </mo>]]></output2>\r
- <output3></output3>\r
- </ForAll>\r
- <IsIn> \r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∈ </mo>]]></output2>\r
- <output3></output3>\r
- </IsIn>\r
- <NotExists>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∄ </mo>]]></output2>\r
- <output3></output3>\r
- </NotExists>\r
- <NotIn>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∉ </mo>]]></output2>\r
- <output3></output3>\r
- </NotIn>\r
- <SimEq>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ≃ </mo>]]></output2>\r
- <output3></output3>\r
- </SimEq>\r
- <Or> \r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∨ </mo>]]></output2>\r
- <output3></output3>\r
- </Or>\r
- <And>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ∧ </mo>]]></output2>\r
- <output3></output3>\r
- </And>\r
- <Not>\r
- <output1></output1>\r
- <output2><![CDATA[ <mo> ¬ </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> ∞ </mi>]]></output>\r
- </Infinity>\r
- \r
- <Γ>\r
- <output> <![CDATA[<mi> Γ </mi>]]> </output>\r
- </Γ>\r
- <Δ>\r
- <output> <![CDATA[<mi> Δ </mi>]]> </output>\r
- </Δ>\r
- <Θ>\r
- <output> <![CDATA[<mi> Θ </mi>]]> </output>\r
- </Θ>\r
- <Λ>\r
- <output> <![CDATA[<mi> &Lamda; </mi>]]> </output>\r
- </Λ>\r
- <Ξ>\r
- <output> <![CDATA[<mi> Ξ </mi>]]> </output>\r
- </Ξ>\r
- <Π>\r
- <output> <![CDATA[<mi> Π </mi>]]> </output>\r
- </Π>\r
- <Σ>\r
- <output> <![CDATA[<mi> Σ </mi>]]> </output>\r
- </Σ>\r
- <Υ>\r
- <output> <![CDATA[<mi> Υ </mi>]]> </output>\r
- </Υ>\r
- <Φ>\r
- <output> <![CDATA[<mi> Φ </mi>]]> </output>\r
- </Φ>\r
- <Ψ>\r
- <output> <![CDATA[<mi> Ψ </mi>]]> </output>\r
- </Ψ>\r
- <Ω>\r
- <output> <![CDATA[<mi> Ω </mi>]]> </output>\r
- </Ω>\r
- \r
- \r
- <α>\r
- <output> <![CDATA[<mi> α </mi>]]> </output>\r
- </α>\r
- <β>\r
- <output> <![CDATA[<mi> β </mi>]]> </output>\r
- </β>\r
- <γ>\r
- <output> <![CDATA[<mi> γ </mi>]]> </output>\r
- </γ>\r
- <δ>\r
- <output> <![CDATA[<mi> δ </mi>]]> </output>\r
- </δ>\r
- <ε>\r
- <output> <![CDATA[<mi> ε </mi>]]> </output>\r
- </ε>\r
- <ζ>\r
- <output> <![CDATA[<mi> ζ </mi>]]> </output>\r
- </ζ>\r
- <η>\r
- <output> <![CDATA[<mi> η </mi>]]> </output>\r
- </η>\r
- <θ>\r
- <output> <![CDATA[<mi> θ </mi>]]> </output>\r
- </θ>\r
- <ι>\r
- <output> <![CDATA[<mi> ι </mi>]]> </output>\r
- </ι>\r
- <κ>\r
- <output> <![CDATA[<mi> κ </mi>]]> </output>\r
- </κ>\r
- <λ>\r
- <output> <![CDATA[<mi> &lamda; </mi>]]> </output>\r
- </λ>\r
- <μ>\r
- <output> <![CDATA[<mi> μ </mi>]]> </output>\r
- </μ>\r
- <ν>\r
- <output> <![CDATA[<mi> ν </mi>]]> </output>\r
- </ν>\r
- <ξ>\r
- <output> <![CDATA[<mi> ξ </mi>]]> </output>\r
- </ξ>\r
- <π>\r
- <output> <![CDATA[<mi> π </mi>]]> </output>\r
- </π>\r
- <ρ>\r
- <output> <![CDATA[<mi> ρ </mi>]]> </output>\r
- </ρ>\r
- <σ>\r
- <output> <![CDATA[<mi> σ </mi>]]> </output>\r
- </σ>\r
- <τ>\r
- <output> <![CDATA[<mi> τ </mi>]]> </output>\r
- </τ>\r
- <υ>\r
- <output> <![CDATA[<mi> υ </mi>]]> </output>\r
- </υ>\r
- <φ>\r
- <output> <![CDATA[<mi> φ </mi>]]> </output>\r
- </φ>\r
- <χ>\r
- <output> <![CDATA[<mi> χ </mi>]]> </output>\r
- </χ>\r
- <ψ>\r
- <output> <![CDATA[<mi> ψ </mi>]]> </output>\r
- </ψ> \r
- <ω>\r
- <output> <![CDATA[<mi> ω </mi>]]> </output>\r
- </ω>\r
-</Syntax>\r
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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>
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-\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> \r
-<a href="demo.html">Demonstration</a> \r
-<a href="index.html#Download">Download</a> \r
-<a href="doc/index.html">Documentation</a> \r
-<a href="integrations.html">Integrations</a> \r
-<a href="support.html">Support DragMath</a> \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
- </p>\r
-<hr />\r
-<center>\r
-<p>© 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-</p>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<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
+++ /dev/null
-<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
+++ /dev/null
-<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 <APPLET> 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 <APPLET> tag should be used:\r
-</p>\r
- <p>\r
-<STRONG>\r
-<FONT color=#800080><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>><BR>\r
-<FONT color=#800080><param</FONT> \r
-name=</STRONG>\r
-<FONT color=#0000ff>language </FONT>\r
-<STRONG>value=</STRONG>\r
-<FONT color=#0000ff>"en"</FONT>\r
-<STRONG> ><BR>\r
-<FONT color=#800080></applet ></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
+++ /dev/null
-<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><</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><=</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
+++ /dev/null
-<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
+++ /dev/null
-<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
+++ /dev/null
-<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
+++ /dev/null
-<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
+++ /dev/null
-<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><ReadingFile></font>\r
-Error reading format file: Check file is valid\r
-<font color=#800080></ReadingFile></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
+++ /dev/null
-<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
+++ /dev/null
-<!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, 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 <BR> <STRONG><FONT\r
-color=#800080><Add></FONT><BR> \r
-<FONT color=#800080><output></FONT>+<FONT\r
-color=#800080></output><BR></FONT> <FONT\r
-color=#800080></Add><BR></FONT></STRONG><BR>Binary Operators have 3\r
-\91output\92 elements e.g. for fraction in Latex this is<BR> <FONT\r
-color=#800080><STRONG><Divide</STRONG> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>></STRONG></FONT><BR> \r
-<STRONG><FONT color=#800080><output1></FONT>\frac<FONT color=#800080><FONT\r
-color=#000000>{</FONT></output1></FONT><BR> \r
-<FONT color=#800080><output2></FONT>}{<FONT\r
-color=#800080></output2><BR></FONT> \r
-<FONT color=#800080><output3></FONT>}<FONT\r
-color=#800080></output3><BR></FONT> <FONT\r
-color=#800080></Divide></FONT><BR></STRONG><BR>Functions have 2 \91output\92\r
-elements e.g. for square root in Latex this is<BR> <STRONG> \r
-</STRONG><FONT color=#800080><STRONG><SquareRoot</STRONG> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>><BR> \r
-<output1><FONT\r
-color=#000000>\sqrt{</FONT></output1><BR> \r
-<output2><FONT\r
-color=#000000>}</FONT></output2><BR> \r
-</SquareRoot></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> \r
-<FONT color=#800080><STRONG><DefiniteIntegral</STRONG> <FONT\r
-color=#000000>reverse=</FONT><FONT\r
-color=#0000ff>"true"</FONT><STRONG>><BR> \r
-<output1> <FONT\r
-color=#000000>\int_{</FONT></output1><BR> \r
-<output2><FONT\r
-color=#000000>}^{</FONT></output2><BR> \r
-<output3><FONT\r
-color=#000000>}</FONT></output3><BR> \r
-<output4><FONT\r
-color=#000000>\,\mathrm{d</FONT></output4><BR> \r
-<output5><FONT\r
-color=#000000>}</FONT></output5><BR> \r
-</DefiniteIntegral></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> </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> <STRONG> <FONT color=#800080>\r
-<Infinity><BR> \r
-<output><FONT\r
-color=#000000>\infty</FONT></output><BR> \r
-</Infinity></FONT></STRONG><BR><BR>Groupings have 2 \91output\92 elements e.g.\r
-for square brackets in Latex this is<BR> <FONT\r
-color=#800080><STRONG><BracketsSq><BR> \r
-<output1><FONT\r
-color=#000000>\left[</FONT></output1><BR> \r
-<output2><FONT\r
-color=#000000>\right]</FONT></output2><BR> \r
-</BracketsSq></STRONG><BR></FONT><BR>Matrix in Latex is as\r
-follows:<BR> <STRONG><FONT\r
-color=#800080><Matrix><BR> \r
-<matrixStart><FONT color=#000000>\left(\r
-\begin{array}{ccc}</FONT></matrixStart><BR> \r
-<rowStart /><BR> \r
-<elementStart /><BR> \r
-<elementEnd /><BR> \r
-<elementSeparator><FONT color=#808000><![CDATA[ &\r
-]]></FONT></elementSeparator><BR> \r
-<rowEnd> <FONT\r
-color=#000000>\\</FONT> </rowEnd><BR> \r
-<rowSeparator /><BR> \r
-<matrixEnd><FONT color=#000000>\end{array}\r
-\right)</FONT></matrixEnd><BR> \r
-</Matrix></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. 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> </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 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> <FONT\r
-color=#800080><STRONG><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>><BR> \r
-<output1><FONT color=#000000>\sqrt[</FONT>\r
-</output1><BR> \r
-<output2><FONT\r
-color=#000000>]{</FONT></output2><BR> \r
-<output3><FONT\r
-color=#000000>}</FONT></output3><BR> \r
-</NthRoot></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> </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 Sum in Latex.\r
-Obviously, the default order for this is 0,1,2,3, and it is being\r
-changed to 1,2,3,0.<BR> <FONT\r
-color=#800080><STRONG><Sum</STRONG> <FONT color=#000000>order=</FONT><FONT\r
-color=#0000ff>"1,2,3,0"</FONT><STRONG>><BR> \r
-<output1> <FONT\r
-color=#000000>\sum_{{</FONT></output1><BR> \r
-<output2><FONT\r
-color=#000000>}={</FONT></output2><BR> \r
-<output3><FONT\r
-color=#000000>}}^{</FONT></output3><BR> \r
-<output4><FONT\r
-color=#000000>}</FONT></output4><BR> \r
-<output5></output5><BR> \r
-</Sum></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> <FONT\r
-color=#800080><STRONG><name</STRONG> <FONT\r
-color=#000000>AutoBrackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>><FONT\r
-color=#000000>Latex</FONT></name></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> </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> <STRONG><FONT\r
-color=#800080><Sine><BR> \r
-<output1><FONT color=#000000>\sin</FONT>\r
-</output1><BR> <output2\r
-/><BR> </Sine></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> <STRONG> </STRONG><FONT\r
-color=#800080><STRONG><SquareRoot</STRONG> <FONT\r
-color=#000000>brackets=</FONT><FONT\r
-color=#0000ff>"false"</FONT><STRONG>><BR> \r
-<output1><FONT\r
-color=#000000>\sqrt{</FONT></output1><BR> \r
-<output2><FONT\r
-color=#000000>}</FONT></output2><BR> \r
-</SquareRoot></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> </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> <STRONG><FONT\r
-color=#800080><Add> <BR> \r
-<initial><FONT\r
-color=#000000><times/></FONT></initial><BR> \r
-<output</output> <BR> \r
-</Add><BR></FONT></STRONG><BR> \91a x b x c\92 would then be converted\r
-to,<BR> \r
-<times/><BR> \r
-<ci>a</ci><BR> \r
-<ci>b</ci><BR> \r
-<ci>c</ci> </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> </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> <STRONG><FONT\r
-color=#800080><Union><BR> \r
-<initial><FONT\r
-color=#000000>union(</FONT></initial><BR> \r
-<output><FONT\r
-color=#000000>,</FONT></output><BR> \r
-<final><FONT color=#000000>)</FONT></final><BR> \r
-</Union></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> </DIV></SPAN></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT></BODY></HTML>\r
+++ /dev/null
-<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> N-ary operator - 1\r
-<br> Binary Operator - 2\r
-<br> Function - 3\r
-<br> The name of the GIF file that holds a transparent image of the object, of size 16x16, 24x24 or 32x32 pixels.<BR> 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 ‘inputComponents’ 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 ‘value’ 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
+++ /dev/null
-<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
+++ /dev/null
-<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 <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><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>></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><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>></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><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>></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
+++ /dev/null
-\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> \r
-<a href="demo.html">Demonstration</a> \r
-<a href="#Download">Download</a> \r
-<a href="doc/index.html">Documentation</a> \r
-<a href="integrations.html">Integrations</a> \r
-<a href="support.html">Support DragMath</a> \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&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>© 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-\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> \r
-<a href="demo.html">Demonstration</a> \r
-<a href="index.html#Download">Download</a> \r
-<a href="doc/index.html">Documentation</a> \r
-<a href="integrations.html">Integrations</a> \r
-<a href="support.html">Support DragMath</a> \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>© 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-\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> \r
-<a href="demo.html">Demonstration</a> \r
-<a href="index.html#Download">Download</a> \r
-<a href="doc/index.html">Documentation</a> \r
-<a href="integrations.html">Integrations</a> \r
-<a href="support.html">Support DragMath</a> \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
- </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>© 2008 Alex Billingsley, Chris Sangwin\r
-</center>\r
-\r
-\r
-</font>\r
-\r
-</body>\r
-</html>
\ No newline at end of file
+++ /dev/null
-<?php
-
-/**
- *
- * @copyright © 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&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];
- }
-}
-
-?>
--- /dev/null
+<?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 '';
+ }
+}
+
+
--- /dev/null
+<?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;
-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
--- /dev/null
+<?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;
+}
--- /dev/null
+<?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;
+++ /dev/null
-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$
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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(/ /gi," ");rep(/"/gi,"\"");rep(/</gi,"<");rep(/>/gi,">");rep(/&/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> ");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");return s;}});tinymce.PluginManager.add('bbcode',tinymce.plugins.BBCodePlugin);})();
\ No newline at end of file
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-/**\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
+++ /dev/null
-<?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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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">·</span>':' ');});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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-<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
+++ /dev/null
-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
+++ /dev/null
-.sourceIframe {\r
- border: 1px solid #808080;\r
-}\r
+++ /dev/null
-(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> <\/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]> <\/h[1-6]>/gi,'<p> </p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b> <\/b>/gi,'<b> </b>');content=content.replace(/^( )*/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--| ',"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+| )').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--| ',"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
+++ /dev/null
-/**\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> <\/p>/gi, ""); // Remove pagebreaks\r
- content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks\r
-\r
- // content = content.replace(/\/? */gi, ""); \r
- // content = content.replace(/<p> <\/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]> <\/h[1-6]>/gi, '<p> </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> <\/b>/gi, '<b> </b>');\r
- content = content.replace(/^( )*/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--| ', "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+| )').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--| ', "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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-<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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-(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
+++ /dev/null
-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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-<?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 . '}';
- }
-}
-
-?>
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-(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
+++ /dev/null
-<?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
+++ /dev/null
-<?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
+++ /dev/null
-(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
+++ /dev/null
-(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> </$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
+++ /dev/null
-(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
+++ /dev/null
-(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(/(·|\u00b7)/g,' '),d);}}});tinymce.PluginManager.add('visualchars',tinymce.plugins.VisualChars);})();
\ No newline at end of file
+++ /dev/null
-(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
+++ /dev/null
-(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')+': ':' ');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
+++ /dev/null
-(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
+++ /dev/null
-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"> </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(/'/g,"'")}}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"&";case'"':return""";case"<":return"<";case">":return">"}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,">")}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"<";case">":return">";case"&":return"&";case'"':return"""}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=" ";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> </p>":"<p$1> </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> <\/p>|<p([^>]+)> <\/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>( | |\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| | )</"+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( )([^>]+)>( | )<\\/p>|<p>( | )<\\/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?" ":"<br />";return b[0]}else{s.innerHTML=C?" ":"<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
--- /dev/null
+<?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().'&etheme='.current_theme().'&eusehttps='.$usehttps.'"></script>'."\n";
+ return $js;
+ }
+
+}
\ No newline at end of file
--- /dev/null
+(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
<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
<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
--- /dev/null
+(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
<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
</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
\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
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
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
--- /dev/null
+(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
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
\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
<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
\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"> </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"> </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"> </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
\r
<table border="0" cellpadding="0" cellspacing="4">\r
<tr>\r
- <td nowrap="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label> </td>\r
+ <td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label> </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> </td>\r
+ <td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label> </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> </td>\r
- <td nowrap="nowrap">\r
+ <td class="nowrap"><label>{#advlink_dlg.popup_size}</label> </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> </td>\r
- <td nowrap="nowrap">\r
+ <td class="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label> </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
--- /dev/null
+(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
--- /dev/null
+(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(/ /gi," ");b(/"/gi,'"');b(/</gi,"<");b(/>/gi,">");b(/&/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> ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span> ');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();
\ No newline at end of file
--- /dev/null
+(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
--- /dev/null
+(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
--- /dev/null
+(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
##\r
#################################################################################\r
\r
- require("../../../../../../../config.php");\r
+ require("../../../../../config.php");\r
\r
$id = optional_param('id', SITEID, PARAM_INT);\r
\r
\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
--- /dev/null
+(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
-<!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
--- /dev/null
+(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
--- /dev/null
+(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
_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
<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> </td>\r
+ <td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label> </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> </td>\r
+ <td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label> </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> </td>\r
+ <td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label> </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> </td>\r
+ <td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label> </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> </td>\r
+ <td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label> </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> </td>\r
+ <td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label> </td>\r
<td>\r
<select id="metarobots" name="metarobots">\r
<option value="">{#not_set}</option> \r
</td> \r
</tr>\r
<tr>\r
- <td nowrap="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label> </td>\r
+ <td class="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label> </td>\r
<td>\r
<select id="doctypes" name="doctypes">\r
<option value="">{#not_set}</option>\r
</td>\r
</tr>\r
<tr>\r
- <td nowrap="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label> </td>\r
+ <td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label> </td>\r
<td><input type="text" id="langcode" name="langcode" value="" /></td>\r
</tr>\r
<tr>\r
</td> \r
</tr>\r
<tr>\r
- <td nowrap="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label> </td>\r
+ <td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label> </td>\r
<td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>\r
</tr>\r
</table>\r
--- /dev/null
+(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
// 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
--- /dev/null
+(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
--- /dev/null
+(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
} 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
.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}
--- /dev/null
+(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
--- /dev/null
+(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
--- /dev/null
+(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
\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
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
\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
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
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
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
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
\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
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
<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
<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 & 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
</tr>\r
<tr id="linklistrow">\r
<td><label for="linklist">{#media_dlg.list}</label></td>\r
- <td id="linklistcontainer"> </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
--- /dev/null
+(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">·</span>':" ")});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
--- /dev/null
+(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
--- /dev/null
+(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
--- /dev/null
+(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"}," ");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*( )+/g,/( |<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,[/ /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*( |\u00a0)+\s*/,"")}else{n=q.innerHTML.replace(/^[\s\S]*\w+\.( |\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"> </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
--- /dev/null
+/**\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'}, ' ');\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*( )+/g, // nbsp entities at the start of contents\r
+ /( |<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
+ [/ /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 \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*( |\u00a0)+\s*/, '');\r
+ else\r
+ html = p.innerHTML.replace(/^[\s\S]*\w+\.( |\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"> </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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+<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
<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
\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
--- /dev/null
+(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
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()
+<!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
--- /dev/null
+(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
--- /dev/null
+(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
*/\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
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
--- /dev/null
+(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
--- /dev/null
+(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
<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
--- /dev/null
+(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
--- /dev/null
+(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
"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
}\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
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
<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">
--- /dev/null
+(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
--- /dev/null
+/**\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
<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
--- /dev/null
+(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> </$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
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
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
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
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
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
<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
<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
<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
<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
--- /dev/null
+(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
<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
--- /dev/null
+(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(/(·|\u00b7)/g," "),k)}}}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})();
\ No newline at end of file
<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
<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
<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
<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
<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
<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
--- /dev/null
+(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
<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
<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
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
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
--- /dev/null
+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$
+++ /dev/null
-<?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;
-
-?>
-<!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
<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
<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
-<!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
<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
<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
--- /dev/null
+(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")+": ":" ");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
* @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') + ': ' : ' ');\r
+ n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' ');\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
<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
<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
\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
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
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
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
<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
\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
<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
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
#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
.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
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
#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
.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
/* 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
/* 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
<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
--- /dev/null
+(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
.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
.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
--- /dev/null
+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"> </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(/'/g,"'");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"&";case'"':return""";case"<":return"<";case">":return">"}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]+| | /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,">")}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"<";case">":return">";case"&":return"&";case'"':return"""}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=" ";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> </p>":"<p$1> </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> <\/p>|<p([^>]+)> <\/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[^>]*>( | |\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| | )</"+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()([^>]+)>( | )<\\/%p>|<%p>( | )<\\/%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?" ":"<br />";return r[0]}else{y.innerHTML=c?" ":"<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
--- /dev/null
+
+// 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
+/**\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
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
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
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
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
}\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
});\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
},*/\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
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
},\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
-\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
// 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
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
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
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
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
\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
}\r
\r
});\r
-\r
-/* file:jscripts/tiny_mce/classes/util/URI.js */\r
-\r
(function() {\r
var each = tinymce.each;\r
\r
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
},\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
\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
\r
});\r
})();\r
-\r
-/* file:jscripts/tiny_mce/classes/util/Cookie.js */\r
-\r
(function() {\r
var each = tinymce.each;\r
\r
\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
}\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
}\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
\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
}\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
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
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
};\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
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
},\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
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
});\r
},\r
\r
- // #endif\r
\r
getAttrib : function(e, n, dv) {\r
var v, t = this;\r
\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
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
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
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
});\r
},\r
\r
- // #if !jquery\r
\r
addClass : function(e, c) {\r
return this.run(e, function(e) {\r
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
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
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(/'/g, '''); // 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
});\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
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
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
},\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
}) : s;\r
},\r
\r
- // #if !jquery\r
\r
insertAfter : function(n, r) {\r
var t = this;\r
});\r
},\r
\r
- // #endif\r
\r
isBlock : function(n) {\r
if (n.nodeType && n.nodeType !== 1)\r
\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
\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
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]+| | /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
\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
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
}\r
},\r
\r
- // #endif\r
\r
cancel : function(e) {\r
if (!e)\r
_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
},\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
// 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
'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
}\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
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
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 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
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
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
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
}\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
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
},\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
}\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
}\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
}\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
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
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
\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
\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
\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
\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
}\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
}\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
\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
allDone();\r
}\r
});\r
+ */\r
};\r
\r
each(sc, function(o) {\r
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
_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
\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
}\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
\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
}\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
}\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
}\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
\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
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
},\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
\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
}\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
}\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
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
}\r
\r
e = 0;\r
- } else\r
- t.selectedValue = t.selectedIndex = null;\r
+ }\r
},\r
\r
add : function(n, v, o) {\r
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
}\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
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
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
}\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
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
}\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
}\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
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
\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
}\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
}\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
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
// 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
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
// 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
});\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
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
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
});\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
EditorManager.triggerSave();\r
t.isNotDirty = 1;\r
\r
- return this._mceOldSubmit(this);\r
+ return t.formElement._mceOldSubmit(t.formElement);\r
};\r
}\r
\r
\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
\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
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
});\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
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
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
});\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>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');\r
+ o.content = o.content.replace(/^(<p[^>]*>( | |\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
e = null;\r
},\r
\r
- \r
+\r
focus : function(sf) {\r
var oed, t = this, ce = t.settings.content_editable;\r
\r
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
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
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
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
\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
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
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
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
}\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
\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
}\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
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
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
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
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
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
},\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
\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
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
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
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
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
}\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
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
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
// 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
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
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
});\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
\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
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
t.reOpera = new RegExp('(\\u00a0| | )<\/' + 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( )([^>]+)>( | )<\\\/p>|<p>( | )<\\\/p>'.replace(/p/g, elm), 'gi');\r
+ t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%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
// Use 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
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
\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
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
}\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
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
\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
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
}, 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
// 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
\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
\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
}\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
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
}\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
+++ /dev/null
-<?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;
-
-?>
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') + '"> </span></a>';\r
\r
return h;\r
}\r
\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') + '"> </span></a>';\r
\r
return html;\r
}\r
--- /dev/null
+<?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
--- /dev/null
+<?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;
+}
// 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';
// * locking
// * freezing
// * ajax format conversion
-// * tinymce integration
// * better area files handling
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
$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;
</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[
//]]>
</script>
EOD;
-
}
}
-
$str .= '</div>';
return $str;
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>
?>
//]]>
</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
'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'),
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.
*/
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 :-(
$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();
* @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;
$id = 'edit-'.$name;
}
- if ( empty($CFG->editorsrc) && $usehtmleditor ) { // for backward compatibility.
+ if ($usehtmleditor) {
if ($height && ($rows < $minrows)) {
$rows = $minrows;
}
}
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 {
}
$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;
}
$mform->setDefault('trackforums', 0);
$mform->setAdvanced('trackforums');
}
-
+/* TODO: reimplement editor preferences
if (!empty($CFG->htmleditor)) {
$choices = array();
$choices['0'] = get_string('texteditor');
$mform->setDefault('htmleditor', 1);
$mform->setAdvanced('htmleditor');
}
-
+*/
if (empty($CFG->enableajax)) {
$mform->addElement('static', 'ajaxdisabled', get_string('ajaxuse'), get_string('ajaxno'));
$mform->setAdvanced('ajaxdisabled');