upgrade to TinyMCE v2.0.8
27 files added
4 files deleted
35 files modified
| | |
| | | CHANGELOG RoundCube Webmail |
| | | --------------------------- |
| | | |
| | | 2006/11/07 (estadtherr) |
| | | ---------- |
| | | - Upgraded to TinyMCE v2.0.8 |
| | | - Fixed CSS path for editor popups |
| | | |
| | | |
| | | 2006/09/26 (estadtherr) |
| | | ---------- |
| | | - Added spellchecker plugin to TinyMCE configuration |
| | |
| | | accessibility_focus : false, |
| | | apply_source_formatting : true, |
| | | theme : 'advanced', |
| | | plugins : 'emotions,table,searchreplace,spellchecker', |
| | | plugins : 'emotions,media,nonbreaking,table,searchreplace,spellchecker,visualchars', |
| | | theme_advanced_buttons1 : 'bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,separator,bullist,numlist,outdent,indent,separator,forecolor,backcolor,formatselect,fontselect,fontsizeselect', |
| | | theme_advanced_buttons2 : 'undo,redo,image,hr,link,unlink,emotions,charmap,code,separator,search,replace,spellchecker,separator,tablecontrols', |
| | | theme_advanced_buttons2 : 'undo,redo,image,media,hr,link,unlink,emotions,charmap,code,nonbreaking,visualchars,separator,search,replace,spellchecker,separator,tablecontrols', |
| | | theme_advanced_buttons3 : '', |
| | | theme_advanced_toolbar_location : 'top', |
| | | theme_advanced_toolbar_align : 'left', |
| | | extended_valid_elements : 'font[face|size|color|style],span[id|class|align|style]', |
| | | content_css : skin_path + '/editor_content.css', |
| | | popups_css : skin_path + '/editor_popups.css', |
| | | popups_css : skin_path + '/editor_popup.css', |
| | | editor_css : skin_path + '/editor_ui.css' |
| | | }); |
| | | } |
| | |
| | | Language packs are from version 2.0.5 removed from the core but can be downloadable from the TinyMCE website.
|
| | | Beginning with version 2.0.5 the language packs are no
|
| | | longer included with the core distribution.
|
| | | Language packs can be downloaded from the TinyMCE website:
|
| | | http://tinymce.moxiecode.com/download.php
|
| | |
|
| | | The language pack codes are based on ISO-639-1
|
| | | The language pack codes are based on ISO-639-1:
|
| | | http://www.loc.gov/standards/iso639-2/englangn.html
|
| | |
|
| | | Try using entires if possible. å etc.
|
| | | Plrease try using entities if possible. Like å etc for non a-z characters.
|
| | |
| | | GNU LIBRARY GENERAL PUBLIC LICENSE
|
| | | Version 2, June 1991
|
| | | GNU LESSER GENERAL PUBLIC LICENSE
|
| | | Version 2.1, February 1999
|
| | |
|
| | | Copyright (C) 1991 Free Software Foundation, Inc.
|
| | | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
| | | Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
| | | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| | | Everyone is permitted to copy and distribute verbatim copies
|
| | | of this license document, but changing it is not allowed.
|
| | |
|
| | | [This is the first released version of the library GPL. It is
|
| | | numbered 2 because it goes with version 2 of the ordinary GPL.]
|
| | | [This is the first released version of the Lesser GPL. It also counts
|
| | | as the successor of the GNU Library Public License, version 2, hence
|
| | | the version number 2.1.]
|
| | |
|
| | | Preamble
|
| | |
|
| | |
| | | Licenses are intended to guarantee your freedom to share and change
|
| | | free software--to make sure the software is free for all its users.
|
| | |
|
| | | This license, the Library General Public License, applies to some
|
| | | specially designated Free Software Foundation software, and to any
|
| | | other libraries whose authors decide to use it. You can use it for
|
| | | your libraries, too.
|
| | | This license, the Lesser General Public License, applies to some
|
| | | specially designated software packages--typically libraries--of the
|
| | | Free Software Foundation and other authors who decide to use it. You
|
| | | can use it too, but we suggest you first think carefully about whether
|
| | | this license or the ordinary General Public License is the better
|
| | | strategy to use in any particular case, based on the explanations below.
|
| | |
|
| | | When we speak of free software, we are referring to freedom, not
|
| | | price. Our General Public Licenses are designed to make sure that you
|
| | | have the freedom to distribute copies of free software (and charge for
|
| | | this service if you wish), that you receive source code or can get it
|
| | | if you want it, that you can change the software or use pieces of it
|
| | | in new free programs; and that you know you can do these things.
|
| | | When we speak of free software, we are referring to freedom of use,
|
| | | not price. Our General Public Licenses are designed to make sure that
|
| | | you have the freedom to distribute copies of free software (and charge
|
| | | for this service if you wish); that you receive source code or can get
|
| | | it if you want it; that you can change the software and use pieces of
|
| | | it in new free programs; and that you are informed that you can do
|
| | | these things.
|
| | |
|
| | | To protect your rights, we need to make restrictions that forbid
|
| | | anyone to deny you these rights or to ask you to surrender the rights.
|
| | | These restrictions translate to certain responsibilities for you if
|
| | | you distribute copies of the library, or if you modify it.
|
| | | distributors to deny you these rights or to ask you to surrender these
|
| | | rights. These restrictions translate to certain responsibilities for
|
| | | you if you distribute copies of the library or if you modify it.
|
| | |
|
| | | For example, if you distribute copies of the library, whether gratis
|
| | | or for a fee, you must give the recipients all the rights that we gave
|
| | | you. You must make sure that they, too, receive or can get the source
|
| | | code. If you link a program with the library, you must provide
|
| | | complete object files to the recipients so that they can relink them
|
| | | with the library, after making changes to the library and recompiling
|
| | | code. If you link other code with the library, you must provide
|
| | | complete object files to the recipients, so that they can relink them
|
| | | with the library after making changes to the library and recompiling
|
| | | it. And you must show them these terms so they know their rights.
|
| | |
|
| | | Our method of protecting your rights has two steps: (1) copyright
|
| | | the library, and (2) offer you this license which gives you legal
|
| | | We protect your rights with a two-step method: (1) we copyright the
|
| | | library, and (2) we offer you this license, which gives you legal
|
| | | permission to copy, distribute and/or modify the library.
|
| | |
|
| | | Also, for each distributor's protection, we want to make certain
|
| | | that everyone understands that there is no warranty for this free
|
| | | library. If the library is modified by someone else and passed on, we
|
| | | want its recipients to know that what they have is not the original
|
| | | version, so that any problems introduced by others will not reflect on
|
| | | the original authors' reputations.
|
| | | .
|
| | | Finally, any free program is threatened constantly by software
|
| | | patents. We wish to avoid the danger that companies distributing free
|
| | | software will individually obtain patent licenses, thus in effect
|
| | | transforming the program into proprietary software. To prevent this,
|
| | | we have made it clear that any patent must be licensed for everyone's
|
| | | free use or not licensed at all.
|
| | | To protect each distributor, we want to make it very clear that
|
| | | there is no warranty for the free library. Also, if the library is
|
| | | modified by someone else and passed on, the recipients should know
|
| | | that what they have is not the original version, so that the original
|
| | | author's reputation will not be affected by problems that might be
|
| | | introduced by others.
|
| | |
|
| | | Most GNU software, including some libraries, is covered by the ordinary
|
| | | GNU General Public License, which was designed for utility programs. This
|
| | | license, the GNU Library General Public License, applies to certain
|
| | | designated libraries. This license is quite different from the ordinary
|
| | | one; be sure to read it in full, and don't assume that anything in it is
|
| | | the same as in the ordinary license.
|
| | | Finally, software patents pose a constant threat to the existence of
|
| | | any free program. We wish to make sure that a company cannot
|
| | | effectively restrict the users of a free program by obtaining a
|
| | | restrictive license from a patent holder. Therefore, we insist that
|
| | | any patent license obtained for a version of the library must be
|
| | | consistent with the full freedom of use specified in this license.
|
| | |
|
| | | The reason we have a separate public license for some libraries is that
|
| | | they blur the distinction we usually make between modifying or adding to a
|
| | | program and simply using it. Linking a program with a library, without
|
| | | changing the library, is in some sense simply using the library, and is
|
| | | analogous to running a utility program or application program. However, in
|
| | | a textual and legal sense, the linked executable is a combined work, a
|
| | | derivative of the original library, and the ordinary General Public License
|
| | | treats it as such.
|
| | | Most GNU software, including some libraries, is covered by the
|
| | | ordinary GNU General Public License. This license, the GNU Lesser
|
| | | General Public License, applies to certain designated libraries, and
|
| | | is quite different from the ordinary General Public License. We use
|
| | | this license for certain libraries in order to permit linking those
|
| | | libraries into non-free programs.
|
| | |
|
| | | Because of this blurred distinction, using the ordinary General
|
| | | Public License for libraries did not effectively promote software
|
| | | sharing, because most developers did not use the libraries. We
|
| | | concluded that weaker conditions might promote sharing better.
|
| | | When a program is linked with a library, whether statically or using
|
| | | a shared library, the combination of the two is legally speaking a
|
| | | combined work, a derivative of the original library. The ordinary
|
| | | General Public License therefore permits such linking only if the
|
| | | entire combination fits its criteria of freedom. The Lesser General
|
| | | Public License permits more lax criteria for linking other code with
|
| | | the library.
|
| | |
|
| | | However, unrestricted linking of non-free programs would deprive the
|
| | | users of those programs of all benefit from the free status of the
|
| | | libraries themselves. This Library General Public License is intended to
|
| | | permit developers of non-free programs to use free libraries, while
|
| | | preserving your freedom as a user of such programs to change the free
|
| | | libraries that are incorporated in them. (We have not seen how to achieve
|
| | | this as regards changes in header files, but we have achieved it as regards
|
| | | changes in the actual functions of the Library.) The hope is that this
|
| | | will lead to faster development of free libraries.
|
| | | We call this license the "Lesser" General Public License because it
|
| | | does Less to protect the user's freedom than the ordinary General
|
| | | Public License. It also provides other free software developers Less
|
| | | of an advantage over competing non-free programs. These disadvantages
|
| | | are the reason we use the ordinary General Public License for many
|
| | | libraries. However, the Lesser license provides advantages in certain
|
| | | special circumstances.
|
| | |
|
| | | For example, on rare occasions, there may be a special need to
|
| | | encourage the widest possible use of a certain library, so that it becomes
|
| | | a de-facto standard. To achieve this, non-free programs must be
|
| | | allowed to use the library. A more frequent case is that a free
|
| | | library does the same job as widely used non-free libraries. In this
|
| | | case, there is little to gain by limiting the free library to free
|
| | | software only, so we use the Lesser General Public License.
|
| | |
|
| | | In other cases, permission to use a particular library in non-free
|
| | | programs enables a greater number of people to use a large body of
|
| | | free software. For example, permission to use the GNU C Library in
|
| | | non-free programs enables many more people to use the whole GNU
|
| | | operating system, as well as its variant, the GNU/Linux operating
|
| | | system.
|
| | |
|
| | | Although the Lesser General Public License is Less protective of the
|
| | | users' freedom, it does ensure that the user of a program that is
|
| | | linked with the Library has the freedom and the wherewithal to run
|
| | | that program using a modified version of the Library.
|
| | |
|
| | | The precise terms and conditions for copying, distribution and
|
| | | modification follow. Pay close attention to the difference between a
|
| | | "work based on the library" and a "work that uses the library". The
|
| | | former contains code derived from the library, while the latter only
|
| | | works together with the library.
|
| | | former contains code derived from the library, whereas the latter must
|
| | | be combined with the library in order to run.
|
| | |
|
| | | Note that it is possible for a library to be covered by the ordinary
|
| | | General Public License rather than by this special one.
|
| | | .
|
| | | GNU LIBRARY GENERAL PUBLIC LICENSE
|
| | | GNU LESSER GENERAL PUBLIC LICENSE
|
| | | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
| | |
|
| | | 0. This License Agreement applies to any software library which
|
| | | contains a notice placed by the copyright holder or other authorized
|
| | | party saying it may be distributed under the terms of this Library
|
| | | General Public License (also called "this License"). Each licensee is
|
| | | addressed as "you".
|
| | | 0. This License Agreement applies to any software library or other
|
| | | program which contains a notice placed by the copyright holder or
|
| | | other authorized party saying it may be distributed under the terms of
|
| | | this Lesser General Public License (also called "this License").
|
| | | Each licensee is addressed as "you".
|
| | |
|
| | | A "library" means a collection of software functions and/or data
|
| | | prepared so as to be conveniently linked with application programs
|
| | |
| | | You may charge a fee for the physical act of transferring a copy,
|
| | | and you may at your option offer warranty protection in exchange for a
|
| | | fee.
|
| | | .
|
| | |
|
| | | 2. You may modify your copy or copies of the Library or any portion
|
| | | of it, thus forming a work based on the Library, and copy and
|
| | | distribute such modifications or work under the terms of Section 1
|
| | |
| | | ordinary GNU General Public License has appeared, then you can specify
|
| | | that version instead if you wish.) Do not make any other change in
|
| | | these notices.
|
| | | .
|
| | |
|
| | | Once this change is made in a given copy, it is irreversible for
|
| | | that copy, so the ordinary GNU General Public License applies to all
|
| | | subsequent copies and derivative works made from that copy.
|
| | |
| | | distribute the object code for the work under the terms of Section 6.
|
| | | Any executables containing that work also fall under Section 6,
|
| | | whether or not they are linked directly with the Library itself.
|
| | | .
|
| | | 6. As an exception to the Sections above, you may also compile or
|
| | |
|
| | | 6. As an exception to the Sections above, you may also combine or
|
| | | link a "work that uses the Library" with the Library to produce a
|
| | | work containing portions of the Library, and distribute that work
|
| | | under terms of your choice, provided that the terms permit
|
| | |
| | | Library will not necessarily be able to recompile the application
|
| | | to use the modified definitions.)
|
| | |
|
| | | b) Accompany the work with a written offer, valid for at
|
| | | b) Use a suitable shared library mechanism for linking with the
|
| | | Library. A suitable mechanism is one that (1) uses at run time a
|
| | | copy of the library already present on the user's computer system,
|
| | | rather than copying library functions into the executable, and (2)
|
| | | will operate properly with a modified version of the library, if
|
| | | the user installs one, as long as the modified version is
|
| | | interface-compatible with the version that the work was made with.
|
| | |
|
| | | c) Accompany the work with a written offer, valid for at
|
| | | least three years, to give the same user the materials
|
| | | specified in Subsection 6a, above, for a charge no more
|
| | | than the cost of performing this distribution.
|
| | |
|
| | | c) If distribution of the work is made by offering access to copy
|
| | | d) If distribution of the work is made by offering access to copy
|
| | | from a designated place, offer equivalent access to copy the above
|
| | | specified materials from the same place.
|
| | |
|
| | | d) Verify that the user has already received a copy of these
|
| | | e) Verify that the user has already received a copy of these
|
| | | materials or that you have already sent this user a copy.
|
| | |
|
| | | For an executable, the required form of the "work that uses the
|
| | | Library" must include any data and utility programs needed for
|
| | | reproducing the executable from it. However, as a special exception,
|
| | | the source code distributed need not include anything that is normally
|
| | | distributed (in either source or binary form) with the major
|
| | | the materials to be distributed need not include anything that is
|
| | | normally distributed (in either source or binary form) with the major
|
| | | components (compiler, kernel, and so on) of the operating system on
|
| | | which the executable runs, unless that component itself accompanies
|
| | | the executable.
|
| | |
| | | accompany the operating system. Such a contradiction means you cannot
|
| | | use both them and the Library together in an executable that you
|
| | | distribute.
|
| | | .
|
| | |
|
| | | 7. You may place library facilities that are a work based on the
|
| | | Library side-by-side in a single library together with other library
|
| | | facilities not covered by this License, and distribute such a combined
|
| | |
| | | original licensor to copy, distribute, link with or modify the Library
|
| | | subject to these terms and conditions. You may not impose any further
|
| | | restrictions on the recipients' exercise of the rights granted herein.
|
| | | You are not responsible for enforcing compliance by third parties to
|
| | | You are not responsible for enforcing compliance by third parties with
|
| | | this License.
|
| | | .
|
| | |
|
| | | 11. If, as a consequence of a court judgment or allegation of patent
|
| | | infringement or for any other reason (not limited to patent issues),
|
| | | conditions are imposed on you (whether by court order, agreement or
|
| | |
| | | written in the body of this License.
|
| | |
|
| | | 13. The Free Software Foundation may publish revised and/or new
|
| | | versions of the Library General Public License from time to time.
|
| | | versions of the Lesser General Public License from time to time.
|
| | | Such new versions will be similar in spirit to the present version,
|
| | | but may differ in detail to address new problems or concerns.
|
| | |
|
| | |
| | | the Free Software Foundation. If the Library does not specify a
|
| | | license version number, you may choose any version ever published by
|
| | | the Free Software Foundation.
|
| | | .
|
| | |
|
| | | 14. If you wish to incorporate parts of the Library into other free
|
| | | programs whose distribution conditions are incompatible with these,
|
| | | write to the author to ask for permission. For software which is
|
| | |
| | | DAMAGES.
|
| | |
|
| | | END OF TERMS AND CONDITIONS
|
| | |
|
| | | How to Apply These Terms to Your New Libraries
|
| | |
|
| | | If you develop a new library, and you want it to be of the greatest
|
| | | possible use to the public, we recommend making it free software that
|
| | | everyone can redistribute and change. You can do so by permitting
|
| | | redistribution under these terms (or, alternatively, under the terms of the
|
| | | ordinary General Public License).
|
| | |
|
| | | To apply these terms, attach the following notices to the library. It is
|
| | | safest to attach them to the start of each source file to most effectively
|
| | | convey the exclusion of warranty; and each file should have at least the
|
| | | "copyright" line and a pointer to where the full notice is found.
|
| | |
|
| | | <one line to give the library's name and a brief idea of what it does.>
|
| | | Copyright (C) <year> <name of author>
|
| | |
|
| | | This library is free software; you can redistribute it and/or
|
| | | modify it under the terms of the GNU Lesser General Public
|
| | | License as published by the Free Software Foundation; either
|
| | | version 2.1 of the License, or (at your option) any later version.
|
| | |
|
| | | This library is distributed in the hope that it will be useful,
|
| | | but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| | | Lesser General Public License for more details.
|
| | |
|
| | | You should have received a copy of the GNU Lesser General Public
|
| | | License along with this library; if not, write to the Free Software
|
| | | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| | |
|
| | | Also add information on how to contact you by electronic and paper mail.
|
| | |
|
| | | You should also get your employer (if you work as a programmer) or your
|
| | | school, if any, to sign a "copyright disclaimer" for the library, if
|
| | | necessary. Here is a sample; alter the names:
|
| | |
|
| | | Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
| | | library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
| | |
|
| | | <signature of Ty Coon>, 1 April 1990
|
| | | Ty Coon, President of Vice
|
| | |
|
| | | That's all there is to it!
|
| | |
|
| | |
|
| | |
| | | /**
|
| | | * $RCSfile: editor_plugin_src.js,v $
|
| | | * $Revision: 1.10 $
|
| | | * $Date: 2006/02/10 16:29:38 $
|
| | | * $Id: editor_plugin_src.js 18 2006-06-29 14:11:23Z spocke $
|
| | | *
|
| | | * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth.
|
| | | *
|
| | |
| | | tinyMCE.importPluginLanguagePack('emotions','en,tr,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk');var TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};},getControlHTML:function(cn){switch(cn){case"emotions":return tinyMCE.getButtonHTML(cn,'lang_emotions_desc','{$pluginurl}/images/emotions.gif','mceEmotion');}return"";},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=160;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;}return false;}};tinyMCE.addPlugin('emotions',TinyMCE_EmotionsPlugin); |
| | | tinyMCE.importPluginLanguagePack('emotions');var TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"emotions":return tinyMCE.getButtonHTML(cn,'lang_emotions_desc','{$pluginurl}/images/emotions.gif','mceEmotion')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=160;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false}};tinyMCE.addPlugin('emotions',TinyMCE_EmotionsPlugin); |
| | |
| | | /**
|
| | | * $RCSfile: editor_plugin_src.js,v $
|
| | | * $Revision: 1.23 $
|
| | | * $Date: 2006/02/10 16:29:38 $
|
| | | * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | /* Import plugin specific language pack */
|
| | | tinyMCE.importPluginLanguagePack('emotions', 'en,tr,sv,zh_cn,cs,fa,fr_ca,fr,de,pl,pt_br,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,es,cy,is,zh_tw,zh_tw_utf8,sk');
|
| | | tinyMCE.importPluginLanguagePack('emotions');
|
| | |
|
| | | // Plucin static class
|
| | | var TinyMCE_EmotionsPlugin = {
|
| | | getInfo : function() {
|
| | | return {
|
| | | longname : 'Emotions',
|
| | | author : 'Moxiecode Systems',
|
| | | author : 'Moxiecode Systems AB',
|
| | | authorurl : 'http://tinymce.moxiecode.com',
|
| | | infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',
|
| | | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
| | |
| | | <script language="javascript" type="text/javascript" src="jscripts/functions.js"></script>
|
| | | <base target="_self" />
|
| | | </head>
|
| | | <body style="display: none">
|
| | | <body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
|
| | | <div align="center">
|
| | | <div class="title">{$lang_emotions_title}:<br /><br /></div>
|
| | |
|
New file |
| | |
| | | .mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {
|
| | | border: 1px dotted #cc0000;
|
| | | background-position: center;
|
| | | background-repeat: no-repeat;
|
| | | background-color: #ffffcc;
|
| | | }
|
| | |
|
| | | .mceItemShockWave {
|
| | | background-image: url('../images/shockwave.gif');
|
| | | }
|
| | |
|
| | | .mceItemFlash {
|
| | | background-image: url('../images/flash.gif');
|
| | | }
|
| | |
|
| | | .mceItemQuickTime {
|
| | | background-image: url('../images/quicktime.gif');
|
| | | }
|
| | |
|
| | | .mceItemWindowsMedia {
|
| | | background-image: url('../images/windowsmedia.gif');
|
| | | }
|
| | |
|
| | | .mceItemRealMedia {
|
| | | background-image: url('../images/realmedia.gif');
|
| | | }
|
New file |
| | |
| | | #id, #name, #hspace, #vspace, #class_name, #align {
|
| | | width: 100px;
|
| | | }
|
| | |
|
| | | #hspace, #vspace {
|
| | | width: 50px;
|
| | | }
|
| | |
|
| | | #flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode {
|
| | | width: 100px;
|
| | | }
|
| | |
|
| | | #flash_base, #flash_flashvars {
|
| | | width: 240px;
|
| | | }
|
| | |
|
| | | #width, #height {
|
| | | width: 40px;
|
| | | }
|
| | |
|
| | | #src, #media_type {
|
| | | width: 250px;
|
| | | }
|
| | |
|
| | | #class {
|
| | | width: 120px;
|
| | | }
|
| | |
|
| | | #prev {
|
| | | margin: 0;
|
| | | border: 1px solid black;
|
| | | width: 99%;
|
| | | height: 230px;
|
| | | overflow: auto;
|
| | | }
|
| | |
|
| | | .panel_wrapper div.current {
|
| | | height: 390px;
|
| | | overflow: auto;
|
| | | }
|
| | |
|
| | | #flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options {
|
| | | display: none;
|
| | | }
|
| | |
|
| | | .mceAddSelectValue {
|
| | | background-color: #DDDDDD;
|
| | | }
|
| | |
|
| | | #qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume {
|
| | | width: 70px;
|
| | | }
|
| | |
|
| | | #wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume {
|
| | | width: 70px;
|
| | | }
|
| | |
|
| | | #rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks {
|
| | | width: 70px;
|
| | | }
|
| | |
|
| | | #shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle {
|
| | | width: 90px;
|
| | | }
|
| | |
|
| | | #qt_qtsrc {
|
| | | width: 200px;
|
| | | }
|
New file |
| | |
| | | tinyMCE.importPluginLanguagePack('media');var TinyMCE_MediaPlugin={getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_media.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['media_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/media/css/content.css")},getControlHTML:function(cn){switch(cn){case"media":return tinyMCE.getButtonHTML(cn,'lang_media_desc','{$pluginurl}/images/media.gif','mceMedia')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceMedia":tinyMCE.openWindow({file:'../../plugins/media/media.htm',width:430+tinyMCE.getLang('lang_media_delta_width',0),height:470+tinyMCE.getLang('lang_media_delta_height',0)},{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content,inst){var nl,img,i,ne,d,s,ci;switch(type){case"insert_to_editor":img=tinyMCE.getParam("theme_href")+'/images/spacer.gif';content=content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,'<img class="mceItem$1" title="$2" src="'+img+'" />');content=content.replace(/<object([^>]*)>/gi,'<div class="mceItemObject" $1>');content=content.replace(/<embed([^>]*)>/gi,'<div class="mceItemObjectEmbed" $1>');content=content.replace(/<\/(object|embed)([^>]*)>/gi,'</div>');content=content.replace(/<param([^>]*)>/gi,'<div $1 class="mceItemParam"></div>');content=content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>','gi'),'class="mceItemParam"></div>');break;case"insert_to_editor_dom":d=inst.getDoc();nl=content.getElementsByTagName("img");for(i=0;i<nl.length;i++){if(/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)){nl[i].width=nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g,'$1');nl[i].height=nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g,'$1');}}nl=tinyMCE.selectElements(content,'DIV',function(n){return tinyMCE.hasCSSClass(n,'mceItemObject')});for(i=0;i<nl.length;i++){ci=tinyMCE.getAttrib(nl[i],"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash',d,nl[i]),nl[i]);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave',d,nl[i]),nl[i]);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia',d,nl[i]),nl[i]);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime',d,nl[i]),nl[i]);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia',d,nl[i]),nl[i]);break}}nl=tinyMCE.selectNodes(content,function(n){return n.className=='mceItemObjectEmbed'});for(i=0;i<nl.length;i++){switch(tinyMCE.getAttrib(nl[i],'type')){case'application/x-shockwave-flash':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemFlash');break;case'application/x-director':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemShockWave');break;case'application/x-mplayer2':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemWindowsMedia');break;case'video/quicktime':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemQuickTime');break;case'audio/x-pn-realaudio-plugin':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemRealMedia');break}}break;case"get_from_editor":var startPos=-1,endPos,attribs,chunkBefore,chunkAfter,embedHTML,at,pl,cb,mt,ex;while((startPos=content.indexOf('<img',startPos+1))!=-1){endPos=content.indexOf('/>',startPos);attribs=TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+=2;at=attribs['title'];if(at){at=at.replace(/'/g,"'");at=at.replace(/&#quot;/g,'"');try{pl=eval('x={'+at+'};')}catch(ex){pl={}}}if(!tinyMCE.getParam('media_use_script',false)){switch(attribs['class']){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166B1BCA-3F9C-11CF-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=tinyMCE.getParam('media_wmp6_compatible')?'05589FA1-C356-11CE-BF01-00AA0055595A':'6BF52A52-394A-11D3-B153-00C04F79FAA6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break}if(!tinyMCE.getParam("relative_urls"))pl.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],pl.src);embedHTML=TinyMCE_MediaPlugin._getEmbed(ci,cb,mt,pl,attribs)}else{switch(attribs['class']){case'mceItemFlash':s='writeFlash';break;case'mceItemShockWave':s='writeShockWave';break;case'mceItemWindowsMedia':s='writeWindowsMedia';break;case'mceItemQuickTime':s='writeQuickTime';break;case'mceItemRealMedia':s='writeRealMedia';break}if(attribs.width)at=at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g,"width:'"+attribs.width+"'");if(attribs.height)at=at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g,"height:'"+attribs.height+"'");if(!tinyMCE.getParam("relative_urls")){pl.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],pl.src);at=at.replace(new RegExp("src:'[^']*'","g"),"src:'"+pl.src+"'")}embedHTML='<script type="text/javascript">'+s+'({'+at+'});</script>'}chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node,'class'))){tinyMCE.switchClass(editor_id+'_media','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_media','mceButtonNormal');return true},_createImgFromEmbed:function(n,d,cl){var ne,at,i,ti='',an;ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;at=n.attributes;for(i=0;i<at.length;i++){if(at[i].specified&&at[i].nodeValue){an=at[i].nodeName.toLowerCase();if(an=='src')continue;if(an=='mce_src')an='src';if(an.indexOf('mce_')==-1&&!new RegExp('^(class|type)$').test(an))ti+=an.toLowerCase()+':\''+at[i].nodeValue+"',"}}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;n.parentNode.replaceChild(ne,n)},_createImg:function(cl,d,n){var i,nl,ti="",an,av,al=new Array();ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;al.id=tinyMCE.getAttrib(n,'id');al.name=tinyMCE.getAttrib(n,'name');al.width=tinyMCE.getAttrib(n,'width');al.height=tinyMCE.getAttrib(n,'height');al.bgcolor=tinyMCE.getAttrib(n,'bgcolor');al.align=tinyMCE.getAttrib(n,'align');al.class_name=tinyMCE.getAttrib(n,'mce_class');nl=n.getElementsByTagName('div');for(i=0;i<nl.length;i++){av=tinyMCE.getAttrib(nl[i],'value');av=av.replace(new RegExp('\\\\','g'),'\\\\');av=av.replace(new RegExp('"','g'),'\\"');av=av.replace(new RegExp("'",'g'),"\\'");an=tinyMCE.getAttrib(nl[i],'name');al[an]=av}if(al.movie){al.src=al.movie;al.movie=null}for(an in al){if(al[an]!=null&&typeof(al[an])!="function"&&al[an]!='')ti+=an.toLowerCase()+':\''+al[an]+"',"}ti=ti.length>0?ti.substring(0,ti.length-1):ti;ne.title=ti;return ne},_getEmbed:function(cls,cb,mt,p,at){var h='',n;p.width=at.width?at.width:p.width;p.height=at.height?at.height:p.height;h+='<object classid="clsid:'+cls+'" codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?' id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?' name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?' width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?' height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?' align="'+p.align+'"':'';h+='>';for(n in p){if(p[n]&&typeof(p[n])!="function"){h+='<param name="'+n+'" value="'+p[n]+'" />';if(n=='src'&&p[n].indexOf('://')!=-1&&mt=='application/x-mplayer2')h+='<param name="url" value="'+p[n]+'" />'}}h+='<embed type="'+mt+'"';for(n in p){if(typeof(p[n])=="function")continue;if(!(n=='url'&&mt=='application/x-mplayer2'))h+=' '+n+'="'+p[n]+'"'}h+='></embed></object>';return h},_parseAttributes:function(attribute_string){var attributeName="";var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i<attribute_string.length;i++){var chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue)withInValue=true;else if((chr=='"'||chr=="'")&&withInValue){withInValue=false;var pos=attributeName.lastIndexOf(' ');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return attributes}};tinyMCE.addPlugin("media",TinyMCE_MediaPlugin); |
New file |
| | |
| | | /**
|
| | | * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | /* Import plugin specific language pack */
|
| | | tinyMCE.importPluginLanguagePack('media');
|
| | |
|
| | | var TinyMCE_MediaPlugin = {
|
| | | getInfo : function() {
|
| | | return {
|
| | | longname : 'Media',
|
| | | author : 'Moxiecode Systems AB',
|
| | | authorurl : 'http://tinymce.moxiecode.com',
|
| | | infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_media.html',
|
| | | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
| | | };
|
| | | },
|
| | |
|
| | | initInstance : function(inst) {
|
| | | if (!tinyMCE.settings['media_skip_plugin_css'])
|
| | | tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/media/css/content.css");
|
| | | },
|
| | |
|
| | | getControlHTML : function(cn) {
|
| | | switch (cn) {
|
| | | case "media":
|
| | | return tinyMCE.getButtonHTML(cn, 'lang_media_desc', '{$pluginurl}/images/media.gif', 'mceMedia');
|
| | | }
|
| | |
|
| | | return "";
|
| | | },
|
| | |
|
| | | execCommand : function(editor_id, element, command, user_interface, value) {
|
| | | // Handle commands
|
| | | switch (command) {
|
| | | case "mceMedia":
|
| | | tinyMCE.openWindow({
|
| | | file : '../../plugins/media/media.htm',
|
| | | width : 430 + tinyMCE.getLang('lang_media_delta_width', 0),
|
| | | height : 470 + tinyMCE.getLang('lang_media_delta_height', 0)
|
| | | }, {
|
| | | editor_id : editor_id,
|
| | | inline : "yes"
|
| | | });
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | // Pass to next handler in chain
|
| | | return false;
|
| | | },
|
| | |
|
| | | cleanup : function(type, content, inst) {
|
| | | var nl, img, i, ne, d, s, ci;
|
| | |
|
| | | switch (type) {
|
| | | case "insert_to_editor":
|
| | | img = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
|
| | | content = content.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, '<img class="mceItem$1" title="$2" src="' + img + '" />');
|
| | | content = content.replace(/<object([^>]*)>/gi, '<div class="mceItemObject" $1>');
|
| | | content = content.replace(/<embed([^>]*)>/gi, '<div class="mceItemObjectEmbed" $1>');
|
| | | content = content.replace(/<\/(object|embed)([^>]*)>/gi, '</div>');
|
| | | content = content.replace(/<param([^>]*)>/gi, '<div $1 class="mceItemParam"></div>');
|
| | | content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam"></div>');
|
| | | break;
|
| | |
|
| | | case "insert_to_editor_dom":
|
| | | d = inst.getDoc();
|
| | | nl = content.getElementsByTagName("img");
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)) {
|
| | | nl[i].width = nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g, '$1');
|
| | | nl[i].height = nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g, '$1');
|
| | | //nl[i].align = nl[i].title.replace(/.*align:([a-z]+).*/gi, '$1');
|
| | | }
|
| | | }
|
| | |
|
| | | nl = tinyMCE.selectElements(content, 'DIV', function (n) {return tinyMCE.hasCSSClass(n, 'mceItemObject');});
|
| | | for (i=0; i<nl.length; i++) {
|
| | | ci = tinyMCE.getAttrib(nl[i], "classid").toLowerCase().replace(/\s+/g, '');
|
| | |
|
| | | switch (ci) {
|
| | | case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
|
| | | nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash', d, nl[i]), nl[i]);
|
| | | break;
|
| | |
|
| | | case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
|
| | | nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave', d, nl[i]), nl[i]);
|
| | | break;
|
| | |
|
| | | case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
|
| | | nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia', d, nl[i]), nl[i]);
|
| | | break;
|
| | |
|
| | | case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
|
| | | nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime', d, nl[i]), nl[i]);
|
| | | break;
|
| | |
|
| | | case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
|
| | | case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
|
| | | case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
|
| | | nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia', d, nl[i]), nl[i]);
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | // Handle embed (if any)
|
| | | nl = tinyMCE.selectNodes(content, function (n) {return n.className == 'mceItemObjectEmbed';});
|
| | | for (i=0; i<nl.length; i++) {
|
| | | switch (tinyMCE.getAttrib(nl[i], 'type')) {
|
| | | case 'application/x-shockwave-flash':
|
| | | TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemFlash');
|
| | | break;
|
| | |
|
| | | case 'application/x-director':
|
| | | TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemShockWave');
|
| | | break;
|
| | |
|
| | | case 'application/x-mplayer2':
|
| | | TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemWindowsMedia');
|
| | | break;
|
| | |
|
| | | case 'video/quicktime':
|
| | | TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemQuickTime');
|
| | | break;
|
| | |
|
| | | case 'audio/x-pn-realaudio-plugin':
|
| | | TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemRealMedia');
|
| | | break;
|
| | | }
|
| | | }
|
| | | break;
|
| | |
|
| | | case "get_from_editor":
|
| | | var startPos = -1, endPos, attribs, chunkBefore, chunkAfter, embedHTML, at, pl, cb, mt, ex;
|
| | |
|
| | | while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
|
| | | endPos = content.indexOf('/>', startPos);
|
| | | attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos));
|
| | |
|
| | | // Is not flash, skip it
|
| | | if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))
|
| | | continue;
|
| | |
|
| | | endPos += 2;
|
| | |
|
| | | // Parse attributes
|
| | | at = attribs['title'];
|
| | | if (at) {
|
| | | at = at.replace(/'/g, "'");
|
| | | at = at.replace(/&#quot;/g, '"');
|
| | |
|
| | | try {
|
| | | pl = eval('x={' + at + '};');
|
| | | } catch (ex) {
|
| | | pl = {};
|
| | | }
|
| | | }
|
| | |
|
| | | // Use object/embed
|
| | | if (!tinyMCE.getParam('media_use_script', false)) {
|
| | | switch (attribs['class']) {
|
| | | case 'mceItemFlash':
|
| | | ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
|
| | | cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
|
| | | mt = 'application/x-shockwave-flash';
|
| | | break;
|
| | |
|
| | | case 'mceItemShockWave':
|
| | | ci = '166B1BCA-3F9C-11CF-8075-444553540000';
|
| | | cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
|
| | | mt = 'application/x-director';
|
| | | break;
|
| | |
|
| | | case 'mceItemWindowsMedia':
|
| | | ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6';
|
| | | cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
|
| | | mt = 'application/x-mplayer2';
|
| | | break;
|
| | |
|
| | | case 'mceItemQuickTime':
|
| | | ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
|
| | | cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
|
| | | mt = 'video/quicktime';
|
| | | break;
|
| | |
|
| | | case 'mceItemRealMedia':
|
| | | ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
|
| | | cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
|
| | | mt = 'audio/x-pn-realaudio-plugin';
|
| | | break;
|
| | | }
|
| | |
|
| | | // Force absolute URL
|
| | | if (!tinyMCE.getParam("relative_urls"))
|
| | | pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src);
|
| | |
|
| | | embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs);
|
| | | } else {
|
| | | // Use script version
|
| | | switch (attribs['class']) {
|
| | | case 'mceItemFlash':
|
| | | s = 'writeFlash';
|
| | | break;
|
| | |
|
| | | case 'mceItemShockWave':
|
| | | s = 'writeShockWave';
|
| | | break;
|
| | |
|
| | | case 'mceItemWindowsMedia':
|
| | | s = 'writeWindowsMedia';
|
| | | break;
|
| | |
|
| | | case 'mceItemQuickTime':
|
| | | s = 'writeQuickTime';
|
| | | break;
|
| | |
|
| | | case 'mceItemRealMedia':
|
| | | s = 'writeRealMedia';
|
| | | break;
|
| | | }
|
| | |
|
| | | if (attribs.width)
|
| | | at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'");
|
| | |
|
| | | if (attribs.height)
|
| | | at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'");
|
| | |
|
| | | // Force absolute URL
|
| | | if (!tinyMCE.getParam("relative_urls")) {
|
| | | pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src);
|
| | | at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'");
|
| | | }
|
| | |
|
| | | embedHTML = '<script type="text/javascript">' + s + '({' + at + '});</script>';
|
| | | }
|
| | |
|
| | | // Insert embed/object chunk
|
| | | chunkBefore = content.substring(0, startPos);
|
| | | chunkAfter = content.substring(endPos);
|
| | | content = chunkBefore + embedHTML + chunkAfter;
|
| | | }
|
| | | break;
|
| | | }
|
| | |
|
| | | return content;
|
| | | },
|
| | |
|
| | | handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
|
| | | if (node == null)
|
| | | return;
|
| | |
|
| | | do {
|
| | | if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) {
|
| | | tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected');
|
| | | return true;
|
| | | }
|
| | | } while ((node = node.parentNode));
|
| | |
|
| | | tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal');
|
| | |
|
| | | return true;
|
| | | },
|
| | |
|
| | | _createImgFromEmbed : function(n, d, cl) {
|
| | | var ne, at, i, ti = '', an;
|
| | |
|
| | | ne = d.createElement('img');
|
| | | ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
|
| | | ne.width = tinyMCE.getAttrib(n, 'width');
|
| | | ne.height = tinyMCE.getAttrib(n, 'height');
|
| | | ne.className = cl;
|
| | |
|
| | | at = n.attributes;
|
| | | for (i=0; i<at.length; i++) {
|
| | | if (at[i].specified && at[i].nodeValue) {
|
| | | an = at[i].nodeName.toLowerCase();
|
| | |
|
| | | if (an == 'src')
|
| | | continue;
|
| | |
|
| | | if (an == 'mce_src')
|
| | | an = 'src';
|
| | |
|
| | | if (an.indexOf('mce_') == -1 && !new RegExp('^(class|type)$').test(an))
|
| | | ti += an.toLowerCase() + ':\'' + at[i].nodeValue + "',";
|
| | | }
|
| | | }
|
| | |
|
| | | ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;
|
| | | ne.title = ti;
|
| | |
|
| | | n.parentNode.replaceChild(ne, n);
|
| | | },
|
| | |
|
| | | _createImg : function(cl, d, n) {
|
| | | var i, nl, ti = "", an, av, al = new Array();
|
| | |
|
| | | ne = d.createElement('img');
|
| | | ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif';
|
| | | ne.width = tinyMCE.getAttrib(n, 'width');
|
| | | ne.height = tinyMCE.getAttrib(n, 'height');
|
| | | ne.className = cl;
|
| | |
|
| | | al.id = tinyMCE.getAttrib(n, 'id');
|
| | | al.name = tinyMCE.getAttrib(n, 'name');
|
| | | al.width = tinyMCE.getAttrib(n, 'width');
|
| | | al.height = tinyMCE.getAttrib(n, 'height');
|
| | | al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor');
|
| | | al.align = tinyMCE.getAttrib(n, 'align');
|
| | | al.class_name = tinyMCE.getAttrib(n, 'mce_class');
|
| | |
|
| | | nl = n.getElementsByTagName('div');
|
| | | for (i=0; i<nl.length; i++) {
|
| | | av = tinyMCE.getAttrib(nl[i], 'value');
|
| | | av = av.replace(new RegExp('\\\\', 'g'), '\\\\');
|
| | | av = av.replace(new RegExp('"', 'g'), '\\"');
|
| | | av = av.replace(new RegExp("'", 'g'), "\\'");
|
| | | an = tinyMCE.getAttrib(nl[i], 'name');
|
| | | al[an] = av;
|
| | | }
|
| | |
|
| | | if (al.movie) {
|
| | | al.src = al.movie;
|
| | | al.movie = null;
|
| | | }
|
| | |
|
| | | for (an in al) {
|
| | | if (al[an] != null && typeof(al[an]) != "function" && al[an] != '')
|
| | | ti += an.toLowerCase() + ':\'' + al[an] + "',";
|
| | | }
|
| | |
|
| | | ti = ti.length > 0 ? ti.substring(0, ti.length - 1) : ti;
|
| | | ne.title = ti;
|
| | |
|
| | | return ne;
|
| | | },
|
| | |
|
| | | _getEmbed : function(cls, cb, mt, p, at) {
|
| | | var h = '', n;
|
| | |
|
| | | p.width = at.width ? at.width : p.width;
|
| | | p.height = at.height ? at.height : p.height;
|
| | |
|
| | | h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
|
| | | h += typeof(p.id) != "undefined" ? ' id="' + p.id + '"' : '';
|
| | | h += typeof(p.name) != "undefined" ? ' name="' + p.name + '"' : '';
|
| | | h += typeof(p.width) != "undefined" ? ' width="' + p.width + '"' : '';
|
| | | h += typeof(p.height) != "undefined" ? ' height="' + p.height + '"' : '';
|
| | | h += typeof(p.align) != "undefined" ? ' align="' + p.align + '"' : '';
|
| | | h += '>';
|
| | |
|
| | | for (n in p) {
|
| | | if (p[n] && typeof(p[n]) != "function") {
|
| | | h += '<param name="' + n + '" value="' + p[n] + '" />';
|
| | |
|
| | | // Add extra url parameter if it's an absolute URL on WMP
|
| | | if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2')
|
| | | h += '<param name="url" value="' + p[n] + '" />';
|
| | | }
|
| | | }
|
| | |
|
| | | h += '<embed type="' + mt + '"';
|
| | |
|
| | | for (n in p) {
|
| | | if (typeof(p[n]) == "function")
|
| | | continue;
|
| | |
|
| | | // Skip url parameter for embed tag on WMP
|
| | | if (!(n == 'url' && mt == 'application/x-mplayer2'))
|
| | | h += ' ' + n + '="' + p[n] + '"';
|
| | | }
|
| | |
|
| | | h += '></embed></object>';
|
| | |
|
| | | return h;
|
| | | },
|
| | |
|
| | | _parseAttributes : function(attribute_string) {
|
| | | var attributeName = "";
|
| | | var attributeValue = "";
|
| | | var withInName;
|
| | | var withInValue;
|
| | | var attributes = new Array();
|
| | | var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g');
|
| | |
|
| | | if (attribute_string == null || attribute_string.length < 2)
|
| | | return null;
|
| | |
|
| | | withInName = withInValue = false;
|
| | |
|
| | | for (var i=0; i<attribute_string.length; i++) {
|
| | | var chr = attribute_string.charAt(i);
|
| | |
|
| | | if ((chr == '"' || chr == "'") && !withInValue)
|
| | | withInValue = true;
|
| | | else if ((chr == '"' || chr == "'") && withInValue) {
|
| | | withInValue = false;
|
| | |
|
| | | var pos = attributeName.lastIndexOf(' ');
|
| | | if (pos != -1)
|
| | | attributeName = attributeName.substring(pos+1);
|
| | |
|
| | | attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
|
| | |
|
| | | attributeName = "";
|
| | | attributeValue = "";
|
| | | } else if (!whiteSpaceRegExp.test(chr) && !withInName && !withInValue)
|
| | | withInName = true;
|
| | |
|
| | | if (chr == '=' && withInName)
|
| | | withInName = false;
|
| | |
|
| | | if (withInName)
|
| | | attributeName += chr;
|
| | |
|
| | | if (withInValue)
|
| | | attributeValue += chr;
|
| | | }
|
| | |
|
| | | return attributes;
|
| | | }
|
| | | };
|
| | |
|
| | | tinyMCE.addPlugin("media", TinyMCE_MediaPlugin);
|
New file |
| | |
| | | /**
|
| | | * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
|
| | | */
|
| | |
|
| | | function writeFlash(p) {
|
| | | writeEmbed(
|
| | | 'D27CDB6E-AE6D-11cf-96B8-444553540000',
|
| | | 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
|
| | | 'application/x-shockwave-flash',
|
| | | p
|
| | | );
|
| | | }
|
| | |
|
| | | function writeShockWave(p) {
|
| | | writeEmbed(
|
| | | '166B1BCA-3F9C-11CF-8075-444553540000',
|
| | | 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
|
| | | 'application/x-director',
|
| | | p
|
| | | );
|
| | | }
|
| | |
|
| | | function writeQuickTime(p) {
|
| | | writeEmbed(
|
| | | '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
|
| | | 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
|
| | | 'video/quicktime',
|
| | | p
|
| | | );
|
| | | }
|
| | |
|
| | | function writeRealMedia(p) {
|
| | | writeEmbed(
|
| | | 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
|
| | | 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
|
| | | 'audio/x-pn-realaudio-plugin',
|
| | | p
|
| | | );
|
| | | }
|
| | |
|
| | | function writeWindowsMedia(p) {
|
| | | p.url = p.src;
|
| | | writeEmbed(
|
| | | '6BF52A52-394A-11D3-B153-00C04F79FAA6',
|
| | | 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
|
| | | 'application/x-mplayer2',
|
| | | p
|
| | | );
|
| | | }
|
| | |
|
| | | function writeEmbed(cls, cb, mt, p) {
|
| | | var h = '', n;
|
| | |
|
| | | h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
|
| | | h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
|
| | | h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
|
| | | h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
|
| | | h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
|
| | | h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
|
| | | h += '>';
|
| | |
|
| | | for (n in p)
|
| | | h += '<param name="' + n + '" value="' + p[n] + '">';
|
| | |
|
| | | h += '<embed type="' + mt + '"';
|
| | |
|
| | | for (n in p)
|
| | | h += n + '="' + p[n] + '" ';
|
| | |
|
| | | h += '></embed></object>';
|
| | |
|
| | | document.write(h);
|
| | | }
|
New file |
| | |
| | | var oldWidth, oldHeight;
|
| | | var url = tinyMCE.getParam("media_external_list_url");
|
| | | if (url != null) {
|
| | | // Fix relative
|
| | | if (url.charAt(0) != '/' && url.indexOf('://') == -1)
|
| | | url = tinyMCE.documentBasePath + "/" + url;
|
| | |
|
| | | document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
|
| | | }
|
| | |
|
| | | function init() {
|
| | | var pl = "", f, val;
|
| | | var type = "flash", fe, i;
|
| | |
|
| | | tinyMCEPopup.resizeToInnerSize();
|
| | | f = document.forms[0]
|
| | |
|
| | | fe = tinyMCE.selectedInstance.getFocusElement();
|
| | | if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {
|
| | | pl = "x={" + fe.title + "};";
|
| | |
|
| | | switch (tinyMCE.getAttrib(fe, 'class')) {
|
| | | case 'mceItemFlash':
|
| | | type = 'flash';
|
| | | break;
|
| | |
|
| | | case 'mceItemShockWave':
|
| | | type = 'shockwave';
|
| | | break;
|
| | |
|
| | | case 'mceItemWindowsMedia':
|
| | | type = 'wmp';
|
| | | break;
|
| | |
|
| | | case 'mceItemQuickTime':
|
| | | type = 'qt';
|
| | | break;
|
| | |
|
| | | case 'mceItemRealMedia':
|
| | | type = 'rmp';
|
| | | break;
|
| | | }
|
| | |
|
| | | document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true); |
| | | }
|
| | |
|
| | | document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
|
| | | document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
|
| | | document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
|
| | |
|
| | | var html = getMediaListHTML('filebrowser','src','media','media');
|
| | | if (html == "")
|
| | | document.getElementById("linklistrow").style.display = 'none';
|
| | | else
|
| | | document.getElementById("linklistcontainer").innerHTML = html;
|
| | |
|
| | | // Resize some elements
|
| | | if (isVisible('filebrowsercontainer'))
|
| | | document.getElementById('src').style.width = '230px';
|
| | |
|
| | | // Setup form
|
| | | if (pl != "") {
|
| | | pl = eval(pl);
|
| | |
|
| | | switch (type) {
|
| | | case "flash":
|
| | | setBool(pl, 'flash', 'play');
|
| | | setBool(pl, 'flash', 'loop');
|
| | | setBool(pl, 'flash', 'menu');
|
| | | setBool(pl, 'flash', 'swliveconnect');
|
| | | setStr(pl, 'flash', 'quality');
|
| | | setStr(pl, 'flash', 'scale');
|
| | | setStr(pl, 'flash', 'salign');
|
| | | setStr(pl, 'flash', 'wmode');
|
| | | setStr(pl, 'flash', 'base');
|
| | | setStr(pl, 'flash', 'flashvars');
|
| | | break;
|
| | |
|
| | | case "qt":
|
| | | setBool(pl, 'qt', 'loop');
|
| | | setBool(pl, 'qt', 'autoplay');
|
| | | setBool(pl, 'qt', 'cache');
|
| | | setBool(pl, 'qt', 'controller');
|
| | | setBool(pl, 'qt', 'correction');
|
| | | setBool(pl, 'qt', 'enablejavascript');
|
| | | setBool(pl, 'qt', 'kioskmode');
|
| | | setBool(pl, 'qt', 'autohref');
|
| | | setBool(pl, 'qt', 'playeveryframe');
|
| | | setBool(pl, 'qt', 'tarsetcache');
|
| | | setStr(pl, 'qt', 'scale');
|
| | | setStr(pl, 'qt', 'starttime');
|
| | | setStr(pl, 'qt', 'endtime');
|
| | | setStr(pl, 'qt', 'tarset');
|
| | | setStr(pl, 'qt', 'qtsrcchokespeed');
|
| | | setStr(pl, 'qt', 'volume');
|
| | | setStr(pl, 'qt', 'qtsrc');
|
| | | break;
|
| | |
|
| | | case "shockwave":
|
| | | setBool(pl, 'shockwave', 'sound');
|
| | | setBool(pl, 'shockwave', 'progress');
|
| | | setBool(pl, 'shockwave', 'autostart');
|
| | | setBool(pl, 'shockwave', 'swliveconnect');
|
| | | setStr(pl, 'shockwave', 'swvolume');
|
| | | setStr(pl, 'shockwave', 'swstretchstyle');
|
| | | setStr(pl, 'shockwave', 'swstretchhalign');
|
| | | setStr(pl, 'shockwave', 'swstretchvalign');
|
| | | break;
|
| | |
|
| | | case "wmp":
|
| | | setBool(pl, 'wmp', 'autostart');
|
| | | setBool(pl, 'wmp', 'enabled');
|
| | | setBool(pl, 'wmp', 'enablecontextmenu');
|
| | | setBool(pl, 'wmp', 'fullscreen');
|
| | | setBool(pl, 'wmp', 'invokeurls');
|
| | | setBool(pl, 'wmp', 'mute');
|
| | | setBool(pl, 'wmp', 'stretchtofit');
|
| | | setBool(pl, 'wmp', 'windowlessvideo');
|
| | | setStr(pl, 'wmp', 'balance');
|
| | | setStr(pl, 'wmp', 'baseurl');
|
| | | setStr(pl, 'wmp', 'captioningid');
|
| | | setStr(pl, 'wmp', 'currentmarker');
|
| | | setStr(pl, 'wmp', 'currentposition');
|
| | | setStr(pl, 'wmp', 'defaultframe');
|
| | | setStr(pl, 'wmp', 'playcount');
|
| | | setStr(pl, 'wmp', 'rate');
|
| | | setStr(pl, 'wmp', 'uimode');
|
| | | setStr(pl, 'wmp', 'volume');
|
| | | break;
|
| | |
|
| | | case "rmp":
|
| | | setBool(pl, 'rmp', 'autostart');
|
| | | setBool(pl, 'rmp', 'loop');
|
| | | setBool(pl, 'rmp', 'autogotourl');
|
| | | setBool(pl, 'rmp', 'center');
|
| | | setBool(pl, 'rmp', 'imagestatus');
|
| | | setBool(pl, 'rmp', 'maintainaspect');
|
| | | setBool(pl, 'rmp', 'nojava');
|
| | | setBool(pl, 'rmp', 'prefetch');
|
| | | setBool(pl, 'rmp', 'shuffle');
|
| | | setStr(pl, 'rmp', 'console');
|
| | | setStr(pl, 'rmp', 'controls');
|
| | | setStr(pl, 'rmp', 'numloop');
|
| | | setStr(pl, 'rmp', 'scriptcallbacks');
|
| | | break;
|
| | | }
|
| | |
|
| | | setStr(pl, null, 'src');
|
| | | setStr(pl, null, 'id');
|
| | | setStr(pl, null, 'name');
|
| | | setStr(pl, null, 'vspace');
|
| | | setStr(pl, null, 'hspace');
|
| | | setStr(pl, null, 'bgcolor');
|
| | | setStr(pl, null, 'align');
|
| | | setStr(pl, null, 'width');
|
| | | setStr(pl, null, 'height');
|
| | |
|
| | | if ((val = tinyMCE.getAttrib(fe, "width")) != "")
|
| | | pl.width = f.width.value = val;
|
| | |
|
| | | if ((val = tinyMCE.getAttrib(fe, "height")) != "")
|
| | | pl.height = f.height.value = val;
|
| | |
|
| | | oldWidth = pl.width ? parseInt(pl.width) : 0;
|
| | | oldHeight = pl.height ? parseInt(pl.height) : 0;
|
| | | } else
|
| | | oldWidth = oldHeight = 0;
|
| | |
|
| | | selectByValue(f, 'media_type', type);
|
| | | changedType(type);
|
| | | updateColor('bgcolor_pick', 'bgcolor');
|
| | |
|
| | | TinyMCE_EditableSelects.init();
|
| | | generatePreview();
|
| | | }
|
| | |
|
| | | function insertMedia() {
|
| | | var fe, f = document.forms[0], h;
|
| | |
|
| | | if (!AutoValidator.validate(f)) {
|
| | | alert(tinyMCE.getLang('lang_invalid_data'));
|
| | | return false;
|
| | | }
|
| | |
|
| | | f.width.value = f.width.value == "" ? 100 : f.width.value;
|
| | | f.height.value = f.height.value == "" ? 100 : f.height.value;
|
| | |
|
| | | fe = tinyMCE.selectedInstance.getFocusElement();
|
| | | if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) {
|
| | | switch (f.media_type.options[f.media_type.selectedIndex].value) {
|
| | | case "flash":
|
| | | fe.className = "mceItemFlash";
|
| | | break;
|
| | |
|
| | | case "shockwave":
|
| | | fe.className = "mceItemShockWave";
|
| | | break;
|
| | |
|
| | | case "qt":
|
| | | fe.className = "mceItemQuickTime";
|
| | | break;
|
| | |
|
| | | case "wmp":
|
| | | fe.className = "mceItemWindowsMedia";
|
| | | break;
|
| | |
|
| | | case "rmp":
|
| | | fe.className = "mceItemRealMedia";
|
| | | break;
|
| | | }
|
| | |
|
| | | if (fe.width != f.width.value || fe.height != f.width.height)
|
| | | tinyMCE.selectedInstance.repaint();
|
| | |
|
| | | fe.title = serializeParameters();
|
| | | fe.width = f.width.value;
|
| | | fe.height = f.height.value;
|
| | | fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
|
| | | fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
|
| | | fe.align = f.align.options[f.align.selectedIndex].value;
|
| | | } else {
|
| | | h = '<img src="' + tinyMCE.getParam("theme_href") + '/images/spacer.gif"' ;
|
| | |
|
| | | switch (f.media_type.options[f.media_type.selectedIndex].value) {
|
| | | case "flash":
|
| | | h += ' class="mceItemFlash"';
|
| | | break;
|
| | |
|
| | | case "shockwave":
|
| | | h += ' class="mceItemShockWave"';
|
| | | break;
|
| | |
|
| | | case "qt":
|
| | | h += ' class="mceItemQuickTime"';
|
| | | break;
|
| | |
|
| | | case "wmp":
|
| | | h += ' class="mceItemWindowsMedia"';
|
| | | break;
|
| | |
|
| | | case "rmp":
|
| | | h += ' class="mceItemRealMedia"';
|
| | | break;
|
| | | }
|
| | |
|
| | | h += ' title="' + serializeParameters() + '"';
|
| | | h += ' width="' + f.width.value + '"';
|
| | | h += ' height="' + f.height.value + '"';
|
| | | h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
|
| | |
|
| | | h += ' />';
|
| | |
|
| | | tinyMCE.selectedInstance.execCommand('mceInsertContent', false, h);
|
| | | }
|
| | |
|
| | | tinyMCEPopup.close();
|
| | | }
|
| | |
|
| | | function getMediaListHTML() {
|
| | | if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
|
| | | var html = "";
|
| | |
|
| | | html += '<select id="linklist" name="linklist" style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.src.value=this.options[this.selectedIndex].value;">';
|
| | | html += '<option value="">---</option>';
|
| | |
|
| | | for (var i=0; i<tinyMCEMediaList.length; i++)
|
| | | html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
|
| | |
|
| | | html += '</select>';
|
| | |
|
| | | return html;
|
| | | }
|
| | |
|
| | | return "";
|
| | | }
|
| | |
|
| | | function getType(v) {
|
| | | var fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'), i, c, el, x;
|
| | |
|
| | | for (i=0; i<fo.length; i++) {
|
| | | c = fo[i].split('=');
|
| | |
|
| | | el = c[1].split(',');
|
| | | for (x=0; x<el.length; x++)
|
| | | if (v.indexOf('.' + el[x]) != -1)
|
| | | return c[0];
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | |
|
| | | function switchType(v) {
|
| | | var t = getType(v), d = document, f = d.forms[0];
|
| | |
|
| | | if (!t)
|
| | | return;
|
| | |
|
| | | selectByValue(d.forms[0], 'media_type', t);
|
| | | changedType(t);
|
| | |
|
| | | // Update qtsrc also
|
| | | if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
|
| | | alert(tinyMCE.getLang("lang_media_qt_stream_warn"));
|
| | |
|
| | | if (f.qt_qtsrc.value == '')
|
| | | f.qt_qtsrc.value = f.src.value;
|
| | | }
|
| | | }
|
| | |
|
| | | function changedType(t) {
|
| | | var d = document;
|
| | |
|
| | | d.getElementById('flash_options').style.display = 'none';
|
| | | d.getElementById('qt_options').style.display = 'none';
|
| | | d.getElementById('shockwave_options').style.display = 'none';
|
| | | d.getElementById('wmp_options').style.display = 'none';
|
| | | d.getElementById('rmp_options').style.display = 'none';
|
| | | d.getElementById(t + '_options').style.display = 'block';
|
| | | }
|
| | |
|
| | | function serializeParameters() {
|
| | | var d = document, f = d.forms[0], s = '';
|
| | |
|
| | | switch (f.media_type.options[f.media_type.selectedIndex].value) {
|
| | | case "flash":
|
| | | s += getBool('flash', 'play', true);
|
| | | s += getBool('flash', 'loop', true);
|
| | | s += getBool('flash', 'menu', true);
|
| | | s += getBool('flash', 'swliveconnect', false);
|
| | | s += getStr('flash', 'quality');
|
| | | s += getStr('flash', 'scale');
|
| | | s += getStr('flash', 'salign');
|
| | | s += getStr('flash', 'wmode');
|
| | | s += getStr('flash', 'base');
|
| | | s += getStr('flash', 'flashvars');
|
| | | break;
|
| | |
|
| | | case "qt":
|
| | | s += getBool('qt', 'loop', false);
|
| | | s += getBool('qt', 'autoplay', false);
|
| | | s += getBool('qt', 'cache', false);
|
| | | s += getBool('qt', 'controller', true);
|
| | | s += getBool('qt', 'correction', false, 'none', 'full');
|
| | | s += getBool('qt', 'enablejavascript', false);
|
| | | s += getBool('qt', 'kioskmode', false);
|
| | | s += getBool('qt', 'autohref', false);
|
| | | s += getBool('qt', 'playeveryframe', false);
|
| | | s += getBool('qt', 'targetcache', false);
|
| | | s += getStr('qt', 'scale');
|
| | | s += getStr('qt', 'starttime');
|
| | | s += getStr('qt', 'endtime');
|
| | | s += getStr('qt', 'target');
|
| | | s += getStr('qt', 'qtsrcchokespeed');
|
| | | s += getStr('qt', 'volume');
|
| | | s += getStr('qt', 'qtsrc');
|
| | | break;
|
| | |
|
| | | case "shockwave":
|
| | | s += getBool('shockwave', 'sound');
|
| | | s += getBool('shockwave', 'progress');
|
| | | s += getBool('shockwave', 'autostart');
|
| | | s += getBool('shockwave', 'swliveconnect');
|
| | | s += getStr('shockwave', 'swvolume');
|
| | | s += getStr('shockwave', 'swstretchstyle');
|
| | | s += getStr('shockwave', 'swstretchhalign');
|
| | | s += getStr('shockwave', 'swstretchvalign');
|
| | | break;
|
| | |
|
| | | case "wmp":
|
| | | s += getBool('wmp', 'autostart', true);
|
| | | s += getBool('wmp', 'enabled', false);
|
| | | s += getBool('wmp', 'enablecontextmenu', true);
|
| | | s += getBool('wmp', 'fullscreen', false);
|
| | | s += getBool('wmp', 'invokeurls', true);
|
| | | s += getBool('wmp', 'mute', false);
|
| | | s += getBool('wmp', 'stretchtofit', false);
|
| | | s += getBool('wmp', 'windowlessvideo', false);
|
| | | s += getStr('wmp', 'balance');
|
| | | s += getStr('wmp', 'baseurl');
|
| | | s += getStr('wmp', 'captioningid');
|
| | | s += getStr('wmp', 'currentmarker');
|
| | | s += getStr('wmp', 'currentposition');
|
| | | s += getStr('wmp', 'defaultframe');
|
| | | s += getStr('wmp', 'playcount');
|
| | | s += getStr('wmp', 'rate');
|
| | | s += getStr('wmp', 'uimode');
|
| | | s += getStr('wmp', 'volume');
|
| | | break;
|
| | |
|
| | | case "rmp":
|
| | | s += getBool('rmp', 'autostart', false);
|
| | | s += getBool('rmp', 'loop', false);
|
| | | s += getBool('rmp', 'autogotourl', true);
|
| | | s += getBool('rmp', 'center', false);
|
| | | s += getBool('rmp', 'imagestatus', true);
|
| | | s += getBool('rmp', 'maintainaspect', false);
|
| | | s += getBool('rmp', 'nojava', false);
|
| | | s += getBool('rmp', 'prefetch', false);
|
| | | s += getBool('rmp', 'shuffle', false);
|
| | | s += getStr('rmp', 'console');
|
| | | s += getStr('rmp', 'controls');
|
| | | s += getStr('rmp', 'numloop');
|
| | | s += getStr('rmp', 'scriptcallbacks');
|
| | | break;
|
| | | }
|
| | |
|
| | | s += getStr(null, 'id');
|
| | | s += getStr(null, 'name');
|
| | | s += getStr(null, 'src');
|
| | | s += getStr(null, 'align');
|
| | | s += getStr(null, 'bgcolor');
|
| | | s += getInt(null, 'vspace');
|
| | | s += getInt(null, 'hspace');
|
| | | s += getStr(null, 'width');
|
| | | s += getStr(null, 'height');
|
| | |
|
| | | s = s.length > 0 ? s.substring(0, s.length - 1) : s;
|
| | |
|
| | | return s;
|
| | | }
|
| | |
|
| | | function setBool(pl, p, n) {
|
| | | if (typeof(pl[n]) == "undefined")
|
| | | return;
|
| | |
|
| | | document.forms[0].elements[p + "_" + n].checked = pl[n];
|
| | | }
|
| | |
|
| | | function setStr(pl, p, n) {
|
| | | var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
|
| | |
|
| | | if (typeof(pl[n]) == "undefined")
|
| | | return;
|
| | |
|
| | | if (e.type == "text")
|
| | | e.value = pl[n];
|
| | | else
|
| | | selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
|
| | | }
|
| | |
|
| | | function getBool(p, n, d, tv, fv) {
|
| | | var v = document.forms[0].elements[p + "_" + n].checked;
|
| | |
|
| | | tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
|
| | | fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
|
| | |
|
| | | return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ',');
|
| | | }
|
| | |
|
| | | function getStr(p, n, d) {
|
| | | var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
|
| | | var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
|
| | |
|
| | | return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
|
| | | }
|
| | |
|
| | | function getInt(p, n, d) {
|
| | | var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
|
| | | var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
|
| | |
|
| | | return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
|
| | | }
|
| | |
|
| | | function jsEncode(s) {
|
| | | s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
|
| | | s = s.replace(new RegExp('"', 'g'), '\\"');
|
| | | s = s.replace(new RegExp("'", 'g'), "\\'");
|
| | |
|
| | | return s;
|
| | | }
|
| | |
|
| | | function generatePreview(c) {
|
| | | var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
|
| | |
|
| | | p.innerHTML = '<!-- x --->';
|
| | |
|
| | | nw = parseInt(f.width.value);
|
| | | nh = parseInt(f.height.value);
|
| | |
|
| | | if (f.width.value != "" && f.height.value != "") {
|
| | | if (f.constrain.checked) {
|
| | | if (c == 'width' && oldWidth != 0) {
|
| | | wp = nw / oldWidth;
|
| | | nh = Math.round(wp * nh);
|
| | | f.height.value = nh;
|
| | | } else if (c == 'height' && oldHeight != 0) {
|
| | | hp = nh / oldHeight;
|
| | | nw = Math.round(hp * nw);
|
| | | f.width.value = nw;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if (f.width.value != "")
|
| | | oldWidth = nw;
|
| | |
|
| | | if (f.height.value != "")
|
| | | oldHeight = nh;
|
| | |
|
| | | // After constrain
|
| | | pl = serializeParameters();
|
| | |
|
| | | switch (f.media_type.options[f.media_type.selectedIndex].value) {
|
| | | case "flash":
|
| | | cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
|
| | | codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
|
| | | type = 'application/x-shockwave-flash';
|
| | | break;
|
| | |
|
| | | case "shockwave":
|
| | | cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
|
| | | codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
|
| | | type = 'application/x-director';
|
| | | break;
|
| | |
|
| | | case "qt":
|
| | | cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
|
| | | codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
|
| | | type = 'video/quicktime';
|
| | | break;
|
| | |
|
| | | case "wmp":
|
| | | cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
|
| | | codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
|
| | | type = 'application/x-mplayer2';
|
| | | break;
|
| | |
|
| | | case "rmp":
|
| | | cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
|
| | | codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
|
| | | type = 'audio/x-pn-realaudio-plugin';
|
| | | break;
|
| | | }
|
| | |
|
| | | if (pl == '') {
|
| | | p.innerHTML = '';
|
| | | return;
|
| | | }
|
| | |
|
| | | pl = eval('x={' + pl + '};');
|
| | |
|
| | | if (!pl.src) {
|
| | | p.innerHTML = '';
|
| | | return;
|
| | | }
|
| | |
|
| | | pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src);
|
| | | pl.width = !pl.width ? 100 : pl.width;
|
| | | pl.height = !pl.height ? 100 : pl.height;
|
| | | pl.id = !pl.id ? 'obj' : pl.id;
|
| | | pl.name = !pl.name ? 'eobj' : pl.name;
|
| | | pl.align = !pl.align ? '' : pl.align;
|
| | |
|
| | | h += '<object classid="clsid:' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
|
| | |
|
| | | for (n in pl) {
|
| | | h += '<param name="' + n + '" value="' + pl[n] + '">';
|
| | |
|
| | | // Add extra url parameter if it's an absolute URL
|
| | | if (n == 'src' && pl[n].indexOf('://') != -1)
|
| | | h += '<param name="url" value="' + pl[n] + '" />';
|
| | | }
|
| | |
|
| | | h += '<embed type="' + type + '" ';
|
| | |
|
| | | for (n in pl)
|
| | | h += n + '="' + pl[n] + '" ';
|
| | |
|
| | | h += '></embed></object>';
|
| | |
|
| | | p.innerHTML = "<!-- x --->" + h;
|
| | | }
|
New file |
| | |
| | | // UK lang variables
|
| | |
|
| | | tinyMCE.addToLang('media',{
|
| | | title : 'Insert / edit embedded media',
|
| | | desc : 'Insert / edit embedded media',
|
| | | general : 'General',
|
| | | advanced : 'Advanced',
|
| | | file : 'File',
|
| | | list : 'List',
|
| | | size : 'Dimensions',
|
| | | preview : 'Preview',
|
| | | constrain_proportions : 'Constrain proportions',
|
| | | type : 'Type',
|
| | | id : 'Id',
|
| | | name : 'Name',
|
| | | class_name : 'Class',
|
| | | vspace : 'V-Space',
|
| | | hspace : 'H-Space',
|
| | | play : 'Auto play',
|
| | | loop : 'Loop',
|
| | | menu : 'Show menu',
|
| | | quality : 'Quality',
|
| | | scale : 'Scale',
|
| | | align : 'Align',
|
| | | salign : 'SAlign',
|
| | | wmode : 'WMode',
|
| | | bgcolor : 'Background',
|
| | | base : 'Base',
|
| | | flashvars : 'Flashvars',
|
| | | liveconnect : 'SWLiveConnect',
|
| | | autohref : 'AutoHREF',
|
| | | cache : 'Cache',
|
| | | hidden : 'Hidden',
|
| | | controller : 'Controller',
|
| | | kioskmode : 'Kiosk mode',
|
| | | playeveryframe : 'Play every frame',
|
| | | targetcache : 'Target cache',
|
| | | correction : 'No correction',
|
| | | enablejavascript : 'Enable JavaScript',
|
| | | starttime : 'Start time',
|
| | | endtime : 'End time',
|
| | | href : 'Href',
|
| | | qtsrcchokespeed : 'Choke speed',
|
| | | target : 'Target',
|
| | | volume : 'Volume',
|
| | | autostart : 'Auto start',
|
| | | enabled : 'Enabled',
|
| | | fullscreen : 'Fullscreen',
|
| | | invokeurls : 'Invoke URLs',
|
| | | mute : 'Mute',
|
| | | stretchtofit : 'Stretch to fit',
|
| | | windowlessvideo : 'Windowless video',
|
| | | balance : 'Balance',
|
| | | baseurl : 'Base URL',
|
| | | captioningid : 'Captioning id',
|
| | | currentmarker : 'Current marker',
|
| | | currentposition : 'Current position',
|
| | | defaultframe : 'Default frame',
|
| | | playcount : 'Play count',
|
| | | rate : 'Rate',
|
| | | uimode : 'UI Mode',
|
| | | flash_options : 'Flash options',
|
| | | qt_options : 'Quicktime options',
|
| | | wmp_options : 'Windows media player options',
|
| | | rmp_options : 'Real media player options',
|
| | | shockwave_options : 'Shockwave options',
|
| | | autogotourl : 'Auto goto URL',
|
| | | center : 'Center',
|
| | | imagestatus : 'Image status',
|
| | | maintainaspect : 'Maintain aspect',
|
| | | nojava : 'No java',
|
| | | prefetch : 'Prefetch',
|
| | | shuffle : 'Shuffle',
|
| | | console : 'Console',
|
| | | numloop : 'Num loops',
|
| | | controls : 'Controls',
|
| | | scriptcallbacks : 'Script callbacks',
|
| | | swstretchstyle : 'Stretch style',
|
| | | swstretchhalign : 'Stretch H-Align',
|
| | | swstretchvalign : 'Stretch V-Align',
|
| | | sound : 'Sound',
|
| | | progress : 'Progress',
|
| | | qtsrc : 'QT Src',
|
| | | qt_stream_warn : 'Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..'
|
| | | });
|
New file |
| | |
| | | <html xmlns="http://www.w3.org/1999/xhtml">
|
| | | <head>
|
| | | <title>{$lang_media_title}</title>
|
| | | <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="jscripts/media.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/editable_selects.js"></script>
|
| | | <link href="css/media.css" rel="stylesheet" type="text/css" />
|
| | | <base target="_self" />
|
| | | </head>
|
| | | <body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none">
|
| | | <form onsubmit="insertMedia();return false;" action="#">
|
| | | <div class="tabs">
|
| | | <ul>
|
| | | <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{$lang_media_general}</a></span></li>
|
| | | <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{$lang_media_advanced}</a></span></li>
|
| | | </ul>
|
| | | </div>
|
| | |
|
| | | <div class="panel_wrapper">
|
| | | <div id="general_panel" class="panel current">
|
| | | <fieldset>
|
| | | <legend>{$lang_media_general}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0">
|
| | | <tr>
|
| | | <td><label for="media_type">{$lang_media_type}</label></td>
|
| | | <td>
|
| | | <select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">
|
| | | <option value="flash">Flash</option>
|
| | | <option value="qt">Quicktime</option>
|
| | | <option value="shockwave">Shockware</option>
|
| | | <option value="wmp">Windows Media</option>
|
| | | <option value="rmp">Real Media</option>
|
| | | </select>
|
| | | </td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td><label for="src">{$lang_media_file}</label></td>
|
| | | <td>
|
| | | <table border="0" cellspacing="0" cellpadding="0">
|
| | | <tr>
|
| | | <td><input id="src" name="src" type="text" value="" onchange="switchType(this.value);generatePreview();" /></td>
|
| | | <td id="filebrowsercontainer"> </td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | <tr id="linklistrow">
|
| | | <td><label for="linklist">{$lang_media_list}</label></td>
|
| | | <td id="linklistcontainer"> </td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td><label for="width">{$lang_media_size}</label></td>
|
| | | <td>
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size" onchange="generatePreview('height');" /></td>
|
| | | <td> <input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
|
| | | <td><label id="constrainlabel" for="constrain">{$lang_media_constrain_proportions}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | |
|
| | | <fieldset>
|
| | | <legend>{$lang_media_preview}</legend>
|
| | | <div id="prev"></div>
|
| | | </fieldset>
|
| | | </div>
|
| | |
|
| | | <div id="advanced_panel" class="panel">
|
| | | <fieldset>
|
| | | <legend>{$lang_media_advanced}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0" width="100%">
|
| | | <tr>
|
| | | <td><label for="id">{$lang_media_id}</label></td>
|
| | | <td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
|
| | | <td><label for="name">{$lang_media_name}</label></td>
|
| | | <td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="align">{$lang_media_align}</label></td>
|
| | | <td>
|
| | | <select id="align" name="align" onchange="generatePreview();">
|
| | | <option value="">{$lang_not_set}</option> |
| | | <option value="top">top</option>
|
| | | <option value="right">right</option>
|
| | | <option value="bottom">bottom</option>
|
| | | <option value="left">left</option>
|
| | | </select>
|
| | | </td>
|
| | |
|
| | | <td><label for="bgcolor">{$lang_media_bgcolor}</label></td>
|
| | | <td>
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>
|
| | | <td id="bgcolor_pickcontainer"> </td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="vspace">{$lang_media_vspace}</label></td>
|
| | | <td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
|
| | | <td><label for="hspace">{$lang_media_hspace}</label></td>
|
| | | <td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | |
|
| | | <fieldset id="flash_options">
|
| | | <legend>{$lang_media_flash_options}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0">
|
| | | <tr>
|
| | | <td><label for="flash_quality">{$lang_media_quality}</label></td>
|
| | | <td>
|
| | | <select id="flash_quality" name="flash_quality" onchange="generatePreview();">
|
| | | <option value="">{$lang_not_set}</option> |
| | | <option value="high">high</option>
|
| | | <option value="low">low</option>
|
| | | <option value="autolow">autolow</option>
|
| | | <option value="autohigh">autohigh</option>
|
| | | <option value="best">best</option>
|
| | | </select>
|
| | | </td>
|
| | |
|
| | | <td><label for="flash_scale">{$lang_media_scale}</label></td>
|
| | | <td>
|
| | | <select id="flash_scale" name="flash_scale" onchange="generatePreview();">
|
| | | <option value="">{$lang_not_set}</option> |
| | | <option value="showall">showall</option>
|
| | | <option value="noborder">noborder</option>
|
| | | <option value="exactfit">exactfit</option>
|
| | | </select>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="flash_wmode">{$lang_media_wmode}</label></td>
|
| | | <td>
|
| | | <select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
|
| | | <option value="">{$lang_not_set}</option> |
| | | <option value="window">window</option>
|
| | | <option value="opaque">opaque</option>
|
| | | <option value="transparent">transparent</option>
|
| | | </select>
|
| | | </td>
|
| | |
|
| | | <td><label for="flash_salign">{$lang_media_salign}</label></td>
|
| | | <td>
|
| | | <select id="flash_salign" name="flash_salign" onchange="generatePreview();">
|
| | | <option value="">{$lang_not_set}</option> |
| | | <option value="l">left</option>
|
| | | <option value="t">top</option>
|
| | | <option value="r">right</option>
|
| | | <option value="b">bottom</option>
|
| | | <option value="tl">top-left</option>
|
| | | <option value="tr">top_right</option>
|
| | | <option value="bl">bottom-left</option>
|
| | | <option value="br">bottom-right</option>
|
| | | </select>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="flash_play">{$lang_media_play}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="flash_loop">{$lang_media_loop}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="flash_menu">{$lang_media_menu}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>
|
| | | <td><label for="flash_swliveconnect">{$lang_media_liveconnect}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | </table>
|
| | |
|
| | | <table>
|
| | | <tr>
|
| | | <td><label for="flash_base">{$lang_media_base}</label></td>
|
| | | <td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="flash_flashvars">{$lang_media_flashvars}</label></td>
|
| | | <td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | |
|
| | | <fieldset id="qt_options">
|
| | | <legend>{$lang_media_qt_options}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0">
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_loop">{$lang_media_loop}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_autoplay">{$lang_media_play}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_cache">{$lang_media_cache}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_controller">{$lang_media_controller}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_correction">{$lang_media_correction}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_enablejavascript">{$lang_media_enablejavascript}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_kioskmode">{$lang_media_kioskmode}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_autohref">{$lang_media_autohref}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_playeveryframe">{$lang_media_playeveryframe}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>
|
| | | <td><label for="qt_targetcache">{$lang_media_targetcache}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="qt_scale">{$lang_media_scale}</label></td>
|
| | | <td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">
|
| | | <option value="">{$lang_not_set}</option> |
| | | <option value="tofit">tofit</option>
|
| | | <option value="aspect">aspect</option>
|
| | | </select>
|
| | | </td>
|
| | |
|
| | | <td colspan="2"> </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="qt_starttime">{$lang_media_starttime}</label></td>
|
| | | <td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="qt_endtime">{$lang_media_endtime}</label></td>
|
| | | <td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="qt_target">{$lang_media_target}</label></td>
|
| | | <td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="qt_href">{$lang_media_href}</label></td>
|
| | | <td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="qt_qtsrcchokespeed">{$lang_media_qtsrcchokespeed}</label></td>
|
| | | <td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="qt_volume">{$lang_media_volume}</label></td>
|
| | | <td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="qt_qtsrc">{$lang_media_qtsrc}</label></td>
|
| | | <td colspan="4">
|
| | | <table border="0" cellspacing="0" cellpadding="0">
|
| | | <tr>
|
| | | <td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>
|
| | | <td id="qtsrcfilebrowsercontainer"> </td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | |
|
| | | <fieldset id="wmp_options">
|
| | | <legend>{$lang_media_wmp_options}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0">
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_autostart">{$lang_media_autostart}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_enabled">{$lang_media_enabled}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_enablecontextmenu">{$lang_media_menu}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_fullscreen">{$lang_media_fullscreen}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_invokeurls">{$lang_media_invokeurls}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_mute">{$lang_media_mute}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_stretchtofit">{$lang_media_stretchtofit}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
|
| | | <td><label for="wmp_windowlessvideo">{$lang_media_windowlessvideo}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="wmp_balance">{$lang_media_balance}</label></td>
|
| | | <td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="wmp_baseurl">{$lang_media_baseurl}</label></td>
|
| | | <td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="wmp_captioningid">{$lang_media_captioningid}</label></td>
|
| | | <td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="wmp_currentmarker">{$lang_media_currentmarker}</label></td>
|
| | | <td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="wmp_currentposition">{$lang_media_currentposition}</label></td>
|
| | | <td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="wmp_defaultframe">{$lang_media_defaultframe}</label></td>
|
| | | <td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="wmp_playcount">{$lang_media_playcount}</label></td>
|
| | | <td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="wmp_rate">{$lang_media_rate}</label></td>
|
| | | <td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="wmp_uimode">{$lang_media_uimode}</label></td>
|
| | | <td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="wmp_volume">{$lang_media_volume}</label></td>
|
| | | <td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | </table>
|
| | | </fieldset>
|
| | |
|
| | | <fieldset id="rmp_options">
|
| | | <legend>{$lang_media_rmp_options}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0">
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_autostart">{$lang_media_autostart}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_loop">{$lang_media_loop}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_autogotourl">{$lang_media_autogotourl}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_center">{$lang_media_center}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_imagestatus">{$lang_media_imagestatus}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_maintainaspect">{$lang_media_maintainaspect}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_nojava">{$lang_media_nojava}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_prefetch">{$lang_media_prefetch}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
|
| | | <td><label for="rmp_shuffle">{$lang_media_shuffle}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | |
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="rmp_console">{$lang_media_console}</label></td>
|
| | | <td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="rmp_controls">{$lang_media_controls}</label></td>
|
| | | <td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="rmp_numloop">{$lang_media_numloop}</label></td>
|
| | | <td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
|
| | |
|
| | | <td><label for="rmp_scriptcallbacks">{$lang_media_scriptcallbacks}</label></td>
|
| | | <td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | |
|
| | | <fieldset id="shockwave_options">
|
| | | <legend>{$lang_media_shockwave_options}</legend>
|
| | |
|
| | | <table border="0" cellpadding="4" cellspacing="0">
|
| | | <tr>
|
| | | <td><label for="shockwave_swstretchstyle">{$lang_media_swstretchstyle}</label></td>
|
| | | <td>
|
| | | <select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
|
| | | <option value="none">None</option>
|
| | | <option value="meet">Meet</option>
|
| | | <option value="fill">Fill</option>
|
| | | <option value="stage">Stage</option>
|
| | | </select>
|
| | | </td>
|
| | |
|
| | | <td><label for="shockwave_swvolume">{$lang_media_volume}</label></td>
|
| | | <td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td><label for="shockwave_swstretchhalign">{$lang_media_swstretchhalign}</label></td>
|
| | | <td>
|
| | | <select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">
|
| | | <option value="none">None</option>
|
| | | <option value="left">left</option>
|
| | | <option value="center">center</option>
|
| | | <option value="right">right</option>
|
| | | </select>
|
| | | </td>
|
| | |
|
| | | <td><label for="shockwave_swstretchvalign">{$lang_media_swstretchvalign}</label></td>
|
| | | <td>
|
| | | <select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">
|
| | | <option value="none">None</option>
|
| | | <option value="meet">Top</option>
|
| | | <option value="fill">Center</option>
|
| | | <option value="stage">Bottom</option>
|
| | | </select>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>
|
| | | <td><label for="shockwave_autostart">{$lang_media_autostart}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>
|
| | | <td><label for="shockwave_sound">{$lang_media_sound}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | |
|
| | |
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>
|
| | | <td><label for="shockwave_swliveconnect">{$lang_media_liveconnect}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | |
|
| | | <td colspan="2">
|
| | | <table border="0" cellpadding="0" cellspacing="0">
|
| | | <tr>
|
| | | <td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>
|
| | | <td><label for="shockwave_progress">{$lang_media_progress}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | <div class="mceActionPanel">
|
| | | <div style="float: left">
|
| | | <input type="button" id="insert" name="insert" value="{$lang_insert}" onclick="insertMedia();" />
|
| | | </div>
|
| | |
|
| | | <div style="float: right">
|
| | | <input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
|
| | | </div>
|
| | | </div>
|
| | | </form>
|
| | | </body>
|
| | | </html>
|
New file |
| | |
| | | tinyMCE.importPluginLanguagePack('nonbreaking');var TinyMCE_NonBreakingPlugin={getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_nonbreaking.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"nonbreaking":return tinyMCE.getButtonHTML(cn,'lang_nonbreaking_desc','{$pluginurl}/images/nonbreaking.gif','mceNonBreaking',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),h;switch(command){case"mceNonBreaking":h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">·</span>':' ';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,h);return true}return false},handleEvent:function(e){var inst,h;if(!tinyMCE.isOpera&&e.type=='keydown'&&e.keyCode==9&&tinyMCE.getParam('nonbreaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'<span class="mceItemHiddenVisualChar">···</span>':' ';tinyMCE.execInstanceCommand(inst.editorId,'mceInsertContent',false,h);tinyMCE.cancelEvent(e);return false}return true}};tinyMCE.addPlugin("nonbreaking",TinyMCE_NonBreakingPlugin); |
New file |
| | |
| | | /**
|
| | | * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | /* Import plugin specific language pack */
|
| | | tinyMCE.importPluginLanguagePack('nonbreaking');
|
| | |
|
| | | var TinyMCE_NonBreakingPlugin = {
|
| | | getInfo : function() {
|
| | | return {
|
| | | longname : 'Nonbreaking space',
|
| | | author : 'Moxiecode Systems AB',
|
| | | authorurl : 'http://tinymce.moxiecode.com',
|
| | | infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_nonbreaking.html',
|
| | | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
| | | };
|
| | | },
|
| | |
|
| | | getControlHTML : function(cn) {
|
| | | switch (cn) {
|
| | | case "nonbreaking":
|
| | | return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false);
|
| | | }
|
| | |
|
| | | return "";
|
| | | },
|
| | |
|
| | |
|
| | | execCommand : function(editor_id, element, command, user_interface, value) {
|
| | | var inst = tinyMCE.getInstanceById(editor_id), h;
|
| | |
|
| | | switch (command) {
|
| | | case "mceNonBreaking":
|
| | | h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">·</span>' : ' ';
|
| | | tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h);
|
| | | return true;
|
| | | }
|
| | |
|
| | | return false;
|
| | | },
|
| | |
|
| | | handleEvent : function(e) {
|
| | | var inst, h;
|
| | |
|
| | | if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) {
|
| | | inst = tinyMCE.selectedInstance;
|
| | |
|
| | | h = (inst.visualChars && inst.visualChars.state) ? '<span class="mceItemHiddenVisualChar">···</span>' : ' ';
|
| | | tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h);
|
| | |
|
| | | tinyMCE.cancelEvent(e);
|
| | | return false;
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | | };
|
| | |
|
| | | tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin);
|
New file |
| | |
| | | // UK lang variables
|
| | |
|
| | | tinyMCE.addToLang('nonbreaking',{
|
| | | desc : 'Insert non-breaking space character'
|
| | | });
|
New file |
| | |
| | | /* stylesheet for advsearchreplace plugin*/
|
| | |
|
| | | .panel_wrapper { height: 85px; }
|
| | | .panel_wrapper div.current { height: 85px; }
|
| | |
|
| | | /* MS IE only styles */
|
| | | * html .panel_wrapper { height: 100px; }
|
| | | * html .panel_wrapper div.current { height: 100px; }
|
| | |
|
| | | #replaceBtn, #replaceAllBtn {
|
| | | padding-bottom: 2px;
|
| | | font-weight: bold;
|
| | | width: 90px;
|
| | | height: 21px;
|
| | | border: 0;
|
| | | cursor: pointer;
|
| | | }
|
| | |
|
| | | #replaceBtn { background: url(../images/replace_button_bg.gif); }
|
| | | #replaceAllBtn { background: url(../images/replace_all_button_bg.gif); }
|
| | |
| | | tinyMCE.importPluginLanguagePack('searchreplace','en,tr,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk');var TinyMCE_SearchReplacePlugin={getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};},initInstance:function(inst){inst.addShortcut('ctrl','f','lang_searchreplace_search_desc','mceSearch',true);},getControlHTML:function(cn){switch(cn){case"search":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_search_desc','{$pluginurl}/images/search.gif','mceSearch',true);case"replace":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_replace_desc','{$pluginurl}/images/replace.gif','mceSearchReplace',true);}return"";},execCommand:function(editor_id,element,command,user_interface,value){var instance=tinyMCE.getInstanceById(editor_id);function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key];}function replaceSel(search_str,str,back){instance.execCommand('mceInsertContent',false,str);}if(!value)value=new Array();defValue("editor_id",editor_id);defValue("searchstring","");defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");switch(command){case"mceResetSearch":tinyMCE.lastSearchRng=null;return true;case"mceSearch":if(user_interface){var template=new Array();if(value['replacestring']!=null){template['file']='../../plugins/searchreplace/replace.htm';template['width']=320;template['height']=100+(tinyMCE.isNS7?20:0);template['width']+=tinyMCE.getLang('lang_searchreplace_replace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_replace_delta_height',0);}else{template['file']='../../plugins/searchreplace/search.htm';template['width']=310;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_searchreplace_search_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_replace_delta_height',0);}instance.execCommand('SelectAll');if(tinyMCE.isMSIE){var r=instance.selection.getRng();r.collapse(true);r.select();}else instance.selection.getSel().collapseToStart();tinyMCE.openWindow(template,value);}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;if(body.innerHTML==""){alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true;}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring'],value['backwards']);value['replacemode']="none";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}if(tinyMCE.isMSIE){var rng=tinyMCE.lastSearchRng?tinyMCE.lastSearchRng:doc.selection.createRange();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){alert('This operation is currently not supported by this browser.');return true;}if(value['replacemode']=="all"){while(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(false);replaceSel(value['string'],value['replacestring'],value['backwards']);}alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(value['backwards']);tinyMCE.lastSearchRng=rng;}else alert(tinyMCE.getLang('lang_searchreplace_notfound'));}else{if(value['replacemode']=="all"){while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))replaceSel(value['string'],value['replacestring'],value['backwards']);alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))alert(tinyMCE.getLang('lang_searchreplace_notfound'));}}return true;case"mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}return false;}};tinyMCE.addPlugin("searchreplace",TinyMCE_SearchReplacePlugin); |
| | | tinyMCE.importPluginLanguagePack('searchreplace');var TinyMCE_SearchReplacePlugin={getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','f','lang_searchreplace_search_desc','mceSearch',true);},getControlHTML:function(cn){switch(cn){case"search":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_search_desc','{$pluginurl}/images/search.gif','mceSearch',true);case"replace":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_replace_desc','{$pluginurl}/images/replace.gif','mceSearchReplace',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),selectedText=inst.selection.getSelectedText(),rng;function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key]}function replaceSel(search_str,str,back){inst.execCommand('mceInsertContent',false,str)}if(!value)value=[];defValue("editor_id",editor_id);defValue("searchstring",selectedText);defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");defValue("resizable","no");switch(command){case"mceResetSearch":tinyMCE.lastSearchRng=null;return true;case"mceSearch":if(user_interface){var template=new Array();template['file']='../../plugins/searchreplace/searchreplace.htm';template['width']=380;template['height']=155+(tinyMCE.isNS7?20:0)+(tinyMCE.isMSIE?15:0);template['width']+=tinyMCE.getLang('lang_searchreplace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_delta_height',0);inst.execCommand('SelectAll');if(tinyMCE.isMSIE){var r=inst.selection.getRng();r.collapse(true);r.select()}else inst.selection.getSel().collapseToStart();tinyMCE.openWindow(template,value)}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;if(body.innerHTML==""){alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring'],value['backwards']);value['replacemode']="none";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true}if(tinyMCE.isMSIE){var rng=tinyMCE.lastSearchRng?tinyMCE.lastSearchRng:doc.selection.createRange();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){alert('This operation is currently not supported by this browser.');return true}if(value['replacemode']=="all"){while(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(false);replaceSel(value['string'],value['replacestring'],value['backwards'])}alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(value['backwards']);tinyMCE.lastSearchRng=rng}else alert(tinyMCE.getLang('lang_searchreplace_notfound'))}else{if(value['replacemode']=="all"){while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))replaceSel(value['string'],value['replacestring'],value['backwards']);alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))alert(tinyMCE.getLang('lang_searchreplace_notfound'))}}return true;case"mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true}return false}};tinyMCE.addPlugin("searchreplace",TinyMCE_SearchReplacePlugin); |
| | |
| | | /**
|
| | | * $RCSfile: editor_plugin_src.js,v $
|
| | | * $Revision: 1.27 $
|
| | | * $Date: 2006/02/13 15:09:28 $
|
| | | * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | /* Import theme specific language pack */
|
| | | tinyMCE.importPluginLanguagePack('searchreplace', 'en,tr,sv,zh_cn,fa,fr_ca,fr,de,pl,pt_br,cs,nl,da,he,nb,hu,ru,ru_KOI8-R,ru_UTF-8,nn,fi,cy,es,is,zh_tw,zh_tw_utf8,sk');
|
| | | tinyMCE.importPluginLanguagePack('searchreplace');
|
| | |
|
| | | var TinyMCE_SearchReplacePlugin = {
|
| | | getInfo : function() {
|
| | | return {
|
| | | longname : 'Search/Replace',
|
| | | author : 'Moxiecode Systems',
|
| | | author : 'Moxiecode Systems AB',
|
| | | authorurl : 'http://tinymce.moxiecode.com',
|
| | | infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',
|
| | | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
| | | };
|
| | | },
|
| | |
|
| | | initInstance : function(inst) {
|
| | | initInstance : function (inst) {
|
| | | inst.addShortcut('ctrl', 'f', 'lang_searchreplace_search_desc', 'mceSearch', true);
|
| | | // No CTRL+R for "replace" because browsers will reload page instead of executing plugin
|
| | | },
|
| | |
|
| | | getControlHTML : function(cn) {
|
| | | getControlHTML : function (cn) {
|
| | | switch (cn) {
|
| | | case "search":
|
| | | return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif', 'mceSearch', true);
|
| | | case "replace":
|
| | | case "search" :
|
| | | return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true);
|
| | |
|
| | | case "replace" :
|
| | | return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true);
|
| | | }
|
| | |
|
| | | return "";
|
| | | },
|
| | |
|
| | | /**
|
| | | * Executes the search/replace commands.
|
| | | */
|
| | | execCommand : function(editor_id, element, command, user_interface, value) {
|
| | | var instance = tinyMCE.getInstanceById(editor_id);
|
| | | execCommand : function (editor_id, element, command, user_interface, value) {
|
| | | var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng;
|
| | |
|
| | | function defValue(key, default_value) {
|
| | | value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
|
| | | }
|
| | |
|
| | | function replaceSel(search_str, str, back) {
|
| | | instance.execCommand('mceInsertContent', false, str);
|
| | | inst.execCommand('mceInsertContent', false, str);
|
| | | }
|
| | |
|
| | | if (!value)
|
| | | value = new Array();
|
| | | value = [];
|
| | |
|
| | | // Setup defualt values
|
| | | defValue("editor_id", editor_id);
|
| | | defValue("searchstring", "");
|
| | | defValue("searchstring", selectedText);
|
| | | defValue("replacestring", null);
|
| | | defValue("replacemode", "none");
|
| | | defValue("casesensitive", false);
|
| | |
| | | defValue("wrap", false);
|
| | | defValue("wholeword", false);
|
| | | defValue("inline", "yes");
|
| | | defValue("resizable", "no");
|
| | |
|
| | | // Handle commands
|
| | | switch (command) {
|
| | | case "mceResetSearch":
|
| | | case "mceResetSearch" :
|
| | | tinyMCE.lastSearchRng = null;
|
| | | return true;
|
| | |
|
| | | case "mceSearch":
|
| | | case "mceSearch" :
|
| | | if (user_interface) {
|
| | | // Open search dialog
|
| | | var template = new Array();
|
| | |
|
| | | if (value['replacestring'] != null) {
|
| | | template['file'] = '../../plugins/searchreplace/replace.htm'; // Relative to theme
|
| | | template['width'] = 320;
|
| | | template['height'] = 100 + (tinyMCE.isNS7 ? 20 : 0);
|
| | | template['width'] += tinyMCE.getLang('lang_searchreplace_replace_delta_width', 0);
|
| | | template['height'] += tinyMCE.getLang('lang_searchreplace_replace_delta_height', 0);
|
| | | } else {
|
| | | template['file'] = '../../plugins/searchreplace/search.htm'; // Relative to theme
|
| | | template['width'] = 310;
|
| | | template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0);
|
| | | template['width'] += tinyMCE.getLang('lang_searchreplace_search_delta_width', 0);
|
| | | template['height'] += tinyMCE.getLang('lang_searchreplace_replace_delta_height', 0);
|
| | | }
|
| | | template['file'] = '../../plugins/searchreplace/searchreplace.htm';
|
| | | template['width'] = 380;
|
| | | template['height'] = 155 + (tinyMCE.isNS7 ? 20 : 0) + (tinyMCE.isMSIE ? 15 : 0);
|
| | | template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0);
|
| | | template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0);
|
| | |
|
| | | instance.execCommand('SelectAll');
|
| | | inst.execCommand('SelectAll');
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | var r = instance.selection.getRng();
|
| | | var r = inst.selection.getRng();
|
| | | r.collapse(true);
|
| | | r.select();
|
| | | } else
|
| | | instance.selection.getSel().collapseToStart();
|
| | | inst.selection.getSel().collapseToStart();
|
| | |
|
| | | tinyMCE.openWindow(template, value);
|
| | | } else {
|
| | | var win = tinyMCE.getInstanceById(editor_id).contentWindow;
|
| | | var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
|
| | | var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body;
|
| | |
|
| | | // Whats the point
|
| | | if (body.innerHTML == "") {
|
| | | alert(tinyMCE.getLang('lang_searchreplace_notfound'));
|
| | | return true;
|
| | | }
|
| | |
|
| | | // Handle replace current
|
| | | if (value['replacemode'] == "current") {
|
| | | replaceSel(value['string'], value['replacestring'], value['backwards']);
|
| | |
|
| | | // Search next one
|
| | | value['replacemode'] = "none";
|
| | | tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | var rng = tinyMCE.lastSearchRng ? tinyMCE.lastSearchRng : doc.selection.createRange();
|
| | | var flags = 0;
|
| | |
|
| | | if (value['wholeword'])
|
| | | flags = flags | 2;
|
| | |
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | // Handle replace all mode
|
| | | if (value['replacemode'] == "all") {
|
| | | while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
|
| | | rng.scrollIntoView();
|
| | |
| | | tinyMCE.lastSearchRng = rng;
|
| | | } else
|
| | | alert(tinyMCE.getLang('lang_searchreplace_notfound'));
|
| | |
|
| | | } else {
|
| | | if (value['replacemode'] == "all") {
|
| | | while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
|
| | |
| | | alert(tinyMCE.getLang('lang_searchreplace_notfound'));
|
| | | }
|
| | | }
|
| | |
|
| | | return true;
|
| | |
|
| | | case "mceSearchReplace":
|
| | | case "mceSearchReplace" :
|
| | | value['replacestring'] = "";
|
| | |
|
| | | tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
|
| | | return true;
|
| | | }
|
| | |
|
| | | // Pass to next handler in chain
|
| | | return false;
|
| | | }
|
| | | };
|
| | |
|
| | | tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin);
|
| | | tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin); |
New file |
| | |
| | | function init() {
|
| | | tinyMCEPopup.resizeToInnerSize();
|
| | |
|
| | | // start with appropiate tab
|
| | | var task = (tinyMCE.getWindowArg("replacestring") != null) ? "replace" : "search";
|
| | | mcTabs.displayTab(task + '_tab', task +'_panel');
|
| | | manageReplaceButtons();
|
| | | |
| | | var formObj = document.forms[0];
|
| | |
|
| | | formObj[task + "_panel_searchstring"].value = tinyMCE.getWindowArg("searchstring");
|
| | | formObj["replace_panel_replacestring"].value = (tinyMCE.getWindowArg("replacestring") != null) ? tinyMCE.getWindowArg("replacestring") : "";
|
| | | formObj[task + "_panel_casesensitivebox"].checked = tinyMCE.getWindowArg("casesensitive");
|
| | | formObj[task + "_panel_backwardsu"].checked = tinyMCE.getWindowArg("backwards");
|
| | | formObj[task + "_panel_backwardsd"].checked = !tinyMCE.getWindowArg("backwards");
|
| | |
|
| | | tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""}, false);
|
| | | }
|
| | |
|
| | | function searchNext(replacemode) {
|
| | | // "search" or "replace" mode of operation?
|
| | | var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";
|
| | |
|
| | | var formObj = document.forms[0];
|
| | |
|
| | | if (task == "replace") {
|
| | | // Whats the point?
|
| | | if (formObj[task + "_panel_searchstring"].value == "" || formObj[task + "_panel_searchstring"].value == formObj[task + "_panel_replacestring"].value)
|
| | | return;
|
| | | }
|
| | |
|
| | | // Do search
|
| | | tinyMCEPopup.execCommand('mceSearch', false, { |
| | | string : formObj[task + "_panel_searchstring"].value,
|
| | | replacestring : formObj["replace_panel_replacestring"].value,
|
| | | replacemode : replacemode,
|
| | | casesensitive : formObj[task + "_panel_casesensitivebox"].checked,
|
| | | backwards : false
|
| | | }, false);
|
| | |
|
| | | window.focus();
|
| | | }
|
| | |
|
| | | function cancelAction() {
|
| | | tinyMCEPopup.close();
|
| | | }
|
| | |
|
| | | function manageReplaceButtons() {
|
| | | // "search" or "replace" mode of operation?
|
| | | var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace";
|
| | | document.getElementById("replace_buttons").style.visibility = (task == "replace") ? "visible" : "hidden";
|
| | | }
|
| | |
|
| | | function copyValues(link) {
|
| | | // check if tab is already active
|
| | | var tab = link;
|
| | | while (tab.tagName && tab.tagName.toLowerCase() != "li") tab = tab.parentNode;
|
| | | if (tab.className) return false; // tab is already active -> no need to copy any values!
|
| | |
|
| | | // copy values from one panel to the other (if they exist there)
|
| | | var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel";
|
| | | var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel";
|
| | |
|
| | | // find all elements with IDs to copy their values
|
| | | var elms = document.getElementById(from_panel_name).getElementsByTagName("*");
|
| | | for (var i = 0; i < elms.length; i++) {
|
| | | if (elms[i].id && elms[i].id != "") {
|
| | | var checked = "undefined";
|
| | | if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio")
|
| | | checked = elms[i].checked;
|
| | |
|
| | | // copy values if element exists in other panel
|
| | | var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length);
|
| | | var to_elm = document.getElementById(to_elm_name);
|
| | | if (to_elm) {
|
| | | if (checked != "undefined")
|
| | | to_elm.checked = checked;
|
| | | else
|
| | | to_elm.value = elms[i].value;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | return false;
|
| | | } |
New file |
| | |
| | | <html xmlns="http://www.w3.org/1999/xhtml">
|
| | | <head>
|
| | | <title>{$lang_searchreplace_replace_title}</title>
|
| | | <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="jscripts/searchreplace.js"></script>
|
| | | <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
|
| | | <base target="_self" />
|
| | | </head>
|
| | | <body onload="tinyMCEPopup.executeOnLoad('init();');" style="display: none; margin: 4px;">
|
| | | <form onsubmit="return false;" action="#">
|
| | | <div class="tabs">
|
| | | <ul>
|
| | | <li id="search_tab"><span><a href="javascript:mcTabs.displayTab('search_tab','search_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_search_desc}</a></span></li>
|
| | | <li id="replace_tab"><span><a href="javascript:mcTabs.displayTab('replace_tab','replace_panel');manageReplaceButtons();" onmousedown="return copyValues(this);">{$lang_searchreplace_replace}</a></span></li>
|
| | | </ul>
|
| | | </div>
|
| | |
|
| | | <div class="panel_wrapper">
|
| | |
|
| | | <div id="search_panel" class="panel">
|
| | | <table border="0" cellspacing="0" cellpadding="2">
|
| | | <tr>
|
| | | <td><label for="search_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
|
| | | <td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellspacing="0" cellpadding="0" class="direction">
|
| | | <tr>
|
| | | <td><label>{$lang_searchreplace_direction}</label></td>
|
| | | <td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
|
| | | <td><label for="search_panel_backwardsu">{$lang_searchreplace_up}</label></td>
|
| | | <td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" /></td>
|
| | | <td><label for="search_panel_backwardsd">{$lang_searchreplace_down}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellspacing="0" cellpadding="0">
|
| | | <tr>
|
| | | <td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
|
| | | <td><label for="search_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | </table>
|
| | | </div>
|
| | |
|
| | | <div id="replace_panel" class="panel">
|
| | | <table border="0" cellspacing="0" cellpadding="2">
|
| | | <tr>
|
| | | <td><label for="replace_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
|
| | | <td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td><label for="replace_panel_replacestring">{$lang_searchreplace_replacewith}</label></td>
|
| | | <td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellspacing="0" cellpadding="0" class="direction">
|
| | | <tr>
|
| | | <td><label>{$lang_searchreplace_direction}</label></td>
|
| | | <td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
|
| | | <td><label for="replace_panel_backwardsu">{$lang_searchreplace_up}</label></td>
|
| | | <td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" /></td>
|
| | | <td><label for="replace_panel_backwardsd">{$lang_searchreplace_down}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td colspan="2">
|
| | | <table border="0" cellspacing="0" cellpadding="0">
|
| | | <tr>
|
| | | <td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
|
| | | <td><label for="replace_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
|
| | | </tr>
|
| | | </table>
|
| | | </td>
|
| | | </tr>
|
| | | </table>
|
| | | </div>
|
| | |
|
| | | </div>
|
| | |
|
| | | <div class="mceActionPanel">
|
| | | <div style="text-align: center;">
|
| | | <input type="button" id="insert" name="insert" value="{$lang_searchreplace_findnext}" onclick="searchNext('none');" />
|
| | | <span id="replace_buttons">
|
| | | <input type="button" id="replaceBtn" name="replaceBtn" value="{$lang_searchreplace_replace}" onclick="searchNext('current');" />
|
| | | <input type="button" id="replaceAllBtn" name="replaceAllBtn" value="{$lang_searchreplace_replaceall}" onclick="searchNext('all');;" />
|
| | | </span>
|
| | | <input type="button" id="cancel" name="cancel" value="{$lang_searchreplace_cancel}" onclick="tinyMCEPopup.close();" />
|
| | | </div>
|
| | | </div>
|
| | | </form>
|
| | | </body>
|
| | | </html>
|
| | |
| | | tinyMCE.importPluginLanguagePack('table','en,tr,ar,cs,da,de,el,es,fi,fr_ca,hu,it,ja,ko,nl,nb,pl,pt,pt_br,sv,tw,zh_cn,fr,de,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,is,zh_tw,zh_tw_utf8,sk');var TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_table.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion};},initInstance:function(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_TablePlugin._mouseDownHandler);}inst.tableRowClipboard=null;},getControlHTML:function(control_name){var controls=new Array(['table','table.gif','lang_table_desc','mceInsertTable',true],['delete_col','table_delete_col.gif','lang_table_delete_col_desc','mceTableDeleteCol'],['delete_row','table_delete_row.gif','lang_table_delete_row_desc','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','lang_table_col_after_desc','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','lang_table_col_before_desc','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','lang_table_row_after_desc','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','lang_table_row_before_desc','mceTableInsertRowBefore'],['row_props','table_row_props.gif','lang_table_row_desc','mceTableRowProps',true],['cell_props','table_cell_props.gif','lang_table_cell_desc','mceTableCellProps',true],['split_cells','table_split_cells.gif','lang_table_split_cells_desc','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','lang_table_merge_cells_desc','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name)return tinyMCE.getButtonHTML(control_name,but[2],'{$pluginurl}/images/'+but[1],but[3],(but.length>4?but[4]:false));}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html;}return"";},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_TablePlugin._doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true;}return false;},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1";var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClass(editor_id+'_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_cell_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_split_cells','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonDisabled');if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClass(editor_id+'_cell_props','mceButtonSelected');tinyMCE.switchClass(editor_id+'_row_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonNormal');colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClass(editor_id+'_split_cells','mceButtonNormal');}if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClass(editor_id+'_row_props','mceButtonSelected');if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClass(editor_id+'_table','mceButtonSelected');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonNormal');}},_mouseDownHandler:function(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);},10);}},_doExecCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML=" ";}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getTableGrid(table){var grid=new Array();var rows=table.rows;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].cells.length;x++){var td=rows[y].cells[x];var sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(var y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(var x2=xstart;x2<xstart+sd['colspan'];x2++){grid[y2][x2]=td;}}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table);var cpos=getCellPos(grid,td);if(new_tr.cells.length!=tr.childNodes.length){var cells=tr.childNodes;var lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node;}}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML=" ";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML=" ";}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"});}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"});}return true;case"mceInsertTable":if(user_interface){var template=new Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value});}return true;case"mceTableDelete":var table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint();}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML=" ";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);break;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"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML=" ";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);}break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm.parentNode.removeChild(tableElm);return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;inst.selection.selectNode(getCell(grid,cpos.rowindex,0),true,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";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;}}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.parentNode.removeChild(tableElm);return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;inst.selection.selectNode(getCell(grid,0,cpos.cellindex),true,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML=" ";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!=" "&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}break;}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint();}return true;}return false;}};tinyMCE.addPlugin("table",TinyMCE_TablePlugin); |
| | | tinyMCE.importPluginLanguagePack('table');var TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_table.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_TablePlugin._mouseDownHandler)}inst.tableRowClipboard=null},getControlHTML:function(control_name){var controls=new Array(['table','table.gif','lang_table_desc','mceInsertTable',true],['delete_table','table_delete.gif','lang_table_del','mceTableDelete'],['delete_col','table_delete_col.gif','lang_table_delete_col_desc','mceTableDeleteCol'],['delete_row','table_delete_row.gif','lang_table_delete_row_desc','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','lang_table_col_after_desc','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','lang_table_col_before_desc','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','lang_table_row_after_desc','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','lang_table_row_before_desc','mceTableInsertRowBefore'],['row_props','table_row_props.gif','lang_table_row_desc','mceTableRowProps',true],['cell_props','table_cell_props.gif','lang_table_cell_desc','mceTableCellProps',true],['split_cells','table_split_cells.gif','lang_table_split_cells_desc','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','lang_table_merge_cells_desc','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name)return tinyMCE.getButtonHTML(control_name,but[2],'{$pluginurl}/images/'+but[1],but[3],(but.length>4?but[4]:false))}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_TablePlugin._doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1",tdElm;var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClass(editor_id+'_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_cell_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_split_cells','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonDisabled');if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClass(editor_id+'_cell_props','mceButtonSelected');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonNormal');colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClass(editor_id+'_split_cells','mceButtonNormal')}if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClass(editor_id+'_row_props','mceButtonSelected');if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClass(editor_id+'_table','mceButtonSelected');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonNormal')}},_mouseDownHandler:function(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance)},10)}},_doExecCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true}return false}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML=" "}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan}}function getCellPos(grid,td){var x,y;for(y=0;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y}}}return null}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null}function getTableGrid(table){var grid=new Array(),rows=table.rows,x,y,td,sd,xstart,x2,y2;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td}}}return grid}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table),cpos=getCellPos(grid,td);var cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td}deleteMarked(tableElm)}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node}return null}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return node}}return null}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td)}while((td=nexttd)!=null)}}while((tr=next)!=null)}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML=" ";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR")}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML=" "}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm}return newTR}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return true;case"mceInsertTable":if(user_interface){var template=new Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value})}return true;case"mceTableDelete":var table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint()}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":if(!tableElm)return true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML=" ";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}trElm.parentNode.insertBefore(newTR,trElm);grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex+1,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML=" ";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR)}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD)}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true}lastTDElm=tdElm}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex+1),tinyMCE.isGecko,true);break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm)}lastTDElm=tdElm}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML=" ";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)addRows(newTD,trElm,rowspan)}addRows(tdElm,trElm,rowspan)}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td}}if(rowCells.length>0)rows[rows.length]=rowCells}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td}}}if(rowCells.length>0)rows[rows.length]=rowCells}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y}x2=x;y2=y;grid[y][x]._selected=true}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true}lastRowSpan=sd['rowspan']}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true}lastColSpan=sd['colspan']}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!=" "&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.rowSpan--}}}}break}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint()}return true}return false}};tinyMCE.addPlugin("table",TinyMCE_TablePlugin); |
| | |
| | | /**
|
| | | * $RCSfile: editor_plugin_src.js,v $
|
| | | * $Revision: 1.38 $
|
| | | * $Date: 2006/02/11 18:53:51 $
|
| | | * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | /* Import plugin specific language pack */
|
| | | tinyMCE.importPluginLanguagePack('table', 'en,tr,ar,cs,da,de,el,es,fi,fr_ca,hu,it,ja,ko,nl,nb,pl,pt,pt_br,sv,tw,zh_cn,fr,de,he,nb,ru,ru_KOI8-R,ru_UTF-8,nn,cy,is,zh_tw,zh_tw_utf8,sk');
|
| | | tinyMCE.importPluginLanguagePack('table');
|
| | |
|
| | | var TinyMCE_TablePlugin = {
|
| | | getInfo : function() {
|
| | | return {
|
| | | longname : 'Tables',
|
| | | author : 'Moxiecode Systems',
|
| | | author : 'Moxiecode Systems AB',
|
| | | authorurl : 'http://tinymce.moxiecode.com',
|
| | | infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_table.html',
|
| | | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
| | |
| | | getControlHTML : function(control_name) {
|
| | | var controls = new Array(
|
| | | ['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true],
|
| | | ['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'],
|
| | | ['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'],
|
| | | ['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'],
|
| | | ['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'],
|
| | |
| | | },
|
| | |
|
| | | handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
|
| | | var colspan = "1", rowspan = "1";
|
| | | var colspan = "1", rowspan = "1", tdElm;
|
| | |
|
| | | var inst = tinyMCE.getInstanceById(editor_id);
|
| | |
|
| | | // Reset table controls
|
| | | tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal');
|
| | | tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled');
|
| | | tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled');
|
| | | tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled');
|
| | | tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled');
|
| | |
| | | // Within a td element
|
| | | if (tdElm = tinyMCE.getParentElement(node, "td,th")) {
|
| | | tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected');
|
| | | tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal');
|
| | | tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal');
|
| | | tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal');
|
| | | tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal');
|
| | |
| | | }
|
| | |
|
| | | function getCellPos(grid, td) {
|
| | | for (var y=0; y<grid.length; y++) {
|
| | | for (var x=0; x<grid[y].length; x++) {
|
| | | 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};
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | function getTableGrid(table) {
|
| | | var grid = new Array();
|
| | | var rows = table.rows;
|
| | | var grid = new Array(), rows = table.rows, x, y, td, sd, xstart, x2, y2;
|
| | |
|
| | | for (var y=0; y<rows.length; y++) {
|
| | | for (var x=0; x<rows[y].cells.length; x++) {
|
| | | var td = rows[y].cells[x];
|
| | | var sd = getColRowSpan(td);
|
| | | for (y=0; y<rows.length; y++) {
|
| | | for (x=0; x<rows[y].cells.length; x++) {
|
| | | td = rows[y].cells[x];
|
| | | sd = getColRowSpan(td);
|
| | |
|
| | | // All ready filled
|
| | | for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
|
| | |
|
| | | // Fill box
|
| | | for (var y2=y; y2<y+sd['rowspan']; y2++) {
|
| | | for (y2=y; y2<y+sd['rowspan']; y2++) {
|
| | | if (!grid[y2])
|
| | | grid[y2] = new Array();
|
| | |
|
| | | for (var x2=xstart; x2<xstart+sd['colspan']; x2++) {
|
| | | for (x2=xstart; x2<xstart+sd['colspan']; x2++)
|
| | | grid[y2][x2] = td;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | function trimRow(table, tr, td, new_tr) {
|
| | | var grid = getTableGrid(table);
|
| | | var cpos = getCellPos(grid, td);
|
| | | var grid = getTableGrid(table), cpos = getCellPos(grid, td);
|
| | | var cells, lastElm;
|
| | |
|
| | | // Time to crop away some
|
| | | if (new_tr.cells.length != tr.childNodes.length) {
|
| | | var cells = tr.childNodes;
|
| | | var lastElm = null;
|
| | | cells = tr.childNodes;
|
| | | lastElm = null;
|
| | |
|
| | | for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
|
| | | var remove = true;
|
| | |
| | | // Table has a tbody use that reference
|
| | | // Changed logic by ApTest 2005.07.12 (www.aptest.com)
|
| | | // Now lookk at the focused element and take its parentNode. That will be a tbody or a table.
|
| | | if (tableElm != trElm.parentNode)
|
| | | if (trElm && tableElm != trElm.parentNode)
|
| | | tableElm = trElm.parentNode;
|
| | |
|
| | | if (tableElm && trElm) {
|
| | | switch (command) {
|
| | | case "mceTableInsertRowBefore":
|
| | | if (!trElm || !tdElm)
|
| | | return true;
|
| | |
|
| | | var grid = getTableGrid(tableElm);
|
| | | var cpos = getCellPos(grid, tdElm);
|
| | | var newTR = doc.createElement("tr");
|
| | | var lastTDElm = null;
|
| | |
|
| | | cpos.rowindex--;
|
| | | if (cpos.rowindex < 0)
|
| | | cpos.rowindex = 0;
|
| | |
|
| | | // Create cells
|
| | | for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
|
| | | if (tdElm != lastTDElm) {
|
| | | var sd = getColRowSpan(tdElm);
|
| | |
|
| | | if (sd['rowspan'] == 1) {
|
| | | var newTD = doc.createElement("td");
|
| | |
|
| | | newTD.innerHTML = " ";
|
| | | newTD.colSpan = tdElm.colSpan;
|
| | |
|
| | | newTR.appendChild(newTD);
|
| | | } else
|
| | | tdElm.rowSpan = sd['rowspan'] + 1;
|
| | |
|
| | | lastTDElm = tdElm;
|
| | | }
|
| | | }
|
| | |
|
| | | trElm.parentNode.insertBefore(newTR, trElm);
|
| | | break;
|
| | |
|
| | | case "mceTableCutRow":
|
| | | if (!trElm || !tdElm)
|
| | | return true;
|
| | |
| | |
|
| | | break;
|
| | |
|
| | | case "mceTableInsertRowBefore":
|
| | | if (!trElm || !tdElm)
|
| | | return true;
|
| | |
|
| | | var grid = getTableGrid(tableElm);
|
| | | var cpos = getCellPos(grid, tdElm);
|
| | | var newTR = doc.createElement("tr");
|
| | | var lastTDElm = null;
|
| | |
|
| | | cpos.rowindex--;
|
| | | if (cpos.rowindex < 0)
|
| | | cpos.rowindex = 0;
|
| | |
|
| | | // Create cells
|
| | | for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
|
| | | if (tdElm != lastTDElm) {
|
| | | var sd = getColRowSpan(tdElm);
|
| | |
|
| | | if (sd['rowspan'] == 1) {
|
| | | var newTD = doc.createElement("td");
|
| | |
|
| | | newTD.innerHTML = " ";
|
| | | newTD.colSpan = tdElm.colSpan;
|
| | |
|
| | | newTR.appendChild(newTD);
|
| | | } else
|
| | | tdElm.rowSpan = sd['rowspan'] + 1;
|
| | |
|
| | | lastTDElm = tdElm;
|
| | | }
|
| | | }
|
| | |
|
| | | trElm.parentNode.insertBefore(newTR, trElm);
|
| | |
|
| | | grid = getTableGrid(tableElm);
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex + 1, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
|
| | | break;
|
| | |
|
| | | case "mceTableInsertRowAfter":
|
| | | if (!trElm || !tdElm)
|
| | | return true;
|
| | |
| | | else
|
| | | tableElm.appendChild(newTR);
|
| | | }
|
| | |
|
| | | grid = getTableGrid(tableElm);
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
|
| | | break;
|
| | |
|
| | | case "mceTableDeleteRow":
|
| | | if (!trElm || !tdElm)
|
| | | return true;
|
| | | |
| | |
|
| | | var grid = getTableGrid(tableElm);
|
| | | var cpos = getCellPos(grid, tdElm);
|
| | |
|
| | | // Only one row, remove whole table
|
| | | if (grid.length == 1) {
|
| | | tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
|
| | | tableElm.parentNode.removeChild(tableElm);
|
| | | return true;
|
| | | }
|
| | |
| | | if (cpos.rowindex < 0)
|
| | | cpos.rowindex = 0;
|
| | |
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), true, true);
|
| | | // Recalculate grid and select
|
| | | grid = getTableGrid(tableElm);
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
|
| | | break;
|
| | |
|
| | | case "mceTableInsertColBefore":
|
| | |
| | | lastTDElm = tdElm;
|
| | | }
|
| | | }
|
| | |
|
| | | grid = getTableGrid(tableElm);
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko
|
| | | break;
|
| | |
|
| | | case "mceTableInsertColAfter":
|
| | |
| | | lastTDElm = tdElm;
|
| | | }
|
| | | }
|
| | |
|
| | | grid = getTableGrid(tableElm);
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko
|
| | | break;
|
| | |
|
| | | case "mceTableDeleteCol":
|
| | |
| | |
|
| | | // Only one col, remove whole table
|
| | | if (grid.length > 1 && grid[0].length <= 1) {
|
| | | tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody
|
| | | tableElm.parentNode.removeChild(tableElm);
|
| | | return true;
|
| | | }
|
| | |
| | | if (cpos.cellindex < 0)
|
| | | cpos.cellindex = 0;
|
| | |
|
| | | inst.selection.selectNode(getCell(grid, 0, cpos.cellindex), true, true);
|
| | | // Recalculate grid and select
|
| | | grid = getTableGrid(tableElm);
|
| | | inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko
|
| | | break;
|
| | |
|
| | | case "mceTableSplitCells":
|
| | |
| | | var args = new Array();
|
| | | var formObj = document.forms[0];
|
| | |
|
| | | if (!AutoValidator.validate(formObj)) {
|
| | | alert(tinyMCE.getLang('lang_invalid_data'));
|
| | | return false;
|
| | | }
|
| | |
|
| | | args["numcols"] = formObj.numcols.value;
|
| | | args["numrows"] = formObj.numrows.value;
|
| | |
|
| | |
| | | var elm = tinyMCE.tableElm;
|
| | | var cellLimit, rowLimit, colLimit;
|
| | |
|
| | | if (!AutoValidator.validate(formObj)) {
|
| | | alert(tinyMCE.getLang('lang_invalid_data'));
|
| | | return false;
|
| | | }
|
| | |
|
| | | tinyMCEPopup.restoreSelection();
|
| | |
|
| | | // Get form data
|
| | |
| | | document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
|
| | | document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
|
| | |
|
| | | var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing = "";
|
| | | var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', '');
|
| | | var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
|
| | | var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "";
|
| | | var inst = tinyMCE.selectedInstance;
|
| | |
| | | <title>{$lang_table_merge_cells_title}</title>
|
| | | <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="jscripts/merge_cells.js"></script>
|
| | | <base target="_self" />
|
| | | </head>
|
| | |
| | | <table border="0" cellpadding="0" cellspacing="3" width="100%">
|
| | | <tr>
|
| | | <td>{$lang_table_cols}:</td>
|
| | | <td align="right"><input type="text" name="numcols" value="" style="width: 30px" /></td>
|
| | | <td align="right"><input type="text" name="numcols" value="" class="number min1" style="width: 30px" /></td>
|
| | | <td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td>{$lang_table_rows}:</td>
|
| | | <td align="right"><input type="text" name="numrows" value="" style="width: 30px" /></td>
|
| | | <td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
|
| | | </tr>
|
| | | </table>
|
| | | </fieldset>
|
| | |
| | | <script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/mctabs.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/form_utils.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="../../utils/validate.js"></script>
|
| | | <script language="javascript" type="text/javascript" src="jscripts/table.js"></script>
|
| | | <link href="css/table.css" rel="stylesheet" type="text/css" />
|
| | | <base target="_self" />
|
| | |
| | | <table border="0" cellpadding="4" cellspacing="0" width="100%">
|
| | | <tr>
|
| | | <td><label id="colslabel" for="cols">{$lang_table_cols}</label></td>
|
| | | <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" /></td>
|
| | | <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
|
| | | <td><label id="rowslabel" for="rows">{$lang_table_rows}</label></td>
|
| | | <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" /></td>
|
| | | <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td><label id="cellpaddinglabel" for="cellpadding">{$lang_table_cellpadding}</label></td>
|
| | | <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" /></td>
|
| | | <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
|
| | | <td><label id="cellspacinglabel" for="cellspacing">{$lang_table_cellspacing}</label></td>
|
| | | <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" /></td>
|
| | | <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
|
| | | </tr>
|
| | | <tr>
|
| | | <td><label id="alignlabel" for="align">{$lang_table_align}</label></td>
|
| | |
| | | <option value="right">{$lang_table_align_right}</option>
|
| | | </select></td>
|
| | | <td><label id="borderlabel" for="border">{$lang_table_border}</label></td>
|
| | | <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" /></td>
|
| | | <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
|
| | | </tr>
|
| | | <tr>
|
| | | <tr id="width_row">
|
| | | <td><label id="widthlabel" for="width">{$lang_table_width}</label></td>
|
| | | <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
|
| | | <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
|
| | | <td><label id="heightlabel" for="height">{$lang_table_height}</label></td>
|
| | | <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
|
| | | <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
|
| | | </tr>
|
| | | <tr id="styleSelectRow">
|
| | | <td><label id="classlabel" for="class">{$lang_class_name}</label></td>
|
New file |
| | |
| | | tinyMCE.importPluginLanguagePack('visualchars');var TinyMCE_VisualCharsPlugin={getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://tinymce.moxiecode.com/tinymce/docs/plugin_visualchars.html',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.visualChars={state:false}},getControlHTML:function(cn){switch(cn){case"visualchars":return tinyMCE.getButtonHTML(cn,'lang_visualchars_desc','{$pluginurl}/images/visualchars.gif','mceVisualChars',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);switch(command){case"mceVisualChars":this._toggleVisualChars(editor_id,inst);return true}return false},cleanup:function(type,content,inst){if(type=="insert_to_editor_dom"||type=="get_from_editor_dom"){inst.visualChars.state=true;this._toggleVisualChars(inst.editorId,inst)}return content},_toggleVisualChars:function(editor_id,inst){var nl,i,h,d=inst.getDoc(),b=inst.getBody(),nv,s=inst.selection,bo;inst.visualChars.state=!inst.visualChars.state;bo=s.getBookmark(true);tinyMCE.switchClass(editor_id+'_visualchars',inst.visualChars.state?'mceButtonSelected':'mceButtonNormal');if(inst.visualChars.state){nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1});for(i=0;i<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span class="mceItemHiddenVisualChar">$1</span>');nv=nv.replace(/\u00a0/g,'\u00b7');tinyMCE.setOuterHTML(nl[i],nv,d)}}else{nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==1&&n.nodeName=='SPAN'&&n.className=='mceItemHiddenVisualChar'});for(i=0;i<nl.length;i++)tinyMCE.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(·|\u00b7)/g,' '),d)}}};tinyMCE.addPlugin("visualchars",TinyMCE_VisualCharsPlugin); |
New file |
| | |
| | | /**
|
| | | * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | /* Import plugin specific language pack */
|
| | | tinyMCE.importPluginLanguagePack('visualchars');
|
| | |
|
| | | var TinyMCE_VisualCharsPlugin = {
|
| | | getInfo : function() {
|
| | | return {
|
| | | longname : 'Visual characters',
|
| | | author : 'Moxiecode Systems AB',
|
| | | authorurl : 'http://tinymce.moxiecode.com',
|
| | | infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_visualchars.html',
|
| | | version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
|
| | | };
|
| | | },
|
| | |
|
| | | initInstance : function(inst) {
|
| | | inst.visualChars = {
|
| | | state : false
|
| | | };
|
| | | },
|
| | |
|
| | | getControlHTML : function(cn) {
|
| | | switch (cn) {
|
| | | case "visualchars":
|
| | | return tinyMCE.getButtonHTML(cn, 'lang_visualchars_desc', '{$pluginurl}/images/visualchars.gif', 'mceVisualChars', false);
|
| | | }
|
| | |
|
| | | return "";
|
| | | },
|
| | |
|
| | | execCommand : function(editor_id, element, command, user_interface, value) {
|
| | | var inst = tinyMCE.getInstanceById(editor_id);
|
| | |
|
| | | switch (command) {
|
| | | case "mceVisualChars":
|
| | | this._toggleVisualChars(editor_id, inst);
|
| | | return true;
|
| | | }
|
| | |
|
| | | return false;
|
| | | },
|
| | |
|
| | | cleanup : function(type, content, inst) {
|
| | | if (type == "insert_to_editor_dom" || type == "get_from_editor_dom") {
|
| | | inst.visualChars.state = true;
|
| | | this._toggleVisualChars(inst.editorId, inst);
|
| | | }
|
| | |
|
| | | return content;
|
| | | },
|
| | |
|
| | | // Private plugin internal methods
|
| | |
|
| | | _toggleVisualChars : function(editor_id, inst) {
|
| | | var nl, i, h, d = inst.getDoc(), b = inst.getBody(), nv, s = inst.selection, bo;
|
| | |
|
| | | inst.visualChars.state = !inst.visualChars.state;
|
| | |
|
| | | bo = s.getBookmark(true);
|
| | |
|
| | | tinyMCE.switchClass(editor_id + '_visualchars', inst.visualChars.state ? 'mceButtonSelected' : 'mceButtonNormal');
|
| | |
|
| | | if (inst.visualChars.state) {
|
| | | nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1;});
|
| | |
|
| | | for (i=0; i<nl.length; i++) {
|
| | | nv = nl[i].nodeValue;
|
| | | nv = nv.replace(/(\u00a0+)/g, '<span class="mceItemHiddenVisualChar">$1</span>');
|
| | | nv = nv.replace(/\u00a0/g, '\u00b7');
|
| | | tinyMCE.setOuterHTML(nl[i], nv, d);
|
| | | }
|
| | | } else {
|
| | | nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';});
|
| | |
|
| | | for (i=0; i<nl.length; i++)
|
| | | tinyMCE.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(·|\u00b7)/g, ' '), d);
|
| | | }
|
| | |
|
| | | //s.moveToBookmark(bo);
|
| | | }
|
| | | };
|
| | |
|
| | | tinyMCE.addPlugin("visualchars", TinyMCE_VisualCharsPlugin);
|
New file |
| | |
| | | // EN lang variables
|
| | |
|
| | | tinyMCE.addToLang('visualchars',{
|
| | | desc : 'Visual control characters on/off.'
|
| | | });
|
| | |
| | | tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_AdvancedTheme={_autoImportCSSClasses:true,_resizer:{},_buttons:[['bold','{$lang_bold_img}','lang_bold_desc','Bold'],['italic','{$lang_italic_img}','lang_italic_desc','Italic'],['underline','{$lang_underline_img}','lang_underline_desc','Underline'],['strikethrough','strikethrough.gif','lang_striketrough_desc','Strikethrough'],['justifyleft','justifyleft.gif','lang_justifyleft_desc','JustifyLeft'],['justifycenter','justifycenter.gif','lang_justifycenter_desc','JustifyCenter'],['justifyright','justifyright.gif','lang_justifyright_desc','JustifyRight'],['justifyfull','justifyfull.gif','lang_justifyfull_desc','JustifyFull'],['bullist','bullist.gif','lang_bullist_desc','InsertUnorderedList'],['numlist','numlist.gif','lang_numlist_desc','InsertOrderedList'],['outdent','outdent.gif','lang_outdent_desc','Outdent'],['indent','indent.gif','lang_indent_desc','Indent'],['cut','cut.gif','lang_cut_desc','Cut'],['copy','copy.gif','lang_copy_desc','Copy'],['paste','paste.gif','lang_paste_desc','Paste'],['undo','undo.gif','lang_undo_desc','Undo'],['redo','redo.gif','lang_redo_desc','Redo'],['link','link.gif','lang_link_desc','mceLink',true],['unlink','unlink.gif','lang_unlink_desc','unlink'],['image','image.gif','lang_image_desc','mceImage',true],['cleanup','cleanup.gif','lang_cleanup_desc','mceCleanup'],['help','help.gif','lang_help_desc','mceHelp'],['code','code.gif','lang_theme_code_desc','mceCodeEditor'],['hr','hr.gif','lang_theme_hr_desc','inserthorizontalrule'],['removeformat','removeformat.gif','lang_theme_removeformat_desc','removeformat'],['sub','sub.gif','lang_theme_sub_desc','subscript'],['sup','sup.gif','lang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_theme_forecolor_desc','mceForeColor',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','mceBackColor',true],['charmap','charmap.gif','lang_theme_charmap_desc','mceCharMap'],['visualaid','visualaid.gif','lang_theme_visualaid_desc','mceToggleVisualAid'],['anchor','anchor.gif','lang_theme_anchor_desc','mceInsertAnchor'],['newdocument','newdocument.gif','lang_newdocument_desc','mceNewDocument']],_buttonMap:'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells',getControlHTML:function(button_name){var i,x;for(i=0;i<TinyMCE_AdvancedTheme._buttons.length;i++){var but=TinyMCE_AdvancedTheme._buttons[i];if(but[0]==button_name)return tinyMCE.getButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null));}switch(button_name){case"formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';var formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option value="<'+lookup[x][0]+'>">'+lookup[x][1]+'</option>';}}html+='</select>';return html;case"styleselect":return'<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case"fontselect":var fontHTML='<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';var iFonts='Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';var nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sand;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';var fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(i=0;i<fonts.length;i++){if(fonts[i]!=''){var parts=fonts[i].split('=');fontHTML+='<option value="'+parts[1]+'">'+parts[0]+'</option>';}}fontHTML+='</select>';return fontHTML;case"fontsizeselect":return'<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="0">{$lang_theme_font_size}</option>'+'<option value="1">1 (8 pt)</option>'+'<option value="2">2 (10 pt)</option>'+'<option value="3">3 (12 pt)</option>'+'<option value="4">4 (14 pt)</option>'+'<option value="5">5 (18 pt)</option>'+'<option value="6">6 (24 pt)</option>'+'<option value="7">7 (36 pt)</option>'+'</select>';case"|":case"separator":return'<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';case"spacer":return'<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';case"rowseparator":return'<br />';}return"";},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceLink":var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText=inst.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return true;}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");}action="update";}var template=new Array();template['file']='link.htm';template['width']=310;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);if(inst.settings['insertlink_callback']){var returnVal=eval(inst.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])TinyMCE_AdvancedTheme._insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class']);}else{tinyMCE.openWindow(template,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"});}return true;case"mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;var inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img;}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return true;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h);}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:"";}src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");}action="update";}var template=new Array();template['file']='image.htm?src={$src}';template['width']=355;template['height']=265+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);if(inst.settings['insertimage_callback']){var returnVal=eval(inst.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])TinyMCE_AdvancedTheme._insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout']);}else tinyMCE.openWindow(template,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});return true;case"mceForeColor":var template=new Array();var elm=tinyMCE.selectedInstance.getFocusElement();var inputColor=tinyMCE.getAttrib(elm,"color");if(inputColor=='')inputColor=elm.style.color;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=220;template['height']=190;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",command:"forecolor",input_color:inputColor});return true;case"mceBackColor":var template=new Array();var elm=tinyMCE.selectedInstance.getFocusElement();var inputColor=elm.style.backgroundColor;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=220;template['height']=190;template['width']+=tinyMCE.getLang('lang_theme_advanced_backcolor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_backcolor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",command:"HiliteColor",input_color:inputColor});return true;case"mceColorPicker":if(user_interface){var template=new Array();var inputColor=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=220;template['height']=190;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:inputColor});}else{var savedVal=tinyMCE.lastColorPickerValue;var elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;if(elm.onchange!=null&&elm.onchange!='')eval('elm.onchange();');}return true;case"mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",720));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",580));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case"mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceNewDocument":if(confirm(tinyMCE.getLang('lang_newdocument')))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,' ');return true;}return false;},getEditorTemplate:function(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array();for(var i=0;i<in_array.length;i++){skip=false;for(var j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true;}}if(!skip){outArray[outArray.length]=in_array[i];}}return outArray;}function addToArray(in_array,add_array){for(var i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i];}return in_array;}var template=new Array();var deltaHeight=0;var resizing=tinyMCE.getParam("theme_advanced_resizing",false);var path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: '+(path?"block":"none")+'"> </div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</option>';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option value="'+value+'">'+key+'</option>';}TinyMCE_AdvancedTheme._autoImportCSSClasses=false;}switch(layoutManager){case"SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a href="#" accesskey="q" title="'+tinyMCE.getLang("lang_toolbar_focus")+'"';if(!tinyMCE.getParam("accessibility_focus"))toolbarHTML+=' onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"';toolbarHTML+='></a>';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br />";deltaHeight-=23;}}toolbarHTML+='<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"></a>';template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';if(toolbarLocation=="top"){template['html']+='<tr><td class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap">'+toolbarHTML+'</td></tr>';}if(statusbarLocation=="top"){template['html']+='<tr><td class="mceStatusbarTop" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23;}template['html']+='<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom"){template['html']+='<tr><td class="mceToolbarBottom" align="'+toolbarAlign+'" height="1">'+toolbarHTML+'</td></tr>';}if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null;}if(statusbarLocation=="bottom"){template['html']+='<tr><td class="mceStatusbarBottom" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23;}template['html']+='</tbody></table>';break;case"RowLayout":template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i<containers.length;i++){if(containers[i]=="mceEditor")template['html']+='<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom";}else if(i==0){pathClass="mceStatusbar";}else{deltaHeight-=2;}template['html']+='<tr><td class="'+pathClass+'" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=22;}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);for(var j=0;j<curContainer.length;j++){curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);}if(curContainer.length>0){curContainerHTML+="<br />";deltaHeight-=23;}template['html']+='<tr><td class="'+curCSS+'" align="'+curAlign+'" height="1">'+curContainerHTML+'</td></tr>';}}template['html']+='</tbody></table>';break;case"CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);");}break;}if(resizing)template['html']+='<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;template['delta_height']=deltaHeight;return template;},initInstance:function(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_AdvancedTheme._resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true));}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink');},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i<select_elm.options.length;i++){var ov=""+select_elm.options[i].value;if(first_index&&ov.toLowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return true;}if(ov==value){select_elm.selectedIndex=i;return true;}}}return false;};function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):"";};if(node==null)return;var pathElm=document.getElementById(editor_id+"_path");var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();if(pathElm){var parentNode=node;var path=new Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break;}if(parentNode.nodeType==1&&tinyMCE.getAttrib(parentNode,"class").indexOf('mceItemHidden')==-1){path[path.length]=parentNode;}parentNode=parentNode.parentNode;}var html="";for(var i=path.length-1;i>=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName=="b"){nodeName="strong";}if(nodeName=="i"){nodeName="em";}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+st+" ";}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+face+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+size+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+color+" ";}if(getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" ";}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+src+" ";}if(getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+href+" ";}if(nodeName=="img"&&tinyMCE.getAttrib(path[i],"class").indexOf('mceItemFlash')!=-1){nodeName="flash";nodeData="src: "+path[i].getAttribute('title');}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+anchor;nodeData="";}if(getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className;}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+='<a title="'+nodeData+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" target="_self" class="mcePathItem">'+nodeName+'</a>';if(i>0){html+=" » ";}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang_theme_path')+": "+html+' ';}tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClass(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClass(editor_id+'_link','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_unlink','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_outdent','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_image','mceButtonNormal');tinyMCE.switchClass(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClass(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClass(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal');tinyMCE.switchClass(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal');}tinyMCE.switchClass(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal');if(undo_levels!=-1){tinyMCE.switchClass(editor_id+'_undo','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_redo','mceButtonDisabled');}if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClass(editor_id+'_outdent','mceButtonNormal');if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break;}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index;}var selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");else selectByValue(selectElm,"");}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="");}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"");}else selectByValue(selectElm,"");}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size);}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break;}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"");}else selectByValue(selectElm,"0");}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case"left":tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case"right":tinyMCE.switchClass(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case"middle":case"center":tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case"justify":tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break;}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var ar=new Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClass(editor_id+ar[i+1],'mceButtonSelected');}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A"))tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected');}do{switch(node.nodeName){case"UL":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"OL":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break;case"HR":tinyMCE.switchClass(editor_id+'_hr','mceButtonSelected');break;case"IMG":if(getAttrib(node,'name').indexOf('mce_')!=0){tinyMCE.switchClass(editor_id+'_image','mceButtonSelected');}break;}}while((node=node.parentNode)!=null);},_setupCSSClasses:function(editor_id){var i,selectElm;if(!TinyMCE_AdvancedTheme._autoImportCSSClasses)return;selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(i=0;i<csses.length;i++)selectElm.options[selectElm.options.length]=new Option(csses[i],csses[i]);}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true');}},_setCookie:function(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie;},_getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null;}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end));},_resizeTo:function(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0;}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2;}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2;}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px";}}},_resizeEventHandler:function(e){var resizer=TinyMCE_AdvancedTheme._resizer;if(!resizer.resizing)return;e=typeof(e)=="undefined"?window.event:e;var dx=e.screenX-resizer.downX;var dy=e.screenY-resizer.downY;var resizeBox=resizer.resizeBox;var editorId=resizer.editorId;switch(e.type){case"mousemove":var w,h;w=resizer.width+dx;h=resizer.height+dy;w=w<1?1:w;h=h<1?1:h;if(resizer.horizontal)resizeBox.style.width=w+"px";resizeBox.style.height=h+"px";break;case"mouseup":TinyMCE_AdvancedTheme._setResizing(e,editorId,false);TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId),resizer.width+dx,resizer.height+dy,resizer.horizontal);if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var expires=new Date();expires.setTime(expires.getTime()+3600000*24*30);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires);}break;}},_setResizing:function(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_AdvancedTheme._resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_AdvancedTheme._resizeEventHandler);resizer.eventHandlers=true;}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true);}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE&&!tinyMCE.isOpera?"block":"table";tinyMCE.execCommand('mceResetDesignMode');}},_insertImage:function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand('mceBeginUndoLevel');if(src=="")return;if(!tinyMCE.imgElement&&tinyMCE.isSafari){var html="";html+='<img src="'+src+'" alt="'+alt+'"';html+=' border="'+border+'" hspace="'+hspace+'"';html+=' vspace="'+vspace+'" width="'+width+'"';html+=' height="'+height+'" align="'+align+'" title="'+title+'" onmouseover="'+onmouseover+'" onmouseout="'+onmouseout+'" />';tinyMCE.execCommand("mceInsertContent",false,html);}else{if(!tinyMCE.imgElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'<img src="'+tinyMCE.uniqueURL+'" />');else tinyMCE.selectedInstance.contentDocument.execCommand("insertimage",false,tinyMCE.uniqueURL);tinyMCE.imgElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"img","src",tinyMCE.uniqueURL);}}if(tinyMCE.imgElement){var needsRepaint=false;var msrc=src;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, tinyMCE.imgElement);");if(tinyMCE.getParam('convert_urls'))msrc=src;if(onmouseover&&onmouseover!="")onmouseover="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, tinyMCE.imgElement);")+"';";if(onmouseout&&onmouseout!="")onmouseout="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, tinyMCE.imgElement);")+"';";if(typeof(title)=="undefined")title=alt;if(width!=tinyMCE.imgElement.getAttribute("width")||height!=tinyMCE.imgElement.getAttribute("height")||align!=tinyMCE.imgElement.getAttribute("align"))needsRepaint=true;tinyMCE.setAttrib(tinyMCE.imgElement,'src',src);tinyMCE.setAttrib(tinyMCE.imgElement,'mce_src',msrc);tinyMCE.setAttrib(tinyMCE.imgElement,'alt',alt);tinyMCE.setAttrib(tinyMCE.imgElement,'title',title);tinyMCE.setAttrib(tinyMCE.imgElement,'align',align);tinyMCE.setAttrib(tinyMCE.imgElement,'border',border,true);tinyMCE.setAttrib(tinyMCE.imgElement,'hspace',hspace,true);tinyMCE.setAttrib(tinyMCE.imgElement,'vspace',vspace,true);tinyMCE.setAttrib(tinyMCE.imgElement,'width',width,true);tinyMCE.setAttrib(tinyMCE.imgElement,'height',height,true);tinyMCE.setAttrib(tinyMCE.imgElement,'onmouseover',onmouseover);tinyMCE.setAttrib(tinyMCE.imgElement,'onmouseout',onmouseout);if(width&&width!="")tinyMCE.imgElement.style.pixelWidth=width;if(height&&height!="")tinyMCE.imgElement.style.pixelHeight=height;if(needsRepaint)tinyMCE.selectedInstance.repaint();}tinyMCE.execCommand('mceEndUndoLevel');},_insertLink:function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(tinyMCE.selectedInstance&&tinyMCE.selectedElement&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){var doc=tinyMCE.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true;}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));tinyMCE.selectedElement.parentNode.replaceChild(linkElement,tinyMCE.selectedElement);}return;}if(!tinyMCE.linkElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="'+tinyMCE.uniqueURL+'">'+tinyMCE.selectedInstance.selection.getSelectedHTML()+'</a>');}else tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i<elementArray.length;i++){var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class);}tinyMCE.linkElement=elementArray[0];}if(tinyMCE.linkElement){var mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(tinyMCE.linkElement,'href',href);tinyMCE.setAttrib(tinyMCE.linkElement,'mce_href',mhref);tinyMCE.setAttrib(tinyMCE.linkElement,'target',target);tinyMCE.setAttrib(tinyMCE.linkElement,'title',title);tinyMCE.setAttrib(tinyMCE.linkElement,'onclick',onclick);tinyMCE.setAttrib(tinyMCE.linkElement,'class',style_class);}tinyMCE.execCommand('mceEndUndoLevel');}};tinyMCE.addTheme("advanced",TinyMCE_AdvancedTheme);tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap); |
| | | tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_AdvancedTheme={_defColors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",_autoImportCSSClasses:true,_resizer:{},_buttons:[['bold','{$lang_bold_img}','lang_bold_desc','Bold'],['italic','{$lang_italic_img}','lang_italic_desc','Italic'],['underline','{$lang_underline_img}','lang_underline_desc','Underline'],['strikethrough','strikethrough.gif','lang_striketrough_desc','Strikethrough'],['justifyleft','justifyleft.gif','lang_justifyleft_desc','JustifyLeft'],['justifycenter','justifycenter.gif','lang_justifycenter_desc','JustifyCenter'],['justifyright','justifyright.gif','lang_justifyright_desc','JustifyRight'],['justifyfull','justifyfull.gif','lang_justifyfull_desc','JustifyFull'],['bullist','bullist.gif','lang_bullist_desc','InsertUnorderedList'],['numlist','numlist.gif','lang_numlist_desc','InsertOrderedList'],['outdent','outdent.gif','lang_outdent_desc','Outdent'],['indent','indent.gif','lang_indent_desc','Indent'],['cut','cut.gif','lang_cut_desc','Cut'],['copy','copy.gif','lang_copy_desc','Copy'],['paste','paste.gif','lang_paste_desc','Paste'],['undo','undo.gif','lang_undo_desc','Undo'],['redo','redo.gif','lang_redo_desc','Redo'],['link','link.gif','lang_link_desc','mceLink',true],['unlink','unlink.gif','lang_unlink_desc','unlink'],['image','image.gif','lang_image_desc','mceImage',true],['cleanup','cleanup.gif','lang_cleanup_desc','mceCleanup'],['help','help.gif','lang_help_desc','mceHelp'],['code','code.gif','lang_theme_code_desc','mceCodeEditor'],['hr','hr.gif','lang_theme_hr_desc','inserthorizontalrule'],['removeformat','removeformat.gif','lang_theme_removeformat_desc','removeformat'],['sub','sub.gif','lang_theme_sub_desc','subscript'],['sup','sup.gif','lang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_theme_forecolor_desc','forecolor',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','HiliteColor',true],['charmap','charmap.gif','lang_theme_charmap_desc','mceCharMap'],['visualaid','visualaid.gif','lang_theme_visualaid_desc','mceToggleVisualAid'],['anchor','anchor.gif','lang_theme_anchor_desc','mceInsertAnchor'],['newdocument','newdocument.gif','lang_newdocument_desc','mceNewDocument']],_buttonMap:'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',getControlHTML:function(button_name){var i,x,but;for(i=0;i<TinyMCE_AdvancedTheme._buttons.length;i++){but=TinyMCE_AdvancedTheme._buttons[i];if(but[0]==button_name&&(button_name=="forecolor"||button_name=="backcolor"))return tinyMCE.getMenuButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3]+"Menu",but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null));if(but[0]==button_name)return tinyMCE.getButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null))}switch(button_name){case"formatselect":var html='<select id="{$editor_id}_formatSelect" name="{$editor_id}_formatSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);" class="mceSelectList">';var formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option value="">{$lang_theme_block}</option>';for(var i=0;i<formats.length;i++){for(var x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option value="<'+lookup[x][0]+'>">'+lookup[x][1]+'</option>'}}html+='</select>';return html;case"styleselect":return'<select id="{$editor_id}_styleSelect" onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');" name="{$editor_id}_styleSelect" onfocus="tinyMCE.addSelectAccessibility(event,this,window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);" class="mceSelectList">{$style_select_options}</select>';case"fontselect":var fontHTML='<select id="{$editor_id}_fontNameSelect" name="{$editor_id}_fontNameSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);" class="mceSelectList"><option value="">{$lang_theme_fontdefault}</option>';var iFonts='Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';var nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sand;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats';var fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(i=0;i<fonts.length;i++){if(fonts[i]!=''){var parts=fonts[i].split('=');fontHTML+='<option value="'+parts[1]+'">'+parts[0]+'</option>'}}fontHTML+='</select>';return fontHTML;case"fontsizeselect":return'<select id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);" class="mceSelectList">'+'<option value="0">{$lang_theme_font_size}</option>'+'<option value="1">1 (8 pt)</option>'+'<option value="2">2 (10 pt)</option>'+'<option value="3">3 (12 pt)</option>'+'<option value="4">4 (14 pt)</option>'+'<option value="5">5 (18 pt)</option>'+'<option value="6">6 (24 pt)</option>'+'<option value="7">7 (36 pt)</option>'+'</select>';case"|":case"separator":return'<img src="{$themeurl}/images/separator.gif" width="2" height="20" class="mceSeparatorLine" />';case"spacer":return'<img src="{$themeurl}/images/separator.gif" width="2" height="15" border="0" class="mceSeparatorLine" style="vertical-align: middle" />';case"rowseparator":return'<br />'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case'mceHelp':tinyMCE.openWindow({file:'about.htm',width:480,height:380},{tinymce_version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion,tinymce_releasedate:tinyMCE.releaseDate,inline:"yes"});return true;case"mceLink":var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=inst.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return true}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);")}action="update"}var template=new Array();template['file']='link.htm';template['width']=310;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);if(inst.settings['insertlink_callback']){var returnVal=eval(inst.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])TinyMCE_AdvancedTheme._insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class'])}else{tinyMCE.openWindow(template,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"})}return true;case"mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;var inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return true;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h)}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:""}src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);")}action="update"}var template=new Array();template['file']='image.htm?src={$src}';template['width']=355;template['height']=265+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);if(inst.settings['insertimage_callback']){var returnVal=eval(inst.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])TinyMCE_AdvancedTheme._insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout'])}else tinyMCE.openWindow(template,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});return true;case"forecolor":var fcp=new TinyMCE_Layer(editor_id+'_fcPreview',false),p,img,elm;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!fcp.exists()){fcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=fcp.getElement();elm._editor_id=editor_id;elm._command="forecolor";elm._switchId=editor_id+"_forecolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_forecolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));fcp.moveTo(p.absLeft,p.absTop);fcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).foreColor;fcp.show();return false;case"forecolorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_fcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_text_colors','forecolor'));tinyMCE.switchClass(editor_id+'_forecolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_forecolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"HiliteColor":var bcp=new TinyMCE_Layer(editor_id+'_bcPreview',false),p,img;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!bcp.exists()){bcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=bcp.getElement();elm._editor_id=editor_id;elm._command="HiliteColor";elm._switchId=editor_id+"_backcolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_backcolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));bcp.moveTo(p.absLeft,p.absTop);bcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).backColor;bcp.show();return false;case"HiliteColorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_bcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_background_colors','HiliteColor'));tinyMCE.switchClass(editor_id+'_backcolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_backcolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"mceColorPicker":if(user_interface){var template=new Array();var inputColor=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=220;template['height']=190;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:inputColor})}else{var savedVal=tinyMCE.lastColorPickerValue;var elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;if(elm.onchange!=null&&elm.onchange!='')eval('elm.onchange();')}return true;case"mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",720));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",580));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case"mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceNewDocument":if(confirm(tinyMCE.getLang('lang_newdocument')))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,' ');return true}return false},getEditorTemplate:function(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array(),skip;for(var i=0;i<in_array.length;i++){skip=false;for(var j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true}}if(!skip){outArray[outArray.length]=in_array[i]}}return outArray}function addToArray(in_array,add_array){for(var i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i]}return in_array}var template=new Array();var deltaHeight=0;var resizing=tinyMCE.getParam("theme_advanced_resizing",false);var path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div id="{$editor_id}_path" class="mceStatusbarPathText" style="display: '+(path?"block":"none")+'"> </div><div id="{$editor_id}_resize" class="mceStatusbarResize" style="display: '+(resizing?"block":"none")+'" onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br style="clear: both" />';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='<option value="">{$lang_theme_style_select}</option>';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option value="'+value+'">'+key+'</option>'}TinyMCE_AdvancedTheme._autoImportCSSClasses=false}switch(layoutManager){case"SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a href="#" accesskey="q" title="'+tinyMCE.getLang("lang_toolbar_focus")+'"';if(!tinyMCE.getParam("accessibility_focus"))toolbarHTML+=' onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"';toolbarHTML+='></a>';for(var i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br />";deltaHeight-=23}}toolbarHTML+='<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"></a>';template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';if(toolbarLocation=="top"){template['html']+='<tr><td class="mceToolbarTop" align="'+toolbarAlign+'" height="1" nowrap="nowrap"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>'}if(statusbarLocation=="top"){template['html']+='<tr><td class="mceStatusbarTop" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom"){template['html']+='<tr><td class="mceToolbarBottom" align="'+toolbarAlign+'" height="1"><span id="'+editorId+'_toolbar" class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>'}if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table width="100%" border="0" align="center"><tr><td align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null}if(statusbarLocation=="bottom"){template['html']+='<tr><td class="mceStatusbarBottom" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='</tbody></table>';break;case"RowLayout":template['html']='<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i<containers.length;i++){if(containers[i]=="mceEditor")template['html']+='<tr><td align="center" class="mceEditor_border"><span id="{$editor_id}"></span></td></tr>';else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom"}else if(i==0){pathClass="mceStatusbar"}else{deltaHeight-=2}template['html']+='<tr><td class="'+pathClass+'" height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=22}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);curContainer=removeFromArray(curContainer,tinyMCE.getParam("theme_advanced_disable","",true,','));for(var j=0;j<curContainer.length;j++)curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);if(curContainer.length>0){curContainerHTML+="<br />";deltaHeight-=23}template['html']+='<tr><td class="'+curCSS+'" align="'+curAlign+'" height="1">'+curContainerHTML+'</td></tr>'}}template['html']+='</tbody></table>';break;case"CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);")}break}if(resizing)template['html']+='<span id="{$editor_id}_resize_box" class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;template['delta_height']=deltaHeight;return template},initInstance:function(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_AdvancedTheme._resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true))}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink')},_handleMenuEvent:function(e){var te=tinyMCE.isMSIE?window.event.srcElement:e.target;tinyMCE._menuButtonEvent(e.type=="mouseover"?"over":"out",document.getElementById(te._switchId));if(e.type=="click")tinyMCE.execInstanceCommand(te._editor_id,te._command)},_hideMenus:function(id){var fcml=new TinyMCE_Layer(id+'_fcMenu'),bcml=new TinyMCE_Layer(id+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(id+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(id+'_backcolor','mceMenuButton');bcml.hide()}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){var alignNode,breakOut,classNode;function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i<select_elm.options.length;i++){var ov=""+select_elm.options[i].value;if(first_index&&ov.toLowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return true}if(ov==value){select_elm.selectedIndex=i;return true}}}return false};function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""};if(node==null)return;var pathElm=document.getElementById(editor_id+"_path");var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();TinyMCE_AdvancedTheme._hideMenus(editor_id);if(pathElm){var parentNode=node;var path=new Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break}if(parentNode.nodeType==1&&tinyMCE.getAttrib(parentNode,"class").indexOf('mceItemHidden')==-1){path[path.length]=parentNode}parentNode=parentNode.parentNode}var html="";for(var i=path.length-1;i>=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName.indexOf("html:")==0)nodeName=nodeName.substring(5);if(nodeName=="b"){nodeName="strong"}if(nodeName=="i"){nodeName="em"}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+st+" "}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+face+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+size+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+color+" "}if(getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" "}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+src+" "}if(path[i].nodeName=='A'&&getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+href+" "}className=tinyMCE.getAttrib(path[i],"class");if((nodeName=="img"||nodeName=="span")&&className.indexOf('mceItem')!=-1){nodeName=className.replace(/mceItem([a-z]+)/gi,'$1').toLowerCase();nodeData=path[i].getAttribute('title')}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+anchor;nodeData=""}if(getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+='<a title="'+nodeData+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" target="_self" class="mcePathItem">'+nodeName+'</a>';if(i>0){html+=" » "}}pathElm.innerHTML='<a href="#" accesskey="x"></a>'+tinyMCE.getLang('lang_theme_path')+": "+html+' '}tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClass(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClass(editor_id+'_link','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_unlink','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_outdent','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_image','mceButtonNormal');tinyMCE.switchClass(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClass(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClass(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal');tinyMCE.switchClass(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal')}tinyMCE.switchClass(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal');if(undo_levels!=-1){tinyMCE.switchClass(editor_id+'_undo','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_redo','mceButtonDisabled')}if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClass(editor_id+'_outdent','mceButtonNormal');if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index}var selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");else selectByValue(selectElm,"")}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="")}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"")}else selectByValue(selectElm,"")}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size)}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"")}else selectByValue(selectElm,"0")}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case"left":tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case"right":tinyMCE.switchClass(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case"middle":case"center":tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case"justify":tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var ar=new Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClass(editor_id+ar[i+1],'mceButtonSelected')}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A"))tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected')}do{switch(node.nodeName){case"UL":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"OL":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break;case"HR":tinyMCE.switchClass(editor_id+'_hr','mceButtonSelected');break;case"IMG":if(getAttrib(node,'name').indexOf('mce_')!=0&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_image','mceButtonSelected')}break}}while((node=node.parentNode)!=null)},_setupCSSClasses:function(editor_id){var i,selectElm;if(!TinyMCE_AdvancedTheme._autoImportCSSClasses)return;selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(i=0;i<csses.length;i++)selectElm.options[selectElm.options.length]=new Option(csses[i],csses[i])}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true')}},_setCookie:function(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie},_getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end))},_resizeTo:function(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px"}}inst.useCSS=false},_resizeEventHandler:function(e){var resizer=TinyMCE_AdvancedTheme._resizer;if(!resizer.resizing)return;e=typeof(e)=="undefined"?window.event:e;var dx=e.screenX-resizer.downX;var dy=e.screenY-resizer.downY;var resizeBox=resizer.resizeBox;var editorId=resizer.editorId;switch(e.type){case"mousemove":var w,h;w=resizer.width+dx;h=resizer.height+dy;w=w<1?1:w;h=h<1?1:h;if(resizer.horizontal)resizeBox.style.width=w+"px";resizeBox.style.height=h+"px";break;case"mouseup":TinyMCE_AdvancedTheme._setResizing(e,editorId,false);TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId),resizer.width+dx,resizer.height+dy,resizer.horizontal);if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var expires=new Date();expires.setTime(expires.getTime()+3600000*24*30);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires)}break}},_setResizing:function(e,editor_id,state){e=typeof(e)=="undefined"?window.event:e;var resizer=TinyMCE_AdvancedTheme._resizer;var editorContainer=document.getElementById(editor_id+'_parent');var editorArea=document.getElementById(editor_id+'_parent').firstChild;var resizeBox=document.getElementById(editor_id+'_resize_box');var inst=tinyMCE.getInstanceById(editor_id);if(state){var width=editorArea.clientWidth;var height=editorArea.clientHeight;resizeBox.style.width=width+"px";resizeBox.style.height=height+"px";resizer.iframeWidth=inst.iframeElement.clientWidth;resizer.iframeHeight=inst.iframeElement.clientHeight;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(document,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);else tinyMCE.addEvent(window,"mousemove",TinyMCE_AdvancedTheme._resizeEventHandler);tinyMCE.addEvent(document,"mouseup",TinyMCE_AdvancedTheme._resizeEventHandler);resizer.eventHandlers=true}resizer.resizing=true;resizer.downX=e.screenX;resizer.downY=e.screenY;resizer.width=parseInt(resizeBox.style.width);resizer.height=parseInt(resizeBox.style.height);resizer.editorId=editor_id;resizer.resizeBox=resizeBox;resizer.horizontal=tinyMCE.getParam("theme_advanced_resize_horizontal",true)}else{resizer.resizing=false;resizeBox.style.display="none";editorArea.style.display=tinyMCE.isMSIE&&!tinyMCE.isOpera?"block":"table";tinyMCE.execCommand('mceResetDesignMode')}},_getColorHTML:function(id,n,cm){var i,h,cl;h='<span class="mceMenuLine"></span>';cl=tinyMCE.getParam(n,TinyMCE_AdvancedTheme._defColors).split(',');h+='<table class="mceColors"><tr>';for(i=0;i<cl.length;i++){c='tinyMCE.execInstanceCommand(\''+id+'\', \''+cm+'\', false, \'#'+cl[i]+'\');';h+='<td><a href="javascript:'+c+'" style="background-color: #'+cl[i]+'" onclick="'+c+';return false;"></a></td>';if((i+1)%8==0)h+='</tr><tr>'}h+='</tr></table>';return h},_insertImage:function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand('mceBeginUndoLevel');if(src=="")return;if(!tinyMCE.imgElement&&tinyMCE.isSafari){var html="";html+='<img src="'+src+'" alt="'+alt+'"';html+=' border="'+border+'" hspace="'+hspace+'"';html+=' vspace="'+vspace+'" width="'+width+'"';html+=' height="'+height+'" align="'+align+'" title="'+title+'" onmouseover="'+onmouseover+'" onmouseout="'+onmouseout+'" />';tinyMCE.execCommand("mceInsertContent",false,html)}else{if(!tinyMCE.imgElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'<img src="'+tinyMCE.uniqueURL+'" />');else tinyMCE.selectedInstance.contentDocument.execCommand("insertimage",false,tinyMCE.uniqueURL);tinyMCE.imgElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"img","src",tinyMCE.uniqueURL)}}if(tinyMCE.imgElement){var needsRepaint=false;var msrc=src;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, tinyMCE.imgElement);");if(tinyMCE.getParam('convert_urls'))msrc=src;if(onmouseover&&onmouseover!="")onmouseover="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, tinyMCE.imgElement);")+"';";if(onmouseout&&onmouseout!="")onmouseout="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, tinyMCE.imgElement);")+"';";if(typeof(title)=="undefined")title=alt;if(width!=tinyMCE.imgElement.getAttribute("width")||height!=tinyMCE.imgElement.getAttribute("height")||align!=tinyMCE.imgElement.getAttribute("align"))needsRepaint=true;tinyMCE.setAttrib(tinyMCE.imgElement,'src',src);tinyMCE.setAttrib(tinyMCE.imgElement,'mce_src',msrc);tinyMCE.setAttrib(tinyMCE.imgElement,'alt',alt);tinyMCE.setAttrib(tinyMCE.imgElement,'title',title);tinyMCE.setAttrib(tinyMCE.imgElement,'align',align);tinyMCE.setAttrib(tinyMCE.imgElement,'border',border,true);tinyMCE.setAttrib(tinyMCE.imgElement,'hspace',hspace,true);tinyMCE.setAttrib(tinyMCE.imgElement,'vspace',vspace,true);tinyMCE.setAttrib(tinyMCE.imgElement,'width',width,true);tinyMCE.setAttrib(tinyMCE.imgElement,'height',height,true);tinyMCE.setAttrib(tinyMCE.imgElement,'onmouseover',onmouseover);tinyMCE.setAttrib(tinyMCE.imgElement,'onmouseout',onmouseout);if(width&&width!="")tinyMCE.imgElement.style.pixelWidth=width;if(height&&height!="")tinyMCE.imgElement.style.pixelHeight=height;if(needsRepaint)tinyMCE.selectedInstance.repaint()}tinyMCE.execCommand('mceEndUndoLevel')},_insertLink:function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(tinyMCE.selectedInstance&&tinyMCE.selectedElement&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){var doc=tinyMCE.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));tinyMCE.selectedElement.parentNode.replaceChild(linkElement,tinyMCE.selectedElement)}return}if(!tinyMCE.linkElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,'<a href="'+tinyMCE.uniqueURL+'">'+tinyMCE.selectedInstance.selection.getSelectedHTML()+'</a>')}else tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i<elementArray.length;i++){var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class)}tinyMCE.linkElement=elementArray[0]}if(tinyMCE.linkElement){var mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(tinyMCE.linkElement,'href',href);tinyMCE.setAttrib(tinyMCE.linkElement,'mce_href',mhref);tinyMCE.setAttrib(tinyMCE.linkElement,'target',target);tinyMCE.setAttrib(tinyMCE.linkElement,'title',title);tinyMCE.setAttrib(tinyMCE.linkElement,'onclick',onclick);tinyMCE.setAttrib(tinyMCE.linkElement,'class',style_class)}tinyMCE.execCommand('mceEndUndoLevel')}};tinyMCE.addTheme("advanced",TinyMCE_AdvancedTheme);tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap); |
| | |
| | | /**
|
| | | * $RCSfile: editor_template_src.js,v $
|
| | | * $Revision: 1.96 $
|
| | | * $Date: 2006/04/18 13:32:52 $
|
| | | * $Id: editor_template_src.js 129 2006-10-23 09:45:17Z spocke $
|
| | | *
|
| | | * @author Moxiecode
|
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | |
| | |
|
| | | var TinyMCE_AdvancedTheme = {
|
| | | // Private theme fields
|
| | | _defColors : "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",
|
| | | _autoImportCSSClasses : true,
|
| | | _resizer : {},
|
| | | _buttons : [
|
| | |
| | | ['removeformat', 'removeformat.gif', 'lang_theme_removeformat_desc', 'removeformat'],
|
| | | ['sub', 'sub.gif', 'lang_theme_sub_desc', 'subscript'],
|
| | | ['sup', 'sup.gif', 'lang_theme_sup_desc', 'superscript'],
|
| | | ['forecolor', 'forecolor.gif', 'lang_theme_forecolor_desc', 'mceForeColor', true],
|
| | | ['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc', 'mceBackColor', true],
|
| | | ['forecolor', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolor', true],
|
| | | ['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc', 'HiliteColor', true],
|
| | | ['charmap', 'charmap.gif', 'lang_theme_charmap_desc', 'mceCharMap'],
|
| | | ['visualaid', 'visualaid.gif', 'lang_theme_visualaid_desc', 'mceToggleVisualAid'],
|
| | | ['anchor', 'anchor.gif', 'lang_theme_anchor_desc', 'mceInsertAnchor'],
|
| | | ['newdocument', 'newdocument.gif', 'lang_newdocument_desc', 'mceNewDocument']
|
| | | ],
|
| | |
|
| | | _buttonMap : 'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells',
|
| | | _buttonMap : 'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',
|
| | |
|
| | | /**
|
| | | * Returns HTML code for the specificed control.
|
| | | */
|
| | | getControlHTML : function(button_name) {
|
| | | var i, x;
|
| | | var i, x, but;
|
| | |
|
| | | // Lookup button in button list
|
| | | for (i=0; i<TinyMCE_AdvancedTheme._buttons.length; i++) {
|
| | | var but = TinyMCE_AdvancedTheme._buttons[i];
|
| | | but = TinyMCE_AdvancedTheme._buttons[i];
|
| | |
|
| | | if (but[0] == button_name && (button_name == "forecolor" || button_name == "backcolor"))
|
| | | return tinyMCE.getMenuButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3] + "Menu", but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
|
| | |
|
| | | if (but[0] == button_name)
|
| | | return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null));
|
| | |
| | | */
|
| | | execCommand : function(editor_id, element, command, user_interface, value) {
|
| | | switch (command) {
|
| | | case 'mceHelp':
|
| | | tinyMCE.openWindow({
|
| | | file : 'about.htm',
|
| | | width : 480,
|
| | | height : 380
|
| | | }, {
|
| | | tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion,
|
| | | tinymce_releasedate : tinyMCE.releaseDate,
|
| | | inline : "yes"
|
| | | });
|
| | | return true;
|
| | |
|
| | | case "mceLink":
|
| | | var inst = tinyMCE.getInstanceById(editor_id);
|
| | | var doc = inst.getDoc();
|
| | |
| | |
|
| | | return true;
|
| | |
|
| | | case "mceForeColor":
|
| | | var template = new Array();
|
| | | var elm = tinyMCE.selectedInstance.getFocusElement();
|
| | | var inputColor = tinyMCE.getAttrib(elm, "color");
|
| | | case "forecolor":
|
| | | var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm;
|
| | |
|
| | | if (inputColor == '')
|
| | | inputColor = elm.style.color;
|
| | | TinyMCE_AdvancedTheme._hideMenus(editor_id);
|
| | |
|
| | | if (!inputColor)
|
| | | inputColor = "#000000";
|
| | | if (!fcp.exists()) {
|
| | | fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
|
| | | elm = fcp.getElement();
|
| | | elm._editor_id = editor_id;
|
| | | elm._command = "forecolor";
|
| | | elm._switchId = editor_id + "_forecolor";
|
| | | tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
|
| | | tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
|
| | | tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
|
| | | }
|
| | |
|
| | | template['file'] = 'color_picker.htm';
|
| | | template['width'] = 220;
|
| | | template['height'] = 190;
|
| | | img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0];
|
| | | p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
|
| | |
|
| | | tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", command : "forecolor", input_color : inputColor});
|
| | | fcp.moveTo(p.absLeft, p.absTop);
|
| | | fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor;
|
| | | fcp.show();
|
| | |
|
| | | return false;
|
| | |
|
| | | case "forecolorMenu":
|
| | | TinyMCE_AdvancedTheme._hideMenus(editor_id);
|
| | |
|
| | | // Create color layer
|
| | | var ml = new TinyMCE_Layer(editor_id + '_fcMenu');
|
| | |
|
| | | if (!ml.exists())
|
| | | ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor'));
|
| | |
|
| | | tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus');
|
| | | ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl');
|
| | |
|
| | | ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
|
| | |
|
| | | if (tinyMCE.isOpera)
|
| | | ml.moveBy(0, -2);
|
| | |
|
| | | ml.show();
|
| | | return true;
|
| | |
|
| | | case "mceBackColor":
|
| | | var template = new Array();
|
| | | var elm = tinyMCE.selectedInstance.getFocusElement();
|
| | | var inputColor = elm.style.backgroundColor;
|
| | | case "HiliteColor":
|
| | | var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img;
|
| | |
|
| | | if (!inputColor)
|
| | | inputColor = "#000000";
|
| | | TinyMCE_AdvancedTheme._hideMenus(editor_id);
|
| | |
|
| | | template['file'] = 'color_picker.htm';
|
| | | template['width'] = 220;
|
| | | template['height'] = 190;
|
| | | if (!bcp.exists()) {
|
| | | bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar'));
|
| | | elm = bcp.getElement();
|
| | | elm._editor_id = editor_id;
|
| | | elm._command = "HiliteColor";
|
| | | elm._switchId = editor_id + "_backcolor";
|
| | | tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent);
|
| | | tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent);
|
| | | tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent);
|
| | | }
|
| | |
|
| | | template['width'] += tinyMCE.getLang('lang_theme_advanced_backcolor_delta_width', 0);
|
| | | template['height'] += tinyMCE.getLang('lang_theme_advanced_backcolor_delta_height', 0);
|
| | | img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0];
|
| | | p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar'));
|
| | |
|
| | | tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", command : "HiliteColor", input_color : inputColor});
|
| | | //mceBackColor
|
| | | bcp.moveTo(p.absLeft, p.absTop);
|
| | | bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor;
|
| | | bcp.show();
|
| | |
|
| | | return false;
|
| | |
|
| | | case "HiliteColorMenu":
|
| | | TinyMCE_AdvancedTheme._hideMenus(editor_id);
|
| | |
|
| | | // Create color layer
|
| | | var ml = new TinyMCE_Layer(editor_id + '_bcMenu');
|
| | |
|
| | | if (!ml.exists())
|
| | | ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor'));
|
| | |
|
| | | tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus');
|
| | | ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl');
|
| | |
|
| | | ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1);
|
| | |
|
| | | if (tinyMCE.isOpera)
|
| | | ml.moveBy(0, -2);
|
| | |
|
| | | ml.show();
|
| | | return true;
|
| | |
|
| | | case "mceColorPicker":
|
| | |
| | | */
|
| | | getEditorTemplate : function(settings, editorId) {
|
| | | function removeFromArray(in_array, remove_array) {
|
| | | var outArray = new Array();
|
| | | var outArray = new Array(), skip;
|
| | |
|
| | | for (var i=0; i<in_array.length; i++) {
|
| | | skip = false;
|
| | |
| | | toolbarHTML += '<a href="#" accesskey="z" onfocus="tinyMCE.getInstanceById(\'' + editorId + '\').getWin().focus();"></a>';
|
| | |
|
| | | // Setup template html
|
| | | template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width}px;height:{$height}px"><tbody>';
|
| | | template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}" style="width:{$width_style};height:{$height_style}"><tbody>';
|
| | |
|
| | | if (toolbarLocation == "top") {
|
| | | template['html'] += '<tr><td class="mceToolbarTop" align="' + toolbarAlign + '" height="1" nowrap="nowrap">' + toolbarHTML + '</td></tr>';
|
| | | template['html'] += '<tr><td class="mceToolbarTop" align="' + toolbarAlign + '" height="1" nowrap="nowrap"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';
|
| | | }
|
| | |
|
| | | if (statusbarLocation == "top") {
|
| | |
| | | template['html'] += '<tr><td align="center"><span id="{$editor_id}"></span></td></tr>';
|
| | |
|
| | | if (toolbarLocation == "bottom") {
|
| | | template['html'] += '<tr><td class="mceToolbarBottom" align="' + toolbarAlign + '" height="1">' + toolbarHTML + '</td></tr>';
|
| | | template['html'] += '<tr><td class="mceToolbarBottom" align="' + toolbarAlign + '" height="1"><span id="' + editorId + '_toolbar" class="mceToolbarContainer">' + toolbarHTML + '</span></td></tr>';
|
| | | }
|
| | |
|
| | | // External toolbar changes
|
| | |
| | | var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);
|
| | | var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);
|
| | |
|
| | | for (var j=0; j<curContainer.length; j++) {
|
| | | curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
|
| | |
|
| | | for (var j=0; j<curContainer.length; j++)
|
| | | curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
|
| | | }
|
| | |
|
| | | if (curContainer.length > 0) {
|
| | | curContainerHTML += "<br />";
|
| | |
| | | inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink');
|
| | | },
|
| | |
|
| | | _handleMenuEvent : function(e) {
|
| | | var te = tinyMCE.isMSIE ? window.event.srcElement : e.target;
|
| | | tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId));
|
| | |
|
| | | if (e.type == "click")
|
| | | tinyMCE.execInstanceCommand(te._editor_id, te._command);
|
| | | },
|
| | |
|
| | | _hideMenus : function(id) {
|
| | | var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu');
|
| | |
|
| | | if (fcml.exists() && fcml.isVisible()) {
|
| | | tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton');
|
| | | fcml.hide();
|
| | | }
|
| | |
|
| | | if (bcml.exists() && bcml.isVisible()) {
|
| | | tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton');
|
| | | bcml.hide();
|
| | | }
|
| | | },
|
| | |
|
| | | /**
|
| | | * Node change handler.
|
| | | */
|
| | | handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) {
|
| | | var alignNode, breakOut, classNode;
|
| | |
|
| | | function selectByValue(select_elm, value, first_index) {
|
| | | first_index = typeof(first_index) == "undefined" ? false : true;
|
| | |
|
| | |
| | | var pathElm = document.getElementById(editor_id + "_path");
|
| | | var inst = tinyMCE.getInstanceById(editor_id);
|
| | | var doc = inst.getDoc();
|
| | | TinyMCE_AdvancedTheme._hideMenus(editor_id);
|
| | |
|
| | | if (pathElm) {
|
| | | // Get node path
|
| | |
| | | for (var i=path.length-1; i>=0; i--) {
|
| | | var nodeName = path[i].nodeName.toLowerCase();
|
| | | var nodeData = "";
|
| | |
|
| | | if (nodeName.indexOf("html:") == 0)
|
| | | nodeName = nodeName.substring(5);
|
| | |
|
| | | if (nodeName == "b") {
|
| | | nodeName = "strong";
|
| | |
| | | nodeData += "src: " + src + " ";
|
| | | }
|
| | |
|
| | | if (getAttrib(path[i], 'href') != "") {
|
| | | if (path[i].nodeName == 'A' && getAttrib(path[i], 'href') != "") {
|
| | | var href = tinyMCE.getAttrib(path[i], "mce_href");
|
| | |
|
| | | if (href == "")
|
| | |
| | | nodeData += "href: " + href + " ";
|
| | | }
|
| | |
|
| | | if (nodeName == "img" && tinyMCE.getAttrib(path[i], "class").indexOf('mceItemFlash') != -1) {
|
| | | nodeName = "flash";
|
| | | nodeData = "src: " + path[i].getAttribute('title');
|
| | | className = tinyMCE.getAttrib(path[i], "class");
|
| | | if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) {
|
| | | nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase();
|
| | | nodeData = path[i].getAttribute('title');
|
| | | }
|
| | |
|
| | | if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") {
|
| | |
| | | break;
|
| | |
|
| | | case "IMG":
|
| | | if (getAttrib(node, 'name').indexOf('mce_') != 0) {
|
| | | if (getAttrib(node, 'name').indexOf('mce_') != 0 && tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
|
| | | tinyMCE.switchClass(editor_id + '_image', 'mceButtonSelected');
|
| | | }
|
| | | break;
|
| | |
| | | inst.iframeElement.style.width = (iw + dx) + "px";
|
| | | }
|
| | | }
|
| | |
|
| | | // Remove pesky table controls
|
| | | inst.useCSS = false;
|
| | | },
|
| | |
|
| | | /**
|
| | |
| | | }
|
| | | },
|
| | |
|
| | | _getColorHTML : function(id, n, cm) {
|
| | | var i, h, cl;
|
| | |
|
| | | h = '<span class="mceMenuLine"></span>';
|
| | | cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(',');
|
| | |
|
| | | h += '<table class="mceColors"><tr>';
|
| | | for (i=0; i<cl.length; i++) {
|
| | | c = 'tinyMCE.execInstanceCommand(\'' + id + '\', \'' + cm + '\', false, \'#' + cl[i] + '\');';
|
| | | h += '<td><a href="javascript:' + c + '" style="background-color: #' + cl[i] + '" onclick="' + c + ';return false;"></a></td>';
|
| | |
|
| | | if ((i+1) % 8 == 0)
|
| | | h += '</tr><tr>';
|
| | | }
|
| | |
|
| | | h += '</tr></table>';
|
| | | /*
|
| | | h += '<a href="" class="mceMoreColors">More colors</a>';
|
| | | */
|
| | |
|
| | | return h;
|
| | | },
|
| | |
|
| | | _insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) {
|
| | | tinyMCE.execCommand('mceBeginUndoLevel');
|
| | |
|
| | |
| | | tinyMCE.closeWindow(window);
|
| | | }
|
| | |
|
| | | // Fixes some charcode issues
|
| | | function fixContent(html) {
|
| | | /* html = html.replace(new RegExp('<(p|hr|table|tr|td|ol|ul|object|embed|li|blockquote)', 'gi'),'\n<$1');
|
| | | html = html.replace(new RegExp('<\/(p|ol|ul|li|table|tr|td|blockquote|object)>', 'gi'),'</$1>\n');
|
| | | html = tinyMCE.regexpReplace(html, '<br />','<br />\n','gi');
|
| | | html = tinyMCE.regexpReplace(html, '\n\n','\n','gi');*/
|
| | | return html;
|
| | | }
|
| | |
|
| | | function onLoadInit() {
|
| | | tinyMCEPopup.resizeToInnerSize();
|
| | |
|
| | | document.forms[0].htmlSource.value = fixContent(tinyMCE.getContent(tinyMCE.getWindowArg('editor_id')));
|
| | | // Remove Gecko spellchecking
|
| | | if (tinyMCE.isGecko)
|
| | | document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
|
| | |
|
| | | document.getElementById('htmlSource').value = tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'));
|
| | |
|
| | | resizeInputs();
|
| | |
|
| | | if (tinyMCE.getParam("theme_advanced_source_editor_wrap", true)) {
|
| | | setWrap('soft');
|
| | | document.forms[0].wraped.checked = true;
|
| | | document.getElementById('wraped').checked = true;
|
| | | }
|
| | | }
|
| | |
|
| | | function setWrap(val) {
|
| | | var s = document.forms[0].htmlSource;
|
| | | var s = document.getElementById('htmlSource');
|
| | |
|
| | | s.wrap = val;
|
| | |
|
| | |
| | | var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
|
| | |
|
| | | function resizeInputs() {
|
| | | var el = document.getElementById('htmlSource');
|
| | |
|
| | | if (!tinyMCE.isMSIE) {
|
| | | wHeight = self.innerHeight-80;
|
| | | wWidth = self.innerWidth-16;
|
| | |
| | | wWidth = document.body.clientWidth - 16;
|
| | | }
|
| | |
|
| | | document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
|
| | | document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px';
|
| | | el.style.height = Math.abs(wHeight) + 'px';
|
| | | el.style.width = Math.abs(wWidth) + 'px';
|
| | | }
|
| | |
|
| | | function renderWordWrap() {
|
| | | if (tinyMCE.isMSIE || tinyMCE.isGecko)
|
| | | document.write('<input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>');
|
| | | }
|
| | |
| | | help : 'Help',
|
| | | not_set : '-- Not set --',
|
| | | close : 'Close',
|
| | | toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X'
|
| | | toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X',
|
| | | invalid_data : 'Error: Invalid values entered, these are marked in red.'
|
| | | });
|
| | |
| | | <form name="source" onsubmit="saveContent();" action="#">
|
| | | <div style="float: left" class="title">{$lang_theme_code_title}</div>
|
| | |
|
| | | <div style="float: right">
|
| | | <script language="javascript" type="text/javascript">renderWordWrap();</script>
|
| | | <div id="wrapline" style="float: right">
|
| | | <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{$lang_theme_code_wordwrap}</label>
|
| | | </div>
|
| | |
|
| | | <br style="clear: both" />
|
| | |
|
| | | <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px" dir="ltr" wrap="off"></textarea>
|
| | |
|
| | | <div class="mceActionPanel">
|
| | |
| | | function TinyMCE_Engine(){this.majorVersion="2";this.minorVersion="0.6.1";this.releaseDate="2006-05-04";this.instances=new Array();this.switchClassCache=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.pendingFiles=new Array();this.loadingIndex=0;this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();var ua=navigator.userAgent;this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(ua.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(ua.indexOf('MSIE 5.0')!=-1);this.isGecko=ua.indexOf('Gecko')!=-1;this.isSafari=ua.indexOf('Safari')!=-1;this.isOpera=ua.indexOf('Opera')!=-1;this.isMac=ua.indexOf('Mac')!=-1;this.isNS7=ua.indexOf('Netscape/7')!=-1;this.isNS71=ua.indexOf('Netscape/7.1')!=-1;this.dialogCounter=0;this.plugins=new Array();this.themes=new Array();this.menus=new Array();this.loadedPlugins=new Array();this.buttonMap=new Array();this.isLoaded=false;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false;}this.idCounter=0;};TinyMCE_Engine.prototype={init:function(settings){var theme;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_dev.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1||src.indexOf('_dev')!=-1)?'_src':'';tinyMCE.gzipMode=src.indexOf('_gzip')!=-1;src=src.substring(0,src.lastIndexOf('/'));if(settings.exec_mode=="src"||settings.exec_mode=="normal")tinyMCE.srcMode=settings.exec_mode=="src"?'_src':'';tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this._def("mode","none");this._def("theme","advanced");this._def("plugins","",true);this._def("language","en");this._def("docs_language",this.settings['language']);this._def("elements","");this._def("textarea_trigger","mce_editable");this._def("editor_selector","");this._def("editor_deselector","mceNoEditor");this._def("valid_elements","+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],-td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang]");this._def("extended_valid_elements","");this._def("invalid_elements","");this._def("encoding","");this._def("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE_Engine.prototype.convertURL"));this._def("save_callback","");this._def("debug",false);this._def("force_br_newlines",false);this._def("force_p_newlines",true);this._def("add_form_submit_trigger",true);this._def("relative_urls",true);this._def("remove_script_host",true);this._def("focus_alert",true);this._def("document_base_url",this.documentURL);this._def("visual",true);this._def("visual_table_class","mceVisualAid");this._def("setupcontent_callback","");this._def("fix_content_duplication",true);this._def("custom_undo_redo",true);this._def("custom_undo_redo_levels",-1);this._def("custom_undo_redo_keyboard_shortcuts",true);this._def("custom_undo_redo_restore_selection",true);this._def("verify_html",true);this._def("apply_source_formatting",false);this._def("directionality","ltr");this._def("cleanup_on_startup",false);this._def("inline_styles",false);this._def("convert_newlines_to_brs",false);this._def("auto_reset_designmode",true);this._def("entities","39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",true);this._def("entity_encoding","named");this._def("cleanup_callback","");this._def("add_unload_trigger",true);this._def("ask",false);this._def("nowrap",false);this._def("auto_resize",false);this._def("auto_focus",false);this._def("cleanup",true);this._def("remove_linebreaks",true);this._def("button_tile_map",false);this._def("submit_patch",true);this._def("browsers","msie,safari,gecko,opera",true);this._def("dialog_type","window");this._def("accessibility_warnings",true);this._def("accessibility_focus",true);this._def("merge_styles_invalid_parents","");this._def("force_hex_style_colors",true);this._def("trim_span_elements",true);this._def("convert_fonts_to_spans",false);this._def("doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');this._def("font_size_classes",'');this._def("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large',true);this._def("event_elements",'a,img',true);this._def("convert_urls",true);this._def("table_inline_editing",false);this._def("object_resizing",true);this._def("custom_shortcuts",true);this._def("convert_on_click",false);this._def("content_css",'');this._def("fix_list_elements",false);this._def("fix_table_elements",false);this._def("strict_loading_mode",document.contentType=='application/xhtml+xml');this._def("hidden_tab_class",'');this._def("display_tab_class",'');if(this.isMSIE&&!this.isOpera)this.settings.strict_loading_mode=false;if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;if(this.isOpera&&this.settings['browsers'].indexOf('opera')==-1)return;var baseHREF=tinyMCE.settings['document_base_url'];var h=document.location.href;var p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings['document_base_url']=baseHREF;tinyMCE.settings['document_base_prefix']=h;}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.blockRegExp=new RegExp("^(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|blockquote|center|dl|dt|dd|dir|fieldset|form|noscript|noframes|menu|isindex|samp)$","i");this.posKeyCodes=new Array(13,45,36,35,33,34,37,38,39,40);this.uniqueURL='javascript:TINYMCE_UNIQUEURL();';this.uniqueTag='<div id="mceTMPElement" style="display: none">TMP</div>';this.callbacks=new Array('onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup');this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath;}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath;}else this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css";if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg);}if(this.configs.length==0){if(this.isSafari&&this.getParam('safari_warning',false))alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.\nYou can disable this message by setting: safari_warning option to false");if(typeof(TinyMCECompressed)=="undefined"){tinyMCE.addEvent(window,"DOMContentLoaded",TinyMCE_Engine.prototype.onLoad);if(tinyMCE.isMSIE&&!tinyMCE.isOpera){if(document.body)tinyMCE.addEvent(document.body,"readystatechange",TinyMCE_Engine.prototype.onLoad);else tinyMCE.addEvent(document,"readystatechange",TinyMCE_Engine.prototype.onLoad);}tinyMCE.addEvent(window,"load",TinyMCE_Engine.prototype.onLoad);tinyMCE._addUnloadEvents();}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(var i=0;i<p.length;i++){if(p[i].charAt(0)!='-')this.loadScript(tinyMCE.baseURL+'/plugins/'+p[i]+'/editor_plugin'+tinyMCE.srcMode+'.js');}}settings['cleanup_entities']=new Array();var entities=tinyMCE.getParam('entities','',true,',');for(var i=0;i<entities.length;i+=2)settings['cleanup_entities']['c'+entities[i]]=entities[i+1];settings['index']=this.configs.length;this.configs[this.configs.length]=settings;this.loadNextScript();},_addUnloadEvents:function(){if(tinyMCE.isMSIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.unloadHandler);}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true);});}},_def:function(key,def_val,t){var v=tinyMCE.getParam(key,def_val);v=t?v.replace(/\s+/g,""):v;this.settings[key]=v;},hasPlugin:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null;},addPlugin:function(n,p){var op=this.plugins[n];p.baseURL=op?op.baseURL:tinyMCE.baseURL+"/plugins/"+n;this.plugins[n]=p;this.loadNextScript();},setPluginBaseURL:function(n,u){var op=this.plugins[n];if(op)op.baseURL=u;else this.plugins[n]={baseURL:u};},loadPlugin:function(n,u){u=u.indexOf('.js')!=-1?u.substring(0,u.lastIndexOf('/')):u;u=u.charAt(u.length-1)=='/'?u.substring(0,u.length-1):u;this.plugins[n]={baseURL:u};this.loadScript(u+"/editor_plugin"+(tinyMCE.srcMode?'_src':'')+".js");},hasTheme:function(n){return typeof(this.themes[n])!="undefined"&&this.themes[n]!=null;},addTheme:function(n,t){this.themes[n]=t;this.loadNextScript();},addMenu:function(n,m){this.menus[n]=m;},hasMenu:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null;},loadScript:function(url){var i;for(i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return;}if(tinyMCE.settings.strict_loading_mode)this.pendingFiles[this.pendingFiles.length]=url;else document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url;},loadNextScript:function(){var d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loadingIndex<this.pendingFiles.length){se=d.createElementNS('http://www.w3.org/1999/xhtml','script');se.setAttribute('language','javascript');se.setAttribute('type','text/javascript');se.setAttribute('src',this.pendingFiles[this.loadingIndex++]);d.getElementsByTagName("head")[0].appendChild(se);}else this.loadingIndex=-1;},loadCSS:function(url){var ar=url.replace(/\s+/,'').split(',');var lflen=0,csslen=0;var skip=false;var x=0,i=0,nl,le;for(x=0,csslen=ar.length;x<csslen;x++){ignore_css=false;if(ar[x]!=null&&ar[x]!='null'&&ar[x].length>0){for(i=0,lflen=this.loadedFiles.length;i<lflen;i++){if(this.loadedFiles[i]==ar[x]){skip=true;break;}}if(!skip){if(tinyMCE.settings.strict_loading_mode){nl=document.getElementsByTagName("head");le=document.createElement('link');le.setAttribute('href',ar[x]);le.setAttribute('rel','stylesheet');le.setAttribute('type','text/css');nl[0].appendChild(le);}else document.write('<link href="'+ar[x]+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=ar[x];}}}},importCSS:function(doc,css){var css_ary=css.replace(/\s+/,'').split(',');var csslen,elm,headArr,x,css_file;for(x=0,csslen=css_ary.length;x<csslen;x++){css_file=css_ary[x];if(css_file!=null&&css_file!='null'&&css_file.length>0){if(css_file.indexOf('://')==-1&&css_file.charAt(0)!='/')css_file=this.documentBasePath+"/"+css_file;if(typeof(doc.createStyleSheet)=="undefined"){elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm);}else doc.createStyleSheet(css_file);}}},confirmAdd:function(e,settings){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(tinyMCE.settings['convert_on_click']||(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm'])))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true');},updateContent:function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isMSIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid);}}},addMCEControl:function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst._onAdd(replace_element,form_element_name,target_document);},removeMCEControl:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id);if(inst){inst.switchSettings();editor_id=inst.editorId;var html=tinyMCE.getContent(editor_id);var tmpInstances=new Array();for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];if(!tinyMCE.isInstance(instance))continue;if(instanceName!=editor_id)tmpInstances[instanceName]=instance;}tinyMCE.instances=tmpInstances;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;var replaceElement=document.getElementById(editor_id+"_parent");var oldTargetElement=inst.oldTargetElement;var targetName=oldTargetElement.nodeName.toLowerCase();if(targetName=="textarea"||targetName=="input"){replaceElement.parentNode.removeChild(replaceElement);oldTargetElement.style.display="inline";oldTargetElement.value=html;}else{oldTargetElement.innerHTML=html;oldTargetElement.style.display='block';replaceElement.parentNode.insertBefore(oldTargetElement,replaceElement);replaceElement.parentNode.removeChild(replaceElement);}}},triggerSave:function(skip_cleanup,skip_callback){var inst,n;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.triggerSave(skip_cleanup,skip_callback);}},resetForm:function(form_index){var i,inst,n,formObj=document.forms[form_index];for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();for(i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name)inst.getBody().innerHTML=inst.startContent;}}},execInstanceCommand:function(editor_id,command,user_interface,value,focus){var inst=tinyMCE.getInstanceById(editor_id);if(inst){if(typeof(focus)=="undefined")focus=true;if(focus)inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();this.selectedInstance=inst;tinyMCE.execCommand(command,user_interface,value);if(tinyMCE.isMSIE&&window.event!=null)tinyMCE.cancelEvent(window.event);}},execCommand:function(command,user_interface,value){user_interface=user_interface?user_interface:false;value=value?value:null;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();switch(command){case'mceHelp':tinyMCE.openWindow({file:'about.htm',width:480,height:380},{tinymce_version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion,tinymce_releasedate:tinyMCE.releaseDate,inline:"yes"});return;case'mceFocus':var inst=tinyMCE.getInstanceById(value);if(inst)inst.contentWindow.focus();return;case"mceAddControl":case"mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value['element'],value['document']),value['element'],value['document']);return;case"mceRemoveControl":case"mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case"mceResetDesignMode":if(!tinyMCE.isMSIE){for(var n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="on";}catch(e){}}}return;}if(this.selectedInstance){this.selectedInstance.execCommand(command,user_interface,value);}else if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert']);},_createIFrame:function(replace_element,doc,win){var iframe,id=replace_element.getAttribute("id");var aw,ah;if(typeof(doc)=="undefined")doc=document;if(typeof(win)=="undefined")win=window;iframe=doc.createElement("iframe");aw=""+tinyMCE.settings['area_width'];ah=""+tinyMCE.settings['area_height'];if(aw.indexOf('%')==-1){aw=parseInt(aw);aw=aw<0?300:aw;aw=aw+"px";}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=ah<0?240:ah;ah=ah+"px";}iframe.setAttribute("id",id);iframe.setAttribute("class","mceEditorIframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",aw);iframe.setAttribute("height",ah);iframe.setAttribute("allowtransparency","true");iframe.className='mceEditorIframe';if(tinyMCE.settings["auto_resize"])iframe.setAttribute("scrolling","no");if(tinyMCE.isMSIE&&!tinyMCE.isOpera)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.settings.strict_loading_mode)iframe.style.marginBottom='-5px';if(tinyMCE.isMSIE&&!tinyMCE.isOpera)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return win.frames[id];else return iframe;},setupContent:function(editor_id){var inst=tinyMCE.instances[editor_id];var doc=inst.getDoc();var head=doc.getElementsByTagName('head').item(0);var content=inst.startContent;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/</g,'<');content=content.replace(/>/g,'>');content=content.replace(/"/g,'"');content=content.replace(/&/g,'&');}inst.switchSettings();if(!tinyMCE.isMSIE&&tinyMCE.getParam("setupcontent_reload",false)&&doc.title!="blank_page"){try{doc.location.href=tinyMCE.baseURL+"/blank.htm";}catch(ex){}window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return;}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return;}tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/themes/"+inst.settings['theme']+"/css/editor_content.css");tinyMCE.importCSS(inst.getDoc(),inst.settings['content_css']);tinyMCE.dispatchCallback(inst,'init_instance_callback','initInstance',inst);if(tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')){inst.addShortcut('ctrl','z','lang_undo_desc','Undo');inst.addShortcut('ctrl','y','lang_redo_desc','Redo');}if(tinyMCE.isGecko){inst.addShortcut('ctrl','b','lang_bold_desc','Bold');inst.addShortcut('ctrl','i','lang_italic_desc','Italic');inst.addShortcut('ctrl','u','lang_underline_desc','Underline');}if(tinyMCE.getParam("convert_fonts_to_spans"))inst.getDoc().body.setAttribute('id','mceSpanFonts');if(tinyMCE.settings['nowrap'])doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isMSIE)doc.documentElement.editorId=editor_id;inst.setBaseHREF(tinyMCE.settings['base_href']);if(tinyMCE.settings['convert_newlines_to_brs']){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi");}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isMSIE){window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["'+editor_id+'"].getDoc(), "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])doc.styleSheets[0].addRule("p","margin: 0;");var body=inst.getBody();body.editorId=editor_id;}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isMSIE){var contentElement=inst.getDoc().createElement("body");var doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt'])content=content.replace(new RegExp('<>','g'),"");if(tinyMCE.settings['cleanup_on_startup'])tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else{content=tinyMCE.regexpReplace(content,"<strong","<b","gi");content=tinyMCE.regexpReplace(content,"<em(/?)>","<i$1>","gi");content=tinyMCE.regexpReplace(content,"<em ","<i ","gi");content=tinyMCE.regexpReplace(content,"</strong>","</b>","gi");content=tinyMCE.regexpReplace(content,"</em>","</i>","gi");tinyMCE.setInnerHTML(inst.getBody(),content);}tinyMCE.convertAllRelativeURLs(inst.getBody());}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(inst.getDoc(),content);eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}');}else tinyMCE._setHTML(inst.getDoc(),content);}var parentElm=inst.targetDoc.getElementById(inst.editorId+'_parent');inst.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings['visual'],inst);tinyMCE.dispatchCallback(inst,'setupcontent_callback','setupContent',editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isMSIE)tinyMCE.addEventHandlers(inst);if(tinyMCE.isMSIE){tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(inst.getBody(),"beforedeactivate",TinyMCE_Engine.prototype._eventPatch);if(!tinyMCE.isOpera){tinyMCE.addEvent(doc.body,"mousemove",TinyMCE_Engine.prototype.onMouseMove);tinyMCE.addEvent(doc.body,"beforepaste",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc.body,"drop",TinyMCE_Engine.prototype._eventPatch);}}tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=inst.contentWindow.document.body;tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoRedo.add({content:inst.startContent});if(tinyMCE.isGecko){tinyMCE.selectNodes(inst.getBody(),function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(new RegExp('\\smce_src=\"[^\"]*\"','gi'),"");n.nodeValue=n.nodeValue.replace(new RegExp('\\smce_href=\"[^\"]*\"','gi'),"");}return false;});}tinyMCE._removeInternal(inst.getBody());tinyMCE.selectedInstance=inst;tinyMCE.triggerNodeChange(false,true);},storeAwayURLs:function(s){if(!s.match(/(mce_src|mce_href)/gi,s)){s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"');}return s;},_removeInternal:function(n){if(tinyMCE.isGecko){tinyMCE.selectNodes(n,function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(new RegExp('\\smce_src=\"[^\"]*\"','gi'),"");n.nodeValue=n.nodeValue.replace(new RegExp('\\smce_href=\"[^\"]*\"','gi'),"");}return false;});}},removeTinyMCEFormElements:function(form_obj){if(typeof(form_obj)=="undefined"||form_obj==null)return;if(form_obj.nodeName!="FORM"){if(form_obj.form)form_obj=form_obj.form;else form_obj=tinyMCE.getParentElement(form_obj,"form");}if(form_obj==null)return;for(var i=0;i<form_obj.elements.length;i++){var elementId=form_obj.elements[i].name?form_obj.elements[i].name:form_obj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)form_obj.elements[i].disabled=true;}},handleEvent:function(e){var inst=tinyMCE.selectedInstance;if(typeof(tinyMCE)=="undefined")return true;if(tinyMCE.executeCallback(tinyMCE.selectedInstance,'handle_event_callback','handleEvent',e))return false;switch(e.type){case"beforedeactivate":case"blur":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceEndTyping');tinyMCE.hideMenus();return;case"drop":case"beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.setBaseHREF(null);if(tinyMCE.isMSIE&&!tinyMCE.isOpera){var ife=tinyMCE.selectedInstance.iframeElement;if(ife.style.height.indexOf('%')!=-1){ife._oldHeight=ife.style.height;ife.style.height=ife.clientHeight;}}window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings['base_href']);tinyMCE._resetIframeHeight();",1);return;case"submit":tinyMCE.removeTinyMCEFormElements(tinyMCE.isMSIE?window.event.srcElement:e.target);tinyMCE.triggerSave();tinyMCE.isNotDirty=true;return;case"reset":var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10);}return;case"keypress":if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}else{if(e.target.ownerDocument.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.ownerDocument.editorId];}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&e.keyCode==13&&!e.shiftKey){if(TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance,e)){tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.cancelEvent(e);return false;}}if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.cancelEvent(e);return false;}}if(tinyMCE.isMSIE&&tinyMCE.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false;}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false);}return false;break;case"keyup":case"keydown":tinyMCE.hideMenus();tinyMCE.hasMouseMoved=false;if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];else return;if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false;}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);if(tinyMCE.isMSIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isMSIE&&e.type=="keyup"&&e.keyCode==13){var elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML=" ";else elm.innerHTML=" ";}}}var keys=tinyMCE.posKeyCodes;var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break;}}if(tinyMCE.isMSIE&&tinyMCE.settings['custom_undo_redo']){var keys=new Array(8,46);for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(e.type=="keyup")tinyMCE.triggerNodeChange(false);}}}if(e.keyCode==17)return true;if(!posKey&&e.type=="keyup")tinyMCE.execCommand("mceStartTyping");if(e.type=="keydown"&&(posKey||e.ctrlKey)&&inst)inst.undoBookmark=inst.selection.getBookmark();if(e.type=="keyup"&&(posKey||e.ctrlKey))tinyMCE.execCommand("mceEndTyping");if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);if(tinyMCE.isMSIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case"mousedown":case"mouseup":case"click":case"focus":tinyMCE.hideMenus();if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();tinyMCE.selectedInstance.isFocused=true;}var targetBody=tinyMCE.getParentElement(e.target,"body");for(var instanceName in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;var inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody()==targetBody){tinyMCE.selectedInstance=inst;tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");break;}}if(!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark)tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark=tinyMCE.selectedInstance.selection.getBookmark();if(tinyMCE.isSafari){tinyMCE.selectedInstance.lastSafariSelection=tinyMCE.selectedInstance.selection.getBookmark();tinyMCE.selectedInstance.lastSafariSelectedElement=tinyMCE.selectedElement;var lnk=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");if(lnk&&e.type=="mousedown"){lnk.setAttribute("mce_real_href",lnk.getAttribute("href"));lnk.setAttribute("href","javascript:void(0);");}if(lnk&&e.type=="click"){window.setTimeout(function(){lnk.setAttribute("href",lnk.getAttribute("mce_real_href"));lnk.removeAttribute("mce_real_href");},10);}}if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);tinyMCE.execCommand("mceEndTyping");if(e.type=="mouseup")tinyMCE.execCommand("mceAddUndoLevel");if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];return false;break;}},getButtonHTML:function(id,lang,img,cmd,ui,val){var h='',m,x;cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isMSIE||tinyMCE.isOpera)&&(m=this.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceTiledButton mceButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="background-position: '+x+'px 0" title="{$'+lang+'}" />';h+='</a>';}else{h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceButtonNormal" target="_self">';h+='<img src="'+img+'" title="{$'+lang+'}" />';h+='</a>';}return h;},addButtonMap:function(m){var i,a=m.replace(/\s+/,'').split(',');for(i=0;i<a.length;i++)this.buttonMap[a[i]]=i;},submitPatch:function(){tinyMCE.removeTinyMCEFormElements(this);tinyMCE.triggerSave();this.mceOldSubmit();tinyMCE.isNotDirty=true;},onLoad:function(){if(tinyMCE.settings.strict_loading_mode&&this.loadingIndex!=-1){window.setTimeout('tinyMCE.onLoad();',1);return;}if(tinyMCE.isMSIE&&!tinyMCE.isOpera&&window.event.type=="readystatechange"&&document.readyState!="complete")return true;if(tinyMCE.isLoaded)return true;tinyMCE.isLoaded=true;tinyMCE.dispatchCallback(null,'onpageload','onPageLoad');for(var c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];var selector=tinyMCE.getParam("editor_selector");var deselector=tinyMCE.getParam("editor_deselector");var elementRefAr=new Array();if(document.forms&&tinyMCE.settings['add_form_submit_trigger']&&!tinyMCE.submitTriggers){for(var i=0;i<document.forms.length;i++){var form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE_Engine.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE_Engine.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings['submit_patch']){try{form.mceOldSubmit=form.submit;form.submit=TinyMCE_Engine.prototype.submitPatch;}catch(e){}}}}var mode=tinyMCE.settings['mode'];switch(mode){case"exact":var elements=tinyMCE.getParam('elements','',true,',');for(var i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);var trigger=element?element.getAttribute(tinyMCE.settings['textarea_trigger']):"";if(tinyMCE.getAttrib(element,"class").indexOf(deselector)!=-1)continue;if(trigger=="false")continue;if((tinyMCE.settings['ask']||tinyMCE.settings['convert_on_click'])&&element){elementRefAr[elementRefAr.length]=element;continue;}if(element)tinyMCE.addMCEControl(element,elements[i]);else if(tinyMCE.settings['debug'])alert("Error: Could not find element by id or name: "+elements[i]);}break;case"specific_textareas":case"textareas":var nodeList=document.getElementsByTagName("textarea");for(var i=0;i<nodeList.length;i++){var elm=nodeList.item(i);var trigger=elm.getAttribute(tinyMCE.settings['textarea_trigger']);if(selector!=''&&tinyMCE.getAttrib(elm,"class").indexOf(selector)==-1)continue;if(selector!='')trigger=selector!=""?"true":"";if(tinyMCE.getAttrib(elm,"class").indexOf(deselector)!=-1)continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm;}break;}for(var i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']||tinyMCE.settings['convert_on_click']){if(tinyMCE.isGecko){var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings);},10);});if(element.nodeName!="TEXTAREA"&&element.nodeName!="INPUT")tinyMCE.addEvent(element,"click",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings);},10);});}else{var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings);});tinyMCE.addEvent(element,"click",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings);});}}else tinyMCE.addMCEControl(element,elementId);}if(tinyMCE.settings['auto_focus']){window.setTimeout(function(){var inst=tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);inst.selection.selectNode(inst.getBody(),true,true);inst.contentWindow.focus();},10);}tinyMCE.dispatchCallback(null,'oninit','onInit');}},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.isTinyMCE_Control;},getParam:function(name,default_value,strip_whitespace,split_chr){var value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var outArray=new Array();for(var i=0;i<value.length;i++){if(value[i]&&value[i]!="")outArray[outArray.length]=value[i];}value=outArray;}return value;},getLang:function(name,default_value,parse_entities,va){var v=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name],n;if(parse_entities)v=tinyMCE.entityDecode(v);if(va){for(n in va)v=this.replaceVar(v,n,va[n]);}return v;},entityDecode:function(s){var e=document.createElement("div");e.innerHTML=s;return e.innerHTML;},addToLang:function(prefix,ar){for(var key in ar){if(typeof(ar[key])=='function')continue;tinyMCELang[(key.indexOf('lang_')==-1?'lang_':'')+(prefix!=''?(prefix+"_"):'')+key]=ar[key];}this.loadNextScript();},triggerNodeChange:function(focus,setup_content){if(tinyMCE.selectedInstance){var inst=tinyMCE.selectedInstance;var editorId=inst.editorId;var elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();var undoIndex=-1;var undoLevels=-1;var anySelection=false;var selectedText=inst.selection.getSelectedText();if(setup_content&&tinyMCE.isGecko&&inst.isHidden())elm=inst.getBody();inst.switchSettings();if(tinyMCE.settings["auto_resize"]){var doc=inst.getDoc();inst.iframeElement.style.width=doc.body.offsetWidth+"px";inst.iframeElement.style.height=doc.body.offsetHeight+"px";}if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=inst.undoRedo.undoIndex;undoLevels=inst.undoRedo.undoLevels.length;}tinyMCE.dispatchCallback(inst,'handle_node_change_callback','handleNodeChange',editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content);}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus();},_customCleanup:function(inst,type,content){var pl,po,i;var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content, inst);");pl=inst.plugins;for(i=0;i<pl.length;i++){po=tinyMCE.plugins[pl[i]];if(po&&po.cleanup)content=po.cleanup(type,content,inst);}return content;},setContent:function(h){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand('mceSetContent',false,h);tinyMCE.selectedInstance.repaint();}},importThemeLanguagePack:function(name){if(typeof(name)=="undefined")name=tinyMCE.settings['theme'];tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings['language']+'.js');},importPluginLanguagePack:function(name,valid_languages){var lang="en",b=tinyMCE.baseURL+'/plugins/'+name;valid_languages=valid_languages.split(',');for(var i=0;i<valid_languages.length;i++){if(tinyMCE.settings['language']==valid_languages[i])lang=tinyMCE.settings['language'];}if(this.plugins[name])b=this.plugins[name].baseURL;tinyMCE.loadScript(b+'/langs/'+lang+'.js');},applyTemplate:function(h,as){var i,s,ar=h.match(new RegExp('\\{\\$[a-z0-9_]+\\}','gi'));if(ar&&ar.length>0){for(i=ar.length-1;i>=0;i--){s=ar[i].substring(2,ar[i].length-1);if(s.indexOf('lang_')==0&&tinyMCELang[s])h=tinyMCE.replaceVar(h,s,tinyMCELang[s]);else if(as&&as[s])h=tinyMCE.replaceVar(h,s,as[s]);else if(tinyMCE.settings[s])h=tinyMCE.replaceVar(h,s,tinyMCE.settings[s]);}}h=tinyMCE.replaceVar(h,"themeurl",tinyMCE.themeURL);return h;},replaceVar:function(h,r,v){return h.replace(new RegExp('{\\\$'+r+'}','g'),v);},openWindow:function(template,args){var html,width,height,x,y,resizable,scrollbars,url;args['mce_template_file']=template['file'];args['mce_width']=template['width'];args['mce_height']=template['height'];tinyMCE.windowArgs=args;html=template['html'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(tinyMCE.isMSIE)height+=40;else height+=20;x=parseInt(screen.width/2.0)-(width/2.0);y=parseInt(screen.height/2.0)-(height/2.0);resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]));}if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args);var win=window.open("","mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return;}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus();}else{if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&resizable!='yes'&&tinyMCE.settings["dialog_type"]=="modal"){height+=10;var features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features);}else{var modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template['close_previous']!="no")try{tinyMCE.lastWindow.close();}catch(ex){}var win=window.open(url,"mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return;}if(template['close_previous']!="no")tinyMCE.lastWindow=win;eval('try { win.resizeTo(width, height); } catch(e) { }');if(tinyMCE.isGecko){if(win.document.defaultView.statusbar.visible)win.resizeBy(0,tinyMCE.isMac?10:24);}win.focus();}}},closeWindow:function(win){win.close();},getVisualAidClass:function(class_name,state){var aidClass=tinyMCE.settings['visual_table_class'];if(typeof(state)=="undefined")state=tinyMCE.settings['visual'];var classNames=new Array();var ar=class_name.split(' ');for(var i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!="")classNames[classNames.length]=ar[i];}if(state)classNames[classNames.length]=aidClass;var className="";for(var i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i];}return className;},handleVisualAid:function(el,deep,state,inst,skip_dispatch){if(!el)return;if(!skip_dispatch)tinyMCE.dispatchCallback(inst,'handle_visual_aid_callback','handleVisualAid',el,deep,state,inst);var tableElement=null;switch(el.nodeName){case"TABLE":var oldW=el.style.width;var oldH=el.style.height;var bo=tinyMCE.getAttrib(el,"border");bo=bo==""||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(var y=0;y<el.rows.length;y++){for(var x=0;x<el.rows[y].cells.length;x++){var cn=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],"class"),state&&bo);tinyMCE.setAttrib(el.rows[y].cells[x],"class",cn);}}break;case"A":var anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!=''&&state){el.title=anchorName;el.className='mceItemAnchor';}else if(anchorName!=''&&!state)el.className='';break;}if(deep&&el.hasChildNodes()){for(var i=0;i<el.childNodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,inst,true);}},fixGeckoBaseHREFBug:function(m,e,h){var nl,i,a,n,xsrc,xhref,el;if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," mce_tsrc=");h=h.replace(/\shref=/gi," mce_thref=");return h;}else{el=new Array('a','img','select','area','iframe','base','input','script','embed','object','link');for(a=0;a<el.length;a++){n=e.getElementsByTagName(el[a]);for(i=0;i<n.length;i++){xsrc=tinyMCE.getAttrib(n[i],"mce_tsrc");xhref=tinyMCE.getAttrib(n[i],"mce_thref");if(xsrc!=""){try{n[i].src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xsrc);}catch(e){}n[i].removeAttribute("mce_tsrc");}if(xhref!=""){try{n[i].href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xhref);}catch(e){}n[i].removeAttribute("mce_thref");}}}el=tinyMCE.selectNodes(e,function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(/\smce_tsrc=/gi," src=");n.nodeValue=n.nodeValue.replace(/\smce_thref=/gi," href=");}return false;});}}return h;},_setHTML:function(doc,html_content){html_content=tinyMCE.cleanupHTMLCode(html_content);try{tinyMCE.setInnerHTML(doc.body,html_content);}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content);}if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<paras.length;i++){var node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML;}}var html=doc.body.innerHTML;tinyMCE.setInnerHTML(doc.body,html);}tinyMCE.cleanupAnchors(doc);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);},getEditorId:function(form_element){var inst=this.getInstanceById(form_element);if(!inst)return null;return inst.editorId;},getInstanceById:function(editor_id){var inst=this.instances[editor_id];if(!inst){for(var n in tinyMCE.instances){var instance=tinyMCE.instances[n];if(!tinyMCE.isInstance(instance))continue;if(instance.formTargetElementId==editor_id){inst=instance;break;}}}return inst;},queryInstanceCommandValue:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandValue(command);return false;},queryInstanceCommandState:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandState(command);return null;},setWindowArg:function(n,v){this.windowArgs[n]=v;},getWindowArg:function(n,d){return(typeof(this.windowArgs[n])=="undefined")?d:this.windowArgs[n];},getCSSClasses:function(editor_id,doc){var output=new Array();if(typeof(tinyMCE.cssClasses)!="undefined")return tinyMCE.cssClasses;if(typeof(editor_id)=="undefined"&&typeof(doc)=="undefined"){var instance;for(var instanceName in tinyMCE.instances){instance=tinyMCE.instances[instanceName];if(!tinyMCE.isInstance(instance))continue;break;}doc=instance.getDoc();}if(typeof(doc)=="undefined"){var instance=tinyMCE.getInstanceById(editor_id);doc=instance.getDoc();}if(doc){var styles=doc.styleSheets;if(styles&&styles.length>0){for(var x=0;x<styles.length;x++){var csses=null;eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets("+x+").rules : styles["+x+"].cssRules;} catch(e) {}");if(!csses)return new Array();for(var i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;if(selectorText){var rules=selectorText.split(',');for(var c=0;c<rules.length;c++){var rule=rules[c];while(rule.indexOf(' ')==0)rule=rule.substring(1);if(rule.indexOf(' ')!=-1||rule.indexOf(':')!=-1||rule.indexOf('mceItem')!=-1)continue;if(rule.indexOf(tinyMCE.settings['visual_table_class'])!=-1||rule.indexOf('mceEditable')!=-1||rule.indexOf('mceNonEditable')!=-1)continue;if(rule.indexOf('.')!=-1){var cssClass=rule.substring(rule.indexOf('.')+1);var addClass=true;for(var p=0;p<output.length&&addClass;p++){if(output[p]==cssClass)addClass=false;}if(addClass)output[output.length]=cssClass;}}}}}}}if(output.length>0)tinyMCE.cssClasses=output;return output;},regexpReplace:function(in_str,reg_exp,replace_str,opts){if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';var re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str);},trim:function(s){return s.replace(/^\s*|\s*$/g,"");},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s;},getControlHTML:function(c){var i,l,n,o,v;l=tinyMCE.plugins;for(n in l){o=l[n];if(o.getControlHTML&&(v=o.getControlHTML(c))!='')return tinyMCE.replaceVar(v,"pluginurl",o.baseURL);}o=tinyMCE.themes[tinyMCE.settings['theme']];if(o.getControlHTML&&(v=o.getControlHTML(c))!='')return v;return'';},evalFunc:function(f,idx,a){var s='(',i;for(i=idx;i<a.length;i++){s+='a['+i+']';if(i<a.length-1)s+=',';}s+=');';return eval("f"+s);},dispatchCallback:function(i,p,n){return this.callFunc(i,p,n,0,this.dispatchCallback.arguments);},executeCallback:function(i,p,n){return this.callFunc(i,p,n,1,this.executeCallback.arguments);},execCommandCallback:function(i,p,n){return this.callFunc(i,p,n,2,this.execCommandCallback.arguments);},callFunc:function(ins,p,n,m,a){var l,i,on,o,s,v;s=m==2;l=tinyMCE.getParam(p,'');if(l!=''&&(v=tinyMCE.evalFunc(typeof(l)=="function"?l:eval(l),3,a))==s&&m>0)return true;if(ins!=null){for(i=0,l=ins.plugins;i<l.length;i++){o=tinyMCE.plugins[l[i]];if(o[n]&&(v=tinyMCE.evalFunc(o[n],3,a))==s&&m>0)return true;}}l=tinyMCE.themes;for(on in l){o=l[on];if(o[n]&&(v=tinyMCE.evalFunc(o[n],3,a))==s&&m>0)return true;}return false;},xmlEncode:function(s){s=""+s;s=s.replace(/&/g,'&');s=s.replace(new RegExp('"','g'),'"');s=s.replace(/\'/g,''');s=s.replace(/</g,'<');s=s.replace(/>/g,'>');return s;},extend:function(p,np){var o={};o.parent=p;for(n in p)o[n]=p[n];for(n in np)o[n]=np[n];return o;},hideMenus:function(){var e=tinyMCE.lastSelectedMenuBtn;if(tinyMCE.lastMenu){tinyMCE.lastMenu.hide();tinyMCE.lastMenu=null;}if(e){tinyMCE.switchClass(e,tinyMCE.lastMenuBtnClass);tinyMCE.lastSelectedMenuBtn=null;}},explode:function(d,s){var ar=s.split(d),oar=new Array(),i;for(i=0;i<ar.length;i++){if(ar[i]!="")oar[oar.length]=ar[i];}return oar;}};var TinyMCE=TinyMCE_Engine;var tinyMCE=new TinyMCE_Engine();var tinyMCELang={};function TinyMCE_Control(settings){var t,i,to,fu,p,x,fn,fu,pn,s=settings;this.undoRedoLevel=true;this.isTinyMCE_Control=true;this.settings=s;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);this.selection=new TinyMCE_Selection(this);this.undoRedo=new TinyMCE_UndoRedo(this);this.cleanup=new TinyMCE_Cleanup();this.shortcuts=new Array();this.hasMouseMoved=false;this.cleanup.init({valid_elements:s.valid_elements,extended_valid_elements:s.extended_valid_elements,entities:s.entities,entity_encoding:s.entity_encoding,debug:s.cleanup_debug,url_converter:'TinyMCE_Cleanup.prototype._urlConverter',indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication});t=this.settings['theme'];if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;to={};for(i=0;i<fn.length;i++){if((fu=window['TinyMCE_'+t+"_"+fn[i]]))to[fn[i]]=fu;}tinyMCE.addTheme(t,to);}this.plugins=new Array();p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){pn=p[i];if(pn.charAt(0)=='-')pn=pn.substring(1);if(!tinyMCE.hasPlugin(pn)){fn=tinyMCE.callbacks;to={};for(x=0;x<fn.length;x++){if((fu=window['TinyMCE_'+pn+"_"+fn[x]]))to[fn[x]]=fu;}tinyMCE.addPlugin(pn,to);}this.plugins[this.plugins.length]=pn;}}};TinyMCE_Control.prototype={hasPlugin:function(n){var i;for(i=0;i<this.plugins.length;i++){if(this.plugins[i]==n)return true;}return false;},addPlugin:function(n,p){if(!this.hasPlugin(n)){tinyMCE.addPlugin(n,p);this.plugins[this.plugins.length]=n;}},repaint:function(){if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return;try{var s=this.selection;var b=s.getBookmark(true);this.getBody().style.display='none';this.getDoc().execCommand('selectall',false,null);this.getSel().collapseToStart();this.getBody().style.display='block';s.moveToBookmark(b);}catch(ex){}},switchSettings:function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings['index']){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings['index'];}},getBody:function(){return this.getDoc().body;},getDoc:function(){return this.contentWindow.document;},getWin:function(){return this.contentWindow;},addShortcut:function(m,k,d,cmd,ui,va){var n=typeof(k)=="number",ie=tinyMCE.isMSIE,c,sc,i;var scl=this.shortcuts;if(!tinyMCE.getParam('custom_shortcuts'))return false;m=m.toLowerCase();k=ie&&!n?k.toUpperCase():k;c=n?null:k.charCodeAt(0);d=d&&d.indexOf('lang_')==0?tinyMCE.getLang(d):d;sc={alt:m.indexOf('alt')!=-1,ctrl:m.indexOf('ctrl')!=-1,shift:m.indexOf('shift')!=-1,charCode:c,keyCode:n?k:(ie?c:null),desc:d,cmd:cmd,ui:ui,val:va};for(i=0;i<scl.length;i++){if(sc.alt==scl[i].alt&&sc.ctrl==scl[i].ctrl&&sc.shift==scl[i].shift&&sc.charCode==scl[i].charCode&&sc.keyCode==scl[i].keyCode){return false;}}scl[scl.length]=sc;return true;},handleShortcut:function(e){var i,s=this.shortcuts,o;for(i=0;i<s.length;i++){o=s[i];if(o.alt==e.altKey&&o.ctrl==e.ctrlKey&&(o.keyCode==e.keyCode||o.charCode==e.charCode)){if(o.cmd&&(e.type=="keydown"||(e.type=="keypress"&&!tinyMCE.isOpera)))tinyMCE.execCommand(o.cmd,o.ui,o.val);tinyMCE.cancelEvent(e);return true;}}return false;},autoResetDesignMode:function(){if(!tinyMCE.isMSIE&&this.isHidden()&&tinyMCE.getParam('auto_reset_designmode'))eval('try { this.getDoc().designMode = "On"; } catch(e) {}');},isHidden:function(){if(tinyMCE.isMSIE)return false;var s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},isDirty:function(){return this.startContent!=tinyMCE.trim(this.getBody().innerHTML)&&!tinyMCE.isNotDirty;},_mergeElements:function(scmd,pa,ch,override){if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return;}var st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));var stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));var className=tinyMCE.getAttrib(pa,"class");className+=" "+tinyMCE.getAttrib(ch,"class");if(override){for(var n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n];}}else{for(var n in stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n];}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.setAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style");},_setUseCSS:function(b){var d=this.getDoc();try{d.execCommand("useCSS",false,!b);}catch(ex){}try{d.execCommand("styleWithCSS",false,b);}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{d.execCommand('enableInlineTableEditing',false,"false");}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{d.execCommand('enableObjectResizing',false,"false");}catch(ex){}},execCommand:function(command,user_interface,value){var doc=this.getDoc();var win=this.getWin();var focusElm=this.getFocusElement();if(!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command))this.undoBookmark=null;if(this.lastSafariSelection&&!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command)){this.selection.moveToBookmark(this.lastSafariSelection);tinyMCE.selectedElement=this.lastSafariSelectedElement;}if(!tinyMCE.isMSIE&&!this.useCSS){this._setUseCSS(false);this.useCSS=true;}this.contentDocument=doc;if(tinyMCE.execCommandCallback(this,'execcommand_callback','execCommand',this.editorId,this.getBody(),command,user_interface,value))return;if(focusElm&&focusElm.nodeName=="IMG"){var align=focusElm.getAttribute('align');var img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case"JustifyLeft":if(align=='left')img.removeAttribute('align');else img.setAttribute('align','left');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyCenter":img.removeAttribute('align');var div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);}else{var div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm);}this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyRight":if(align=='right')img.removeAttribute('align');else img.setAttribute('align','right');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings['force_br_newlines']){var alignValue="";if(doc.selection.type!="Control"){switch(command){case"JustifyLeft":alignValue="left";break;case"JustifyCenter":alignValue="center";break;case"JustifyFull":alignValue="justify";break;case"JustifyRight":alignValue="right";break;}if(alignValue!=""){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return;}}}switch(command){case"mceRepaint":this.repaint();return true;case"InsertUnorderedList":case"InsertOrderedList":var tag=(command=="InsertUnorderedList")?"ul":"ol";if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<"+tag+"><li> </li><"+tag+">");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"Strikethrough":if(tinyMCE.isSafari)this.execCommand("mceInsertContent",false,"<strike>"+this.selection.getSelectedHTML()+"</strike>");else this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"mceSelectNode":this.selection.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case"FormatBlock":if(value==null||value==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");if(elm)this.execCommand("mceRemoveNode",false,elm);}else{if(tinyMCE.isGecko&&new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/gi,'');if(tinyMCE.isMSIE&&new RegExp('blockquote|code|samp','gi').test(value)){var b=this.selection.getBookmark();this.getDoc().execCommand("FormatBlock",false,'<p>');tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()),value);this.selection.moveToBookmark(b);}else this.getDoc().execCommand("FormatBlock",false,value);}tinyMCE.triggerNodeChange();break;case"mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isMSIE){value.outerHTML=value.innerHTML;}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML));}tinyMCE.triggerNodeChange();break;case"mceSelectNodeDepth":var parentNode=this.getFocusElement();for(var i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue;}if(i==value){this.selection.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return;}parentNode=parentNode.parentNode;}break;case"SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value['command'];var sname=value['name'];var svalue=value['value']==null?'':value['value'];var wrapper=value['wrapper']?value['wrapper']:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings['merge_styles_invalid_parents']!=''?new RegExp(tinyMCE.settings['merge_styles_invalid_parents'],"gi"):null;if(tinyMCE.isMSIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm;}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(new RegExp('td|tr|tbody|table','gi').test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm;}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','');}var ch=tinyMCE.getNodeTree(parentElm,new Array(),1);for(var z=0;z<ch.length;z++){if(ch[z]==parentElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','');}}}else{this._setUseCSS(false);doc.execCommand("FontName",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=doc.createElement(wrapper);if(scmd=="setstyle")tinyMCE.setStyleAttrib(spanElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(spanElm,sname,svalue);if(scmd=="removeformat"){spanElm.style.cssText='';tinyMCE.setAttrib(spanElm,'class','');}if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true));}spanElm.setAttribute("mce_new","true");elm.parentNode.replaceChild(spanElm,elm);var ch=tinyMCE.getNodeTree(spanElm,new Array(),1);for(var z=0;z<ch.length;z++){if(ch[z]==spanElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','');}}}}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue;}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false);}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('<span>','gi').test(tmp.innerHTML)){for(var x=0;x<elm.childNodes.length;x++){if(elm.parentNode!=null)elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true),elm);}elm.parentNode.removeChild(elm);}}if(scmd=="removeformat")tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"FontName":if(value==null){var s=this.getSel();if(tinyMCE.isGecko&&s.isCollapsed){var f=tinyMCE.getParentElement(this.getFocusElement(),"font");if(f!=null)this.selection.selectNode(f,false);}this.getDoc().execCommand("RemoveFormat",false,null);if(f!=null&&tinyMCE.isGecko){var r=this.getRng().cloneRange();r.collapse(true);s.removeAllRanges();s.addRange(r);}}else this.getDoc().execCommand('FontName',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"FontSize":this.getDoc().execCommand('FontSize',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"forecolor":this.getDoc().execCommand('forecolor',false,value);break;case"HiliteColor":if(tinyMCE.isGecko){this._setUseCSS(true);this.getDoc().execCommand('hilitecolor',false,value);this._setUseCSS(false);}else this.getDoc().execCommand('BackColor',false,value);break;case"Cut":case"Copy":case"Paste":var cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isOpera&&cmdFailed)alert('Currently not supported by your browser, use keyboard shortcuts instead.');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return;}else tinyMCE.triggerNodeChange();break;case"mceSetContent":if(!value)value="";value=tinyMCE.storeAwayURLs(value);value=tinyMCE._customCleanup(this,"insert_to_editor",value);tinyMCE._setHTML(doc,value);tinyMCE.setInnerHTML(doc.body,tinyMCE._cleanupHTML(this,doc,tinyMCE.settings,doc.body));tinyMCE.convertAllRelativeURLs(doc.body);tinyMCE._removeInternal(this.getBody());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(doc.body,true,this.visualAid,this);tinyMCE._setEventsEnabled(doc.body,false);return true;case"mceCleanup":var b=this.selection.getBookmark();tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,this.getBody(),this.visualAid));tinyMCE.convertAllRelativeURLs(doc.body);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this.repaint();this.selection.moveToBookmark(b);tinyMCE.triggerNodeChange();break;case"mceReplaceContent":if(!value)value='';this.getWin().focus();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text;}else selectedText=this.getSel().toString();if(selectedText.length>0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value);}tinyMCE.triggerNodeChange();break;case"mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange();}}break;case"mceSetCSSClass":this.execCommand("SetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case"mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getDoc().body.scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getDoc().body.scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case"mceInsertContent":if(!value)value='';var insertHTMLFailed=false;this.getWin().focus();if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1&&!value.match(/(&| |<|>)/g)){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2);}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value);}}catch(ex){insertHTMLFailed=true;}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return;}}if(tinyMCE.isOpera&&insertHTMLFailed){this.getDoc().execCommand("insertimage",false,tinyMCE.uniqueURL);var ar=tinyMCE.getElementsByAttributeValue(this.getBody(),"img","src",tinyMCE.uniqueURL);ar[0].outerHTML=value;return;}if(!tinyMCE.isMSIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value);}else value=rng.createContextualFragment(value);}else{var el=document.createElement("div");el.innerHTML=value;value=el.firstChild.nodeValue;value=doc.createTextNode(value);}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true;}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true;}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node);}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng);}else rng.collapse(false);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value);}else{var rng=doc.selection.createRange();var c=value.indexOf('<!--')!=-1;if(c)value=tinyMCE.uniqueTag+value;if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);if(c){var e=this.getDoc().getElementById('mceTMPElement');e.parentNode.removeChild(e);}}tinyMCE.triggerNodeChange();break;case"mceStartTyping":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedo.typingUndoIndex==-1){this.undoRedo.typingUndoIndex=this.undoRedo.undoIndex;this.execCommand('mceAddUndoLevel');}break;case"mceEndTyping":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedo.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.undoRedo.typingUndoIndex=-1;}break;case"mceBeginUndoLevel":this.undoRedoLevel=false;break;case"mceEndUndoLevel":this.undoRedoLevel=true;this.execCommand('mceAddUndoLevel');break;case"mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedoLevel){if(this.undoRedo.add())tinyMCE.triggerNodeChange(false);}break;case"Undo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");this.undoRedo.undo();tinyMCE.triggerNodeChange();}else this.getDoc().execCommand(command,user_interface,value);break;case"Redo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");this.undoRedo.redo();tinyMCE.triggerNodeChange();}else this.getDoc().execCommand(command,user_interface,value);break;case"mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"Indent":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();if(tinyMCE.isMSIE){var n=tinyMCE.getParentElement(this.getFocusElement(),"blockquote");do{if(n&&n.nodeName=="BLOCKQUOTE"){n.removeAttribute("dir");n.removeAttribute("style");}}while(n!=null&&(n=n.parentNode)!=null);}break;case"removeformat":var text=this.selection.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return;}if(tinyMCE.isMSIE){try{var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null);}catch(e){}this.execCommand("SetStyleInfo",false,{command:"removeformat"});}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("SetStyleInfo",false,{command:"removeformat"});}if(text.length==0)this.execCommand("mceSetCSSClass",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(command,user_interface,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);else tinyMCE.triggerNodeChange();}if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceStartTyping"&&command!="mceEndTyping")tinyMCE.execCommand("mceAddUndoLevel");},queryCommandValue:function(c){try{return this.getDoc().queryCommandValue(c);}catch(e){return null;}},queryCommandState:function(c){return this.getDoc().queryCommandState(c);},_onAdd:function(replace_element,form_element_name,target_document){var hc,th,to,editorTemplate;th=this.settings['theme'];to=tinyMCE.themes[th];var targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings['theme'];this.settings['themeurl']=tinyMCE.themeURL;if(!replace_element){alert("Error: Could not find the target element.");return false;}if(to.getEditorTemplate)editorTemplate=to.getEditorTemplate(this.settings,this.editorId);var deltaWidth=editorTemplate['delta_width']?editorTemplate['delta_width']:0;var deltaHeight=editorTemplate['delta_height']?editorTemplate['delta_height']:0;var html='<span id="'+this.editorId+'_parent" class="mceEditorContainer">'+editorTemplate['html'];html=tinyMCE.replaceVar(html,"editor_id",this.editorId);this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.settings['old_width']=this.settings['width'];this.settings['old_height']=this.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;if(this.settings['width']==0)this.settings['width']=replace_element.style.width;if(this.settings['height']==0)this.settings['height']=replace_element.style.height;if(this.settings['width']==0)this.settings['width']=320;if(this.settings['height']==0)this.settings['height']=240;this.settings['area_width']=parseInt(this.settings['width']);this.settings['area_height']=parseInt(this.settings['height']);this.settings['area_width']+=deltaWidth;this.settings['area_height']+=deltaHeight;if((""+this.settings['width']).indexOf('%')!=-1)this.settings['area_width']="100%";if((""+this.settings['height']).indexOf('%')!=-1)this.settings['area_height']="100%";if((""+replace_element.style.width).indexOf('%')!=-1){this.settings['width']=replace_element.style.width;this.settings['area_width']="100%";}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings['height']=replace_element.style.height;this.settings['area_height']="100%";}html=tinyMCE.applyTemplate(html);this.settings['width']=this.settings['old_width'];this.settings['height']=this.settings['old_height'];this.visualAid=this.settings['visual'];this.formTargetElementId=form_element_name;if(replace_element.nodeName=="TEXTAREA"||replace_element.nodeName=="INPUT")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName!="TEXTAREA"&&replace_element.nodeName!="INPUT"){this.oldTargetElement=replace_element;if(tinyMCE.settings['debug']){hc='<textarea wrap="off" id="'+form_element_name+'" name="'+form_element_name+'" cols="100" rows="15"></textarea>';}else{hc='<input type="hidden" id="'+form_element_name+'" name="'+form_element_name+'" />';this.oldTargetElement.style.display="none";}html+='</span>';if(tinyMCE.isGecko)html=hc+html;else html+=hc;if(tinyMCE.isGecko){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element);}else replace_element.insertAdjacentHTML("beforeBegin",html);}else{html+='</span>';this.oldTargetElement=replace_element;if(!tinyMCE.settings['debug'])this.oldTargetElement.style.display="none";if(tinyMCE.isGecko){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element);}else replace_element.insertAdjacentHTML("beforeBegin",html);}var dynamicIFrame=false;var tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isMSIE){if(tElm&&(tElm.nodeName=="SPAN"||tElm.nodeName=="span")){tElm=tinyMCE._createIFrame(tElm,targetDoc);dynamicIFrame=true;}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName=="SPAN")tElm=tinyMCE._createIFrame(tElm,targetDoc,targetDoc.parentWindow);else tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);if(tinyMCE.isOpera){this.contentDocument=this.iframeElement.contentDocument;this.contentWindow=this.iframeElement.contentWindow;dynamicIFrame=true;}else{this.contentDocument=tElm.window.document;this.contentWindow=tElm.window;}this.getDoc().designMode="on";}var doc=this.contentDocument;if(dynamicIFrame){var html=tinyMCE.getParam('doctype')+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+tinyMCE.settings['base_href']+'" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';try{if(!this.isHidden())this.getDoc().designMode="on";doc.open();doc.write(html);doc.close();}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE)window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\""+this.editorId+"\"]);",1);tinyMCE.setupContent(this.editorId,true);return true;},setBaseHREF:function(u){var h,b,d,nl;d=this.getDoc();nl=d.getElementsByTagName("base");b=nl.length>0?nl[0]:null;if(!b){nl=d.getElementsByTagName("head");h=nl.length>0?nl[0]:null;b=d.createElement("base");b.setAttribute('href',u);h.appendChild(b);}else{if(u==""||u==null)b.parentNode.removeChild(b);else b.setAttribute('href',u);}},getFocusElement:function(){return this.selection.getFocusElement();},getSel:function(){return this.selection.getSel();},getRng:function(){return this.selection.getRng();},triggerSave:function(skip_cleanup,skip_callback){var e,nl=new Array(),i,s;this.switchSettings();s=tinyMCE.settings;if(tinyMCE.isMSIE&&!tinyMCE.isOpera){e=this.iframeElement;do{if(e.style&&e.style.display=='none'){e.style.display='block';nl[nl.length]={elm:e,type:'style'};}if(e.style&&s.hidden_tab_class.length>0&&e.className.indexOf(s.hidden_tab_class)!=-1){e.className=s.display_tab_class;nl[nl.length]={elm:e,type:'class'};}}while((e=e.parentNode)!=null)}tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(this.getDoc(),this.getBody().innerHTML);if(this.settings['cleanup']==false){tinyMCE.handleVisualAid(this.getBody(),true,false,this);tinyMCE._setEventsEnabled(this.getBody(),true);}tinyMCE._customCleanup(this,"submit_content_dom",this.contentWindow.document.body);var htm=skip_cleanup?this.getBody().innerHTML:tinyMCE._cleanupHTML(this,this.getDoc(),this.settings,this.getBody(),tinyMCE.visualAid,true,true);htm=tinyMCE._customCleanup(this,"submit_content",htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(this.formTargetElementId,htm,this.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"(","(","gi");htm=tinyMCE.regexpReplace(htm,")",")","gi");htm=tinyMCE.regexpReplace(htm,";",";","gi");htm=tinyMCE.regexpReplace(htm,""",""","gi");htm=tinyMCE.regexpReplace(htm,"^","^","gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSafari&&this.formElement)this.formElement.innerText=htm;for(i=0;i<nl.length;i++){if(nl[i].type=='style')nl[i].elm.style.display='none';else nl[i].elm.className=s.hidden_tab_class;}}};TinyMCE_Engine.prototype.cleanupHTMLCode=function(s){s=s.replace(new RegExp('<p \\/>','gi'),'<p> </p>');s=s.replace(new RegExp('<p>\\s*<\\/p>','gi'),'<p> </p>');s=s.replace(new RegExp('<br>\\s*<\\/br>','gi'),'<br />');s=s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>','gi'),'<$1$2$3></$1$2>');s=s.replace(new RegExp('\\s+></','gi'),'></');s=s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>','gi'),'<$1$2 />');if(tinyMCE.isMSIE)s=s.replace(new RegExp('<p><hr \\/><\\/p>','gi'),"<hr>");if(tinyMCE.getParam('convert_urls'))s=s.replace(new RegExp('(href=\"{0,1})(\\s*#)','gi'),'$1'+tinyMCE.settings['document_base_url']+"#");return s;};TinyMCE_Engine.prototype.parseStyle=function(str){var ar=new Array();if(str==null)return ar;var st=str.split(';');tinyMCE.clearArray(ar);for(var i=0;i<st.length;i++){if(st[i]=='')continue;var re=new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');var pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1];}return ar;};TinyMCE_Engine.prototype.compressStyle=function(ar,pr,sf,res){var box=new Array();box[0]=ar[pr+'-top'+sf];box[1]=ar[pr+'-left'+sf];box[2]=ar[pr+'-right'+sf];box[3]=ar[pr+'-bottom'+sf];for(var i=0;i<box.length;i++){if(box[i]==null)return;for(var a=0;a<box.length;a++){if(box[a]!=box[i])return;}}ar[res]=box[0];ar[pr+'-top'+sf]=null;ar[pr+'-left'+sf]=null;ar[pr+'-right'+sf]=null;ar[pr+'-bottom'+sf]=null;};TinyMCE_Engine.prototype.serializeStyle=function(ar){var str="";tinyMCE.compressStyle(ar,"border","","border");tinyMCE.compressStyle(ar,"border","-width","border-width");tinyMCE.compressStyle(ar,"border","-color","border-color");tinyMCE.compressStyle(ar,"border","-style","border-style");tinyMCE.compressStyle(ar,"padding","","padding");tinyMCE.compressStyle(ar,"margin","","margin");for(var key in ar){var val=ar[key];if(typeof(val)=='function')continue;if(key.indexOf('mso-')==0)continue;if(val!=null&&val!=''){val=''+val;val=val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)",'gi'),"url('$1')");if(val.indexOf('url(')!=-1&&tinyMCE.getParam('convert_urls')){var m=new RegExp("url\\('(.*?)'\\)").exec(val);if(m.length>1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1], null, true);")+"')";}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);if(val!="url('')")str+=key.toLowerCase()+": "+val+"; ";}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str;};TinyMCE_Engine.prototype.convertRGBToHex=function(s,k){if(s.toLowerCase().indexOf('rgb')!=-1){var re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");var rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4];}}return s;};TinyMCE_Engine.prototype.convertHexToRGB=function(s){if(s.indexOf('#')!=-1){s=s.replace(new RegExp('[^0-9A-F]','gi'),'');return"rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")";}return s;};TinyMCE_Engine.prototype.convertSpansToFonts=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/<span/gi,'<font');h=h.replace(/<\/span/gi,'</font');doc.body.innerHTML=h;var s=doc.getElementsByTagName("font");for(var i=0;i<s.length;i++){var size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();var fSize=0;for(var x=0;x<sizes.length;x++){if(sizes[x]==size){fSize=x+1;break;}}if(fSize>0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize='';}var fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!=""){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily='';}var fColor=s[i].style.color;if(fColor!=null&&fColor!=""){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color='';}}};TinyMCE_Engine.prototype.convertFontsToSpans=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/<font/gi,'<span');h=h.replace(/<\/font/gi,'</span');doc.body.innerHTML=h;var fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else fsClasses=null;var s=doc.getElementsByTagName("span");for(var i=0;i<s.length;i++){var fSize,fFace,fColor;fSize=tinyMCE.getAttrib(s[i],'size');fFace=tinyMCE.getAttrib(s[i],'face');fColor=tinyMCE.getAttrib(s[i],'color');if(fSize!=""){fSize=parseInt(fSize);if(fSize>0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else s[i].style.fontSize=sizes[fSize-1];}s[i].removeAttribute('size');}if(fFace!=""){s[i].style.fontFamily=fFace;s[i].removeAttribute('face');}if(fColor!=""){s[i].style.color=fColor;s[i].removeAttribute('color');}}};TinyMCE_Engine.prototype.cleanupAnchors=function(doc){var i,cn,x,an=doc.getElementsByTagName("a");for(i=an.length-1;i>=0;i--){if(tinyMCE.getAttrib(an[i],"name")!=""&&tinyMCE.getAttrib(an[i],"href")==""){cn=an[i].childNodes;for(x=cn.length-1;x>=0;x--)tinyMCE.insertAfter(cn[x],an[i]);}}};TinyMCE_Engine.prototype.getContent=function(editor_id){var h;if(typeof(editor_id)!="undefined")tinyMCE.selectedInstance=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedInstance){h=tinyMCE._cleanupHTML(this.selectedInstance,this.selectedInstance.getDoc(),tinyMCE.settings,this.selectedInstance.getBody(),false,true);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(this.selectedInstance.getDoc());return h;}return null;};TinyMCE_Engine.prototype._fixListElements=function(d){var nl,x,a=['ol','ul'],i,n,p,r=new RegExp('^(OL|UL)$'),np;for(x=0;x<a.length;x++){nl=d.getElementsByTagName(a[x]);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=tinyMCE.prevNode(n,'LI');if(!np){np=d.createElement('li');np.innerHTML=' ';np.appendChild(n);p.insertBefore(np,p.firstChild);}else np.appendChild(n);}}}};TinyMCE_Engine.prototype._fixTables=function(d){var nl,i,n,p,np,x,t;nl=d.getElementsByTagName('table');for(i=0;i<nl.length;i++){n=nl[i];if((p=tinyMCE.getParentElement(n,'p,div,h1,h2,h3,h4,h5,h6'))!=null){np=p.cloneNode(false);np.removeAttribute('id');t=n;while((n=n.nextSibling))np.appendChild(n);tinyMCE.insertAfter(np,p);tinyMCE.insertAfter(t,p);}}};TinyMCE_Engine.prototype._cleanupHTML=function(inst,doc,config,elm,visual,on_save,on_submit){var h,d,t1,t2,t3,t4,t5,c,s;if(!tinyMCE.getParam('cleanup'))return elm.innerHTML;on_save=typeof(on_save)=='undefined'?false:on_save;c=inst.cleanup;s=inst.settings;d=c.settings.debug;if(d)t1=new Date().getTime();if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);if(tinyMCE.getParam("fix_list_elements"))tinyMCE._fixListElements(doc);if(tinyMCE.getParam("fix_table_elements"))tinyMCE._fixTables(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);if(d)t2=new Date().getTime();c.settings.on_save=on_save;c.idCount=0;c.serializationId++;c.serializedNodes=new Array();c.sourceIndex=-1;if(s.cleanup_serializer=="xml")h=c.serializeNodeAsXML(elm);else h=c.serializeNodeAsHTML(elm);if(d)t3=new Date().getTime();h=h.replace(/<\/?(body|head|html)[^>]*>/gi,'');h=h.replace(new RegExp(' (rowspan="1"|colspan="1")','g'),'');h=h.replace(/<p><hr \/><\/p>/g,'<hr />');h=h.replace(/<p>( | )<\/p><hr \/><p>( | )<\/p>/g,'<hr />');h=h.replace(/<td>\s*<br \/>\s*<\/td>/g,'<td> </td>');h=h.replace(/<p>\s*<br \/>\s*<\/p>/g,'<p> </p>');h=h.replace(/<p>\s*( | )\s*<br \/>\s*( | )\s*<\/p>/g,'<p> </p>');h=h.replace(/<p>\s*( | )\s*<br \/>\s*<\/p>/g,'<p> </p>');h=h.replace(/<p>\s*<br \/>\s* \s*<\/p>/g,'<p> </p>');h=h.replace(new RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1> </p>');if(/^\s*(<br \/>|<p> <\/p>|<p> <\/p>|<p><\/p>)\s*$/.test(h))h='';if(s.preformatted){h=h.replace(/^<pre>/,'');h=h.replace(/<\/pre>$/,'');h='<pre>'+h+'</pre>';}if(tinyMCE.isGecko){h=h.replace(/<o:p _moz-userdefined="" \/>/g,'');h=h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,'<td$1> </td>');}if(s.force_br_newlines)h=h.replace(/<p>( | )<\/p>/g,'<br />');h=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",h);if(on_save){h=h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|'+s.visual_table_class+')','g'),'');h=h.replace(new RegExp(' ?class=""','g'),'');}if(s.remove_linebreaks&&!c.settings.indent)h=h.replace(/\n|\r/g,' ');if(d)t4=new Date().getTime();if(on_save&&c.settings.indent)h=c.formatHTML(h);if(on_submit&&(s.encoding=="xml"||s.encoding=="html"))h=c.xmlEncode(h);if(d)t5=new Date().getTime();if(c.settings.debug)tinyMCE.debug("Cleanup in ms: Pre="+(t2-t1)+", Serialize: "+(t3-t2)+", Post: "+(t4-t3)+", Format: "+(t5-t4)+", Sum: "+(t5-t1)+".");return h;};function TinyMCE_Cleanup(){this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.rules=tinyMCE.clearArray(new Array());this.settings={indent_elements:'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',newline_before_elements:'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',newline_after_elements:'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',newline_before_after_elements:'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',indent_char:'\t',indent_levels:1,entity_encoding:'raw',valid_elements:'*[*]',entities:'',url_converter:'',invalid_elements:'',verify_html:false};this.vElements=tinyMCE.clearArray(new Array());this.vElementsRe='';this.closeElementsRe=/^(IMG|BR|HR|LINK|META|BASE|INPUT|BUTTON|AREA)$/;this.codeElementsRe=/^(SCRIPT|STYLE)$/;this.serializationId=0;this.mceAttribs={href:'mce_href',src:'mce_src',type:'mce_type'};}TinyMCE_Cleanup.prototype={init:function(s){var n,a,i,ir,or,st;for(n in s)this.settings[n]=s[n];s=this.settings;this.inRe=this._arrayToRe(s.indent_elements.split(','),'','^<(',')[^>]*');this.ouRe=this._arrayToRe(s.indent_elements.split(','),'','^<\\/(',')[^>]*');this.nlBeforeRe=this._arrayToRe(s.newline_before_elements.split(','),'gi','<(',')([^>]*)>');this.nlAfterRe=this._arrayToRe(s.newline_after_elements.split(','),'gi','<(',')([^>]*)>');this.nlBeforeAfterRe=this._arrayToRe(s.newline_before_after_elements.split(','),'gi','<(\\/?)(',')([^>]*)>');if(s.invalid_elements!='')this.iveRe=this._arrayToRe(s.invalid_elements.toUpperCase().split(','),'g','^(',')$');else this.iveRe=null;st='';for(i=0;i<s.indent_levels;i++)st+=s.indent_char;this.inStr=st;if(!s.verify_html){s.valid_elements='*[*]';s.extended_valid_elements='';}this.fillStr=s.entity_encoding=="named"?" ":" ";this.idCount=0;},addRuleStr:function(s){var r=this.parseRuleStr(s);var n;for(n in r){if(r[n])this.rules[n]=r[n];}this.vElements=tinyMCE.clearArray(new Array());for(n in this.rules){if(this.rules[n])this.vElements[this.vElements.length]=this.rules[n].tag;}this.vElementsRe=this._arrayToRe(this.vElements,'');},parseRuleStr:function(s){var ta,p,r,a,i,x,px,t,tn,y,av,or=tinyMCE.clearArray(new Array()),dv;if(s==null||s.length==0)return or;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];if(s.length==0)continue;p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r={};r.tag=tn[y];r.forceAttribs=null;r.defaultAttribs=null;r.validAttribValues=null;px=r.tag.charAt(0);r.forceOpen=px=='+';r.removeEmpty=px=='-';r.fill=px=='#';r.tag=r.tag.replace(/\+|-|#/g,'');r.oTagName=tn[0].replace(/\+|-|#/g,'').toLowerCase();r.isWild=new RegExp('\\*|\\?|\\+','g').test(r.tag);r.validRe=new RegExp(this._wildcardToRe('^'+r.tag+'$'));if(p.length>1){r.vAttribsRe='^(';a=this.split(/\|/,p[1]);for(i=0;i<a.length;i++){t=a[i];av=new RegExp('(=|:|<)(.*?)$').exec(t);t=t.replace(new RegExp('(=|:|<).*?$'),'');if(av&&av.length>0){if(av[0].charAt(0)==':'){if(!r.forceAttribs)r.forceAttribs=tinyMCE.clearArray(new Array());r.forceAttribs[t.toLowerCase()]=av[0].substring(1);}else if(av[0].charAt(0)=='='){if(!r.defaultAttribs)r.defaultAttribs=tinyMCE.clearArray(new Array());dv=av[0].substring(1);r.defaultAttribs[t.toLowerCase()]=dv==""?"mce_empty":dv;}else if(av[0].charAt(0)=='<'){if(!r.validAttribValues)r.validAttribValues=tinyMCE.clearArray(new Array());r.validAttribValues[t.toLowerCase()]=this._arrayToRe(this.split('?',av[0].substring(1)),'');}}r.vAttribsRe+=''+t.toLowerCase()+(i!=a.length-1?'|':'');a[i]=t.toLowerCase();}r.vAttribsRe+=')$';r.vAttribsRe=this._wildcardToRe(r.vAttribsRe);r.vAttribsReIsWild=new RegExp('\\*|\\?|\\+','g').test(r.vAttribsRe);r.vAttribsRe=new RegExp(r.vAttribsRe);r.vAttribs=a.reverse();}else{r.vAttribsRe='';r.vAttribs=tinyMCE.clearArray(new Array());r.vAttribsReIsWild=false;}or[r.tag]=r;}}return or;},serializeNodeAsXML:function(n){var s,b;if(!this.xmlDoc){if(this.isMSIE){try{this.xmlDoc=new ActiveXObject('MSXML2.DOMDocument');}catch(e){}if(!this.xmlDoc)try{this.xmlDoc=new ActiveXObject('Microsoft.XmlDom');}catch(e){}}else this.xmlDoc=document.implementation.createDocument('','',null);if(!this.xmlDoc)alert("Error XML Parser could not be found.");}if(this.xmlDoc.firstChild)this.xmlDoc.removeChild(this.xmlDoc.firstChild);b=this.xmlDoc.createElement("html");b=this.xmlDoc.appendChild(b);this._convertToXML(n,b);if(this.isMSIE)return this.xmlDoc.xml;else return new XMLSerializer().serializeToString(this.xmlDoc);},_convertToXML:function(n,xn){var xd,el,i,l,cn,at,no,hc=false;if(this._isDuplicate(n))return;xd=this.xmlDoc;switch(n.nodeType){case 1:hc=n.hasChildNodes();el=xd.createElement(n.nodeName.toLowerCase());at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&no.nodeValue)el.setAttribute(no.nodeName.toLowerCase(),no.nodeValue);}if(!hc&&!this.closeElementsRe.test(n.nodeName))el.appendChild(xd.createTextNode(""));xn=xn.appendChild(el);break;case 3:xn.appendChild(xd.createTextNode(n.nodeValue));return;case 8:xn.appendChild(xd.createComment(n.nodeValue));return;}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)this._convertToXML(cn[i],xn);}},serializeNodeAsHTML:function(n){var en,no,h='',i,l,r,cn,va=false,f=false,at,hc;this._setupRules();if(this._isDuplicate(n))return'';switch(n.nodeType){case 1:hc=n.hasChildNodes();if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&n.nodeName.indexOf('/')!=-1)break;if(this.vElementsRe.test(n.nodeName)&&(!this.iveRe||!this.iveRe.test(n.nodeName))){va=true;r=this.rules[n.nodeName];if(!r){at=this.rules;for(no in at){if(at[no]&&at[no].validRe.test(n.nodeName)){r=at[no];break;}}}en=r.isWild?n.nodeName.toLowerCase():r.oTagName;f=r.fill;if(r.removeEmpty&&!hc)return"";h+='<'+en;if(r.vAttribsReIsWild){at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&r.vAttribsRe.test(no.nodeName))h+=this._serializeAttribute(n,r,no.nodeName);}}else{for(i=r.vAttribs.length-1;i>-1;i--)h+=this._serializeAttribute(n,r,r.vAttribs[i]);}if(!this.settings.on_save){at=this.mceAttribs;for(no in at){if(at[no])h+=this._serializeAttribute(n,r,at[no]);}}if(this.closeElementsRe.test(n.nodeName))return h+' />';h+='>';if(this.isMSIE&&this.codeElementsRe.test(n.nodeName))h+=n.innerHTML;}break;case 3:if(n.parentNode&&this.codeElementsRe.test(n.parentNode.nodeName))return this.isMSIE?'':n.nodeValue;return this.xmlEncode(n.nodeValue);case 8:return"<!--"+this._trimComment(n.nodeValue)+"-->";}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)h+=this.serializeNodeAsHTML(cn[i]);}if(f&&!hc)h+=this.fillStr;if(va)h+='</'+en+'>';return h;},_serializeAttribute:function(n,r,an){var av='',t,os=this.settings.on_save;if(os&&(an.indexOf('mce_')==0||an.indexOf('_moz')==0))return'';if(os&&this.mceAttribs[an])av=this._getAttrib(n,this.mceAttribs[an]);if(av.length==0)av=this._getAttrib(n,an);if(av.length==0&&r.defaultAttribs&&(t=r.defaultAttribs[an])){av=t;if(av=="mce_empty")return" "+an+'=""';}if(r.forceAttribs&&(t=r.forceAttribs[an]))av=t;if(os&&av.length!=0&&this.settings.url_converter.length!=0&&/^(src|href|longdesc)$/.test(an))av=eval(this.settings.url_converter+'(this, n, av)');if(av.length!=0&&r.validAttribValues&&r.validAttribValues[an]&&!r.validAttribValues[an].test(av))return"";if(av.length!=0&&av=="{$uid}")av="uid_"+(this.idCount++);if(av.length!=0)return" "+an+"="+'"'+this.xmlEncode(av)+'"';return"";},formatHTML:function(h){var s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/\r/g,'');h='\n'+h;h=h.replace(new RegExp('\\n\\s+','gi'),'\n');h=h.replace(this.nlBeforeRe,'\n<$1$2>');h=h.replace(this.nlAfterRe,'<$1$2>\n');h=h.replace(this.nlBeforeAfterRe,'\n<$1$2$3>\n');h+='\n';while((i=h.indexOf('\n',i+1))!=-1){if((l=h.substring(li+1,i)).length!=0){if(this.ouRe.test(l)&&p.length>=s.indent_levels)p=p.substring(s.indent_levels);o+=p+l+'\n';if(this.inRe.test(l))p+=this.inStr;}li=i;}return o;},xmlEncode:function(s){var i,l,e,o='',c;this._setupEntities();switch(this.settings.entity_encoding){case"raw":return tinyMCE.xmlEncode(s);case"named":for(i=0,l=s.length;i<l;i++){c=s.charCodeAt(i);e=this.entities[c];if(e&&e!='')o+='&'+e+';';else o+=String.fromCharCode(c);}return o;case"numeric":for(i=0,l=s.length;i<l;i++){c=s.charCodeAt(i);if(c>127||c==60||c==62||c==38||c==39||c==34)o+='&#'+c+";";else o+=String.fromCharCode(c);}return o;}return s;},split:function(re,s){var c=s.split(re);var i,l,o=new Array();for(i=0,l=c.length;i<l;i++){if(c[i]!='')o[i]=c[i];}return o;},_trimComment:function(s){s=s.replace(new RegExp('\\smce_src=\"[^\"]*\"','gi'),"");s=s.replace(new RegExp('\\smce_href=\"[^\"]*\"','gi'),"");return s;},_getAttrib:function(e,n,d){if(typeof(d)=="undefined")d="";if(!e||e.nodeType!=1)return d;var v=e.getAttribute(n,0);if(n=="class"&&!v)v=e.className;if(this.isMSIE&&n=="http-equiv")v=e.httpEquiv;if(this.isMSIE&&e.nodeName=="FORM"&&n=="enctype"&&v=="application/x-www-form-urlencoded")v="";if(this.isMSIE&&e.nodeName=="INPUT"&&n=="size"&&v=="20")v="";if(this.isMSIE&&e.nodeName=="INPUT"&&n=="maxlength"&&v=="2147483647")v="";if(n=="style"&&!tinyMCE.isOpera)v=e.style.cssText;if(n=='style')v=tinyMCE.serializeStyle(tinyMCE.parseStyle(v));if(this.settings.on_save&&n.indexOf('on')!=-1&&this.settings.on_save&&v&&v!="")v=tinyMCE.cleanupEventStr(v);return(v&&v!="")?''+v:d;},_urlConverter:function(c,n,v){if(!c.settings.on_save)return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,v);else if(tinyMCE.getParam('convert_urls'))return eval(tinyMCE.settings.urlconverter_callback+"(v, n, true);");return v;},_arrayToRe:function(a,op,be,af){var i,r;op=typeof(op)=="undefined"?"gi":op;be=typeof(be)=="undefined"?"^(":be;af=typeof(af)=="undefined"?")$":af;r=be;for(i=0;i<a.length;i++)r+=this._wildcardToRe(a[i])+(i!=a.length-1?"|":"");r+=af;return new RegExp(r,op);},_wildcardToRe:function(s){s=s.replace(/\?/g,'(\\S?)');s=s.replace(/\+/g,'(\\S+)');s=s.replace(/\*/g,'(\\S*)');return s;},_setupEntities:function(){var n,a,i,s=this.settings;if(!this.entitiesDone){if(s.entity_encoding=="named"){n=tinyMCE.clearArray(new Array());a=this.split(',',s.entities);for(i=0;i<a.length;i+=2)n[a[i]]=a[i+1];this.entities=n;}this.entitiesDone=true;}},_setupRules:function(){var s=this.settings;if(!this.rulesDone){this.addRuleStr(s.valid_elements);this.addRuleStr(s.extended_valid_elements);this.rulesDone=true;}},_isDuplicate:function(n){var i;if(!this.settings.fix_content_duplication)return false;if(tinyMCE.isMSIE&&!tinyMCE.isOpera&&n.nodeType==1){if(n.mce_serialized==this.serializationId)return true;n.setAttribute('mce_serialized',this.serializationId);}else{for(i=0;i<this.serializedNodes.length;i++){if(this.serializedNodes[i]==n)return true;}this.serializedNodes[this.serializedNodes.length]=n;}return false;}};TinyMCE_Engine.prototype.getElementByAttributeValue=function(n,e,a,v){return(n=this.getElementsByAttributeValue(n,e,a,v)).length==0?null:n[0];};TinyMCE_Engine.prototype.getElementsByAttributeValue=function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=new Array();for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i];}return o;};TinyMCE_Engine.prototype.isBlockElement=function(n){return n!=null&&n.nodeType==1&&this.blockRegExp.test(n.nodeName);};TinyMCE_Engine.prototype.getParentBlockElement=function(n){while(n){if(this.isBlockElement(n))return n;n=n.parentNode;}return null;};TinyMCE_Engine.prototype.insertAfter=function(n,r){if(r.nextSibling)r.parentNode.insertBefore(n,r.nextSibling);else r.parentNode.appendChild(n);};TinyMCE_Engine.prototype.setInnerHTML=function(e,h){var i,nl,n;if(tinyMCE.isMSIE&&!tinyMCE.isOpera){h=h.replace(/\s\/>/g,'>');h=h.replace(/<p([^>]*)>\u00A0?<\/p>/gi,'<p$1 mce_keep="true"> </p>');h=h.replace(/<p([^>]*)>\s* \s*<\/p>/gi,'<p$1 mce_keep="true"> </p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1 mce_keep="true"> </p>');e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);nl=e.getElementsByTagName("p");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.nodeName=='P'&&!n.hasChildNodes()&&!n.mce_keep)n.parentNode.removeChild(n);}}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h);}};TinyMCE_Engine.prototype.getOuterHTML=function(e){if(tinyMCE.isMSIE)return e.outerHTML;var d=e.ownerDocument.createElement("body");d.appendChild(e);return d.innerHTML;};TinyMCE_Engine.prototype.setOuterHTML=function(e,h){if(tinyMCE.isMSIE){e.outerHTML=h;return;}var d=e.ownerDocument.createElement("body");d.innerHTML=h;e.parentNode.replaceChild(d.firstChild,e);};TinyMCE_Engine.prototype._getElementById=function(id,d){var e,i,j,f;if(typeof(d)=="undefined")d=document;e=d.getElementById(id);if(!e){f=d.forms;for(i=0;i<f.length;i++){for(j=0;j<f[i].elements.length;j++){if(f[i].elements[j].name==id){e=f[i].elements[j];break;}}}}return e;};TinyMCE_Engine.prototype.getNodeTree=function(n,na,t,nn){var i;if(typeof(t)=="undefined"||n.nodeType==t&&(typeof(nn)=="undefined"||n.nodeName==nn))na[na.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.getNodeTree(n.childNodes[i],na,t,nn);}return na;};TinyMCE_Engine.prototype.getParentElement=function(node,names,attrib_name,attrib_value){if(typeof(names)=="undefined"){if(node.nodeType==1)return node;while((node=node.parentNode)!=null&&node.nodeType!=1);return node;}if(node==null)return null;var namesAr=names.toUpperCase().split(',');do{for(var i=0;i<namesAr.length;i++){if(node.nodeName==namesAr[i]||names=="*"){if(typeof(attrib_name)=="undefined")return node;else if(node.getAttribute(attrib_name)){if(typeof(attrib_value)=="undefined"){if(node.getAttribute(attrib_name)!="")return node;}else if(node.getAttribute(attrib_name)==attrib_value)return node;}}}}while((node=node.parentNode)!=null);return null;};TinyMCE_Engine.prototype.getParentNode=function(n,f){while(n){if(f(n))return n;n=n.parentNode;}return null;};TinyMCE_Engine.prototype.getAttrib=function(elm,name,default_value){if(typeof(default_value)=="undefined")default_value="";if(!elm||elm.nodeType!=1)return default_value;var v=elm.getAttribute(name);if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko&&name=="src"&&elm.src!=null&&elm.src!="")v=elm.src;if(tinyMCE.isGecko&&name=="href"&&elm.href!=null&&elm.href!="")v=elm.href;if(name=="http-equiv"&&tinyMCE.isMSIE)v=elm.httpEquiv;if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!="")?v:default_value;};TinyMCE_Engine.prototype.setAttrib=function(element,name,value,fix_value){if(typeof(value)=="number"&&value!=null)value=""+value;if(fix_value){if(value==null)value="";var re=new RegExp('[^0-9%]','g');value=value.replace(re,'');}if(name=="style")element.style.cssText=value;if(name=="class")element.className=value;if(value!=null&&value!=""&&value!=-1)element.setAttribute(name,value);else element.removeAttribute(name);};TinyMCE_Engine.prototype.setStyleAttrib=function(elm,name,value){eval('elm.style.'+name+'=value;');if(tinyMCE.isMSIE&&value==null||value==''){var str=tinyMCE.serializeStyle(tinyMCE.parseStyle(elm.style.cssText));elm.style.cssText=str;elm.setAttribute("style",str);}};TinyMCE_Engine.prototype.switchClass=function(ei,c){var e;if(tinyMCE.switchClassCache[ei])e=tinyMCE.switchClassCache[ei];else e=tinyMCE.switchClassCache[ei]=document.getElementById(ei);if(e){if(tinyMCE.settings.button_tile_map&&e.className&&e.className.indexOf('mceTiledButton')==0)c='mceTiledButton '+c;e.className=c;}};TinyMCE_Engine.prototype.getAbsPosition=function(n){var p={absLeft:0,absTop:0};while(n){p.absLeft+=n.offsetLeft;p.absTop+=n.offsetTop;n=n.offsetParent;}return p;};TinyMCE_Engine.prototype.prevNode=function(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};TinyMCE_Engine.prototype.nextNode=function(e,n){var a=n.split(','),i;while((e=e.nextSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e;}}return null;};TinyMCE_Engine.prototype.selectNodes=function(n,f,a){var i;if(!a)a=new Array();if(f(n))a[a.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.selectNodes(n.childNodes[i],f,a);}return a;};TinyMCE_Engine.prototype.addCSSClass=function(e,c,b){var o=this.removeCSSClass(e,c);return e.className=b?c+(o!=''?(' '+o):''):(o!=''?(o+' '):'')+c;};TinyMCE_Engine.prototype.removeCSSClass=function(e,c){var a=this.explode(' ',e.className),i;for(i=0;i<a.length;i++){if(a[i]==c)a[i]='';}return e.className=a.join(' ');};TinyMCE_Engine.prototype.renameElement=function(e,n,d){var ne,i,ar;d=typeof(d)=="undefined"?tinyMCE.selectedInstance.getDoc():d;if(e){ne=d.createElement(n);ar=e.attributes;for(i=ar.length-1;i>-1;i--){if(ar[i].specified&&ar[i].nodeValue)ne.setAttribute(ar[i].nodeName.toLowerCase(),ar[i].nodeValue);}ar=e.childNodes;for(i=0;i<ar.length;i++)ne.appendChild(ar[i].cloneNode(true));e.parentNode.replaceChild(ne,e);}};TinyMCE_Engine.prototype.parseURL=function(url_str){var urlParts=new Array();if(url_str){var pos,lastPos;pos=url_str.indexOf('://');if(pos!=-1){urlParts['protocol']=url_str.substring(0,pos);lastPos=pos+3;}for(var i=lastPos;i<url_str.length;i++){var chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break;}pos=i;urlParts['host']=url_str.substring(lastPos,pos);urlParts['port']="";lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts['port']=url_str.substring(lastPos+1,pos);}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts['query']=url_str.substring(lastPos+1,pos);}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts['anchor']=url_str.substring(lastPos+1,pos);}}return urlParts;};TinyMCE_Engine.prototype.serializeURL=function(up){var o="";if(up['protocol'])o+=up['protocol']+"://";if(up['host'])o+=up['host'];if(up['port'])o+=":"+up['port'];if(up['path'])o+=up['path'];if(up['query'])o+="?"+up['query'];if(up['anchor'])o+="#"+up['anchor'];return o;};TinyMCE_Engine.prototype.convertAbsoluteURLToRelativeURL=function(base_url,url_to_relative){var baseURL=this.parseURL(base_url);var targetURL=this.parseURL(url_to_relative);var strTok1;var strTok2;var breakPoint=0;var outPath="";var forceSlash=false;if(targetURL.path=="")targetURL.path="/";else forceSlash=true;base_url=baseURL.path.substring(0,baseURL.path.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=targetURL.path.split('/');if(strTok1.length>=strTok2.length){for(var i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length<strTok2.length){for(var i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return targetURL.path;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(var i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outPath+="/"+strTok2[i];else outPath+=strTok2[i];}targetURL.protocol=null;targetURL.host=null;targetURL.port=null;targetURL.path=outPath==""&&forceSlash?"/":outPath;var fileName=baseURL.path;var pos;if((pos=fileName.lastIndexOf('/'))!=-1)fileName=fileName.substring(pos+1);if(fileName==targetURL.path&&targetURL.anchor!="")targetURL.path="";if(targetURL.path==""&&!targetURL.anchor)targetURL.path=fileName!=""?fileName:"/";return this.serializeURL(targetURL);};TinyMCE_Engine.prototype.convertRelativeToAbsoluteURL=function(base_url,relative_url){var baseURL=this.parseURL(base_url);var relURL=this.parseURL(relative_url);if(relative_url==""||relative_url.charAt(0)=='/'||relative_url.indexOf('://')!=-1||relative_url.indexOf('mailto:')!=-1||relative_url.indexOf('javascript:')!=-1)return relative_url;baseURLParts=baseURL['path'].split('/');relURLParts=relURL['path'].split('/');var newBaseURLParts=new Array();for(var i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i];}baseURLParts=newBaseURLParts.reverse();var newRelURLParts=new Array();var numBack=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue;}if(numBack>0){numBack--;continue;}newRelURLParts[newRelURLParts.length]=relURLParts[i];}relURLParts=newRelURLParts.reverse();var len=baseURLParts.length-numBack;var absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');var start="",end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return this.serializeURL(relURL);};TinyMCE_Engine.prototype.convertURL=function(url,node,on_save){var prot=document.location.protocol;var host=document.location.hostname;var port=document.location.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0)=="#")return url;if(!tinyMCE.isMSIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings['base_href']+url;if(on_save&&tinyMCE.getParam('relative_urls')){var curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(curl.charAt(0)=='/')curl=tinyMCE.settings['document_base_prefix']+curl;var urlParts=tinyMCE.parseURL(curl);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(urlParts['port']==tmpUrlParts['port']))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],curl);}if(!tinyMCE.getParam('relative_urls')){var urlParts=tinyMCE.parseURL(url);var baseUrlParts=tinyMCE.parseURL(tinyMCE.settings['base_href']);url=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(urlParts['anchor']&&urlParts['path']==baseUrlParts['path'])return"#"+urlParts['anchor'];}if(tinyMCE.getParam('remove_script_host')){var start="",portPart="";if(port!="")portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1);}return url;};TinyMCE_Engine.prototype.convertAllRelativeURLs=function(body){var elms=body.getElementsByTagName("img");for(var i=0;i<elms.length;i++){var src=tinyMCE.getAttrib(elms[i],'src');var msrc=tinyMCE.getAttrib(elms[i],'mce_src');if(msrc!="")src=msrc;if(src!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);elms[i].setAttribute("src",src);}}var elms=body.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var href=tinyMCE.getAttrib(elms[i],'href');var mhref=tinyMCE.getAttrib(elms[i],'mce_href');if(mhref!="")href=mhref;if(href&&href!=""){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],href);elms[i].setAttribute("href",href);}}};TinyMCE_Engine.prototype.clearArray=function(a){for(var k in a)a[k]=null;return a;};TinyMCE_Engine.prototype._setEventsEnabled=function(node,state){var events=new Array('onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup');var evs=tinyMCE.settings['event_elements'].split(',');for(var y=0;y<evs.length;y++){var elms=node.getElementsByTagName(evs[y]);for(var i=0;i<elms.length;i++){var event="";for(var x=0;x<events.length;x++){if((event=tinyMCE.getAttrib(elms[i],events[x]))!=''){event=tinyMCE.cleanupEventStr(""+event);if(!state)event="return true;"+event;else event=event.replace(/^return true;/gi,'');elms[i].removeAttribute(events[x]);elms[i].setAttribute(events[x],event);}}}}};TinyMCE_Engine.prototype._eventPatch=function(editor_id){var n,inst,win,e;if(typeof(tinyMCE)=="undefined")return true;try{if(tinyMCE.selectedInstance){win=tinyMCE.selectedInstance.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return;}}for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;tinyMCE.selectedInstance=inst;win=inst.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return;}}}catch(ex){}};TinyMCE_Engine.prototype.unloadHandler=function(){tinyMCE.triggerSave(true,true);};TinyMCE_Engine.prototype.addEventHandlers=function(inst){var doc=inst.getDoc();inst.switchSettings();if(tinyMCE.isMSIE){tinyMCE.addEvent(doc,"keypress",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc,"keyup",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc,"keydown",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc,"mouseup",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc,"mousedown",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc,"click",TinyMCE_Engine.prototype._eventPatch);}else{tinyMCE.addEvent(doc,"keypress",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keydown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"keyup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"click",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mouseup",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"mousedown",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"focus",tinyMCE.handleEvent);tinyMCE.addEvent(doc,"blur",tinyMCE.handleEvent);eval('try { doc.designMode = "On"; } catch(e) {}');}};TinyMCE_Engine.prototype.onMouseMove=function(){var inst;if(!tinyMCE.hasMouseMoved){inst=tinyMCE.selectedInstance;if(inst.isFocused){inst.undoBookmark=inst.selection.getBookmark();tinyMCE.hasMouseMoved=true;}}};TinyMCE_Engine.prototype.cancelEvent=function(e){if(tinyMCE.isMSIE){e.returnValue=false;e.cancelBubble=true;}else e.preventDefault();};TinyMCE_Engine.prototype.addEvent=function(o,n,h){if(o.attachEvent)o.attachEvent("on"+n,h);else o.addEventListener(n,h,false);};TinyMCE_Engine.prototype.addSelectAccessibility=function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w;}return false;};TinyMCE_Engine.prototype.accessibleEventHandler=function(e){var win=this._win;e=tinyMCE.isMSIE?win.event:e;var elm=tinyMCE.isMSIE?e.srcElement:e.target;if(e.type=="blur"){if(elm.oldonchange){elm.onchange=elm.oldonchange;elm.oldonchange=null;}return true;}if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null;}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);return false;}return true;};TinyMCE_Engine.prototype._resetIframeHeight=function(){var ife;if(tinyMCE.isMSIE&&!tinyMCE.isOpera){ife=tinyMCE.selectedInstance.iframeElement;if(ife._oldHeight){ife.style.height=ife._oldHeight;ife.height=ife._oldHeight;}}};function TinyMCE_Selection(inst){this.instance=inst;};TinyMCE_Selection.prototype={getSelectedHTML:function(){var inst=this.instance;var e,r=this.getRng(),h;if(tinyMCE.isSafari){return r.toString();}e=document.createElement("body");if(tinyMCE.isGecko)e.appendChild(r.cloneContents());else e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;h=tinyMCE._cleanupHTML(inst,inst.contentDocument,inst.settings,e,e,false,true,false);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());return h;},getSelectedText:function(){var inst=this.instance;var d,r,s,t;if(tinyMCE.isMSIE){d=inst.getDoc();if(d.selection.type=="Text"){r=d.selection.createRange();t=r.text;}else t='';}else{s=this.getSel();if(s&&s.toString)t=s.toString();else t='';}return t;},getBookmark:function(simple){var rng=this.getRng();var doc=this.instance.getDoc();var sp,le,s,e,nl,i,si,ei;var trng,sx,sy,xx=-999999999;if(tinyMCE.isOpera)return null;sx=doc.body.scrollLeft+doc.documentElement.scrollLeft;sy=doc.body.scrollTop+doc.documentElement.scrollTop;if(tinyMCE.isSafari||tinyMCE.isGecko)return{rng:rng,scrollX:sx,scrollY:sy};if(tinyMCE.isMSIE){if(simple)return{rng:rng};if(rng.item){e=rng.item(0);nl=doc.getElementsByTagName(e.nodeName);for(i=0;i<nl.length;i++){if(e==nl[i]){sp=i;break;}}return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy};}else{trng=rng.duplicate();trng.collapse(true);sp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(false);le=Math.abs(trng.move('character',xx))-sp;return{start:sp,length:le,scrollX:sx,scrollY:sy};}}if(tinyMCE.isGecko){s=tinyMCE.getParentElement(rng.startContainer);for(si=0;si<s.childNodes.length&&s.childNodes[si]!=rng.startContainer;si++);nl=doc.getElementsByTagName(s.nodeName);for(i=0;i<nl.length;i++){if(s==nl[i]){sp=i;break;}}e=tinyMCE.getParentElement(rng.endContainer);for(ei=0;ei<e.childNodes.length&&e.childNodes[ei]!=rng.endContainer;ei++);nl=doc.getElementsByTagName(e.nodeName);for(i=0;i<nl.length;i++){if(e==nl[i]){le=i;break;}}return{startTag:s.nodeName,start:sp,startIndex:si,endTag:e.nodeName,end:le,endIndex:ei,startOffset:rng.startOffset,endOffset:rng.endOffset,scrollX:sx,scrollY:sy};}return null;},moveToBookmark:function(bookmark){var rng,nl,i;var inst=this.instance;var doc=inst.getDoc();var win=inst.getWin();var sel=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari){sel.setBaseAndExtent(bookmark.startContainer,bookmark.startOffset,bookmark.endContainer,bookmark.endOffset);return true;}if(tinyMCE.isMSIE){if(bookmark.rng){bookmark.rng.select();return true;}win.focus();if(bookmark.tag){rng=inst.getBody().createControlRange();nl=doc.getElementsByTagName(bookmark.tag);if(nl.length>bookmark.index){try{rng.addElement(nl[bookmark.index]);}catch(ex){}}}else{rng=inst.getSel().createRange();rng.moveToElementText(inst.getBody());rng.collapse(true);rng.moveStart('character',bookmark.start);rng.moveEnd('character',bookmark.length);}rng.select();win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true;}if(tinyMCE.isGecko&&bookmark.rng){sel.removeAllRanges();sel.addRange(bookmark.rng);win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true;}if(tinyMCE.isGecko){rng=doc.createRange();nl=doc.getElementsByTagName(bookmark.startTag);if(nl.length>bookmark.start)rng.setStart(nl[bookmark.start].childNodes[bookmark.startIndex],bookmark.startOffset);nl=doc.getElementsByTagName(bookmark.endTag);if(nl.length>bookmark.end)rng.setEnd(nl[bookmark.end].childNodes[bookmark.endIndex],bookmark.endOffset);sel.removeAllRanges();sel.addRange(rng);win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true;}return false;},selectNode:function(node,collapse,select_text_node,to_start){var inst=this.instance,sel,rng,nodes;if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(tinyMCE.isMSIE){rng=inst.getBody().createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select();}catch(e){}}else{sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.collapseToStart();else sel.collapseToEnd();}this.scrollToNode(node);return;}rng=inst.getDoc().createRange();if(select_text_node){nodes=tinyMCE.getNodeTree(node,new Array(),3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node);}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length);}else rng.collapse(to_start);}sel.removeAllRanges();sel.addRange(rng);}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node;},scrollToNode:function(node){var inst=this.instance;var pos,doc,scrollX,scrollY,height;pos=tinyMCE.getAbsPosition(node);doc=inst.getDoc();scrollX=doc.body.scrollLeft+doc.documentElement.scrollLeft;scrollY=doc.body.scrollTop+doc.documentElement.scrollTop;height=tinyMCE.isMSIE?document.getElementById(inst.editorId).style.pixelHeight:inst.targetElement.clientHeight;if(!tinyMCE.settings['auto_resize']&&!(pos.absTop>scrollY&&pos.absTop<(scrollY-25+height)))inst.contentWindow.scrollTo(pos.absLeft,pos.absTop-height+25);},getSel:function(){var inst=this.instance;if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return inst.getDoc().selection;return inst.contentWindow.getSelection();},getRng:function(){var inst=this.instance;var sel=this.getSel();if(sel==null)return null;if(tinyMCE.isMSIE&&!tinyMCE.isOpera)return sel.createRange();if(tinyMCE.isSafari&&!sel.getRangeAt)return''+window.getSelection();return sel.getRangeAt(0);},getFocusElement:function(){var inst=this.instance;if(tinyMCE.isMSIE&&!tinyMCE.isOpera){var doc=inst.getDoc();var rng=doc.selection.createRange();var elm=rng.item?rng.item(0):rng.parentElement();}else{if(inst.isHidden())return inst.getBody();var sel=this.getSel();var rng=this.getRng();if(!sel||!rng)return null;var elm=rng.commonAncestorContainer;if(!rng.collapsed){if(rng.startContainer==rng.endContainer){if(rng.startOffset-rng.endOffset<2){if(rng.startContainer.hasChildNodes())elm=rng.startContainer.childNodes[rng.startOffset];}}}elm=tinyMCE.getParentElement(elm);}return elm;}};function TinyMCE_UndoRedo(inst){this.instance=inst;this.undoLevels=new Array();this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true;};TinyMCE_UndoRedo.prototype={add:function(l){var b;if(l){this.undoLevels[this.undoLevels.length]=l;return true;}var inst=this.instance;if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;}var newHTML=tinyMCE.trim(inst.getBody().innerHTML);if(this.undoLevels[this.undoIndex]&&newHTML!=this.undoLevels[this.undoIndex].content){tinyMCE.dispatchCallback(inst,'onchange_callback','onChange',inst);var customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(var i=0;i<this.undoLevels.length-1;i++){this.undoLevels[i]=this.undoLevels[i+1];}this.undoLevels.length--;this.undoIndex--;}b=inst.undoBookmark;if(!b)b=inst.selection.getBookmark();this.undoIndex++;this.undoLevels[this.undoIndex]={content:newHTML,bookmark:b};this.undoLevels.length=this.undoIndex+1;return true;}return false;},undo:function(){var inst=this.instance;if(this.undoIndex>0){this.undoIndex--;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);}},redo:function(){var inst=this.instance;tinyMCE.execCommand("mceEndTyping");if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);}tinyMCE.triggerNodeChange();}};var TinyMCE_ForceParagraphs={_insertPara:function(inst,e){function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()=="";}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;var nodes=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false;}return true;}var doc=inst.getDoc();var sel=inst.getSel();var win=inst.contentWindow;var rng=sel.getRangeAt(0);var body=doc.body;var rootElm=doc.documentElement;var blockName="P";var rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);var rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);var direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;var startNode=direct?sel.anchorNode:sel.focusNode;var startOffset=direct?sel.anchorOffset:sel.focusOffset;var endNode=direct?sel.focusNode:sel.anchorNode;var endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;var startBlock=tinyMCE.getParentBlockElement(startNode);var endBlock=tinyMCE.getParentBlockElement(endNode);if(startBlock&&new RegExp('absolute|relative|static','gi').test(startBlock.style.position))startBlock=null;if(endBlock&&new RegExp('absolute|relative|static','gi').test(endBlock.style.position))endBlock=null;if(startBlock!=null){blockName=startBlock.nodeName;if(blockName=="TD"||blockName=="TABLE"||(blockName=="DIV"&&new RegExp('left|right','gi').test(startBlock.style.cssFloat)))blockName="P";}if(tinyMCE.getParentElement(startBlock,"OL,UL")!=null)return false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;var paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);var paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");var startChop=startNode;var endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node;}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node;}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startChop.nodeName=="TD")startChop=startChop.firstChild;if(endChop.nodeName=="TD")endChop=endChop.lastChild;if(startBlock==null){rng.deleteContents();sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);if(endChop.nodeName!="#text"&&endChop.nodeName!="BODY")rngBefore.setEndAfter(endChop);var contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName=="BODY"))paraAfter.innerHTML=contents.firstChild.innerHTML;else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore);}else{body.innerHTML="<"+blockName+"> </"+blockName+"><"+blockName+"> </"+blockName+">";paraAfter=body.childNodes[1];}inst.selection.selectNode(paraAfter,true,true);return true;}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);var contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML;}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";var rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode);}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset);}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();rng.insertNode(paraAfter);rng.insertNode(paraBefore);paraAfter.normalize();paraBefore.normalize();inst.selection.selectNode(paraAfter,true,true);return true;},_handleBackSpace:function(inst){var r=inst.getRng(),sn=r.startContainer,nv,s=false;if(sn&&sn.nextSibling&&sn.nextSibling.nodeName=="BR"){nv=sn.nodeValue;if(nv!=null&&nv.length>=r.startOffset&&nv.charAt(r.startOffset-1)==' ')s=true;if(nv!=null&&r.startOffset==nv.length)sn.nextSibling.parentNode.removeChild(sn.nextSibling);}return s;}};function TinyMCE_Layer(id,bm){this.id=id;this.blockerElement=null;this.events=false;this.element=null;this.blockMode=typeof(bm)!='undefined'?bm:true;this.doc=document;};TinyMCE_Layer.prototype={moveRelativeTo:function(re,p){var rep=this.getAbsPosition(re);var w=parseInt(re.offsetWidth);var h=parseInt(re.offsetHeight);var e=this.getElement();var ew=parseInt(e.offsetWidth);var eh=parseInt(e.offsetHeight);var x,y;switch(p){case"tl":x=rep.absLeft;y=rep.absTop;break;case"tr":x=rep.absLeft+w;y=rep.absTop;break;case"bl":x=rep.absLeft;y=rep.absTop+h;break;case"br":x=rep.absLeft+w;y=rep.absTop+h;break;case"cc":x=rep.absLeft+(w/2)-(ew/2);y=rep.absTop+(h/2)-(eh/2);break;}this.moveTo(x,y);},moveBy:function(x,y){var e=this.getElement();this.moveTo(parseInt(e.style.left)+x,parseInt(e.style.top)+y);},moveTo:function(x,y){var e=this.getElement();e.style.left=x+"px";e.style.top=y+"px";this.updateBlocker();},resizeBy:function(w,h){var e=this.getElement();this.resizeTo(parseInt(e.style.width)+w,parseInt(e.style.height)+h);},resizeTo:function(w,h){var e=this.getElement();if(w!=null)e.style.width=w+"px";if(h!=null)e.style.height=h+"px";this.updateBlocker();},show:function(){this.getElement().style.display='block';this.updateBlocker();},hide:function(){this.getElement().style.display='none';this.updateBlocker();},isVisible:function(){return this.getElement().style.display=='block';},getElement:function(){if(!this.element)this.element=this.doc.getElementById(this.id);return this.element;},setBlockMode:function(s){this.blockMode=s;},updateBlocker:function(){var e,b,x,y,w,h;b=this.getBlocker();if(b){if(this.blockMode){e=this.getElement();x=this.parseInt(e.style.left);y=this.parseInt(e.style.top);w=this.parseInt(e.offsetWidth);h=this.parseInt(e.offsetHeight);b.style.left=x+'px';b.style.top=y+'px';b.style.width=w+'px';b.style.height=h+'px';b.style.display=e.style.display;}else b.style.display='none';}},getBlocker:function(){var d,b;if(!this.blockerElement&&this.blockMode){d=this.doc;b=d.createElement("iframe");b.style.cssText='display: none; position: absolute; left: 0; top: 0';b.src='javascript:false;';b.frameBorder='0';b.scrolling='no';d.body.appendChild(b);this.blockerElement=b;}return this.blockerElement;},getAbsPosition:function(n){var p={absLeft:0,absTop:0};while(n){p.absLeft+=n.offsetLeft;p.absTop+=n.offsetTop;n=n.offsetParent;}return p;},create:function(n,c,p){var d=this.doc,e=d.createElement(n);e.setAttribute('id',this.id);if(c)e.className=c;if(!p)p=d.body;p.appendChild(e);return this.element=e;},parseInt:function(s){if(s==null||s=='')return 0;return parseInt(s);}};function TinyMCE_Menu(){var id;if(typeof(tinyMCE.menuCounter)=="undefined")tinyMCE.menuCounter=0;id="mc_menu_"+tinyMCE.menuCounter++;TinyMCE_Layer.call(this,id,true);this.id=id;this.items=new Array();this.needsUpdate=true;};TinyMCE_Menu.prototype=tinyMCE.extend(TinyMCE_Layer.prototype,{init:function(s){var n;this.settings={separator_class:'mceMenuSeparator',title_class:'mceMenuTitle',disabled_class:'mceMenuDisabled',menu_class:'mceMenu',drop_menu:true};for(n in s)this.settings[n]=s[n];this.create('div',this.settings.menu_class);},clear:function(){this.items=new Array();},addTitle:function(t){this.add({type:'title',text:t});},addDisabled:function(t){this.add({type:'disabled',text:t});},addSeparator:function(){this.add({type:'separator'});},addItem:function(t,js){this.add({text:t,js:js});},add:function(mi){this.items[this.items.length]=mi;this.needsUpdate=true;},update:function(){var e=this.getElement(),h='',i,t,m=this.items,s=this.settings;if(this.settings.drop_menu)h+='<span class="mceMenuLine"></span>';h+='<table border="0" cellpadding="0" cellspacing="0">';for(i=0;i<m.length;i++){t=tinyMCE.xmlEncode(m[i].text);c=m[i].class_name?' class="'+m[i].class_name+'"':'';switch(m[i].type){case'separator':h+='<tr class="'+s.separator_class+'"><td>';break;case'title':h+='<tr class="'+s.title_class+'"><td><span'+c+'>'+t+'</span>';break;case'disabled':h+='<tr class="'+s.disabled_class+'"><td><span'+c+'>'+t+'</span>';break;default:h+='<tr><td><a href="javascript:void(0);" onmousedown="'+tinyMCE.xmlEncode(m[i].js)+';return false;"><span'+c+'>'+t+'</span></a>';}h+='</td></tr>';}h+='</table>';e.innerHTML=h;this.needsUpdate=false;this.updateBlocker();},show:function(){var nl,i;if(tinyMCE.lastMenu==this)return;if(this.needsUpdate)this.update();if(tinyMCE.lastMenu&&tinyMCE.lastMenu!=this)tinyMCE.lastMenu.hide();TinyMCE_Layer.prototype.show.call(this);if(!tinyMCE.isOpera){}tinyMCE.lastMenu=this;}});TinyMCE_Engine.prototype.debug=function(){var m="",e,a,i;e=document.getElementById("tinymce_debug");if(!e){var d=document.createElement("div");d.setAttribute("className","debugger");d.className="debugger";d.innerHTML='Debug output:<textarea id="tinymce_debug" style="width: 100%; height: 300px" wrap="nowrap" mce_editable="false"></textarea>';document.body.appendChild(d);e=document.getElementById("tinymce_debug");}a=this.debug.arguments;for(i=0;i<a.length;i++){m+=a[i];if(i<a.length-1)m+=', ';}e.value+=m+"\n";}; |
| | | function TinyMCE_Engine(){var ua;this.majorVersion="2";this.minorVersion="0.8";this.releaseDate="2006-10-23";this.instances=new Array();this.switchClassCache=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.pendingFiles=new Array();this.loadingIndex=0;this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();this.log=new Array();this.undoLevels=[];this.undoIndex=0;this.typingUndoIndex=-1;ua=navigator.userAgent;this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(ua.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(ua.indexOf('MSIE 5.0')!=-1);this.isMSIE7=this.isMSIE&&(ua.indexOf('MSIE 7')!=-1);this.isGecko=ua.indexOf('Gecko')!=-1;this.isSafari=ua.indexOf('Safari')!=-1;this.isOpera=ua.indexOf('Opera')!=-1;this.isMac=ua.indexOf('Mac')!=-1;this.isNS7=ua.indexOf('Netscape/7')!=-1;this.isNS71=ua.indexOf('Netscape/7.1')!=-1;this.dialogCounter=0;this.plugins=new Array();this.themes=new Array();this.menus=new Array();this.loadedPlugins=new Array();this.buttonMap=new Array();this.isLoaded=false;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false}this.isIE=this.isMSIE;this.isRealIE=this.isMSIE&&!this.isOpera;this.idCounter=0};TinyMCE_Engine.prototype={init:function(settings){var theme,nl,baseHREF="",i;if(this.isMSIE5_0)return;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');nl=document.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(nl[i].href)baseHREF=nl[i].href}for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_dev.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1||src.indexOf('_dev')!=-1)?'_src':'';tinyMCE.gzipMode=src.indexOf('_gzip')!=-1;src=src.substring(0,src.lastIndexOf('/'));if(settings.exec_mode=="src"||settings.exec_mode=="normal")tinyMCE.srcMode=settings.exec_mode=="src"?'_src':'';if(baseHREF!=""&&src.indexOf('://')==-1)tinyMCE.baseURL=baseHREF+src;else tinyMCE.baseURL=src;break}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL}this._def("mode","none");this._def("theme","advanced");this._def("plugins","",true);this._def("language","en");this._def("docs_language",this.settings['language']);this._def("elements","");this._def("textarea_trigger","mce_editable");this._def("editor_selector","");this._def("editor_deselector","mceNoEditor");this._def("valid_elements","+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");this._def("extended_valid_elements","");this._def("invalid_elements","");this._def("encoding","");this._def("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE_Engine.prototype.convertURL"));this._def("save_callback","");this._def("debug",false);this._def("force_br_newlines",false);this._def("force_p_newlines",true);this._def("add_form_submit_trigger",true);this._def("relative_urls",true);this._def("remove_script_host",true);this._def("focus_alert",true);this._def("document_base_url",this.documentURL);this._def("visual",true);this._def("visual_table_class","mceVisualAid");this._def("setupcontent_callback","");this._def("fix_content_duplication",true);this._def("custom_undo_redo",true);this._def("custom_undo_redo_levels",-1);this._def("custom_undo_redo_keyboard_shortcuts",true);this._def("custom_undo_redo_restore_selection",true);this._def("custom_undo_redo_global",false);this._def("verify_html",true);this._def("apply_source_formatting",false);this._def("directionality","ltr");this._def("cleanup_on_startup",false);this._def("inline_styles",false);this._def("convert_newlines_to_brs",false);this._def("auto_reset_designmode",true);this._def("entities","39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",true);this._def("entity_encoding","named");this._def("cleanup_callback","");this._def("add_unload_trigger",true);this._def("ask",false);this._def("nowrap",false);this._def("auto_resize",false);this._def("auto_focus",false);this._def("cleanup",true);this._def("remove_linebreaks",true);this._def("button_tile_map",false);this._def("submit_patch",true);this._def("browsers","msie,safari,gecko,opera",true);this._def("dialog_type","window");this._def("accessibility_warnings",true);this._def("accessibility_focus",true);this._def("merge_styles_invalid_parents","");this._def("force_hex_style_colors",true);this._def("trim_span_elements",true);this._def("convert_fonts_to_spans",false);this._def("doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">');this._def("font_size_classes",'');this._def("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large',true);this._def("event_elements",'a,img',true);this._def("convert_urls",true);this._def("table_inline_editing",false);this._def("object_resizing",true);this._def("custom_shortcuts",true);this._def("convert_on_click",false);this._def("content_css",'');this._def("fix_list_elements",false);this._def("fix_table_elements",false);this._def("strict_loading_mode",document.contentType=='application/xhtml+xml');this._def("hidden_tab_class",'');this._def("display_tab_class",'');this._def("gecko_spellcheck",false);if(this.isMSIE&&!this.isOpera)this.settings.strict_loading_mode=false;if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;if(this.isOpera&&this.settings['browsers'].indexOf('opera')==-1)return;baseHREF=tinyMCE.settings['document_base_url'];var h=document.location.href;var p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings['document_base_url']=baseHREF;tinyMCE.settings['document_base_prefix']=h}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.inlineStrict='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';this.inlineTransitional='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';this.blockElms='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';this.blockRegExp=new RegExp("^("+this.blockElms+")$","i");this.posKeyCodes=new Array(13,45,36,35,33,34,37,38,39,40);this.uniqueURL='javascript:TINYMCE_UNIQUEURL();';this.uniqueTag='<div id="mceTMPElement" style="display: none">TMP</div>';this.callbacks=new Array('onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup');this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isIE||tinyMCE.isOpera)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath}else{if(this.settings.editor_css!='')this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css"}if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg)}if(this.configs.length==0){if(typeof(TinyMCECompressed)=="undefined"){tinyMCE.addEvent(window,"DOMContentLoaded",TinyMCE_Engine.prototype.onLoad);if(tinyMCE.isRealIE){if(document.body)tinyMCE.addEvent(document.body,"readystatechange",TinyMCE_Engine.prototype.onLoad);else tinyMCE.addEvent(document,"readystatechange",TinyMCE_Engine.prototype.onLoad)}tinyMCE.addEvent(window,"load",TinyMCE_Engine.prototype.onLoad);tinyMCE._addUnloadEvents()}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(var i=0;i<p.length;i++){if(p[i].charAt(0)!='-')this.loadScript(tinyMCE.baseURL+'/plugins/'+p[i]+'/editor_plugin'+tinyMCE.srcMode+'.js')}}if(tinyMCE.getParam('entity_encoding')=='named'){settings['cleanup_entities']=new Array();var entities=tinyMCE.getParam('entities','',true,',');for(var i=0;i<entities.length;i+=2)settings['cleanup_entities']['c'+entities[i]]=entities[i+1]}settings['index']=this.configs.length;this.configs[this.configs.length]=settings;this.loadNextScript();if(this.isIE&&!this.isOpera){try{document.execCommand('BackgroundImageCache',false,true)}catch(e){}}},_addUnloadEvents:function(){if(tinyMCE.isIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.unloadHandler)}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true)})}},_def:function(key,def_val,t){var v=tinyMCE.getParam(key,def_val);v=t?v.replace(/\s+/g,""):v;this.settings[key]=v},hasPlugin:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},addPlugin:function(n,p){var op=this.plugins[n];p.baseURL=op?op.baseURL:tinyMCE.baseURL+"/plugins/"+n;this.plugins[n]=p;this.loadNextScript()},setPluginBaseURL:function(n,u){var op=this.plugins[n];if(op)op.baseURL=u;else this.plugins[n]={baseURL:u}},loadPlugin:function(n,u){u=u.indexOf('.js')!=-1?u.substring(0,u.lastIndexOf('/')):u;u=u.charAt(u.length-1)=='/'?u.substring(0,u.length-1):u;this.plugins[n]={baseURL:u};this.loadScript(u+"/editor_plugin"+(tinyMCE.srcMode?'_src':'')+".js")},hasTheme:function(n){return typeof(this.themes[n])!="undefined"&&this.themes[n]!=null},addTheme:function(n,t){this.themes[n]=t;this.loadNextScript()},addMenu:function(n,m){this.menus[n]=m},hasMenu:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},loadScript:function(url){var i;for(i=0;i<this.loadedFiles.length;i++){if(this.loadedFiles[i]==url)return}if(tinyMCE.settings.strict_loading_mode)this.pendingFiles[this.pendingFiles.length]=url;else document.write('<sc'+'ript language="javascript" type="text/javascript" src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url},loadNextScript:function(){var d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loadingIndex<this.pendingFiles.length){se=d.createElementNS('http://www.w3.org/1999/xhtml','script');se.setAttribute('language','javascript');se.setAttribute('type','text/javascript');se.setAttribute('src',this.pendingFiles[this.loadingIndex++]);d.getElementsByTagName("head")[0].appendChild(se)}else this.loadingIndex=-1;},loadCSS:function(url){var ar=url.replace(/\s+/,'').split(',');var lflen=0,csslen=0;var skip=false;var x=0,i=0,nl,le;for(x=0,csslen=ar.length;x<csslen;x++){if(ar[x]!=null&&ar[x]!='null'&&ar[x].length>0){for(i=0,lflen=this.loadedFiles.length;i<lflen;i++){if(this.loadedFiles[i]==ar[x]){skip=true;break}}if(!skip){if(tinyMCE.settings.strict_loading_mode){nl=document.getElementsByTagName("head");le=document.createElement('link');le.setAttribute('href',ar[x]);le.setAttribute('rel','stylesheet');le.setAttribute('type','text/css');nl[0].appendChild(le)}else document.write('<link href="'+ar[x]+'" rel="stylesheet" type="text/css" />');this.loadedFiles[this.loadedFiles.length]=ar[x]}}}},importCSS:function(doc,css){var css_ary=css.replace(/\s+/,'').split(',');var csslen,elm,headArr,x,css_file;for(x=0,csslen=css_ary.length;x<csslen;x++){css_file=css_ary[x];if(css_file!=null&&css_file!='null'&&css_file.length>0){if(css_file.indexOf('://')==-1&&css_file.charAt(0)!='/')css_file=this.documentBasePath+"/"+css_file;if(typeof(doc.createStyleSheet)=="undefined"){elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm)}else doc.createStyleSheet(css_file)}}},confirmAdd:function(e,settings){var elm=tinyMCE.isIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(tinyMCE.settings['convert_on_click']||(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm'])))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true')},updateContent:function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid)}}},addMCEControl:function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst._onAdd(replace_element,form_element_name,target_document)},removeInstance:function(ti){var t=[],n,i;for(n in tinyMCE.instances){i=tinyMCE.instances[n];if(tinyMCE.isInstance(i)&&ti!=i)t[n]=i}tinyMCE.instances=t;n=[];t=tinyMCE.undoLevels;for(i=0;i<t.length;i++){if(t[i]!=ti)n.push(t[i])}tinyMCE.undoLevels=n;tinyMCE.undoIndex=n.length;return ti},removeMCEControl:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),h,re,ot,tn;if(inst){inst.switchSettings();editor_id=inst.editorId;h=tinyMCE.getContent(editor_id);this.removeInstance(inst);tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;re=document.getElementById(editor_id+"_parent");ot=inst.oldTargetElement;tn=ot.nodeName.toLowerCase();if(tn=="textarea"||tn=="input"){re.parentNode.removeChild(re);ot.style.display="inline";ot.value=h}else{ot.innerHTML=h;ot.style.display='block';re.parentNode.insertBefore(ot,re);re.parentNode.removeChild(re)}}},triggerSave:function(skip_cleanup,skip_callback){var inst,n;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.triggerSave(skip_cleanup,skip_callback)}},resetForm:function(form_index){var i,inst,n,formObj=document.forms[form_index];for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();for(i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name)inst.getBody().innerHTML=inst.startContent}}},execInstanceCommand:function(editor_id,command,user_interface,value,focus){var inst=tinyMCE.getInstanceById(editor_id),r;if(inst){r=inst.selection.getRng();if(typeof(focus)=="undefined")focus=true;if(focus&&(!r||!r.item))inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();inst.select();tinyMCE.execCommand(command,user_interface,value);if(tinyMCE.isIE&&window.event!=null)tinyMCE.cancelEvent(window.event)}},execCommand:function(command,user_interface,value){var inst=tinyMCE.selectedInstance;user_interface=user_interface?user_interface:false;value=value?value:null;if(inst)inst.switchSettings();switch(command){case"Undo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex>0){tinyMCE.nextUndoRedoAction='Undo';inst=this.undoLevels[--this.undoIndex];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Undo')}}else inst.execCommand('Undo');return true;case"Redo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex<=this.undoLevels.length-1){tinyMCE.nextUndoRedoAction='Redo';inst=this.undoLevels[this.undoIndex++];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Redo')}}else inst.execCommand('Redo');return true;case'mceFocus':var inst=tinyMCE.getInstanceById(value);if(inst)inst.getWin().focus();return;case"mceAddControl":case"mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value['element'],value['document']),value['element'],value['document']);return;case"mceRemoveControl":case"mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case"mceResetDesignMode":if(!tinyMCE.isIE){for(var n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="on"}catch(e){}}}return}if(inst){inst.execCommand(command,user_interface,value)}else if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert'])},_createIFrame:function(replace_element,doc,win){var iframe,id=replace_element.getAttribute("id");var aw,ah;if(typeof(doc)=="undefined")doc=document;if(typeof(win)=="undefined")win=window;iframe=doc.createElement("iframe");aw=""+tinyMCE.settings['area_width'];ah=""+tinyMCE.settings['area_height'];if(aw.indexOf('%')==-1){aw=parseInt(aw);aw=(isNaN(aw)||aw<0)?300:aw;aw=aw+"px"}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=(isNaN(ah)||ah<0)?240:ah;ah=ah+"px"}iframe.setAttribute("id",id);iframe.setAttribute("name",id);iframe.setAttribute("class","mceEditorIframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",aw);iframe.setAttribute("height",ah);iframe.setAttribute("allowtransparency","true");iframe.className='mceEditorIframe';if(tinyMCE.settings["auto_resize"])iframe.setAttribute("scrolling","no");if(tinyMCE.isRealIE)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.settings.strict_loading_mode)iframe.style.marginBottom='-5px';if(tinyMCE.isRealIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isRealIE)return win.frames[id];else return iframe},setupContent:function(editor_id){var inst=tinyMCE.instances[editor_id],i;var doc=inst.getDoc();var head=doc.getElementsByTagName('head').item(0);var content=inst.startContent;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/</g,'<');content=content.replace(/>/g,'>');content=content.replace(/"/g,'"');content=content.replace(/&/g,'&')}inst.switchSettings();if(!tinyMCE.isIE&&tinyMCE.getParam("setupcontent_reload",false)&&doc.title!="blank_page"){try{doc.location.href=tinyMCE.baseURL+"/blank.htm"}catch(ex){}window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return}tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/themes/"+inst.settings['theme']+"/css/editor_content.css");tinyMCE.importCSS(inst.getDoc(),inst.settings['content_css']);tinyMCE.dispatchCallback(inst,'init_instance_callback','initInstance',inst);if(tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')){inst.addShortcut('ctrl','z','lang_undo_desc','Undo');inst.addShortcut('ctrl','y','lang_redo_desc','Redo')}for(i=1;i<=6;i++)inst.addShortcut('ctrl',''+i,'','FormatBlock',false,'<h'+i+'>');inst.addShortcut('ctrl','7','','FormatBlock',false,'<p>');inst.addShortcut('ctrl','8','','FormatBlock',false,'<div>');inst.addShortcut('ctrl','9','','FormatBlock',false,'<address>');if(tinyMCE.isGecko){inst.addShortcut('ctrl','b','lang_bold_desc','Bold');inst.addShortcut('ctrl','i','lang_italic_desc','Italic');inst.addShortcut('ctrl','u','lang_underline_desc','Underline')}if(tinyMCE.getParam("convert_fonts_to_spans"))inst.getBody().setAttribute('id','mceSpanFonts');if(tinyMCE.settings['nowrap'])doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isIE)doc.documentElement.editorId=editor_id;inst.setBaseHREF(tinyMCE.settings['base_href']);if(tinyMCE.settings['convert_newlines_to_brs']){content=tinyMCE.regexpReplace(content,"\r\n","<br />","gi");content=tinyMCE.regexpReplace(content,"\r","<br />","gi");content=tinyMCE.regexpReplace(content,"\n","<br />","gi")}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isIE){window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["'+editor_id+'"].getDoc(), "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])doc.styleSheets[0].addRule("p","margin: 0;");var body=inst.getBody();body.editorId=editor_id}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isIE){var contentElement=inst.getDoc().createElement("body");var doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt'])content=content.replace(new RegExp('<>','g'),"");if(tinyMCE.settings['cleanup_on_startup'])tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else tinyMCE.setInnerHTML(inst.getBody(),content);tinyMCE.convertAllRelativeURLs(inst.getBody())}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(inst.getDoc(),content);eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}')}else tinyMCE._setHTML(inst.getDoc(),content)}var parentElm=inst.targetDoc.getElementById(inst.editorId+'_parent');inst.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings['visual'],inst);tinyMCE.dispatchCallback(inst,'setupcontent_callback','setupContent',editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isIE)tinyMCE.addEventHandlers(inst);if(tinyMCE.isIE){tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(inst.getBody(),"beforedeactivate",TinyMCE_Engine.prototype._eventPatch);if(!tinyMCE.isOpera){tinyMCE.addEvent(doc.body,"mousemove",TinyMCE_Engine.prototype.onMouseMove);tinyMCE.addEvent(doc.body,"beforepaste",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc.body,"drop",TinyMCE_Engine.prototype._eventPatch)}}inst.select();tinyMCE.selectedElement=inst.contentWindow.document.body;tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoRedo.add({content:inst.startContent});if(tinyMCE.isGecko){tinyMCE.selectNodes(inst.getBody(),function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}if(tinyMCE.isGecko)inst.getBody().spellcheck=tinyMCE.getParam("gecko_spellcheck");tinyMCE._removeInternal(inst.getBody());inst.select();tinyMCE.triggerNodeChange(false,true)},storeAwayURLs:function(s){if(!s.match(/(mce_src|mce_href)/gi,s)){s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"')}return s},_removeInternal:function(n){if(tinyMCE.isGecko){tinyMCE.selectNodes(n,function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}},handleEvent:function(e){var inst=tinyMCE.selectedInstance;if(typeof(tinyMCE)=="undefined")return true;if(tinyMCE.executeCallback(tinyMCE.selectedInstance,'handle_event_callback','handleEvent',e))return false;switch(e.type){case"beforedeactivate":case"blur":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceEndTyping');tinyMCE.hideMenus();return;case"drop":case"beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.setBaseHREF(null);if(tinyMCE.isRealIE){var ife=tinyMCE.selectedInstance.iframeElement;if(ife.style.height.indexOf('%')!=-1){ife._oldHeight=ife.style.height;ife.style.height=ife.clientHeight}}window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings['base_href']);tinyMCE._resetIframeHeight();",1);return;case"submit":tinyMCE.triggerSave();tinyMCE.isNotDirty=true;return;case"reset":var formObj=tinyMCE.isIE?window.event.srcElement:e.target;for(var i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10)}return;case"keypress":if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId){tinyMCE.instances[e.target.editorId].select()}else{if(e.target.ownerDocument.editorId)tinyMCE.instances[e.target.ownerDocument.editorId].select()}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if((tinyMCE.isGecko||tinyMCE.isOpera||tinyMCE.isSafari)&&tinyMCE.settings['force_p_newlines']&&e.keyCode==13&&!e.shiftKey){if(TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance,e)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if((tinyMCE.isGecko&&!tinyMCE.isSafari)&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");return tinyMCE.cancelEvent(e)}}if(tinyMCE.isIE&&tinyMCE.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance){var sel=tinyMCE.selectedInstance.getDoc().selection;var rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br />");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false)}return false;break;case"keyup":case"keydown":tinyMCE.hideMenus();tinyMCE.hasMouseMoved=false;if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);if(tinyMCE.isIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isIE&&e.type=="keyup"&&e.keyCode==13){var elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML=" ";else elm.innerHTML=" "}}}var keys=tinyMCE.posKeyCodes;var posKey=false;for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break}}if(tinyMCE.isIE&&tinyMCE.settings['custom_undo_redo']){var keys=new Array(8,46);for(var i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(e.type=="keyup")tinyMCE.triggerNodeChange(false)}}}if(e.keyCode==17)return true;if(tinyMCE.isGecko){if(!posKey&&e.type=="keyup"&&!e.ctrlKey||(e.ctrlKey&&(e.keyCode==86||e.keyCode==88)))tinyMCE.execCommand("mceStartTyping")}else{if(!posKey&&e.type=="keyup")tinyMCE.execCommand("mceStartTyping")}if(e.type=="keydown"&&(posKey||e.ctrlKey)&&inst)inst.undoBookmark=inst.selection.getBookmark();if(e.type=="keyup"&&(posKey||e.ctrlKey))tinyMCE.execCommand("mceEndTyping");if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);if(tinyMCE.isIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case"mousedown":case"mouseup":case"click":case"dblclick":case"focus":tinyMCE.hideMenus();if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();tinyMCE.selectedInstance.isFocused=true}var targetBody=tinyMCE.getParentElement(e.target,"html");for(var instanceName in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;var inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody().parentNode==targetBody){inst.select();tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");break}}if(!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark&&(e.type=="mouseup"||e.type=="dblclick"))tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark=tinyMCE.selectedInstance.selection.getBookmark();if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);tinyMCE.execCommand("mceEndTyping");if(e.type=="mouseup")tinyMCE.execCommand("mceAddUndoLevel");if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.instances[e.target.editorId].select();return false;break}},getButtonHTML:function(id,lang,img,cmd,ui,val){var h='',m,x,io='';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.isRealIE)io='onmouseover="tinyMCE.lastHover = this;"';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=this.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceTiledButton mceButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="background-position: '+x+'px 0" title="{$'+lang+'}" />';h+='</a>'}else{h+='<a id="{$editor_id}_'+id+'" href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" '+io+' class="mceButtonNormal" target="_self">';h+='<img src="'+img+'" title="{$'+lang+'}" />';h+='</a>'}return h},getMenuButtonHTML:function(id,lang,img,mcmd,cmd,ui,val){var h='',m,x;mcmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+mcmd+'\');';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=tinyMCE.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';h+='<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: '+x+'px 0" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}else{if(tinyMCE.isRealIE)h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else h+='<span id="{$editor_id}_'+id+'" class="mceMenuButton">';h+='<a href="javascript:'+cmd+'" onclick="'+cmd+'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';h+='<img src="'+img+'" title="{$'+lang+'}" /></a>';h+='<a href="javascript:'+mcmd+'" onclick="'+mcmd+'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}" class="mceMenuButton" />';h+='</a></span>'}return h},_menuButtonEvent:function(e,o){if(o.className=='mceMenuButtonFocus')return;if(e=='over')o.className=o.className+' mceMenuHover';else o.className=o.className.replace(/\s.*$/,'')},addButtonMap:function(m){var i,a=m.replace(/\s+/,'').split(',');for(i=0;i<a.length;i++)this.buttonMap[a[i]]=i},submitPatch:function(){tinyMCE.triggerSave();tinyMCE.isNotDirty=true;this.mceOldSubmit()},onLoad:function(){var r;if(tinyMCE.settings.strict_loading_mode&&this.loadingIndex!=-1){window.setTimeout('tinyMCE.onLoad();',1);return}if(tinyMCE.isRealIE&&window.event.type=="readystatechange"&&document.readyState!="complete")return true;if(tinyMCE.isLoaded)return true;tinyMCE.isLoaded=true;if(tinyMCE.isRealIE&&document.body){r=document.body.createTextRange();r.collapse(true);r.select()}tinyMCE.dispatchCallback(null,'onpageload','onPageLoad');for(var c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];var selector=tinyMCE.getParam("editor_selector");var deselector=tinyMCE.getParam("editor_deselector");var elementRefAr=new Array();if(document.forms&&tinyMCE.settings['add_form_submit_trigger']&&!tinyMCE.submitTriggers){for(var i=0;i<document.forms.length;i++){var form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE_Engine.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE_Engine.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings['submit_patch']){try{form.mceOldSubmit=form.submit;form.submit=TinyMCE_Engine.prototype.submitPatch}catch(e){}}}}var mode=tinyMCE.settings['mode'];switch(mode){case"exact":var elements=tinyMCE.getParam('elements','',true,',');for(var i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);var trigger=element?element.getAttribute(tinyMCE.settings['textarea_trigger']):"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(element,"class")))continue;if(trigger=="false")continue;if((tinyMCE.settings['ask']||tinyMCE.settings['convert_on_click'])&&element){elementRefAr[elementRefAr.length]=element;continue}if(element)tinyMCE.addMCEControl(element,elements[i]);else if(tinyMCE.settings['debug'])alert("Error: Could not find element by id or name: "+elements[i])}break;case"specific_textareas":case"textareas":var nodeList=document.getElementsByTagName("textarea");for(var i=0;i<nodeList.length;i++){var elm=nodeList.item(i);var trigger=elm.getAttribute(tinyMCE.settings['textarea_trigger']);if(selector!=''&&!new RegExp('\\b'+selector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if(selector!='')trigger=selector!=""?"true":"";if(new RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm}break}for(var i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']||tinyMCE.settings['convert_on_click']){if(tinyMCE.isGecko){var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});if(element.nodeName!="TEXTAREA"&&element.nodeName!="INPUT")tinyMCE.addEvent(element,"click",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});}else{var settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});tinyMCE.addEvent(element,"click",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});}}else tinyMCE.addMCEControl(element,elementId)}if(tinyMCE.settings['auto_focus']){window.setTimeout(function(){var inst=tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);inst.selection.selectNode(inst.getBody(),true,true);inst.contentWindow.focus()},100)}tinyMCE.dispatchCallback(null,'oninit','onInit')}},isInstance:function(o){return o!=null&&typeof(o)=="object"&&o.isTinyMCE_Control},getParam:function(name,default_value,strip_whitespace,split_chr){var value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[ \t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var outArray=new Array();for(var i=0;i<value.length;i++){if(value[i]&&value[i]!="")outArray[outArray.length]=value[i]}value=outArray}return value},getLang:function(name,default_value,parse_entities,va){var v=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name],n;if(parse_entities)v=tinyMCE.entityDecode(v);if(va){for(n in va)v=this.replaceVar(v,n,va[n])}return v},entityDecode:function(s){var e=document.createElement("div");e.innerHTML=s;return e.firstChild.nodeValue},addToLang:function(prefix,ar){for(var key in ar){if(typeof(ar[key])=='function')continue;tinyMCELang[(key.indexOf('lang_')==-1?'lang_':'')+(prefix!=''?(prefix+"_"):'')+key]=ar[key]}this.loadNextScript();},triggerNodeChange:function(focus,setup_content){if(tinyMCE.selectedInstance){var inst=tinyMCE.selectedInstance;var editorId=inst.editorId;var elm=(typeof(setup_content)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();var undoIndex=-1,doc;var undoLevels=-1;var anySelection=false;var selectedText=inst.selection.getSelectedText();if(tinyMCE.settings.auto_resize)inst.resizeToContent();if(setup_content&&tinyMCE.isGecko&&inst.isHidden())elm=inst.getBody();inst.switchSettings();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=inst.undoRedo.undoIndex;undoLevels=inst.undoRedo.undoLevels.length}tinyMCE.dispatchCallback(inst,'handle_node_change_callback','handleNodeChange',editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content)}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus()},_customCleanup:function(inst,type,content){var pl,po,i;var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content, inst);");po=tinyMCE.themes[tinyMCE.settings['theme']];if(po&&po.cleanup)content=po.cleanup(type,content,inst);pl=inst.plugins;for(i=0;i<pl.length;i++){po=tinyMCE.plugins[pl[i]];if(po&&po.cleanup)content=po.cleanup(type,content,inst)}return content},setContent:function(h){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand('mceSetContent',false,h);tinyMCE.selectedInstance.repaint()}},importThemeLanguagePack:function(name){if(typeof(name)=="undefined")name=tinyMCE.settings['theme'];tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings['language']+'.js')},importPluginLanguagePack:function(name){var b=tinyMCE.baseURL+'/plugins/'+name;if(this.plugins[name])b=this.plugins[name].baseURL;tinyMCE.loadScript(b+'/langs/'+tinyMCE.settings['language']+'.js')},applyTemplate:function(h,as){return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}','gi'),function(m,s){if(s.indexOf('lang_')==0&&tinyMCELang[s])return tinyMCELang[s];if(as&&as[s])return as[s];if(tinyMCE.settings[s])return tinyMCE.settings[s];if(m=='themeurl')return tinyMCE.themeURL;return m})},replaceVar:function(h,r,v){return h.replace(new RegExp('{\\\$'+r+'}','g'),v)},openWindow:function(template,args){var html,width,height,x,y,resizable,scrollbars,url;args['mce_template_file']=template['file'];args['mce_width']=template['width'];args['mce_height']=template['height'];tinyMCE.windowArgs=args;html=template['html'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(tinyMCE.isIE)height+=40;else height+=20;x=parseInt(screen.width/ 2.0) - (width /2.0);y=parseInt(screen.height/ 2.0) - (height /2.0);resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args);var win=window.open("","mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus()}else{if((tinyMCE.isRealIE)&&resizable!='yes'&&tinyMCE.settings["dialog_type"]=="modal"){height+=10;var features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features)}else{var modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template['close_previous']!="no")try{tinyMCE.lastWindow.close()}catch(ex){}var win=window.open(url,"mcePopup"+new Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return}if(template['close_previous']!="no")tinyMCE.lastWindow=win;eval('try { win.resizeTo(width, height); } catch(e) { }');if(tinyMCE.isGecko){if(win.document.defaultView.statusbar.visible)win.resizeBy(0,tinyMCE.isMac?10:24)}win.focus()}}},closeWindow:function(win){win.close()},getVisualAidClass:function(class_name,state){var aidClass=tinyMCE.settings['visual_table_class'];if(typeof(state)=="undefined")state=tinyMCE.settings['visual'];var classNames=new Array();var ar=class_name.split(' ');for(var i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!="")classNames[classNames.length]=ar[i]}if(state)classNames[classNames.length]=aidClass;var className="";for(var i=0;i<classNames.length;i++){if(i>0)className+=" ";className+=classNames[i]}return className},handleVisualAid:function(el,deep,state,inst,skip_dispatch){if(!el)return;if(!skip_dispatch)tinyMCE.dispatchCallback(inst,'handle_visual_aid_callback','handleVisualAid',el,deep,state,inst);var tableElement=null;switch(el.nodeName){case"TABLE":var oldW=el.style.width;var oldH=el.style.height;var bo=tinyMCE.getAttrib(el,"border");bo=bo==""||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(var y=0;y<el.rows.length;y++){for(var x=0;x<el.rows[y].cells.length;x++){var cn=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],"class"),state&&bo);tinyMCE.setAttrib(el.rows[y].cells[x],"class",cn)}}break;case"A":var anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!=''&&state){el.title=anchorName;tinyMCE.addCSSClass(el,'mceItemAnchor')}else if(anchorName!=''&&!state)el.className='';break}if(deep&&el.hasChildNodes()){for(var i=0;i<el.childNodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,inst,true)}},fixGeckoBaseHREFBug:function(m,e,h){var xsrc,xhref;if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi," mce_tsrc=");h=h.replace(/\shref=/gi," mce_thref=");return h}else{if(!new RegExp('(src|href)=','g').test(h))return h;tinyMCE.selectElements(e,'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK',function(n){xsrc=tinyMCE.getAttrib(n,"mce_tsrc");xhref=tinyMCE.getAttrib(n,"mce_thref");if(xsrc!=""){try{n.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xsrc)}catch(e){}n.removeAttribute("mce_tsrc")}if(xhref!=""){try{n.href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xhref)}catch(e){}n.removeAttribute("mce_thref")}return false});tinyMCE.selectNodes(e,function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(/\smce_tsrc=/gi," src=");n.nodeValue=n.nodeValue.replace(/\smce_thref=/gi," href=")}return false})}}return h},_setHTML:function(doc,html_content){html_content=tinyMCE.cleanupHTMLCode(html_content);try{tinyMCE.setInnerHTML(doc.body,html_content)}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content)}if(tinyMCE.isIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<paras.length;i++){var node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML}}var html=doc.body.innerHTML;tinyMCE.setInnerHTML(doc.body,html)}tinyMCE.cleanupAnchors(doc);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc)},getEditorId:function(form_element){var inst=this.getInstanceById(form_element);if(!inst)return null;return inst.editorId},getInstanceById:function(editor_id){var inst=this.instances[editor_id];if(!inst){for(var n in tinyMCE.instances){var instance=tinyMCE.instances[n];if(!tinyMCE.isInstance(instance))continue;if(instance.formTargetElementId==editor_id){inst=instance;break}}}return inst},queryInstanceCommandValue:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandValue(command);return false},queryInstanceCommandState:function(editor_id,command){var inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCommandState(command);return null},setWindowArg:function(n,v){this.windowArgs[n]=v},getWindowArg:function(n,d){return(typeof(this.windowArgs[n])=="undefined")?d:this.windowArgs[n]},getCSSClasses:function(editor_id,doc){var output=new Array();if(typeof(tinyMCE.cssClasses)!="undefined")return tinyMCE.cssClasses;if(typeof(editor_id)=="undefined"&&typeof(doc)=="undefined"){var instance;for(var instanceName in tinyMCE.instances){instance=tinyMCE.instances[instanceName];if(!tinyMCE.isInstance(instance))continue;break}doc=instance.getDoc()}if(typeof(doc)=="undefined"){var instance=tinyMCE.getInstanceById(editor_id);doc=instance.getDoc()}if(doc){var styles=doc.styleSheets;if(styles&&styles.length>0){for(var x=0;x<styles.length;x++){var csses=null;eval("try {var csses = tinyMCE.isIE ? doc.styleSheets("+x+").rules : styles["+x+"].cssRules;} catch(e) {}");if(!csses)return new Array();for(var i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;if(selectorText){var rules=selectorText.split(',');for(var c=0;c<rules.length;c++){var rule=rules[c];while(rule.indexOf(' ')==0)rule=rule.substring(1);if(rule.indexOf(' ')!=-1||rule.indexOf(':')!=-1||rule.indexOf('mceItem')!=-1)continue;if(rule.indexOf(tinyMCE.settings['visual_table_class'])!=-1||rule.indexOf('mceEditable')!=-1||rule.indexOf('mceNonEditable')!=-1)continue;if(rule.indexOf('.')!=-1){var cssClass=rule.substring(rule.indexOf('.')+1);var addClass=true;for(var p=0;p<output.length&&addClass;p++){if(output[p]==cssClass)addClass=false}if(addClass)output[output.length]=cssClass}}}}}}}if(output.length>0)tinyMCE.cssClasses=output;return output},regexpReplace:function(in_str,reg_exp,replace_str,opts){if(in_str==null)return in_str;if(typeof(opts)=="undefined")opts='g';var re=new RegExp(reg_exp,opts);return in_str.replace(re,replace_str)},trim:function(s){return s.replace(/^\s*|\s*$/g,"")},cleanupEventStr:function(s){s=""+s;s=s.replace('function anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return true;/gi,'');return s},getControlHTML:function(c){var i,l,n,o,v;l=tinyMCE.plugins;for(n in l){o=l[n];if(o.getControlHTML&&(v=o.getControlHTML(c))!='')return tinyMCE.replaceVar(v,"pluginurl",o.baseURL)}o=tinyMCE.themes[tinyMCE.settings['theme']];if(o.getControlHTML&&(v=o.getControlHTML(c))!='')return v;return''},evalFunc:function(f,idx,a,o){var s='(',i;for(i=idx;i<a.length;i++){s+='a['+i+']';if(i<a.length-1)s+=','}s+=');';return o?eval("o."+f+s):eval("f"+s)},dispatchCallback:function(i,p,n){return this.callFunc(i,p,n,0,this.dispatchCallback.arguments)},executeCallback:function(i,p,n){return this.callFunc(i,p,n,1,this.executeCallback.arguments)},execCommandCallback:function(i,p,n){return this.callFunc(i,p,n,2,this.execCommandCallback.arguments)},callFunc:function(ins,p,n,m,a){var l,i,on,o,s,v;s=m==2;l=tinyMCE.getParam(p,'');if(l!=''&&(v=tinyMCE.evalFunc(typeof(l)=="function"?l:eval(l),3,a))==s&&m>0)return true;if(ins!=null){for(i=0,l=ins.plugins;i<l.length;i++){o=tinyMCE.plugins[l[i]];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}}l=tinyMCE.themes;for(on in l){o=l[on];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}return false},xmlEncode:function(s){return s?(''+s).replace(new RegExp('[<>&"\']','g'),function(c,b){switch(c){case'&':return'&';case'"':return'"';case'\'':return''';case'<':return'<';case'>':return'>'}return c}):s},extend:function(p,np){var o={};o.parent=p;for(n in p)o[n]=p[n];for(n in np)o[n]=np[n];return o},hideMenus:function(){var e=tinyMCE.lastSelectedMenuBtn;if(tinyMCE.lastMenu){tinyMCE.lastMenu.hide();tinyMCE.lastMenu=null}if(e){tinyMCE.switchClass(e,tinyMCE.lastMenuBtnClass);tinyMCE.lastSelectedMenuBtn=null}}};var TinyMCE=TinyMCE_Engine;var tinyMCE=new TinyMCE_Engine();var tinyMCELang={};function TinyMCE_Control(settings){var t,i,to,fu,p,x,fn,fu,pn,s=settings;this.undoRedoLevel=true;this.isTinyMCE_Control=true;this.settings=s;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);this.selection=new TinyMCE_Selection(this);this.undoRedo=new TinyMCE_UndoRedo(this);this.cleanup=new TinyMCE_Cleanup();this.shortcuts=new Array();this.hasMouseMoved=false;this.foreColor=this.backColor="#999999";this.data={};this.cleanup.init({valid_elements:s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,entities:s.entities,entity_encoding:s.entity_encoding,debug:s.cleanup_debug,url_converter:'TinyMCE_Cleanup.prototype._urlConverter',indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication});t=this.settings['theme'];if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;to={};for(i=0;i<fn.length;i++){if((fu=window['TinyMCE_'+t+"_"+fn[i]]))to[fn[i]]=fu}tinyMCE.addTheme(t,to)}this.plugins=new Array();p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){pn=p[i];if(pn.charAt(0)=='-')pn=pn.substring(1);if(!tinyMCE.hasPlugin(pn)){fn=tinyMCE.callbacks;to={};for(x=0;x<fn.length;x++){if((fu=window['TinyMCE_'+pn+"_"+fn[x]]))to[fn[x]]=fu}tinyMCE.addPlugin(pn,to)}this.plugins[this.plugins.length]=pn}}};TinyMCE_Control.prototype={selection:null,settings:null,cleanup:null,getData:function(na){var o=this.data[na];if(!o)o=this.data[na]={};return o},hasPlugin:function(n){var i;for(i=0;i<this.plugins.length;i++){if(this.plugins[i]==n)return true}return false},addPlugin:function(n,p){if(!this.hasPlugin(n)){tinyMCE.addPlugin(n,p);this.plugins[this.plugins.length]=n}},repaint:function(){var s,b,ex;if(tinyMCE.isRealIE)return;try{s=this.selection;b=s.getBookmark(true);this.getBody().style.display='none';this.getDoc().execCommand('selectall',false,null);this.getSel().collapseToStart();this.getBody().style.display='block';s.moveToBookmark(b)}catch(ex){}},switchSettings:function(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settings['index']){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings['index']}},select:function(){var oldInst=tinyMCE.selectedInstance;if(oldInst!=this){if(oldInst)oldInst.execCommand('mceEndTyping');tinyMCE.dispatchCallback(this,'select_instance_callback','selectInstance',this,oldInst);tinyMCE.selectedInstance=this}},getBody:function(){return this.contentBody?this.contentBody:this.getDoc().body},getDoc:function(){return this.contentWindow.document},getWin:function(){return this.contentWindow},getContainerWin:function(){return this.containerWindow?this.containerWindow:window},getViewPort:function(){return tinyMCE.getViewPort(this.getWin())},getParentNode:function(n,f){return tinyMCE.getParentNode(n,f,this.getBody())},getParentElement:function(n,na,f){return tinyMCE.getParentElement(n,na,f,this.getBody())},getParentBlockElement:function(n){return tinyMCE.getParentBlockElement(n,this.getBody())},resizeToContent:function(){var d=this.getDoc(),b=d.body,de=d.documentElement;this.iframeElement.style.height=(tinyMCE.isRealIE)?b.scrollHeight:de.offsetHeight+'px'},addShortcut:function(m,k,d,cmd,ui,va){var n=typeof(k)=="number",ie=tinyMCE.isIE,c,sc,i,scl=this.shortcuts;if(!tinyMCE.getParam('custom_shortcuts'))return false;m=m.toLowerCase();k=ie&&!n?k.toUpperCase():k;c=n?null:k.charCodeAt(0);d=d&&d.indexOf('lang_')==0?tinyMCE.getLang(d):d;sc={alt:m.indexOf('alt')!=-1,ctrl:m.indexOf('ctrl')!=-1,shift:m.indexOf('shift')!=-1,charCode:c,keyCode:n?k:(ie?c:null),desc:d,cmd:cmd,ui:ui,val:va};for(i=0;i<scl.length;i++){if(sc.alt==scl[i].alt&&sc.ctrl==scl[i].ctrl&&sc.shift==scl[i].shift&&sc.charCode==scl[i].charCode&&sc.keyCode==scl[i].keyCode){return false}}scl[scl.length]=sc;return true},handleShortcut:function(e){var i,s=this.shortcuts,o;for(i=0;i<s.length;i++){o=s[i];if(o.alt==e.altKey&&o.ctrl==e.ctrlKey&&(o.keyCode==e.keyCode||o.charCode==e.charCode)){if(o.cmd&&(e.type=="keydown"||(e.type=="keypress"&&!tinyMCE.isOpera)))tinyMCE.execCommand(o.cmd,o.ui,o.val);tinyMCE.cancelEvent(e);return true}}return false},autoResetDesignMode:function(){if(!tinyMCE.isIE&&this.isHidden()&&tinyMCE.getParam('auto_reset_designmode'))eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}')},isHidden:function(){var s;if(tinyMCE.isIE)return false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0)},isDirty:function(){return tinyMCE.trim(this.startContent)!=tinyMCE.trim(this.getBody().innerHTML)&&!tinyMCE.isNotDirty},_mergeElements:function(scmd,pa,ch,override){if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return}var st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));var stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));var className=tinyMCE.getAttrib(pa,"class");className=tinyMCE.getAttrib(ch,"class");if(override){for(var n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n]}}else{for(var n in stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n]}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.setAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style")},_setUseCSS:function(b){var d=this.getDoc();try{d.execCommand("useCSS",false,!b)}catch(ex){}try{d.execCommand("styleWithCSS",false,b)}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{d.execCommand('enableInlineTableEditing',false,"false")}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{d.execCommand('enableObjectResizing',false,"false")}catch(ex){}},execCommand:function(command,user_interface,value){var doc=this.getDoc(),win=this.getWin(),focusElm=this.getFocusElement();if(!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command))this.undoBookmark=null;if(!tinyMCE.isIE&&!this.useCSS){this._setUseCSS(false);this.useCSS=true}this.contentDocument=doc;if(tinyMCE.execCommandCallback(this,'execcommand_callback','execCommand',this.editorId,this.getBody(),command,user_interface,value))return;if(focusElm&&focusElm.nodeName=="IMG"){var align=focusElm.getAttribute('align');var img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case"JustifyLeft":if(align=='left')img.removeAttribute('align');else img.setAttribute('align','left');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyCenter":img.removeAttribute('align');var div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div)}else{var div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm)}this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyRight":if(align=='right')img.removeAttribute('align');else img.setAttribute('align','right');var div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return}}if(tinyMCE.settings['force_br_newlines']){var alignValue="";if(doc.selection.type!="Control"){switch(command){case"JustifyLeft":alignValue="left";break;case"JustifyCenter":alignValue="center";break;case"JustifyFull":alignValue="justify";break;case"JustifyRight":alignValue="right";break}if(alignValue!=""){var rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return}}}switch(command){case"mceRepaint":this.repaint();return true;case"unlink":if(tinyMCE.isGecko&&this.getSel().isCollapsed){focusElm=tinyMCE.getParentElement(focusElm,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getDoc().execCommand(command,user_interface,value);tinyMCE.isGecko&&this.getSel().collapseToEnd();tinyMCE.triggerNodeChange();return true;case"FormatBlock":if(!this.cleanup.isValid(value))return true;this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"InsertUnorderedList":case"InsertOrderedList":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"Strikethrough":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"mceSelectNode":this.selection.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case"FormatBlock":if(value==null||value==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");if(elm)this.execCommand("mceRemoveNode",false,elm)}else{if(tinyMCE.isGecko&&new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/gi,'');if(tinyMCE.isIE&&new RegExp('blockquote|code|samp','gi').test(value)){var b=this.selection.getBookmark();this.getDoc().execCommand("FormatBlock",false,'<p>');tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()),value);this.selection.moveToBookmark(b)}else this.getDoc().execCommand("FormatBlock",false,value)}tinyMCE.triggerNodeChange();break;case"mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isIE){value.outerHTML=value.innerHTML}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML))}tinyMCE.triggerNodeChange();break;case"mceSelectNodeDepth":var parentNode=this.getFocusElement();for(var i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue}if(i==value){this.selection.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return}parentNode=parentNode.parentNode}break;case"SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value['command'];var sname=value['name'];var svalue=value['value']==null?'':value['value'];var wrapper=value['wrapper']?value['wrapper']:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings['merge_styles_invalid_parents']!=''?new RegExp(tinyMCE.settings['merge_styles_invalid_parents'],"gi"):null;if(tinyMCE.isIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(new RegExp('td|tr|tbody|table','gi').test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','')}var ch=tinyMCE.getNodeTree(parentElm,new Array(),1);for(var z=0;z<ch.length;z++){if(ch[z]==parentElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}else{this._setUseCSS(false);doc.execCommand("FontName",false,"#mce_temp_font#");var elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var spanElm=doc.createElement(wrapper);if(scmd=="setstyle")tinyMCE.setStyleAttrib(spanElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(spanElm,sname,svalue);if(scmd=="removeformat"){spanElm.style.cssText='';tinyMCE.setAttrib(spanElm,'class','')}if(elm.hasChildNodes()){for(var i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true))}spanElm.setAttribute("mce_new","true");elm.parentNode.replaceChild(spanElm,elm);var ch=tinyMCE.getNodeTree(spanElm,new Array(),1);for(var z=0;z<ch.length;z++){if(ch[z]==spanElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false)}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('<span>','gi').test(tmp.innerHTML)){for(var x=0;x<elm.childNodes.length;x++){if(elm.parentNode!=null)elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true),elm)}elm.parentNode.removeChild(elm)}}if(scmd=="removeformat")tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"FontName":if(value==null){var s=this.getSel();if(tinyMCE.isGecko&&s.isCollapsed){var f=tinyMCE.getParentElement(this.getFocusElement(),"font");if(f!=null)this.selection.selectNode(f,false)}this.getDoc().execCommand("RemoveFormat",false,null);if(f!=null&&tinyMCE.isGecko){var r=this.getRng().cloneRange();r.collapse(true);s.removeAllRanges();s.addRange(r)}}else this.getDoc().execCommand('FontName',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"FontSize":this.getDoc().execCommand('FontSize',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"forecolor":value=value==null?this.foreColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.foreColor=value;this.getDoc().execCommand('forecolor',false,value);break;case"HiliteColor":value=value==null?this.backColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.backColor=value;if(tinyMCE.isGecko){this._setUseCSS(true);this.getDoc().execCommand('hilitecolor',false,value);this._setUseCSS(false)}else this.getDoc().execCommand('BackColor',false,value);break;case"Cut":case"Copy":case"Paste":var cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isOpera&&cmdFailed)alert('Currently not supported by your browser, use keyboard shortcuts instead.');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return}else tinyMCE.triggerNodeChange();break;case"mceSetContent":if(!value)value="";value=tinyMCE.storeAwayURLs(value);value=tinyMCE._customCleanup(this,"insert_to_editor",value);if(this.getBody().nodeName=='BODY')tinyMCE._setHTML(doc,value);else this.getBody().innerHTML=value;tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,doc,this.settings,this.getBody(),false,false,false,true));tinyMCE.convertAllRelativeURLs(this.getBody());tinyMCE._removeInternal(this.getBody());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);return true;case"mceCleanup":var b=this.selection.getBookmark();tinyMCE._setHTML(this.contentDocument,this.getBody().innerHTML);tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,this.getBody(),this.visualAid));tinyMCE.convertAllRelativeURLs(doc.body);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this.repaint();this.selection.moveToBookmark(b);tinyMCE.triggerNodeChange();break;case"mceReplaceContent":if(!value)value='';this.getWin().focus();var selectedText="";if(tinyMCE.isIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=this.getSel().toString();if(selectedText.length>0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value)}tinyMCE.triggerNodeChange();break;case"mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange()}}break;case"mceSetCSSClass":this.execCommand("SetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case"mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getBody().scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getBody().scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case"mceInsertContent":if(!value)value='';var insertHTMLFailed=false;if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1&&!value.match(/(&| |<|>)/g)){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2)}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}}catch(ex){insertHTMLFailed=true}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return}}if(!tinyMCE.isIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value)}else value=rng.createContextualFragment(value)}else{var el=document.createElement("div");el.innerHTML=value;value=el.firstChild.nodeValue;value=doc.createTextNode(value)}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node)}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng)}else rng.collapse(false);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}else{var rng=doc.selection.createRange(),tmpRng=null;var c=value.indexOf('<!--')!=-1;if(c)value=tinyMCE.uniqueTag+value;if(rng.item)rng.item(0).outerHTML=value;else rng.pasteHTML(value);if(c){var e=this.getDoc().getElementById('mceTMPElement');e.parentNode.removeChild(e)}}tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange();break;case"mceStartTyping":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedo.typingUndoIndex==-1){this.undoRedo.typingUndoIndex=this.undoRedo.undoIndex;tinyMCE.typingUndoIndex=tinyMCE.undoIndex;this.execCommand('mceAddUndoLevel')}break;case"mceEndTyping":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedo.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.undoRedo.typingUndoIndex=-1}tinyMCE.typingUndoIndex=-1;break;case"mceBeginUndoLevel":this.undoRedoLevel=false;break;case"mceEndUndoLevel":this.undoRedoLevel=true;this.execCommand('mceAddUndoLevel');break;case"mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedoLevel){if(this.undoRedo.add())tinyMCE.triggerNodeChange(false)}break;case"Undo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");this.undoRedo.undo();tinyMCE.triggerNodeChange()}else this.getDoc().execCommand(command,user_interface,value);break;case"Redo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");this.undoRedo.redo();tinyMCE.triggerNodeChange()}else this.getDoc().execCommand(command,user_interface,value);break;case"mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"Indent":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();if(tinyMCE.isIE){var n=tinyMCE.getParentElement(this.getFocusElement(),"blockquote");do{if(n&&n.nodeName=="BLOCKQUOTE"){n.removeAttribute("dir");n.removeAttribute("style")}}while(n!=null&&(n=n.parentNode)!=null)}break;case"removeformat":var text=this.selection.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return}if(tinyMCE.isIE){try{var rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null)}catch(e){}this.execCommand("SetStyleInfo",false,{command:"removeformat"})}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("SetStyleInfo",false,{command:"removeformat"})}if(text.length==0)this.execCommand("mceSetCSSClass",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().execCommand(command,user_interface,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);else tinyMCE.triggerNodeChange()}if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceStartTyping"&&command!="mceEndTyping")tinyMCE.execCommand("mceAddUndoLevel")},queryCommandValue:function(c){try{return this.getDoc().queryCommandValue(c)}catch(e){return null}},queryCommandState:function(c){return this.getDoc().queryCommandState(c)},_onAdd:function(replace_element,form_element_name,target_document){var hc,th,to,editorTemplate;th=this.settings['theme'];to=tinyMCE.themes[th];var targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings['theme'];this.settings['themeurl']=tinyMCE.themeURL;if(!replace_element){alert("Error: Could not find the target element.");return false}if(to.getEditorTemplate)editorTemplate=to.getEditorTemplate(this.settings,this.editorId);var deltaWidth=editorTemplate['delta_width']?editorTemplate['delta_width']:0;var deltaHeight=editorTemplate['delta_height']?editorTemplate['delta_height']:0;var html='<span id="'+this.editorId+'_parent" class="mceEditorContainer">'+editorTemplate['html'];html=tinyMCE.replaceVar(html,"editor_id",this.editorId);this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.settings['old_width']=this.settings['width'];this.settings['old_height']=this.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;if(this.settings['width']==0)this.settings['width']=replace_element.style.width;if(this.settings['height']==0)this.settings['height']=replace_element.style.height;if(this.settings['width']==0)this.settings['width']=320;if(this.settings['height']==0)this.settings['height']=240;this.settings['area_width']=parseInt(this.settings['width']);this.settings['area_height']=parseInt(this.settings['height']);this.settings['area_width']+=deltaWidth;this.settings['area_height']+=deltaHeight;this.settings['width_style']=""+this.settings['width'];this.settings['height_style']=""+this.settings['height'];if((""+this.settings['width']).indexOf('%')!=-1)this.settings['area_width']="100%";else this.settings['width_style']+='px';if((""+this.settings['height']).indexOf('%')!=-1)this.settings['area_height']="100%";else this.settings['height_style']+='px';if((""+replace_element.style.width).indexOf('%')!=-1){this.settings['width']=replace_element.style.width;this.settings['area_width']="100%";this.settings['width_style']="100%"}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings['height']=replace_element.style.height;this.settings['area_height']="100%";this.settings['height_style']="100%"}html=tinyMCE.applyTemplate(html);this.settings['width']=this.settings['old_width'];this.settings['height']=this.settings['old_height'];this.visualAid=this.settings['visual'];this.formTargetElementId=form_element_name;if(replace_element.nodeName=="TEXTAREA"||replace_element.nodeName=="INPUT")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName!="TEXTAREA"&&replace_element.nodeName!="INPUT"){this.oldTargetElement=replace_element;if(tinyMCE.settings['debug']){hc='<textarea wrap="off" id="'+form_element_name+'" name="'+form_element_name+'" cols="100" rows="15"></textarea>'}else{hc='<input type="hidden" id="'+form_element_name+'" name="'+form_element_name+'" />';this.oldTargetElement.style.display="none"}html+='</span>';if(tinyMCE.isGecko)html=hc+html;else html+=hc;if(tinyMCE.isGecko){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}else{html+='</span>';this.oldTargetElement=replace_element;if(!tinyMCE.settings['debug'])this.oldTargetElement.style.display="none";if(tinyMCE.isGecko){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else replace_element.insertAdjacentHTML("beforeBegin",html)}var dynamicIFrame=false;var tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isIE){if(tElm&&(tElm.nodeName=="SPAN"||tElm.nodeName=="span")){tElm=tinyMCE._createIFrame(tElm,targetDoc);dynamicIFrame=true}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName=="SPAN")tElm=tinyMCE._createIFrame(tElm,targetDoc,targetDoc.parentWindow);else tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);if(tinyMCE.isOpera){this.contentDocument=this.iframeElement.contentDocument;this.contentWindow=this.iframeElement.contentWindow;dynamicIFrame=true}else{this.contentDocument=tElm.window.document;this.contentWindow=tElm.window}this.getDoc().designMode="on"}var doc=this.contentDocument;if(dynamicIFrame){var html=tinyMCE.getParam('doctype')+'<html><head xmlns="http://www.w3.org/1999/xhtml"><base href="'+tinyMCE.settings['base_href']+'" /><title>blank_page</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body class="mceContentBody"></body></html>';try{if(!this.isHidden())this.getDoc().designMode="on";doc.open();doc.write(html);doc.close()}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm"}}if(tinyMCE.isIE)window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\""+this.editorId+"\"]);",1);tinyMCE.setupContent(this.editorId,true);return true},setBaseHREF:function(u){var h,b,d,nl;d=this.getDoc();nl=d.getElementsByTagName("base");b=nl.length>0?nl[0]:null;if(!b){nl=d.getElementsByTagName("head");h=nl.length>0?nl[0]:null;b=d.createElement("base");b.setAttribute('href',u);h.appendChild(b)}else{if(u==""||u==null)b.parentNode.removeChild(b);else b.setAttribute('href',u)}},getHTML:function(r){var h,d=this.getDoc(),b=this.getBody();if(r)return b.innerHTML;h=tinyMCE._cleanupHTML(this,d,this.settings,b,false,true,false,true);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(d);return h},setHTML:function(h){this.execCommand('mceSetContent',false,h);this.repaint()},getFocusElement:function(){return this.selection.getFocusElement()},getSel:function(){return this.selection.getSel()},getRng:function(){return this.selection.getRng()},triggerSave:function(skip_cleanup,skip_callback){var e,nl=[],i,s;this.switchSettings();s=tinyMCE.settings;if(tinyMCE.isRealIE){e=this.iframeElement;do{if(e.style&&e.style.display=='none'){e.style.display='block';nl[nl.length]={elm:e,type:'style'}}if(e.style&&s.hidden_tab_class.length>0&&e.className.indexOf(s.hidden_tab_class)!=-1){e.className=s.display_tab_class;nl[nl.length]={elm:e,type:'class'}}}while((e=e.parentNode)!=null)}tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(this.getDoc(),this.getBody().innerHTML);if(this.settings['cleanup']==false){tinyMCE.handleVisualAid(this.getBody(),true,false,this);tinyMCE._setEventsEnabled(this.getBody(),true)}tinyMCE._customCleanup(this,"submit_content_dom",this.contentWindow.document.body);var htm=skip_cleanup?this.getBody().innerHTML:tinyMCE._cleanupHTML(this,this.getDoc(),this.settings,this.getBody(),tinyMCE.visualAid,true,true);htm=tinyMCE._customCleanup(this,"submit_content",htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var content=eval(tinyMCE.settings['save_callback']+"(this.formTargetElementId,htm,this.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"(","(","gi");htm=tinyMCE.regexpReplace(htm,")",")","gi");htm=tinyMCE.regexpReplace(htm,";",";","gi");htm=tinyMCE.regexpReplace(htm,""",""","gi");htm=tinyMCE.regexpReplace(htm,"^","^","gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSafari&&this.formElement)this.formElement.innerText=htm;for(i=0;i<nl.length;i++){if(nl[i].type=='style')nl[i].elm.style.display='none';else nl[i].elm.className=s.hidden_tab_class}}};TinyMCE_Engine.prototype.cleanupHTMLCode=function(s){s=s.replace(new RegExp('<p \\/>','gi'),'<p> </p>');s=s.replace(new RegExp('<p>\\s*<\\/p>','gi'),'<p> </p>');s=s.replace(new RegExp('<br>\\s*<\\/br>','gi'),'<br />');s=s.replace(new RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>','gi'),'<$1$2$3></$1$2>');s=s.replace(new RegExp('\\s+></','gi'),'></');s=s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>','gi'),'<$1$2 />');if(tinyMCE.isIE)s=s.replace(new RegExp('<p><hr \\/><\\/p>','gi'),"<hr>");if(tinyMCE.isIE)s=s.replace(/<!(\s*)\/>/g,'');return s};TinyMCE_Engine.prototype.parseStyle=function(str){var ar=new Array();if(str==null)return ar;var st=str.split(';');tinyMCE.clearArray(ar);for(var i=0;i<st.length;i++){if(st[i]=='')continue;var re=new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');var pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1]}return ar};TinyMCE_Engine.prototype.compressStyle=function(ar,pr,sf,res){var box=new Array();box[0]=ar[pr+'-top'+sf];box[1]=ar[pr+'-left'+sf];box[2]=ar[pr+'-right'+sf];box[3]=ar[pr+'-bottom'+sf];for(var i=0;i<box.length;i++){if(box[i]==null)return;for(var a=0;a<box.length;a++){if(box[a]!=box[i])return}}ar[res]=box[0];ar[pr+'-top'+sf]=null;ar[pr+'-left'+sf]=null;ar[pr+'-right'+sf]=null;ar[pr+'-bottom'+sf]=null};TinyMCE_Engine.prototype.serializeStyle=function(ar){var str="";tinyMCE.compressStyle(ar,"border","","border");tinyMCE.compressStyle(ar,"border","-width","border-width");tinyMCE.compressStyle(ar,"border","-color","border-color");tinyMCE.compressStyle(ar,"border","-style","border-style");tinyMCE.compressStyle(ar,"padding","","padding");tinyMCE.compressStyle(ar,"margin","","margin");for(var key in ar){var val=ar[key];if(typeof(val)=='function')continue;if(key.indexOf('mso-')==0)continue;if(val!=null&&val!=''){val=''+val;val=val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)",'gi'),"url('$1')");if(val.indexOf('url(')!=-1&&tinyMCE.getParam('convert_urls')){var m=new RegExp("url\\('(.*?)'\\)").exec(val);if(m.length>1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1], null, true);")+"')"}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);if(val!="url('')")str+=key.toLowerCase()+": "+val+"; "}}if(new RegExp('; $').test(str))str=str.substring(0,str.length-2);return str};TinyMCE_Engine.prototype.convertRGBToHex=function(s,k){if(s.toLowerCase().indexOf('rgb')!=-1){var re=new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");var rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4]}}return s};TinyMCE_Engine.prototype.convertHexToRGB=function(s){if(s.indexOf('#')!=-1){s=s.replace(new RegExp('[^0-9A-F]','gi'),'');return"rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")"}return s};TinyMCE_Engine.prototype.convertSpansToFonts=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/<span/gi,'<font');h=h.replace(/<\/span/gi,'</font');tinyMCE.setInnerHTML(doc.body,h);var s=doc.getElementsByTagName("font");for(var i=0;i<s.length;i++){var size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();var fSize=0;for(var x=0;x<sizes.length;x++){if(sizes[x]==size){fSize=x+1;break}}if(fSize>0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize=''}var fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!=""){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily=''}var fColor=s[i].style.color;if(fColor!=null&&fColor!=""){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGBToHex(fColor));s[i].style.color=''}}};TinyMCE_Engine.prototype.convertFontsToSpans=function(doc){var sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var h=doc.body.innerHTML;h=h.replace(/<font/gi,'<span');h=h.replace(/<\/font/gi,'</span');tinyMCE.setInnerHTML(doc.body,h);var fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else fsClasses=null;var s=doc.getElementsByTagName("span");for(var i=0;i<s.length;i++){var fSize,fFace,fColor;fSize=tinyMCE.getAttrib(s[i],'size');fFace=tinyMCE.getAttrib(s[i],'face');fColor=tinyMCE.getAttrib(s[i],'color');if(fSize!=""){fSize=parseInt(fSize);if(fSize>0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else s[i].style.fontSize=sizes[fSize-1]}s[i].removeAttribute('size')}if(fFace!=""){s[i].style.fontFamily=fFace;s[i].removeAttribute('face')}if(fColor!=""){s[i].style.color=fColor;s[i].removeAttribute('color')}}};TinyMCE_Engine.prototype.cleanupAnchors=function(doc){var i,cn,x,an=doc.getElementsByTagName("a");for(i=an.length-1;i>=0;i--){if(tinyMCE.getAttrib(an[i],"name")!=""&&tinyMCE.getAttrib(an[i],"href")==""){cn=an[i].childNodes;for(x=cn.length-1;x>=0;x--)tinyMCE.insertAfter(cn[x],an[i])}}};TinyMCE_Engine.prototype.getContent=function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.getInstanceById(editor_id).select();if(tinyMCE.selectedInstance)return tinyMCE.selectedInstance.getHTML();return null};TinyMCE_Engine.prototype._fixListElements=function(d){var nl,x,a=['ol','ul'],i,n,p,r=new RegExp('^(OL|UL)$'),np;for(x=0;x<a.length;x++){nl=d.getElementsByTagName(a[x]);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=tinyMCE.prevNode(n,'LI');if(!np){np=d.createElement('li');np.innerHTML=' ';np.appendChild(n);p.insertBefore(np,p.firstChild)}else np.appendChild(n)}}}};TinyMCE_Engine.prototype._fixTables=function(d){var nl,i,n,p,np,x,t;nl=d.getElementsByTagName('table');for(i=0;i<nl.length;i++){n=nl[i];if((p=tinyMCE.getParentElement(n,'p,div,h1,h2,h3,h4,h5,h6'))!=null){np=p.cloneNode(false);np.removeAttribute('id');t=n;while((n=n.nextSibling))np.appendChild(n);tinyMCE.insertAfter(np,p);tinyMCE.insertAfter(t,p)}}};TinyMCE_Engine.prototype._cleanupHTML=function(inst,doc,config,elm,visual,on_save,on_submit,inn){var h,d,t1,t2,t3,t4,t5,c,s,nb;if(!tinyMCE.getParam('cleanup'))return elm.innerHTML;on_save=typeof(on_save)=='undefined'?false:on_save;c=inst.cleanup;s=inst.settings;d=c.settings.debug;if(d)t1=new Date().getTime();if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);if(tinyMCE.getParam("fix_list_elements"))tinyMCE._fixListElements(doc);if(tinyMCE.getParam("fix_table_elements"))tinyMCE._fixTables(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);if(d)t2=new Date().getTime();c.settings.on_save=on_save;c.idCount=0;c.serializationId++;c.serializedNodes=new Array();c.sourceIndex=-1;if(s.cleanup_serializer=="xml")h=c.serializeNodeAsXML(elm,inn);else h=c.serializeNodeAsHTML(elm,inn);if(d)t3=new Date().getTime();nb=tinyMCE.getParam('entity_encoding')=='numeric'?' ':' ';h=h.replace(/<\/?(body|head|html)[^>]*>/gi,'');h=h.replace(new RegExp(' (rowspan="1"|colspan="1")','g'),'');h=h.replace(/<p><hr \/><\/p>/g,'<hr />');h=h.replace(/<p>( | )<\/p><hr \/><p>( | )<\/p>/g,'<hr />');h=h.replace(/<td>\s*<br \/>\s*<\/td>/g,'<td>'+nb+'</td>');h=h.replace(/<p>\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<br \/>$/,'');h=h.replace(/<br \/><\/p>/g,'</p>');h=h.replace(/<p>\s*( | )\s*<br \/>\s*( | )\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*( | )\s*<br \/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*<br \/>\s* \s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(new RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1>'+nb+'</p>');if(/^\s*(<br \/>|<p> <\/p>|<p> <\/p>|<p><\/p>)\s*$/.test(h))h='';if(s.preformatted){h=h.replace(/^<pre>/,'');h=h.replace(/<\/pre>$/,'');h='<pre>'+h+'</pre>'}if(tinyMCE.isGecko){h=h.replace(/<o:p _moz-userdefined="" \/>/g,'');h=h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,'<td$1>'+nb+'</td>')}if(s.force_br_newlines)h=h.replace(/<p>( | )<\/p>/g,'<br />');h=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",h);if(on_save){h=h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|'+s.visual_table_class+')','g'),'');h=h.replace(new RegExp(' ?class=""','g'),'')}if(s.remove_linebreaks&&!c.settings.indent)h=h.replace(/\n|\r/g,' ');if(d)t4=new Date().getTime();if(on_save&&c.settings.indent)h=c.formatHTML(h);if(on_submit&&(s.encoding=="xml"||s.encoding=="html"))h=c.xmlEncode(h);if(d)t5=new Date().getTime();if(c.settings.debug)tinyMCE.debug("Cleanup in ms: Pre="+(t2-t1)+", Serialize: "+(t3-t2)+", Post: "+(t4-t3)+", Format: "+(t5-t4)+", Sum: "+(t5-t1)+".");return h};function TinyMCE_Cleanup(){this.isIE=(navigator.appName=="Microsoft Internet Explorer");this.rules=tinyMCE.clearArray(new Array());this.settings={indent_elements:'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',newline_before_elements:'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',newline_after_elements:'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',newline_before_after_elements:'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',indent_char:'\t',indent_levels:1,entity_encoding:'raw',valid_elements:'*[*]',entities:'',url_converter:'',invalid_elements:'',verify_html:false};this.vElements=tinyMCE.clearArray(new Array());this.vElementsRe='';this.closeElementsRe=/^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;this.codeElementsRe=/^(SCRIPT|STYLE)$/;this.serializationId=0;this.mceAttribs={href:'mce_href',src:'mce_src',type:'mce_type'}}TinyMCE_Cleanup.prototype={init:function(s){var n,a,i,ir,or,st;for(n in s)this.settings[n]=s[n];s=this.settings;this.inRe=this._arrayToRe(s.indent_elements.split(','),'','^<(',')[^>]*');this.ouRe=this._arrayToRe(s.indent_elements.split(','),'','^<\\/(',')[^>]*');this.nlBeforeRe=this._arrayToRe(s.newline_before_elements.split(','),'gi','<(',')([^>]*)>');this.nlAfterRe=this._arrayToRe(s.newline_after_elements.split(','),'gi','<(',')([^>]*)>');this.nlBeforeAfterRe=this._arrayToRe(s.newline_before_after_elements.split(','),'gi','<(\\/?)(',')([^>]*)>');this.serializedNodes=[];if(s.invalid_elements!='')this.iveRe=this._arrayToRe(s.invalid_elements.toUpperCase().split(','),'g','^(',')$');else this.iveRe=null;st='';for(i=0;i<s.indent_levels;i++)st+=s.indent_char;this.inStr=st;if(!s.verify_html){s.valid_elements='*[*]';s.extended_valid_elements=''}this.fillStr=s.entity_encoding=="named"?" ":" ";this.idCount=0},addRuleStr:function(s){var r=this.parseRuleStr(s);var n;for(n in r){if(r[n])this.rules[n]=r[n]}this.vElements=tinyMCE.clearArray(new Array());for(n in this.rules){if(this.rules[n])this.vElements[this.vElements.length]=this.rules[n].tag}this.vElementsRe=this._arrayToRe(this.vElements,'')},isValid:function(n){this._setupRules();n=n.replace(/[^a-z0-9]+/gi,'').toUpperCase();return!tinyMCE.getParam('cleanup')||this.vElementsRe.test(n)},addChildRemoveRuleStr:function(s){var x,y,p,i,t,tn,ta,cl,r;if(!s)return;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r="^(";cl=this.split(/\|/,p[1]);for(i=0;i<cl.length;i++){if(cl[i]=='%istrict')r+=tinyMCE.inlineStrict;else if(cl[i]=='%itrans')r+=tinyMCE.inlineTransitional;else if(cl[i]=='%istrict_na')r+=tinyMCE.inlineStrict.substring(2);else if(cl[i]=='%itrans_na')r+=tinyMCE.inlineTransitional.substring(2);else if(cl[i]=='%btrans')r+=tinyMCE.blockElms;else if(cl[i]=='%strict')r+=tinyMCE.blockStrict;else r+=(cl[i].charAt(0)!='#'?cl[i].toUpperCase():cl[i]);r+=(i!=cl.length-1?'|':'')}r+=')$';if(this.childRules==null)this.childRules=tinyMCE.clearArray(new Array());this.childRules[tn[y]]=new RegExp(r);if(p.length>1)this.childRules[tn[y]].wrapTag=p[2]}}},parseRuleStr:function(s){var ta,p,r,a,i,x,px,t,tn,y,av,or=tinyMCE.clearArray(new Array()),dv;if(s==null||s.length==0)return or;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];if(s.length==0)continue;p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r={};r.tag=tn[y];r.forceAttribs=null;r.defaultAttribs=null;r.validAttribValues=null;px=r.tag.charAt(0);r.forceOpen=px=='+';r.removeEmpty=px=='-';r.fill=px=='#';r.tag=r.tag.replace(/\+|-|#/g,'');r.oTagName=tn[0].replace(/\+|-|#/g,'').toLowerCase();r.isWild=new RegExp('\\*|\\?|\\+','g').test(r.tag);r.validRe=new RegExp(this._wildcardToRe('^'+r.tag+'$'));if(p.length>1){r.vAttribsRe='^(';a=this.split(/\|/,p[1]);for(i=0;i<a.length;i++){t=a[i];if(t.charAt(0)=='!'){a[i]=t=t.substring(1);if(!r.reqAttribsRe)r.reqAttribsRe='\\s+('+t;else r.reqAttribsRe+='|'+t}av=new RegExp('(=|:|<)(.*?)$').exec(t);t=t.replace(new RegExp('(=|:|<).*?$'),'');if(av&&av.length>0){if(av[0].charAt(0)==':'){if(!r.forceAttribs)r.forceAttribs=tinyMCE.clearArray(new Array());r.forceAttribs[t.toLowerCase()]=av[0].substring(1)}else if(av[0].charAt(0)=='='){if(!r.defaultAttribs)r.defaultAttribs=tinyMCE.clearArray(new Array());dv=av[0].substring(1);r.defaultAttribs[t.toLowerCase()]=dv==""?"mce_empty":dv}else if(av[0].charAt(0)=='<'){if(!r.validAttribValues)r.validAttribValues=tinyMCE.clearArray(new Array());r.validAttribValues[t.toLowerCase()]=this._arrayToRe(this.split('?',av[0].substring(1)),'i')}}r.vAttribsRe+=''+t.toLowerCase()+(i!=a.length-1?'|':'');a[i]=t.toLowerCase()}if(r.reqAttribsRe)r.reqAttribsRe=new RegExp(r.reqAttribsRe+')=\"','g');r.vAttribsRe+=')$';r.vAttribsRe=this._wildcardToRe(r.vAttribsRe);r.vAttribsReIsWild=new RegExp('\\*|\\?|\\+','g').test(r.vAttribsRe);r.vAttribsRe=new RegExp(r.vAttribsRe);r.vAttribs=a.reverse();}else{r.vAttribsRe='';r.vAttribs=tinyMCE.clearArray(new Array());r.vAttribsReIsWild=false}or[r.tag]=r}}return or},serializeNodeAsXML:function(n){var s,b;if(!this.xmlDoc){if(this.isIE){try{this.xmlDoc=new ActiveXObject('MSXML2.DOMDocument')}catch(e){}if(!this.xmlDoc)try{this.xmlDoc=new ActiveXObject('Microsoft.XmlDom')}catch(e){}}else this.xmlDoc=document.implementation.createDocument('','',null);if(!this.xmlDoc)alert("Error XML Parser could not be found.")}if(this.xmlDoc.firstChild)this.xmlDoc.removeChild(this.xmlDoc.firstChild);b=this.xmlDoc.createElement("html");b=this.xmlDoc.appendChild(b);this._convertToXML(n,b);if(this.isIE)return this.xmlDoc.xml;else return new XMLSerializer().serializeToString(this.xmlDoc)},_convertToXML:function(n,xn){var xd,el,i,l,cn,at,no,hc=false;if(this._isDuplicate(n))return;xd=this.xmlDoc;switch(n.nodeType){case 1:hc=n.hasChildNodes();el=xd.createElement(n.nodeName.toLowerCase());at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&no.nodeValue)el.setAttribute(no.nodeName.toLowerCase(),no.nodeValue)}if(!hc&&!this.closeElementsRe.test(n.nodeName))el.appendChild(xd.createTextNode(""));xn=xn.appendChild(el);break;case 3:xn.appendChild(xd.createTextNode(n.nodeValue));return;case 8:xn.appendChild(xd.createComment(n.nodeValue));return}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)this._convertToXML(cn[i],xn)}},serializeNodeAsHTML:function(n,inn){var en,no,h='',i,l,t,st,r,cn,va=false,f=false,at,hc,cr;this._setupRules();if(this._isDuplicate(n))return'';if(n.parentNode&&this.childRules!=null){cr=this.childRules[n.parentNode.nodeName];if(typeof(cr)!="undefined"&&!cr.test(n.nodeName)){st=true;t=null}}switch(n.nodeType){case 1:hc=n.hasChildNodes();if(st)break;if((tinyMCE.isRealIE)&&n.nodeName.indexOf('/')!=-1)break;if(this.vElementsRe.test(n.nodeName)&&(!this.iveRe||!this.iveRe.test(n.nodeName))&&!inn){va=true;r=this.rules[n.nodeName];if(!r){at=this.rules;for(no in at){if(at[no]&&at[no].validRe.test(n.nodeName)){r=at[no];break}}}en=r.isWild?n.nodeName.toLowerCase():r.oTagName;f=r.fill;if(r.removeEmpty&&!hc)return"";t='<'+en;if(r.vAttribsReIsWild){at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&r.vAttribsRe.test(no.nodeName))t+=this._serializeAttribute(n,r,no.nodeName)}}else{for(i=r.vAttribs.length-1;i>-1;i--)t+=this._serializeAttribute(n,r,r.vAttribs[i])}if(!this.settings.on_save){at=this.mceAttribs;for(no in at){if(at[no])t+=this._serializeAttribute(n,r,at[no])}}if(r.reqAttribsRe&&!t.match(r.reqAttribsRe))t=null;if(t!=null&&this.closeElementsRe.test(n.nodeName))return t+' />';if(t!=null)h+=t+'>';if(this.isIE&&this.codeElementsRe.test(n.nodeName))h+=n.innerHTML}break;case 3:if(st)break;if(n.parentNode&&this.codeElementsRe.test(n.parentNode.nodeName))return this.isIE?'':n.nodeValue;return this.xmlEncode(n.nodeValue);case 8:if(st)break;return"<!--"+this._trimComment(n.nodeValue)+"-->"}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)h+=this.serializeNodeAsHTML(cn[i])}if(f&&!hc)h+=this.fillStr;if(t!=null&&va)h+='</'+en+'>';return h},_serializeAttribute:function(n,r,an){var av='',t,os=this.settings.on_save;if(os&&(an.indexOf('mce_')==0||an.indexOf('_moz')==0))return'';if(os&&this.mceAttribs[an])av=this._getAttrib(n,this.mceAttribs[an]);if(av.length==0)av=this._getAttrib(n,an);if(av.length==0&&r.defaultAttribs&&(t=r.defaultAttribs[an])){av=t;if(av=="mce_empty")return" "+an+'=""'}if(r.forceAttribs&&(t=r.forceAttribs[an]))av=t;if(os&&av.length!=0&&this.settings.url_converter.length!=0&&/^(src|href|longdesc)$/.test(an))av=eval(this.settings.url_converter+'(this, n, av)');if(av.length!=0&&r.validAttribValues&&r.validAttribValues[an]&&!r.validAttribValues[an].test(av))return"";if(av.length!=0&&av=="{$uid}")av="uid_"+(this.idCount++);if(av.length!=0){if(an.indexOf('on')!=0)av=this.xmlEncode(av);return" "+an+"="+'"'+av+'"'}return""},formatHTML:function(h){var s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi,function(a,b,c){c=c.replace(/<br\s*\/>/gi,'\n');return'<pre'+b+'>'+c+'</pre>'});h=h.replace(/\r/g,'');h='\n'+h;h=h.replace(new RegExp('\\n\\s+','gi'),'\n');h=h.replace(this.nlBeforeRe,'\n<$1$2>');h=h.replace(this.nlAfterRe,'<$1$2>\n');h=h.replace(this.nlBeforeAfterRe,'\n<$1$2$3>\n');h+='\n';while((i=h.indexOf('\n',i+1))!=-1){if((l=h.substring(li+1,i)).length!=0){if(this.ouRe.test(l)&&p.length>=s.indent_levels)p=p.substring(s.indent_levels);o+=p+l+'\n';if(this.inRe.test(l))p+=this.inStr}li=i}return o},xmlEncode:function(s){var cl=this;this._setupEntities();switch(this.settings.entity_encoding){case"raw":return tinyMCE.xmlEncode(s);case"named":return s.replace(new RegExp('[\u007F-\uFFFF<>&"\']','g'),function(c,b){b=cl.entities[c.charCodeAt(0)];return b?'&'+b+';':c});case"numeric":return s.replace(new RegExp('[\u007F-\uFFFF<>&"\']','g'),function(c,b){return b?'&#'+c.charCodeAt(0)+';':c})}return s},split:function(re,s){var c=s.split(re);var i,l,o=new Array();for(i=0,l=c.length;i<l;i++){if(c[i]!='')o[i]=c[i]}return o},_trimComment:function(s){s=s.replace(new RegExp('\\smce_src=\"[^\"]*\"','gi'),"");s=s.replace(new RegExp('\\smce_href=\"[^\"]*\"','gi'),"");return s},_getAttrib:function(e,n,d){if(typeof(d)=="undefined")d="";if(!e||e.nodeType!=1)return d;var v=e.getAttribute(n,0);if(n=="class"&&!v)v=e.className;if(this.isIE&&n=="http-equiv")v=e.httpEquiv;if(this.isIE&&e.nodeName=="FORM"&&n=="enctype"&&v=="application/x-www-form-urlencoded")v="";if(this.isIE&&e.nodeName=="INPUT"&&n=="size"&&v=="20")v="";if(this.isIE&&e.nodeName=="INPUT"&&n=="maxlength"&&v=="2147483647")v="";if(n=="style"&&!tinyMCE.isOpera)v=e.style.cssText;if(n=='style')v=tinyMCE.serializeStyle(tinyMCE.parseStyle(v));if(this.settings.on_save&&n.indexOf('on')!=-1&&this.settings.on_save&&v&&v!="")v=tinyMCE.cleanupEventStr(v);return(v&&v!="")?''+v:d},_urlConverter:function(c,n,v){if(!c.settings.on_save)return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,v);else if(tinyMCE.getParam('convert_urls'))return eval(tinyMCE.settings.urlconverter_callback+"(v, n, true);");return v},_arrayToRe:function(a,op,be,af){var i,r;op=typeof(op)=="undefined"?"gi":op;be=typeof(be)=="undefined"?"^(":be;af=typeof(af)=="undefined"?")$":af;r=be;for(i=0;i<a.length;i++)r+=this._wildcardToRe(a[i])+(i!=a.length-1?"|":"");r+=af;return new RegExp(r,op)},_wildcardToRe:function(s){s=s.replace(/\?/g,'(\\S?)');s=s.replace(/\+/g,'(\\S+)');s=s.replace(/\*/g,'(\\S*)');return s},_setupEntities:function(){var n,a,i,s=this.settings;if(!this.entitiesDone){if(s.entity_encoding=="named"){n=tinyMCE.clearArray(new Array());a=this.split(',',s.entities);for(i=0;i<a.length;i+=2)n[a[i]]=a[i+1];this.entities=n}this.entitiesDone=true}},_setupRules:function(){var s=this.settings;if(!this.rulesDone){this.addRuleStr(s.valid_elements);this.addRuleStr(s.extended_valid_elements);this.addChildRemoveRuleStr(s.valid_child_elements);this.rulesDone=true}},_isDuplicate:function(n){var i;if(!this.settings.fix_content_duplication)return false;if(tinyMCE.isRealIE&&n.nodeType==1){if(n.mce_serialized==this.serializationId)return true;n.setAttribute('mce_serialized',this.serializationId)}else{for(i=0;i<this.serializedNodes.length;i++){if(this.serializedNodes[i]==n)return true}this.serializedNodes[this.serializedNodes.length]=n}return false}};TinyMCE_Engine.prototype.createTagHTML=function(tn,a,h){var o='',f=tinyMCE.xmlEncode;o='<'+tn;if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)o+=' '+f(n)+'="'+f(''+a[n])+'"'}}o+=!h?' />':'>'+h+'</'+tn+'>';return o};TinyMCE_Engine.prototype.createTag=function(d,tn,a,h){var o=d.createElement(tn);if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)tinyMCE.setAttrib(o,n,a[n])}}if(h)o.innerHTML=h;return o};TinyMCE_Engine.prototype.getElementByAttributeValue=function(n,e,a,v){return(n=this.getElementsByAttributeValue(n,e,a,v)).length==0?null:n[0]};TinyMCE_Engine.prototype.getElementsByAttributeValue=function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=new Array();for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i]}return o};TinyMCE_Engine.prototype.isBlockElement=function(n){return n!=null&&n.nodeType==1&&this.blockRegExp.test(n.nodeName)};TinyMCE_Engine.prototype.getParentBlockElement=function(n,r){return this.getParentNode(n,function(n){return tinyMCE.isBlockElement(n)},r);return null};TinyMCE_Engine.prototype.insertAfter=function(n,r){if(r.nextSibling)r.parentNode.insertBefore(n,r.nextSibling);else r.parentNode.appendChild(n)};TinyMCE_Engine.prototype.setInnerHTML=function(e,h){var i,nl,n;if(tinyMCE.isGecko){h=h.replace(/<strong/gi,'<b');h=h.replace(/<em(\/?)/gi,'<i');h=h.replace(/<em /gi,'<i');h=h.replace(/<\/strong>/gi,'</b>');h=h.replace(/<\/em>/gi,'</i>')}if(tinyMCE.isRealIE){h=h.replace(/\s\/>/g,'>');h=h.replace(/<p([^>]*)>\u00A0?<\/p>/gi,'<p$1 mce_keep="true"> </p>');h=h.replace(/<p([^>]*)>\s* \s*<\/p>/gi,'<p$1 mce_keep="true"> </p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1 mce_keep="true"> </p>');e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);nl=e.getElementsByTagName("p");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.nodeName=='P'&&!n.hasChildNodes()&&!n.mce_keep)n.parentNode.removeChild(n)}}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h)}};TinyMCE_Engine.prototype.getOuterHTML=function(e){if(tinyMCE.isIE)return e.outerHTML;var d=e.ownerDocument.createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML};TinyMCE_Engine.prototype.setOuterHTML=function(e,h,d){var d=typeof(d)=="undefined"?e.ownerDocument:d,i,nl,t;if(tinyMCE.isIE&&e.nodeType==1)e.outerHTML=h;else{t=d.createElement("body");t.innerHTML=h;for(i=0,nl=t.childNodes;i<nl.length;i++)e.parentNode.insertBefore(nl[i].cloneNode(true),e);e.parentNode.removeChild(e)}};TinyMCE_Engine.prototype._getElementById=function(id,d){var e,i,j,f;if(typeof(d)=="undefined")d=document;e=d.getElementById(id);if(!e){f=d.forms;for(i=0;i<f.length;i++){for(j=0;j<f[i].elements.length;j++){if(f[i].elements[j].name==id){e=f[i].elements[j];break}}}}return e};TinyMCE_Engine.prototype.getNodeTree=function(n,na,t,nn){return this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn)},na?na:new Array())};TinyMCE_Engine.prototype.getParentElement=function(n,na,f,r){var re=na?new RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$'):0,v;if(f&&typeof(f)=='string')return this.getParentElement(n,na,function(no){return tinyMCE.getAttrib(no,f)!=''});return this.getParentNode(n,function(n){return((n.nodeType==1&&!re)||(re&&re.test(n.nodeName)))&&(!f||f(n))},r)};TinyMCE_Engine.prototype.getParentNode=function(n,f,r){while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode}return null};TinyMCE_Engine.prototype.getAttrib=function(elm,name,dv){var v;if(typeof(dv)=="undefined")dv="";if(!elm||elm.nodeType!=1)return dv;v=elm.getAttribute(name);if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko&&name=="src"&&elm.src!=null&&elm.src!="")v=elm.src;if(tinyMCE.isGecko&&name=="href"&&elm.href!=null&&elm.href!="")v=elm.href;if(name=="http-equiv"&&tinyMCE.isIE)v=elm.httpEquiv;if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!="")?v:dv};TinyMCE_Engine.prototype.setAttrib=function(el,name,va,fix){if(typeof(va)=="number"&&va!=null)va=""+va;if(fix){if(va==null)va="";va=va.replace(/[^0-9%]/g,'')}if(name=="style")el.style.cssText=va;if(name=="class")el.className=va;if(va!=null&&va!=""&&va!=-1)el.setAttribute(name,va);else el.removeAttribute(name)};TinyMCE_Engine.prototype.setStyleAttrib=function(e,n,v){e.style[n]=v;if(tinyMCE.isIE&&v==null||v==''){v=tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));e.style.cssText=v;e.setAttribute("style",v)}};TinyMCE_Engine.prototype.switchClass=function(ei,c){var e;if(tinyMCE.switchClassCache[ei])e=tinyMCE.switchClassCache[ei];else e=tinyMCE.switchClassCache[ei]=document.getElementById(ei);if(e){if(tinyMCE.settings.button_tile_map&&e.className&&e.className.indexOf('mceTiledButton')==0)c='mceTiledButton '+c;e.className=c}};TinyMCE_Engine.prototype.getAbsPosition=function(n,cn){var l=0,t=0;while(n&&n!=cn){l+=n.offsetLeft;t+=n.offsetTop;n=n.offsetParent}return{absLeft:l,absTop:t}};TinyMCE_Engine.prototype.prevNode=function(e,n){var a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e}}return null};TinyMCE_Engine.prototype.nextNode=function(e,n){var a=n.split(','),i;while((e=e.nextSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return e}}return null};TinyMCE_Engine.prototype.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};TinyMCE_Engine.prototype.selectNodes=function(n,f,a){var i;if(!a)a=new Array();if(f(n))a[a.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.selectNodes(n.childNodes[i],f,a)}return a};TinyMCE_Engine.prototype.addCSSClass=function(e,c,b){var o=this.removeCSSClass(e,c);return e.className=b?c+(o!=''?(' '+o):''):(o!=''?(o+' '):'')+c};TinyMCE_Engine.prototype.removeCSSClass=function(e,c){c=e.className.replace(new RegExp("(^|\\s+)"+c+"(\\s+|$)"),' ');return e.className=c!=' '?c:''};TinyMCE_Engine.prototype.hasCSSClass=function(n,c){return new RegExp('\\b'+c+'\\b','g').test(n.className)};TinyMCE_Engine.prototype.renameElement=function(e,n,d){var ne,i,ar;d=typeof(d)=="undefined"?tinyMCE.selectedInstance.getDoc():d;if(e){ne=d.createElement(n);ar=e.attributes;for(i=ar.length-1;i>-1;i--){if(ar[i].specified&&ar[i].nodeValue)ne.setAttribute(ar[i].nodeName.toLowerCase(),ar[i].nodeValue)}ar=e.childNodes;for(i=0;i<ar.length;i++)ne.appendChild(ar[i].cloneNode(true));e.parentNode.replaceChild(ne,e)}};TinyMCE_Engine.prototype.getViewPort=function(w){var d=w.document,m=d.compatMode=='CSS1Compat',b=d.body,de=d.documentElement;return{left:w.pageXOffset||(m?de.scrollLeft:b.scrollLeft),top:w.pageYOffset||(m?de.scrollTop:b.scrollTop),width:w.innerWidth||(m?de.clientWidth:b.clientWidth),height:w.innerHeight||(m?de.clientHeight:b.clientHeight)}};TinyMCE_Engine.prototype.parseURL=function(url_str){var urlParts=new Array();if(url_str){var pos,lastPos;pos=url_str.indexOf('://');if(pos!=-1){urlParts['protocol']=url_str.substring(0,pos);lastPos=pos+3}for(var i=lastPos;i<url_str.length;i++){var chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break}pos=i;urlParts['host']=url_str.substring(lastPos,pos);urlParts['port']="";lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts['port']=url_str.substring(lastPos+1,pos)}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts['query']=url_str.substring(lastPos+1,pos)}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts['anchor']=url_str.substring(lastPos+1,pos)}}return urlParts};TinyMCE_Engine.prototype.serializeURL=function(up){var o="";if(up['protocol'])o+=up['protocol']+"://";if(up['host'])o+=up['host'];if(up['port'])o+=":"+up['port'];if(up['path'])o+=up['path'];if(up['query'])o+="?"+up['query'];if(up['anchor'])o+="#"+up['anchor'];return o};TinyMCE_Engine.prototype.convertAbsoluteURLToRelativeURL=function(base_url,url_to_relative){var baseURL=this.parseURL(base_url);var targetURL=this.parseURL(url_to_relative);var strTok1;var strTok2;var breakPoint=0;var outPath="";var forceSlash=false;if(targetURL.path=="")targetURL.path="/";else forceSlash=true;base_url=baseURL.path.substring(0,baseURL.path.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=targetURL.path.split('/');if(strTok1.length>=strTok2.length){for(var i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(strTok1.length<strTok2.length){for(var i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(breakPoint==1)return targetURL.path;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(var i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outPath+="/"+strTok2[i];else outPath+=strTok2[i]}targetURL.protocol=null;targetURL.host=null;targetURL.port=null;targetURL.path=outPath==""&&forceSlash?"/":outPath;var fileName=baseURL.path;var pos;if((pos=fileName.lastIndexOf('/'))!=-1)fileName=fileName.substring(pos+1);if(fileName==targetURL.path&&targetURL.anchor!="")targetURL.path="";if(targetURL.path==""&&!targetURL.anchor)targetURL.path=fileName!=""?fileName:"/";return this.serializeURL(targetURL)};TinyMCE_Engine.prototype.convertRelativeToAbsoluteURL=function(base_url,relative_url){var baseURL=this.parseURL(base_url),baseURLParts,relURLParts;var relURL=this.parseURL(relative_url);if(relative_url==""||relative_url.indexOf('://')!=-1||/^(mailto:|javascript:|#|\/)/.test(relative_url))return relative_url;baseURLParts=baseURL['path'].split('/');relURLParts=relURL['path'].split('/');var newBaseURLParts=new Array();for(var i=baseURLParts.length-1;i>=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i]}baseURLParts=newBaseURLParts.reverse();var newRelURLParts=new Array();var numBack=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue}if(numBack>0){numBack--;continue}newRelURLParts[newRelURLParts.length]=relURLParts[i]}relURLParts=newRelURLParts.reverse();var len=baseURLParts.length-numBack;var absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');var start="",end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return this.serializeURL(relURL)};TinyMCE_Engine.prototype.convertURL=function(url,node,on_save){var prot=document.location.protocol;var host=document.location.hostname;var port=document.location.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0)=="#")return url;if(!tinyMCE.isIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings['base_href']+url;if(on_save&&tinyMCE.getParam('relative_urls')){var curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(curl.charAt(0)=='/')curl=tinyMCE.settings['document_base_prefix']+curl;var urlParts=tinyMCE.parseURL(curl);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(urlParts['port']==tmpUrlParts['port']))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],curl)}if(!tinyMCE.getParam('relative_urls')){var urlParts=tinyMCE.parseURL(url);var baseUrlParts=tinyMCE.parseURL(tinyMCE.settings['base_href']);url=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(urlParts['anchor']&&urlParts['path']==baseUrlParts['path'])return"#"+urlParts['anchor']}if(tinyMCE.getParam('remove_script_host')){var start="",portPart="";if(port!="")portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1)}return url};TinyMCE_Engine.prototype.convertAllRelativeURLs=function(body){var i,elms,src,href,mhref,msrc;elms=body.getElementsByTagName("img");for(i=0;i<elms.length;i++){src=tinyMCE.getAttrib(elms[i],'src');msrc=tinyMCE.getAttrib(elms[i],'mce_src');if(msrc!="")src=msrc;if(src!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);elms[i].setAttribute("src",src)}}elms=body.getElementsByTagName("a");for(i=0;i<elms.length;i++){href=tinyMCE.getAttrib(elms[i],'href');mhref=tinyMCE.getAttrib(elms[i],'mce_href');if(mhref!="")href=mhref;if(href&&href!=""){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],href);elms[i].setAttribute("href",href)}}};TinyMCE_Engine.prototype.clearArray=function(a){var n;for(n in a)a[n]=null;return a};TinyMCE_Engine.prototype.explode=function(d,s){var ar=s.split(d),oar=new Array(),i;for(i=0;i<ar.length;i++){if(ar[i]!="")oar[oar.length]=ar[i]}return oar};TinyMCE_Engine.prototype._setEventsEnabled=function(node,state){var evs,x,y,elms,i,event;var events=['onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];evs=tinyMCE.settings['event_elements'].split(',');for(y=0;y<evs.length;y++){elms=node.getElementsByTagName(evs[y]);for(i=0;i<elms.length;i++){event="";for(x=0;x<events.length;x++){if((event=tinyMCE.getAttrib(elms[i],events[x]))!=''){event=tinyMCE.cleanupEventStr(""+event);if(!state)event="return true;"+event;else event=event.replace(/^return true;/gi,'');elms[i].removeAttribute(events[x]);elms[i].setAttribute(events[x],event)}}}}};TinyMCE_Engine.prototype._eventPatch=function(editor_id){var n,inst,win,e;if(typeof(tinyMCE)=="undefined")return true;try{if(tinyMCE.selectedInstance){win=tinyMCE.selectedInstance.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.select();win=inst.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}}catch(ex){}};TinyMCE_Engine.prototype.findEvent=function(e){var n,inst;if(e)return e;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(tinyMCE.isInstance(inst)&&inst.getWin().event)return inst.getWin().event}return null};TinyMCE_Engine.prototype.unloadHandler=function(){tinyMCE.triggerSave(true,true)};TinyMCE_Engine.prototype.addEventHandlers=function(inst){this.setEventHandlers(inst,1)};TinyMCE_Engine.prototype.setEventHandlers=function(inst,s){var doc=inst.getDoc(),ie,ot,i,f=s?tinyMCE.addEvent:tinyMCE.removeEvent;ie=['keypress','keyup','keydown','click','mouseup','mousedown','controlselect','dblclick'];ot=['keypress','keyup','keydown','click','mouseup','mousedown','focus','blur','dragdrop'];inst.switchSettings();if(tinyMCE.isIE){for(i=0;i<ie.length;i++)f(doc,ie[i],TinyMCE_Engine.prototype._eventPatch)}else{for(i=0;i<ot.length;i++)f(doc,ot[i],tinyMCE.handleEvent);eval('try { doc.designMode = "On"; } catch(e) {}');}};TinyMCE_Engine.prototype.onMouseMove=function(){var inst,lh;if(tinyMCE.lastHover){lh=tinyMCE.lastHover;if(lh.className.indexOf('mceMenu')!=-1)tinyMCE._menuButtonEvent('out',lh);else lh.className=lh.className;tinyMCE.lastHover=null}if(!tinyMCE.hasMouseMoved){inst=tinyMCE.selectedInstance;if(inst.isFocused){inst.undoBookmark=inst.selection.getBookmark();tinyMCE.hasMouseMoved=true}}};TinyMCE_Engine.prototype.cancelEvent=function(e){if(!e)return false;if(tinyMCE.isIE){e.returnValue=false;e.cancelBubble=true}else{e.preventDefault();e.stopPropagation&&e.stopPropagation()}return false};TinyMCE_Engine.prototype.addEvent=function(o,n,h){if(n!='unload'){function clean(){var ex;try{tinyMCE.removeEvent(o,n,h);tinyMCE.removeEvent(window,'unload',clean);o=n=h=null}catch(ex){}}tinyMCE.addEvent(window,'unload',clean)}if(o.attachEvent)o.attachEvent("on"+n,h);else o.addEventListener(n,h,false)};TinyMCE_Engine.prototype.removeEvent=function(o,n,h){if(o.detachEvent)o.detachEvent("on"+n,h);else o.removeEventListener(n,h,false)};TinyMCE_Engine.prototype.addSelectAccessibility=function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w}return false};TinyMCE_Engine.prototype.accessibleEventHandler=function(e){var win=this._win;e=tinyMCE.isIE?win.event:e;var 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};TinyMCE_Engine.prototype._resetIframeHeight=function(){var ife;if(tinyMCE.isRealIE){ife=tinyMCE.selectedInstance.iframeElement;if(ife._oldHeight){ife.style.height=ife._oldHeight;ife.height=ife._oldHeight}}};function TinyMCE_Selection(inst){this.instance=inst};TinyMCE_Selection.prototype={getSelectedHTML:function(){var inst=this.instance;var e,r=this.getRng(),h;if(!r)return null;e=document.createElement("body");if(r.cloneContents)e.appendChild(r.cloneContents());else if(typeof(r.item)!='undefined'||typeof(r.htmlText)!='undefined')e.innerHTML=r.item?r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();h=tinyMCE._cleanupHTML(inst,inst.contentDocument,inst.settings,e,e,false,true,false);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());return h},getSelectedText:function(){var inst=this.instance;var d,r,s,t;if(tinyMCE.isIE){d=inst.getDoc();if(d.selection.type=="Text"){r=d.selection.createRange();t=r.text}else t=''}else{s=this.getSel();if(s&&s.toString)t=s.toString();else t=''}return t},getBookmark:function(simple){var inst=this.instance;var rng=this.getRng();var doc=inst.getDoc(),b=inst.getBody();var sp,le,s,e,nl,i,si,ei,w;var trng,sx,sy,xx=-999999999,vp=inst.getViewPort();sx=vp.left;sy=vp.top;if(tinyMCE.isSafari||tinyMCE.isOpera||simple)return{rng:rng,scrollX:sx,scrollY:sy};if(tinyMCE.isIE){if(rng.item){e=rng.item(0);nl=b.getElementsByTagName(e.nodeName);for(i=0;i<nl.length;i++){if(e==nl[i]){sp=i;break}}return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy}}else{trng=doc.body.createTextRange();trng.moveToElementText(inst.getBody());trng.collapse(true);bp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(true);sp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(false);le=Math.abs(trng.move('character',xx))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy}}}if(tinyMCE.isGecko){s=this.getSel();e=this.getFocusElement();if(!s)return null;if(e&&e.nodeName=='IMG'){return{start:-1,end:-1,index:sp,scrollX:sx,scrollY:sy}}if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=this._getPosText(b,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+s.anchorOffset,end:e.end+s.focusOffset,scrollX:sx,scrollY:sy}}else{e=this._getPosText(b,rng.startContainer,rng.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+rng.startOffset,end:e.end+rng.endOffset,scrollX:sx,scrollY:sy}}}return null},moveToBookmark:function(bookmark){var inst=this.instance;var rng,nl,i,ex,b=inst.getBody(),sd;var doc=inst.getDoc();var win=inst.getWin();var sel=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari){sel.setBaseAndExtent(bookmark.rng.startContainer,bookmark.rng.startOffset,bookmark.rng.endContainer,bookmark.rng.endOffset);return true}if(tinyMCE.isRealIE){if(bookmark.rng){try{bookmark.rng.select()}catch(ex){}return true}win.focus();if(bookmark.tag){rng=b.createControlRange();nl=b.getElementsByTagName(bookmark.tag);if(nl.length>bookmark.index){try{rng.addElement(nl[bookmark.index])}catch(ex){}}}else{try{if(bookmark.start<0)return true;rng=inst.getSel().createRange();rng.moveToElementText(inst.getBody());rng.collapse(true);rng.moveStart('character',bookmark.start);rng.moveEnd('character',bookmark.length)}catch(ex){return true}}rng.select();win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}if(tinyMCE.isGecko||tinyMCE.isOpera){if(bookmark.rng){sel.removeAllRanges();sel.addRange(bookmark.rng)}if(bookmark.start!=-1&&bookmark.end!=-1){try{sd=this._getTextPos(b,bookmark.start,bookmark.end);rng=doc.createRange();rng.setStart(sd.startNode,sd.startOffset);rng.setEnd(sd.endNode,sd.endOffset);sel.removeAllRanges();sel.addRange(rng);win.focus()}catch(ex){}}win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}return false},_getPosText:function(r,sn,en){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d}p+=n.nodeValue?n.nodeValue.length:0}return null},_getTextPos:function(r,sp,ep){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){p+=n.nodeValue?n.nodeValue.length:0;if(p>=sp&&!d.startNode){d.startNode=n;d.startOffset=sp-(p-n.nodeValue.length)}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-n.nodeValue.length);return d}}return null},selectNode:function(node,collapse,select_text_node,to_start){var inst=this.instance,sel,rng,nodes;if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRealIE){rng=inst.getDoc().body.createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select()}catch(e){}}else{sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.collapseToStart();else sel.collapseToEnd()}this.scrollToNode(node);return}rng=inst.getDoc().createRange();if(select_text_node){nodes=tinyMCE.getNodeTree(node,new Array(),3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node)}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length)}else rng.collapse(to_start)}sel.removeAllRanges();sel.addRange(rng)}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node},scrollToNode:function(node){var inst=this.instance,w=inst.getWin(),vp=inst.getViewPort(),pos=tinyMCE.getAbsPosition(node),cvp,p,cwin;if(pos.absLeft<vp.left||pos.absLeft>vp.left+vp.width||pos.absTop<vp.top||pos.absTop>vp.top+(vp.height-25))w.scrollTo(pos.absLeft,pos.absTop-vp.height+25);if(inst.settings.auto_resize){cwin=inst.getContainerWin();cvp=tinyMCE.getViewPort(cwin);p=this.getAbsPosition(node);if(p.absLeft<cvp.left||p.absLeft>cvp.left+cvp.width||p.absTop<cvp.top||p.absTop>cvp.top+cvp.height)cwin.scrollTo(p.absLeft,p.absTop-cvp.height+25)}},getAbsPosition:function(n){var pos=tinyMCE.getAbsPosition(n),ipos=tinyMCE.getAbsPosition(this.instance.iframeElement);return{absLeft:ipos.absLeft+pos.absLeft,absTop:ipos.absTop+pos.absTop}},getSel:function(){var inst=this.instance;if(tinyMCE.isRealIE)return inst.getDoc().selection;return inst.contentWindow.getSelection()},getRng:function(){var s=this.getSel();if(s==null)return null;if(tinyMCE.isRealIE)return s.createRange();if(tinyMCE.isSafari&&!s.getRangeAt)return''+window.getSelection();return s.getRangeAt(0)},getFocusElement:function(){var inst=this.instance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.selection.createRange();elm=rng.item?rng.item(0):rng.parentElement()}else{if(!tinyMCE.isSafari&&inst.isHidden())return inst.getBody();sel=this.getSel();rng=this.getRng();if(!sel||!rng)return null;elm=rng.commonAncestorContainer;if(!rng.collapsed){if(rng.startContainer==rng.endContainer){if(rng.startOffset-rng.endOffset<2){if(rng.startContainer.hasChildNodes())elm=rng.startContainer.childNodes[rng.startOffset]}}}elm=tinyMCE.getParentElement(elm);}return elm}};function TinyMCE_UndoRedo(inst){this.instance=inst;this.undoLevels=new Array();this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true};TinyMCE_UndoRedo.prototype={add:function(l){var b,customUndoLevels,newHTML,inst=this.instance,i,ul,ur;if(l){this.undoLevels[this.undoLevels.length]=l;return true}if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;if(tinyMCE.typingUndoIndex!=-1)tinyMCE.undoIndex=tinyMCE.typingUndoIndex}newHTML=tinyMCE.trim(inst.getBody().innerHTML);if(this.undoLevels[this.undoIndex]&&newHTML!=this.undoLevels[this.undoIndex].content){tinyMCE.dispatchCallback(inst,'onchange_callback','onChange',inst);customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(i=0;i<this.undoLevels.length-1;i++)this.undoLevels[i]=this.undoLevels[i+1];this.undoLevels.length--;this.undoIndex--;}b=inst.undoBookmark;if(!b)b=inst.selection.getBookmark();this.undoIndex++;this.undoLevels[this.undoIndex]={content:newHTML,bookmark:b};ul=tinyMCE.undoLevels;for(i=tinyMCE.undoIndex+1;i<ul.length;i++){ur=ul[i].undoRedo;if(ur.undoIndex==ur.undoLevels.length-1)ur.undoIndex--;ur.undoLevels.length--}tinyMCE.undoLevels[tinyMCE.undoIndex++]=inst;tinyMCE.undoLevels.length=tinyMCE.undoIndex;this.undoLevels.length=this.undoIndex+1;return true}return false},undo:function(){var inst=this.instance;if(this.undoIndex>0){this.undoIndex--;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}},redo:function(){var inst=this.instance;tinyMCE.execCommand("mceEndTyping");if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}tinyMCE.triggerNodeChange()}};var TinyMCE_ForceParagraphs={_insertPara:function(inst,e){var doc=inst.getDoc(),sel=inst.getSel(),body=inst.getBody(),win=inst.contentWindow,rng=sel.getRangeAt(0);var rootElm=doc.documentElement,blockName="P",startNode,endNode,startBlock,endBlock;var rngBefore,rngAfter,direct,startNode,startOffset,endNode,endOffset,b=tinyMCE.isOpera?inst.selection.getBookmark():null;var paraBefore,paraAfter,startChop,endChop,contents;function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()==""}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;var nodes=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false}return true}rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;startNode=direct?sel.anchorNode:sel.focusNode;startOffset=direct?sel.anchorOffset:sel.focusOffset;endNode=direct?sel.focusNode:sel.anchorNode;endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;startBlock=inst.getParentBlockElement(startNode);endBlock=inst.getParentBlockElement(endNode);if(startBlock&&new RegExp('absolute|relative|static','gi').test(startBlock.style.position))startBlock=null;if(endBlock&&new RegExp('absolute|relative|static','gi').test(endBlock.style.position))endBlock=null;if(startBlock!=null){blockName=startBlock.nodeName;if(blockName=="TD"||blockName=="TABLE"||(blockName=="DIV"&&new RegExp('left|right','gi').test(startBlock.style.cssFloat)))blockName="P"}if(tinyMCE.getParentElement(startBlock,"OL,UL",null,body)!=null)return false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");startChop=startNode;endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node}while((node=node.previousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startChop.nodeName=="TD")startChop=startChop.firstChild;if(endChop.nodeName=="TD")endChop=endChop.lastChild;if(startBlock==null){rng.deleteContents();if(!tinyMCE.isSafari)sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);if(endChop.nodeName!="#text"&&endChop.nodeName!="BODY")rngBefore.setEndAfter(endChop);contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName=="BODY"))paraAfter.innerHTML=contents.firstChild.innerHTML;else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();if(tinyMCE.isOpera){paraBefore.normalize();rngBefore.insertNode(paraBefore);paraAfter.normalize();rngBefore.insertNode(paraAfter)}else{paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore)}}else{body.innerHTML="<"+blockName+"> </"+blockName+"><"+blockName+"> </"+blockName+">";paraAfter=body.childNodes[1]}inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode)}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset)}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();if(tinyMCE.isOpera){rng.insertNode(paraBefore);rng.insertNode(paraAfter)}else{rng.insertNode(paraAfter);rng.insertNode(paraBefore)}paraAfter.normalize();paraBefore.normalize();inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true},_handleBackSpace:function(inst){var r=inst.getRng(),sn=r.startContainer,nv,s=false;if(sn&&sn.nextSibling&&sn.nextSibling.nodeName=="BR"&&sn.parentNode.nodeName!="BODY"){nv=sn.nodeValue;if(nv!=null&&r.startOffset==nv.length)sn.nextSibling.parentNode.removeChild(sn.nextSibling)}if(inst.settings.auto_resize)inst.resizeToContent();return s}};function TinyMCE_Layer(id,bm){this.id=id;this.blockerElement=null;this.events=false;this.element=null;this.blockMode=typeof(bm)!='undefined'?bm:true;this.doc=document};TinyMCE_Layer.prototype={moveRelativeTo:function(re,p){var rep=this.getAbsPosition(re);var w=parseInt(re.offsetWidth);var h=parseInt(re.offsetHeight);var e=this.getElement();var ew=parseInt(e.offsetWidth);var eh=parseInt(e.offsetHeight);var x,y;switch(p){case"tl":x=rep.absLeft;y=rep.absTop;break;case"tr":x=rep.absLeft+w;y=rep.absTop;break;case"bl":x=rep.absLeft;y=rep.absTop+h;break;case"br":x=rep.absLeft+w;y=rep.absTop+h;break;case"cc":x=rep.absLeft+(w/ 2) - (ew /2);y=rep.absTop+(h/ 2) - (eh /2);break}this.moveTo(x,y)},moveBy:function(x,y){var e=this.getElement();this.moveTo(parseInt(e.style.left)+x,parseInt(e.style.top)+y)},moveTo:function(x,y){var e=this.getElement();e.style.left=x+"px";e.style.top=y+"px";this.updateBlocker()},resizeBy:function(w,h){var e=this.getElement();this.resizeTo(parseInt(e.style.width)+w,parseInt(e.style.height)+h)},resizeTo:function(w,h){var e=this.getElement();if(w!=null)e.style.width=w+"px";if(h!=null)e.style.height=h+"px";this.updateBlocker()},show:function(){this.getElement().style.display='block';this.updateBlocker()},hide:function(){this.getElement().style.display='none';this.updateBlocker()},isVisible:function(){return this.getElement().style.display=='block'},getElement:function(){if(!this.element)this.element=this.doc.getElementById(this.id);return this.element},setBlockMode:function(s){this.blockMode=s},updateBlocker:function(){var e,b,x,y,w,h;b=this.getBlocker();if(b){if(this.blockMode){e=this.getElement();x=this.parseInt(e.style.left);y=this.parseInt(e.style.top);w=this.parseInt(e.offsetWidth);h=this.parseInt(e.offsetHeight);b.style.left=x+'px';b.style.top=y+'px';b.style.width=w+'px';b.style.height=h+'px';b.style.display=e.style.display}else b.style.display='none'}},getBlocker:function(){var d,b;if(!this.blockerElement&&this.blockMode){d=this.doc;b=d.getElementById(this.id+"_blocker");if(!b){b=d.createElement("iframe");b.setAttribute('id',this.id+"_blocker");b.style.cssText='display: none; position: absolute; left: 0; top: 0';b.src='javascript:false;';b.frameBorder='0';b.scrolling='no';d.body.appendChild(b)}this.blockerElement=b}return this.blockerElement},getAbsPosition:function(n){var p={absLeft:0,absTop:0};while(n){p.absLeft+=n.offsetLeft;p.absTop+=n.offsetTop;n=n.offsetParent}return p},create:function(n,c,p,h){var d=this.doc,e=d.createElement(n);e.setAttribute('id',this.id);if(c)e.className=c;if(!p)p=d.body;if(h)e.innerHTML=h;p.appendChild(e);return this.element=e},exists:function(){return this.doc.getElementById(this.id)!=null},parseInt:function(s){if(s==null||s=='')return 0;return parseInt(s)}};function TinyMCE_Menu(){var id;if(typeof(tinyMCE.menuCounter)=="undefined")tinyMCE.menuCounter=0;id="mc_menu_"+tinyMCE.menuCounter++;TinyMCE_Layer.call(this,id,true);this.id=id;this.items=new Array();this.needsUpdate=true};TinyMCE_Menu.prototype=tinyMCE.extend(TinyMCE_Layer.prototype,{init:function(s){var n;this.settings={separator_class:'mceMenuSeparator',title_class:'mceMenuTitle',disabled_class:'mceMenuDisabled',menu_class:'mceMenu',drop_menu:true};for(n in s)this.settings[n]=s[n];this.create('div',this.settings.menu_class)},clear:function(){this.items=new Array()},addTitle:function(t){this.add({type:'title',text:t})},addDisabled:function(t){this.add({type:'disabled',text:t})},addSeparator:function(){this.add({type:'separator'})},addItem:function(t,js){this.add({text:t,js:js})},add:function(mi){this.items[this.items.length]=mi;this.needsUpdate=true},update:function(){var e=this.getElement(),h='',i,t,m=this.items,s=this.settings;if(this.settings.drop_menu)h+='<span class="mceMenuLine"></span>';h+='<table border="0" cellpadding="0" cellspacing="0">';for(i=0;i<m.length;i++){t=tinyMCE.xmlEncode(m[i].text);c=m[i].class_name?' class="'+m[i].class_name+'"':'';switch(m[i].type){case'separator':h+='<tr class="'+s.separator_class+'"><td>';break;case'title':h+='<tr class="'+s.title_class+'"><td><span'+c+'>'+t+'</span>';break;case'disabled':h+='<tr class="'+s.disabled_class+'"><td><span'+c+'>'+t+'</span>';break;default:h+='<tr><td><a href="#" onclick="return tinyMCE.cancelEvent(event);" onmousedown="return tinyMCE.cancelEvent(event);" onmouseup="'+tinyMCE.xmlEncode(m[i].js)+';return tinyMCE.cancelEvent(event);"><span'+c+'>'+t+'</span></a>'}h+='</td></tr>'}h+='</table>';e.innerHTML=h;this.needsUpdate=false;this.updateBlocker()},show:function(){var nl,i;if(tinyMCE.lastMenu==this)return;if(this.needsUpdate)this.update();if(tinyMCE.lastMenu&&tinyMCE.lastMenu!=this)tinyMCE.lastMenu.hide();TinyMCE_Layer.prototype.show.call(this);if(!tinyMCE.isOpera){}tinyMCE.lastMenu=this}});if(!Function.prototype.call){Function.prototype.call=function(){var a=arguments,s=a[0],i,as='',r,o;for(i=1;i<a.length;i++)as+=(i>1?',':'')+'a['+i+']';o=s._fu;s._fu=this;r=eval('s._fu('+as+')');s._fu=o;return r}};TinyMCE_Engine.prototype.debug=function(){var m="",a,i,l=tinyMCE.log.length;for(i=0,a=this.debug.arguments;i<a.length;i++){m+=a[i];if(i<a.length-1)m+=', '}if(l<1000)tinyMCE.log[l]="[debug] "+m}; |
| | |
| | |
|
| | |
|
| | | // Some global instances, this will be filled later
|
| | | var tinyMCE = null, tinyMCELang = null;
|
| | |
|
| | |
|
| | | function TinyMCE_Popup() {
|
| | | };
|
| | |
|
| | | TinyMCE_Popup.prototype = {
|
| | | findWin : function(w) {
|
| | | var c;
|
| | |
|
| | | TinyMCE_Popup.prototype.init = function() {
|
| | | var win = window.opener ? window.opener : window.dialogArguments;
|
| | | var inst;
|
| | | // Check parents
|
| | | c = w;
|
| | | while (c && (c = c.parent) != null) {
|
| | | if (typeof(c.tinyMCE) != "undefined")
|
| | | return c;
|
| | | }
|
| | |
|
| | | if (!win) {
|
| | | // Try parent
|
| | | win = parent.parent;
|
| | | // Check openers
|
| | | c = w;
|
| | | while (c && (c = c.opener) != null) {
|
| | | if (typeof(c.tinyMCE) != "undefined")
|
| | | return c;
|
| | | }
|
| | |
|
| | | // Try top
|
| | | if (typeof(win.tinyMCE) == "undefined")
|
| | | win = top;
|
| | | }
|
| | | if (typeof(top.tinyMCE) != "undefined")
|
| | | return top;
|
| | |
|
| | | window.opener = win;
|
| | | this.windowOpener = win;
|
| | | this.onLoadEval = "";
|
| | | return null;
|
| | | },
|
| | |
|
| | | // Setup parent references
|
| | | tinyMCE = win.tinyMCE;
|
| | | tinyMCELang = win.tinyMCELang;
|
| | | init : function() {
|
| | | var win = window.opener ? window.opener : window.dialogArguments, c;
|
| | | var inst;
|
| | |
|
| | | if (!tinyMCE) {
|
| | | alert("tinyMCE object reference not found from popup.");
|
| | | return;
|
| | | }
|
| | | if (!win)
|
| | | win = this.findWin(window);
|
| | |
|
| | | inst = tinyMCE.selectedInstance;
|
| | | this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
|
| | | this.storeSelection = (tinyMCE.isMSIE && !tinyMCE.isOpera) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);
|
| | |
|
| | | if (this.isWindow)
|
| | | window.focus();
|
| | |
|
| | | // Store selection
|
| | | if (this.storeSelection)
|
| | | inst.selectionBookmark = inst.selection.getBookmark(true);
|
| | |
|
| | | // Setup dir
|
| | | if (tinyMCELang['lang_dir'])
|
| | | document.dir = tinyMCELang['lang_dir'];
|
| | |
|
| | | // Setup title
|
| | | var re = new RegExp('{|\\\$|}', 'g');
|
| | | var title = document.title.replace(re, "");
|
| | | if (typeof tinyMCELang[title] != "undefined") {
|
| | | var divElm = document.createElement("div");
|
| | | divElm.innerHTML = tinyMCELang[title];
|
| | | document.title = divElm.innerHTML;
|
| | |
|
| | | if (tinyMCE.setWindowTitle != null)
|
| | | tinyMCE.setWindowTitle(window, divElm.innerHTML);
|
| | | }
|
| | |
|
| | | // Output Popup CSS class
|
| | | document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');
|
| | |
|
| | | tinyMCE.addEvent(window, "load", this.onLoad);
|
| | | };
|
| | |
|
| | |
|
| | | TinyMCE_Popup.prototype.onLoad = function() {
|
| | | var dir, i, elms, body = document.body;
|
| | |
|
| | | if (tinyMCE.getWindowArg('mce_replacevariables', true))
|
| | | body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
|
| | |
|
| | | dir = tinyMCE.selectedInstance.settings['directionality'];
|
| | | if (dir == "rtl" && document.forms && document.forms.length > 0) {
|
| | | elms = document.forms[0].elements;
|
| | | for (i=0; i<elms.length; i++) {
|
| | | if ((elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr")
|
| | | elms[i].dir = dir;
|
| | | if (!win) {
|
| | | alert("tinyMCE object reference not found from popup.");
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | if (body.style.display == 'none')
|
| | | body.style.display = 'block';
|
| | | window.opener = win;
|
| | | this.windowOpener = win;
|
| | | this.onLoadEval = "";
|
| | |
|
| | | // Execute real onload (Opera fix)
|
| | | if (tinyMCEPopup.onLoadEval != "")
|
| | | eval(tinyMCEPopup.onLoadEval);
|
| | | };
|
| | | // Setup parent references
|
| | | tinyMCE = win.tinyMCE;
|
| | | tinyMCELang = win.tinyMCELang;
|
| | |
|
| | | inst = tinyMCE.selectedInstance;
|
| | | this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
|
| | | this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true);
|
| | |
|
| | | TinyMCE_Popup.prototype.executeOnLoad = function(str) {
|
| | | if (tinyMCE.isOpera)
|
| | | this.onLoadEval = str;
|
| | | else
|
| | | eval(str);
|
| | | };
|
| | | if (this.isWindow)
|
| | | window.focus();
|
| | |
|
| | | // Store selection
|
| | | if (this.storeSelection)
|
| | | inst.selectionBookmark = inst.selection.getBookmark(true);
|
| | |
|
| | | TinyMCE_Popup.prototype.resizeToInnerSize = function() {
|
| | | // Netscape 7.1 workaround
|
| | | if (this.isWindow && tinyMCE.isNS71) {
|
| | | window.resizeBy(0, 10);
|
| | | return;
|
| | | }
|
| | | // Setup dir
|
| | | if (tinyMCELang['lang_dir'])
|
| | | document.dir = tinyMCELang['lang_dir'];
|
| | |
|
| | | if (this.isWindow) {
|
| | | var doc = document;
|
| | | var body = doc.body;
|
| | | var oldMargin, wrapper, iframe, nodes, dx, dy;
|
| | | // Setup title
|
| | | var re = new RegExp('{|\\\$|}', 'g');
|
| | | var title = document.title.replace(re, "");
|
| | | if (typeof tinyMCELang[title] != "undefined") {
|
| | | var divElm = document.createElement("div");
|
| | | divElm.innerHTML = tinyMCELang[title];
|
| | | document.title = divElm.innerHTML;
|
| | |
|
| | | if (tinyMCE.setWindowTitle != null)
|
| | | tinyMCE.setWindowTitle(window, divElm.innerHTML);
|
| | | }
|
| | |
|
| | | // Output Popup CSS class
|
| | | document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">');
|
| | |
|
| | | if (tinyMCE.getParam("popups_css_add")) {
|
| | | c = tinyMCE.getParam("popups_css_add");
|
| | |
|
| | | // Is relative
|
| | | if (c.indexOf('://') == -1 && c.charAt(0) != '/')
|
| | | c = tinyMCE.documentBasePath + "/" + c;
|
| | |
|
| | | document.write('<link href="' + c + '" rel="stylesheet" type="text/css">');
|
| | | }
|
| | |
|
| | | tinyMCE.addEvent(window, "load", this.onLoad);
|
| | | },
|
| | |
|
| | | onLoad : function() {
|
| | | var dir, i, elms, body = document.body;
|
| | |
|
| | | if (tinyMCE.getWindowArg('mce_replacevariables', true))
|
| | | body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs);
|
| | |
|
| | | dir = tinyMCE.selectedInstance.settings['directionality'];
|
| | | if (dir == "rtl" && document.forms && document.forms.length > 0) {
|
| | | elms = document.forms[0].elements;
|
| | | for (i=0; i<elms.length; i++) {
|
| | | if ((elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr")
|
| | | elms[i].dir = dir;
|
| | | }
|
| | | }
|
| | |
|
| | | if (body.style.display == 'none')
|
| | | body.style.display = 'block';
|
| | |
|
| | | // Remove margin
|
| | | oldMargin = body.style.margin;
|
| | | body.style.margin = '0';
|
| | | // Execute real onload (Opera fix)
|
| | | if (tinyMCEPopup.onLoadEval != "")
|
| | | eval(tinyMCEPopup.onLoadEval);
|
| | | },
|
| | |
|
| | | // Create wrapper
|
| | | wrapper = doc.createElement("div");
|
| | | wrapper.id = 'mcBodyWrapper';
|
| | | wrapper.style.display = 'none';
|
| | | wrapper.style.margin = '0';
|
| | | executeOnLoad : function(str) {
|
| | | if (tinyMCE.isOpera)
|
| | | this.onLoadEval = str;
|
| | | else
|
| | | eval(str);
|
| | | },
|
| | |
|
| | | // Wrap body elements
|
| | | nodes = doc.body.childNodes;
|
| | | for (var i=nodes.length-1; i>=0; i--) {
|
| | | if (wrapper.hasChildNodes())
|
| | | wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
|
| | | else
|
| | | wrapper.appendChild(nodes[i].cloneNode(true));
|
| | |
|
| | | nodes[i].parentNode.removeChild(nodes[i]);
|
| | | resizeToInnerSize : function() {
|
| | | // Netscape 7.1 workaround
|
| | | if (this.isWindow && tinyMCE.isNS71) {
|
| | | window.resizeBy(0, 10);
|
| | | return;
|
| | | }
|
| | |
|
| | | // Add wrapper
|
| | | doc.body.appendChild(wrapper);
|
| | | if (this.isWindow) {
|
| | | var doc = document;
|
| | | var body = doc.body;
|
| | | var oldMargin, wrapper, iframe, nodes, dx, dy;
|
| | |
|
| | | // Create iframe
|
| | | iframe = document.createElement("iframe");
|
| | | iframe.id = "mcWinIframe";
|
| | | iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings['default_document'];
|
| | | iframe.width = "100%";
|
| | | iframe.height = "100%";
|
| | | iframe.style.margin = '0';
|
| | | if (body.style.display == 'none')
|
| | | body.style.display = 'block';
|
| | |
|
| | | // Add iframe
|
| | | doc.body.appendChild(iframe);
|
| | | // Remove margin
|
| | | oldMargin = body.style.margin;
|
| | | body.style.margin = '0';
|
| | |
|
| | | // Measure iframe
|
| | | iframe = document.getElementById('mcWinIframe');
|
| | | dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
|
| | | dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;
|
| | | // Create wrapper
|
| | | wrapper = doc.createElement("div");
|
| | | wrapper.id = 'mcBodyWrapper';
|
| | | wrapper.style.display = 'none';
|
| | | wrapper.style.margin = '0';
|
| | |
|
| | | // Resize window
|
| | | // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
|
| | | window.resizeBy(dx, dy);
|
| | | // Wrap body elements
|
| | | nodes = doc.body.childNodes;
|
| | | for (var i=nodes.length-1; i>=0; i--) {
|
| | | if (wrapper.hasChildNodes())
|
| | | wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild);
|
| | | else
|
| | | wrapper.appendChild(nodes[i].cloneNode(true));
|
| | |
|
| | | // Hide iframe and show wrapper
|
| | | body.style.margin = oldMargin;
|
| | | iframe.style.display = 'none';
|
| | | wrapper.style.display = 'block';
|
| | | }
|
| | | };
|
| | | nodes[i].parentNode.removeChild(nodes[i]);
|
| | | }
|
| | |
|
| | | // Add wrapper
|
| | | doc.body.appendChild(wrapper);
|
| | |
|
| | | TinyMCE_Popup.prototype.resizeToContent = function() {
|
| | | var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
|
| | | var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
|
| | | // Create iframe
|
| | | iframe = document.createElement("iframe");
|
| | | iframe.id = "mcWinIframe";
|
| | | iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings['default_document'];
|
| | | iframe.width = "100%";
|
| | | iframe.height = "100%";
|
| | | iframe.style.margin = '0';
|
| | |
|
| | | if (isOpera)
|
| | | return;
|
| | | // Add iframe
|
| | | doc.body.appendChild(iframe);
|
| | |
|
| | | if (isMSIE) {
|
| | | try { window.resizeTo(10, 10); } catch (e) {}
|
| | | // Measure iframe
|
| | | iframe = document.getElementById('mcWinIframe');
|
| | | dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth;
|
| | | dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight;
|
| | |
|
| | | var elm = document.body;
|
| | | var width = elm.offsetWidth;
|
| | | var height = elm.offsetHeight;
|
| | | var dx = (elm.scrollWidth - width) + 4;
|
| | | var dy = elm.scrollHeight - height;
|
| | | // Resize window
|
| | | // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy);
|
| | | window.resizeBy(dx, dy);
|
| | |
|
| | | try { window.resizeBy(dx, dy); } catch (e) {}
|
| | | } else {
|
| | | window.scrollBy(1000, 1000);
|
| | | if (window.scrollX > 0 || window.scrollY > 0) {
|
| | | window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
|
| | | window.sizeToContent();
|
| | | window.scrollTo(0, 0);
|
| | | var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
|
| | | var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
|
| | | window.moveTo(x, y);
|
| | | // Hide iframe and show wrapper
|
| | | body.style.margin = oldMargin;
|
| | | iframe.style.display = 'none';
|
| | | wrapper.style.display = 'block';
|
| | | }
|
| | | }
|
| | | };
|
| | | },
|
| | |
|
| | | resizeToContent : function() {
|
| | | var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
|
| | | var isOpera = (navigator.userAgent.indexOf("Opera") != -1);
|
| | |
|
| | | TinyMCE_Popup.prototype.getWindowArg = function(name, default_value) {
|
| | | return tinyMCE.getWindowArg(name, default_value);
|
| | | };
|
| | | if (isOpera)
|
| | | return;
|
| | |
|
| | | if (isMSIE) {
|
| | | try { window.resizeTo(10, 10); } catch (e) {}
|
| | |
|
| | | TinyMCE_Popup.prototype.restoreSelection = function() {
|
| | | if (this.storeSelection) {
|
| | | var elm = document.body;
|
| | | var width = elm.offsetWidth;
|
| | | var height = elm.offsetHeight;
|
| | | var dx = (elm.scrollWidth - width) + 4;
|
| | | var dy = elm.scrollHeight - height;
|
| | |
|
| | | try { window.resizeBy(dx, dy); } catch (e) {}
|
| | | } else {
|
| | | window.scrollBy(1000, 1000);
|
| | | if (window.scrollX > 0 || window.scrollY > 0) {
|
| | | window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
|
| | | window.sizeToContent();
|
| | | window.scrollTo(0, 0);
|
| | | var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
|
| | | var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
|
| | | window.moveTo(x, y);
|
| | | }
|
| | | }
|
| | | },
|
| | |
|
| | | getWindowArg : function(name, default_value) {
|
| | | return tinyMCE.getWindowArg(name, default_value);
|
| | | },
|
| | |
|
| | | restoreSelection : function() {
|
| | | if (this.storeSelection) {
|
| | | var inst = tinyMCE.selectedInstance;
|
| | |
|
| | | inst.getWin().focus();
|
| | |
|
| | | if (inst.selectionBookmark)
|
| | | inst.selection.moveToBookmark(inst.selectionBookmark);
|
| | | }
|
| | | },
|
| | |
|
| | | execCommand : function(command, user_interface, value) {
|
| | | var inst = tinyMCE.selectedInstance;
|
| | |
|
| | | inst.getWin().focus();
|
| | | this.restoreSelection();
|
| | | inst.execCommand(command, user_interface, value);
|
| | |
|
| | | if (inst.selectionBookmark)
|
| | | inst.selection.moveToBookmark(inst.selectionBookmark);
|
| | | // Store selection
|
| | | if (this.storeSelection)
|
| | | inst.selectionBookmark = inst.selection.getBookmark(true);
|
| | | },
|
| | |
|
| | | close : function() {
|
| | | tinyMCE.closeWindow(window);
|
| | | },
|
| | |
|
| | | pickColor : function(e, element_id) {
|
| | | tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
|
| | | element_id : element_id,
|
| | | document : document,
|
| | | window : window,
|
| | | store_selection : false
|
| | | });
|
| | | },
|
| | |
|
| | | openBrowser : function(element_id, type, option) {
|
| | | var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
|
| | | var url = document.getElementById(element_id).value;
|
| | |
|
| | | tinyMCE.setWindowArg("window", window);
|
| | | tinyMCE.setWindowArg("document", document);
|
| | |
|
| | | // Call to external callback
|
| | | if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
|
| | | alert("Callback function: " + cb + " could not be found.");
|
| | | else
|
| | | eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
|
| | | },
|
| | |
|
| | | importClass : function(c) {
|
| | | window[c] = function() {};
|
| | |
|
| | | for (var n in window.opener[c].prototype)
|
| | | window[c].prototype[n] = window.opener[c].prototype[n];
|
| | |
|
| | | window[c].constructor = window.opener[c].constructor;
|
| | | }
|
| | | };
|
| | |
|
| | |
|
| | | TinyMCE_Popup.prototype.execCommand = function(command, user_interface, value) {
|
| | | var inst = tinyMCE.selectedInstance;
|
| | |
|
| | | this.restoreSelection();
|
| | | inst.execCommand(command, user_interface, value);
|
| | |
|
| | | // Store selection
|
| | | if (this.storeSelection)
|
| | | inst.selectionBookmark = inst.selection.getBookmark(true);
|
| | | };
|
| | |
|
| | |
|
| | | TinyMCE_Popup.prototype.close = function() {
|
| | | tinyMCE.closeWindow(window);
|
| | | };
|
| | |
|
| | |
|
| | | TinyMCE_Popup.prototype.pickColor = function(e, element_id) {
|
| | | tinyMCE.selectedInstance.execCommand('mceColorPicker', true, {
|
| | | element_id : element_id,
|
| | | document : document,
|
| | | window : window,
|
| | | store_selection : false
|
| | | });
|
| | | };
|
| | |
|
| | |
|
| | | TinyMCE_Popup.prototype.openBrowser = function(element_id, type, option) {
|
| | | var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
|
| | | var url = document.getElementById(element_id).value;
|
| | |
|
| | | tinyMCE.setWindowArg("window", window);
|
| | | tinyMCE.setWindowArg("document", document);
|
| | |
|
| | | // Call to external callback
|
| | | if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined")
|
| | | alert("Callback function: " + cb + " could not be found.");
|
| | | else
|
| | | eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);");
|
| | | };
|
| | |
|
| | |
|
| | | TinyMCE_Popup.prototype.importClass = function(c) {
|
| | | window[c] = function() {};
|
| | |
|
| | | for (var n in window.opener[c].prototype)
|
| | | window[c].prototype[n] = window.opener[c].prototype[n];
|
| | |
|
| | | window[c].constructor = window.opener[c].constructor;
|
| | | };
|
| | | };
|
| | |
|
| | | // Setup global instance
|
| | | var tinyMCEPopup = new TinyMCE_Popup();
|
| | |
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */
|
| | |
|
| | | function TinyMCE_Engine() {
|
| | | var ua;
|
| | |
|
| | | this.majorVersion = "2";
|
| | | this.minorVersion = "0.6.1";
|
| | | this.releaseDate = "2006-05-04";
|
| | | this.minorVersion = "0.8";
|
| | | this.releaseDate = "2006-10-23";
|
| | |
|
| | | this.instances = new Array();
|
| | | this.switchClassCache = new Array();
|
| | |
| | | this.configs = new Array();
|
| | | this.currentConfig = 0;
|
| | | this.eventHandlers = new Array();
|
| | | this.log = new Array();
|
| | | this.undoLevels = [];
|
| | | this.undoIndex = 0;
|
| | | this.typingUndoIndex = -1;
|
| | |
|
| | | // Browser check
|
| | | var ua = navigator.userAgent;
|
| | | ua = navigator.userAgent;
|
| | | this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
|
| | | this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1);
|
| | | this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
|
| | | this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);
|
| | | this.isGecko = ua.indexOf('Gecko') != -1;
|
| | | this.isSafari = ua.indexOf('Safari') != -1;
|
| | | this.isOpera = ua.indexOf('Opera') != -1;
|
| | |
| | | this.isSafari = false;
|
| | | }
|
| | |
|
| | | this.isIE = this.isMSIE;
|
| | | this.isRealIE = this.isMSIE && !this.isOpera;
|
| | |
|
| | | // TinyMCE editor id instance counter
|
| | | this.idCounter = 0;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype = {
|
| | | init : function(settings) {
|
| | | var theme;
|
| | | var theme, nl, baseHREF = "", i;
|
| | |
|
| | | // IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry.
|
| | | if (this.isMSIE5_0)
|
| | | return;
|
| | |
|
| | | this.settings = settings;
|
| | |
|
| | |
| | | // Get script base path
|
| | | if (!tinyMCE.baseURL) {
|
| | | var elements = document.getElementsByTagName('script');
|
| | |
|
| | | // If base element found, add that infront of baseURL
|
| | | nl = document.getElementsByTagName('base');
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (nl[i].href)
|
| | | baseHREF = nl[i].href;
|
| | | }
|
| | |
|
| | | for (var i=0; i<elements.length; i++) {
|
| | | if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js") != -1 || elements[i].src.indexOf("tiny_mce_dev.js") != -1 || elements[i].src.indexOf("tiny_mce_src.js") != -1 || elements[i].src.indexOf("tiny_mce_gzip") != -1)) {
|
| | |
| | | if (settings.exec_mode == "src" || settings.exec_mode == "normal")
|
| | | tinyMCE.srcMode = settings.exec_mode == "src" ? '_src' : '';
|
| | |
|
| | | tinyMCE.baseURL = src;
|
| | | // Force it absolute if page has a base href
|
| | | if (baseHREF != "" && src.indexOf('://') == -1)
|
| | | tinyMCE.baseURL = baseHREF + src;
|
| | | else
|
| | | tinyMCE.baseURL = src;
|
| | |
|
| | | break;
|
| | | }
|
| | | }
|
| | |
| | | this._def("textarea_trigger", "mce_editable");
|
| | | this._def("editor_selector", "");
|
| | | this._def("editor_deselector", "mceNoEditor");
|
| | | this._def("valid_elements", "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],-td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang]");
|
| | | this._def("valid_elements", "+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");
|
| | | this._def("extended_valid_elements", "");
|
| | | this._def("invalid_elements", "");
|
| | | this._def("encoding", "");
|
| | |
| | | this._def("custom_undo_redo_levels", -1);
|
| | | this._def("custom_undo_redo_keyboard_shortcuts", true);
|
| | | this._def("custom_undo_redo_restore_selection", true);
|
| | | this._def("custom_undo_redo_global", false);
|
| | | this._def("verify_html", true);
|
| | | this._def("apply_source_formatting", false);
|
| | | this._def("directionality", "ltr");
|
| | |
| | | this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml');
|
| | | this._def("hidden_tab_class", '');
|
| | | this._def("display_tab_class", '');
|
| | | this._def("gecko_spellcheck", false);
|
| | |
|
| | | // Force strict loading mode to false on non Gecko browsers
|
| | | if (this.isMSIE && !this.isOpera)
|
| | |
| | | return;
|
| | |
|
| | | // If not super absolute make it so
|
| | | var baseHREF = tinyMCE.settings['document_base_url'];
|
| | | baseHREF = tinyMCE.settings['document_base_url'];
|
| | | var h = document.location.href;
|
| | | var p = h.indexOf('://');
|
| | | if (p > 0 && document.location.protocol != "file:") {
|
| | |
| | | this.settings['base_href'] = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/";
|
| | |
|
| | | theme = this.settings['theme'];
|
| | | this.blockRegExp = new RegExp("^(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|blockquote|center|dl|dt|dd|dir|fieldset|form|noscript|noframes|menu|isindex|samp)$", "i");
|
| | | this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';
|
| | | this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';
|
| | | this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';
|
| | | this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i");
|
| | | this.posKeyCodes = new Array(13,45,36,35,33,34,37,38,39,40);
|
| | | this.uniqueURL = 'javascript:TINYMCE_UNIQUEURL();'; // Make unique URL non real URL
|
| | | this.uniqueTag = '<div id="mceTMPElement" style="display: none">TMP</div>';
|
| | |
| | | // Theme url
|
| | | this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme;
|
| | |
|
| | | if (!tinyMCE.isMSIE)
|
| | | if (!tinyMCE.isIE || tinyMCE.isOpera)
|
| | | this.settings['force_br_newlines'] = false;
|
| | |
|
| | | if (tinyMCE.getParam("popups_css", false)) {
|
| | |
| | | this.settings['editor_css'] = this.documentBasePath + "/" + cssPath;
|
| | | else
|
| | | this.settings['editor_css'] = cssPath;
|
| | | } else
|
| | | this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";
|
| | | } else {
|
| | | if (this.settings.editor_css != '')
|
| | | this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css";
|
| | | }
|
| | |
|
| | | if (tinyMCE.settings['debug']) {
|
| | | var msg = "Debug: \n";
|
| | |
| | |
|
| | | // Only do this once
|
| | | if (this.configs.length == 0) {
|
| | | // Is Safari enabled
|
| | | if (this.isSafari && this.getParam('safari_warning', false))
|
| | | alert("Safari support is very limited and should be considered experimental.\nSo there is no need to even submit bugreports on this early version.\nYou can disable this message by setting: safari_warning option to false");
|
| | |
|
| | | if (typeof(TinyMCECompressed) == "undefined") {
|
| | | tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad);
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
|
| | | if (tinyMCE.isRealIE) {
|
| | | if (document.body)
|
| | | tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad);
|
| | | else
|
| | |
| | | }
|
| | |
|
| | | // Setup entities
|
| | | settings['cleanup_entities'] = new Array();
|
| | | var entities = tinyMCE.getParam('entities', '', true, ',');
|
| | | for (var i=0; i<entities.length; i+=2)
|
| | | settings['cleanup_entities']['c' + entities[i]] = entities[i+1];
|
| | | if (tinyMCE.getParam('entity_encoding') == 'named') {
|
| | | settings['cleanup_entities'] = new Array();
|
| | | var entities = tinyMCE.getParam('entities', '', true, ',');
|
| | | for (var i=0; i<entities.length; i+=2)
|
| | | settings['cleanup_entities']['c' + entities[i]] = entities[i+1];
|
| | | }
|
| | |
|
| | | // Save away this config
|
| | | settings['index'] = this.configs.length;
|
| | |
| | |
|
| | | // Start loading first one in chain
|
| | | this.loadNextScript();
|
| | |
|
| | | // Force flicker free CSS backgrounds in IE
|
| | | if (this.isIE && !this.isOpera) {
|
| | | try {
|
| | | document.execCommand('BackgroundImageCache', false, true);
|
| | | } catch (e) {
|
| | | }
|
| | | }
|
| | | },
|
| | |
|
| | | _addUnloadEvents : function() {
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | if (tinyMCE.settings['add_unload_trigger']) {
|
| | | tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler);
|
| | | tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler);
|
| | |
| | | _def : function(key, def_val, t) {
|
| | | var v = tinyMCE.getParam(key, def_val);
|
| | |
|
| | | v = t ? v.replace(/\s+/g,"") : v;
|
| | | v = t ? v.replace(/\s+/g, "") : v;
|
| | |
|
| | | this.settings[key] = v;
|
| | | },
|
| | |
| | | var x = 0, i = 0, nl, le;
|
| | |
|
| | | for (x = 0,csslen = ar.length; x<csslen; x++) {
|
| | | ignore_css = false;
|
| | |
|
| | | if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0) {
|
| | | /* Make sure it doesn't exist. */
|
| | | for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {
|
| | |
| | | },
|
| | |
|
| | | confirmAdd : function(e, settings) {
|
| | | var elm = tinyMCE.isMSIE ? event.srcElement : e.target;
|
| | | var elm = tinyMCE.isIE ? event.srcElement : e.target;
|
| | | var elementId = elm.name ? elm.name : elm.id;
|
| | |
|
| | | tinyMCE.settings = settings;
|
| | |
| | |
|
| | | tinyMCE._setHTML(doc, inst.formElement.value);
|
| | |
|
| | | if (!tinyMCE.isMSIE)
|
| | | if (!tinyMCE.isIE)
|
| | | doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid);
|
| | | }
|
| | | }
|
| | |
| | | inst._onAdd(replace_element, form_element_name, target_document);
|
| | | },
|
| | |
|
| | | removeInstance : function(ti) {
|
| | | var t = [], n, i;
|
| | |
|
| | | // Remove from instances
|
| | | for (n in tinyMCE.instances) {
|
| | | i = tinyMCE.instances[n];
|
| | |
|
| | | if (tinyMCE.isInstance(i) && ti != i)
|
| | | t[n] = i;
|
| | | }
|
| | |
|
| | | tinyMCE.instances = t;
|
| | |
|
| | | // Remove from global undo/redo
|
| | | n = [];
|
| | | t = tinyMCE.undoLevels;
|
| | |
|
| | | for (i=0; i<t.length; i++) {
|
| | | if (t[i] != ti)
|
| | | n.push(t[i]);
|
| | | }
|
| | |
|
| | | tinyMCE.undoLevels = n;
|
| | | tinyMCE.undoIndex = n.length;
|
| | |
|
| | | return ti;
|
| | | },
|
| | |
|
| | | removeMCEControl : function(editor_id) {
|
| | | var inst = tinyMCE.getInstanceById(editor_id);
|
| | | var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn;
|
| | |
|
| | | if (inst) {
|
| | | inst.switchSettings();
|
| | |
|
| | | editor_id = inst.editorId;
|
| | | var html = tinyMCE.getContent(editor_id);
|
| | | h = tinyMCE.getContent(editor_id);
|
| | |
|
| | | // Remove editor instance from instances array
|
| | | var tmpInstances = new Array();
|
| | | for (var instanceName in tinyMCE.instances) {
|
| | | var instance = tinyMCE.instances[instanceName];
|
| | | if (!tinyMCE.isInstance(instance))
|
| | | continue;
|
| | |
|
| | | if (instanceName != editor_id)
|
| | | tmpInstances[instanceName] = instance;
|
| | | }
|
| | | tinyMCE.instances = tmpInstances;
|
| | | this.removeInstance(inst);
|
| | |
|
| | | tinyMCE.selectedElement = null;
|
| | | tinyMCE.selectedInstance = null;
|
| | |
|
| | | // Remove element
|
| | | var replaceElement = document.getElementById(editor_id + "_parent");
|
| | | var oldTargetElement = inst.oldTargetElement;
|
| | | var targetName = oldTargetElement.nodeName.toLowerCase();
|
| | | re = document.getElementById(editor_id + "_parent");
|
| | | ot = inst.oldTargetElement;
|
| | | tn = ot.nodeName.toLowerCase();
|
| | |
|
| | | if (targetName == "textarea" || targetName == "input") {
|
| | | // Just show the old text area
|
| | | replaceElement.parentNode.removeChild(replaceElement);
|
| | | oldTargetElement.style.display = "inline";
|
| | | oldTargetElement.value = html;
|
| | | if (tn == "textarea" || tn == "input") {
|
| | | re.parentNode.removeChild(re);
|
| | | ot.style.display = "inline";
|
| | | ot.value = h;
|
| | | } else {
|
| | | oldTargetElement.innerHTML = html;
|
| | | oldTargetElement.style.display = 'block';
|
| | |
|
| | | replaceElement.parentNode.insertBefore(oldTargetElement, replaceElement);
|
| | | replaceElement.parentNode.removeChild(replaceElement);
|
| | | ot.innerHTML = h;
|
| | | ot.style.display = 'block';
|
| | | re.parentNode.insertBefore(ot, re);
|
| | | re.parentNode.removeChild(re);
|
| | | }
|
| | | }
|
| | | },
|
| | |
| | | },
|
| | |
|
| | | execInstanceCommand : function(editor_id, command, user_interface, value, focus) {
|
| | | var inst = tinyMCE.getInstanceById(editor_id);
|
| | | var inst = tinyMCE.getInstanceById(editor_id), r;
|
| | |
|
| | | if (inst) {
|
| | | r = inst.selection.getRng();
|
| | |
|
| | | if (typeof(focus) == "undefined")
|
| | | focus = true;
|
| | |
|
| | | if (focus)
|
| | | // IE bug lost focus on images in absolute divs Bug #1534575
|
| | | if (focus && (!r || !r.item))
|
| | | inst.contentWindow.focus();
|
| | |
|
| | | // Reset design mode if lost
|
| | | inst.autoResetDesignMode();
|
| | |
|
| | | this.selectedElement = inst.getFocusElement();
|
| | | this.selectedInstance = inst;
|
| | | inst.select();
|
| | | tinyMCE.execCommand(command, user_interface, value);
|
| | |
|
| | | // Cancel event so it doesn't call onbeforeonunlaod
|
| | | if (tinyMCE.isMSIE && window.event != null)
|
| | | if (tinyMCE.isIE && window.event != null)
|
| | | tinyMCE.cancelEvent(window.event);
|
| | | }
|
| | | },
|
| | |
|
| | | execCommand : function(command, user_interface, value) {
|
| | | var inst = tinyMCE.selectedInstance;
|
| | |
|
| | | // Default input
|
| | | user_interface = user_interface ? user_interface : false;
|
| | | value = value ? value : null;
|
| | |
|
| | | if (tinyMCE.selectedInstance)
|
| | | tinyMCE.selectedInstance.switchSettings();
|
| | | if (inst)
|
| | | inst.switchSettings();
|
| | |
|
| | | switch (command) {
|
| | | case 'mceHelp':
|
| | | tinyMCE.openWindow({
|
| | | file : 'about.htm',
|
| | | width : 480,
|
| | | height : 380
|
| | | }, {
|
| | | tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion,
|
| | | tinymce_releasedate : tinyMCE.releaseDate,
|
| | | inline : "yes"
|
| | | });
|
| | | return;
|
| | | case "Undo":
|
| | | if (this.getParam('custom_undo_redo_global')) {
|
| | | if (this.undoIndex > 0) {
|
| | | tinyMCE.nextUndoRedoAction = 'Undo';
|
| | | inst = this.undoLevels[--this.undoIndex];
|
| | | inst.select();
|
| | |
|
| | | if (!tinyMCE.nextUndoRedoInstanceId)
|
| | | inst.execCommand('Undo');
|
| | | }
|
| | | } else
|
| | | inst.execCommand('Undo');
|
| | | return true;
|
| | |
|
| | | case "Redo":
|
| | | if (this.getParam('custom_undo_redo_global')) {
|
| | | if (this.undoIndex <= this.undoLevels.length - 1) {
|
| | | tinyMCE.nextUndoRedoAction = 'Redo';
|
| | | inst = this.undoLevels[this.undoIndex++];
|
| | | inst.select();
|
| | |
|
| | | if (!tinyMCE.nextUndoRedoInstanceId)
|
| | | inst.execCommand('Redo');
|
| | | }
|
| | | } else
|
| | | inst.execCommand('Redo');
|
| | |
|
| | | return true;
|
| | |
|
| | | case 'mceFocus':
|
| | | var inst = tinyMCE.getInstanceById(value);
|
| | | if (inst)
|
| | | inst.contentWindow.focus();
|
| | | inst.getWin().focus();
|
| | | return;
|
| | |
|
| | | case "mceAddControl":
|
| | |
| | |
|
| | | case "mceResetDesignMode":
|
| | | // Resets the designmode state of the editors in Gecko
|
| | | if (!tinyMCE.isMSIE) {
|
| | | if (!tinyMCE.isIE) {
|
| | | for (var n in tinyMCE.instances) {
|
| | | if (!tinyMCE.isInstance(tinyMCE.instances[n]))
|
| | | continue;
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | if (this.selectedInstance) {
|
| | | this.selectedInstance.execCommand(command, user_interface, value);
|
| | | if (inst) {
|
| | | inst.execCommand(command, user_interface, value);
|
| | | } else if (tinyMCE.settings['focus_alert'])
|
| | | alert(tinyMCELang['lang_focus_alert']);
|
| | | },
|
| | |
| | |
|
| | | if (aw.indexOf('%') == -1) {
|
| | | aw = parseInt(aw);
|
| | | aw = aw < 0 ? 300 : aw;
|
| | | aw = (isNaN(aw) || aw < 0) ? 300 : aw;
|
| | | aw = aw + "px";
|
| | | }
|
| | |
|
| | | if (ah.indexOf('%') == -1) {
|
| | | ah = parseInt(ah);
|
| | | ah = ah < 0 ? 240 : ah;
|
| | | ah = (isNaN(ah) || ah < 0) ? 240 : ah;
|
| | | ah = ah + "px";
|
| | | }
|
| | |
|
| | | iframe.setAttribute("id", id);
|
| | | iframe.setAttribute("name", id);
|
| | | iframe.setAttribute("class", "mceEditorIframe");
|
| | | iframe.setAttribute("border", "0");
|
| | | iframe.setAttribute("frameBorder", "0");
|
| | |
| | | iframe.setAttribute("scrolling", "no");
|
| | |
|
| | | // Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera)
|
| | | if (tinyMCE.isRealIE)
|
| | | iframe.setAttribute("src", this.settings['default_document']);
|
| | |
|
| | | iframe.style.width = aw;
|
| | |
| | | iframe.style.marginBottom = '-5px';
|
| | |
|
| | | // MSIE 5.0 issue
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera)
|
| | | if (tinyMCE.isRealIE)
|
| | | replace_element.outerHTML = iframe.outerHTML;
|
| | | else
|
| | | replace_element.parentNode.replaceChild(iframe, replace_element);
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera)
|
| | | if (tinyMCE.isRealIE)
|
| | | return win.frames[id];
|
| | | else
|
| | | return iframe;
|
| | | },
|
| | |
|
| | | setupContent : function(editor_id) {
|
| | | var inst = tinyMCE.instances[editor_id];
|
| | | var inst = tinyMCE.instances[editor_id], i;
|
| | | var doc = inst.getDoc();
|
| | | var head = doc.getElementsByTagName('head').item(0);
|
| | | var content = inst.startContent;
|
| | |
| | | inst.switchSettings();
|
| | |
|
| | | // Not loaded correctly hit it again, Mozilla bug #997860
|
| | | if (!tinyMCE.isMSIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {
|
| | | if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") {
|
| | | // This part will remove the designMode status
|
| | | // Failes first time in Firefox 1.5b2 on Mac
|
| | | try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {}
|
| | |
| | | inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo');
|
| | | }
|
| | |
|
| | | // BlockFormat shortcuts keys
|
| | | for (i=1; i<=6; i++)
|
| | | inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, '<h' + i + '>');
|
| | |
|
| | | inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '<p>');
|
| | | inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '<div>');
|
| | | inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '<address>');
|
| | |
|
| | | // Add default shortcuts for gecko
|
| | | if (tinyMCE.isGecko) {
|
| | | inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold');
|
| | |
| | |
|
| | | // Setup span styles
|
| | | if (tinyMCE.getParam("convert_fonts_to_spans"))
|
| | | inst.getDoc().body.setAttribute('id', 'mceSpanFonts');
|
| | | inst.getBody().setAttribute('id', 'mceSpanFonts');
|
| | |
|
| | | if (tinyMCE.settings['nowrap'])
|
| | | doc.body.style.whiteSpace = "nowrap";
|
| | |
| | | doc.editorId = editor_id;
|
| | |
|
| | | // Add on document element in Mozilla
|
| | | if (!tinyMCE.isMSIE)
|
| | | if (!tinyMCE.isIE)
|
| | | doc.documentElement.editorId = editor_id;
|
| | |
|
| | | inst.setBaseHREF(tinyMCE.settings['base_href']);
|
| | |
| | | content = tinyMCE.storeAwayURLs(content);
|
| | | content = tinyMCE._customCleanup(inst, "insert_to_editor", content);
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | // Ugly!!!
|
| | | window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500);
|
| | |
|
| | |
| | | content = tinyMCE.cleanupHTMLCode(content);
|
| | |
|
| | | // Fix for bug #958637
|
| | | if (!tinyMCE.isMSIE) {
|
| | | if (!tinyMCE.isIE) {
|
| | | var contentElement = inst.getDoc().createElement("body");
|
| | | var doc = inst.getDoc();
|
| | |
|
| | |
| | |
|
| | | if (tinyMCE.settings['cleanup_on_startup'])
|
| | | tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement));
|
| | | else {
|
| | | // Convert all strong/em to b/i
|
| | | content = tinyMCE.regexpReplace(content, "<strong", "<b", "gi");
|
| | | content = tinyMCE.regexpReplace(content, "<em(/?)>", "<i$1>", "gi");
|
| | | content = tinyMCE.regexpReplace(content, "<em ", "<i ", "gi");
|
| | | content = tinyMCE.regexpReplace(content, "</strong>", "</b>", "gi");
|
| | | content = tinyMCE.regexpReplace(content, "</em>", "</i>", "gi");
|
| | | else
|
| | | tinyMCE.setInnerHTML(inst.getBody(), content);
|
| | | }
|
| | |
|
| | | tinyMCE.convertAllRelativeURLs(inst.getBody());
|
| | | } else {
|
| | |
| | | tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc());
|
| | |
|
| | | // Re-add design mode on mozilla
|
| | | if (!tinyMCE.isMSIE)
|
| | | if (!tinyMCE.isIE)
|
| | | tinyMCE.addEventHandlers(inst);
|
| | |
|
| | | // Add blur handler
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch);
|
| | | tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953
|
| | |
|
| | |
| | | }
|
| | |
|
| | | // Trigger node change, this call locks buttons for tables and so forth
|
| | | tinyMCE.selectedInstance = inst;
|
| | | inst.select();
|
| | | tinyMCE.selectedElement = inst.contentWindow.document.body;
|
| | |
|
| | | // Call custom DOM cleanup
|
| | |
| | | if (tinyMCE.isGecko) {
|
| | | // Remove mce_src from textnodes and comments
|
| | | tinyMCE.selectNodes(inst.getBody(), function(n) {
|
| | | if (n.nodeType == 3 || n.nodeType == 8) {
|
| | | n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");
|
| | | n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");
|
| | | }
|
| | | if (n.nodeType == 3 || n.nodeType == 8)
|
| | | n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
|
| | |
|
| | | return false;
|
| | | });
|
| | | }
|
| | |
|
| | | // Remove Gecko spellchecking
|
| | | if (tinyMCE.isGecko)
|
| | | inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck");
|
| | |
|
| | | // Cleanup any mess left from storyAwayURLs
|
| | | tinyMCE._removeInternal(inst.getBody());
|
| | |
|
| | | tinyMCE.selectedInstance = inst;
|
| | | inst.select();
|
| | | tinyMCE.triggerNodeChange(false, true);
|
| | | },
|
| | |
|
| | |
| | | if (tinyMCE.isGecko) {
|
| | | // Remove mce_src from textnodes and comments
|
| | | tinyMCE.selectNodes(n, function(n) {
|
| | | if (n.nodeType == 3 || n.nodeType == 8) {
|
| | | n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'), "");
|
| | | n.nodeValue = n.nodeValue.replace(new RegExp('\\smce_href=\"[^\"]*\"', 'gi'), "");
|
| | | }
|
| | | if (n.nodeType == 3 || n.nodeType == 8)
|
| | | n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), "");
|
| | |
|
| | | return false;
|
| | | });
|
| | | }
|
| | | },
|
| | |
|
| | | removeTinyMCEFormElements : function(form_obj) {
|
| | | // Check if form is valid
|
| | | if (typeof(form_obj) == "undefined" || form_obj == null)
|
| | | return;
|
| | |
|
| | | // If not a form, find the form
|
| | | if (form_obj.nodeName != "FORM") {
|
| | | if (form_obj.form)
|
| | | form_obj = form_obj.form;
|
| | | else
|
| | | form_obj = tinyMCE.getParentElement(form_obj, "form");
|
| | | }
|
| | |
|
| | | // Still nothing
|
| | | if (form_obj == null)
|
| | | return;
|
| | |
|
| | | // Disable all UI form elements that TinyMCE created
|
| | | for (var i=0; i<form_obj.elements.length; i++) {
|
| | | var elementId = form_obj.elements[i].name ? form_obj.elements[i].name : form_obj.elements[i].id;
|
| | |
|
| | | if (elementId.indexOf('mce_editor_') == 0)
|
| | | form_obj.elements[i].disabled = true;
|
| | | }
|
| | | },
|
| | |
|
| | |
| | |
|
| | | // Fixes odd MSIE bug where drag/droping elements in a iframe with height 100% breaks
|
| | | // This logic forces the width/height to be in pixels while the user is drag/dropping
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
|
| | | if (tinyMCE.isRealIE) {
|
| | | var ife = tinyMCE.selectedInstance.iframeElement;
|
| | |
|
| | | /*if (ife.style.width.indexOf('%') != -1) {
|
| | |
| | | return;
|
| | |
|
| | | case "submit":
|
| | | tinyMCE.removeTinyMCEFormElements(tinyMCE.isMSIE ? window.event.srcElement : e.target);
|
| | | tinyMCE.triggerSave();
|
| | | tinyMCE.isNotDirty = true;
|
| | | return;
|
| | |
|
| | | case "reset":
|
| | | var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target;
|
| | | var formObj = tinyMCE.isIE ? window.event.srcElement : e.target;
|
| | |
|
| | | for (var i=0; i<document.forms.length; i++) {
|
| | | if (document.forms[i] == formObj)
|
| | |
| | | return false;
|
| | |
|
| | | if (e.target.editorId) {
|
| | | tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
|
| | | tinyMCE.instances[e.target.editorId].select();
|
| | | } else {
|
| | | if (e.target.ownerDocument.editorId)
|
| | | tinyMCE.selectedInstance = tinyMCE.instances[e.target.ownerDocument.editorId];
|
| | | tinyMCE.instances[e.target.ownerDocument.editorId].select();
|
| | | }
|
| | |
|
| | | if (tinyMCE.selectedInstance)
|
| | | tinyMCE.selectedInstance.switchSettings();
|
| | |
|
| | | // Insert P element
|
| | | if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines'] && e.keyCode == 13 && !e.shiftKey) {
|
| | | if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) && tinyMCE.settings['force_p_newlines'] && e.keyCode == 13 && !e.shiftKey) {
|
| | | // Insert P element instead of BR
|
| | | if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {
|
| | | // Cancel event
|
| | | tinyMCE.execCommand("mceAddUndoLevel");
|
| | | tinyMCE.cancelEvent(e);
|
| | | return false;
|
| | | return tinyMCE.cancelEvent(e);
|
| | | }
|
| | | }
|
| | |
|
| | | // Handle backspace
|
| | | if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines'] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
|
| | | if ((tinyMCE.isGecko && !tinyMCE.isSafari) && tinyMCE.settings['force_p_newlines'] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) {
|
| | | // Insert P element instead of BR
|
| | | if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) {
|
| | | // Cancel event
|
| | | tinyMCE.execCommand("mceAddUndoLevel");
|
| | | tinyMCE.cancelEvent(e);
|
| | | return false;
|
| | | return tinyMCE.cancelEvent(e);
|
| | | }
|
| | | }
|
| | |
|
| | | // Return key pressed
|
| | | if (tinyMCE.isMSIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13) {
|
| | | if (tinyMCE.isIE && tinyMCE.settings['force_br_newlines'] && e.keyCode == 13) {
|
| | | if (e.target.editorId)
|
| | | tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
|
| | | tinyMCE.instances[e.target.editorId].select();
|
| | |
|
| | | if (tinyMCE.selectedInstance) {
|
| | | var sel = tinyMCE.selectedInstance.getDoc().selection;
|
| | |
| | | return false;
|
| | |
|
| | | if (e.target.editorId)
|
| | | tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
|
| | | else
|
| | | return;
|
| | | tinyMCE.instances[e.target.editorId].select();
|
| | |
|
| | | if (tinyMCE.selectedInstance)
|
| | | tinyMCE.selectedInstance.switchSettings();
|
| | |
| | | tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings['visual'], tinyMCE.selectedInstance);
|
| | |
|
| | | // Fix empty elements on return/enter, check where enter occured
|
| | | if (tinyMCE.isMSIE && e.type == "keydown" && e.keyCode == 13)
|
| | | if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13)
|
| | | tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement();
|
| | |
|
| | | // Fix empty elements on return/enter
|
| | | if (tinyMCE.isMSIE && e.type == "keyup" && e.keyCode == 13) {
|
| | | if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) {
|
| | | var elm = tinyMCE.enterKeyElement;
|
| | | if (elm) {
|
| | | var re = new RegExp('^HR|IMG|BR$','g'); // Skip these
|
| | |
| | | }
|
| | |
|
| | | // MSIE custom key handling
|
| | | if (tinyMCE.isMSIE && tinyMCE.settings['custom_undo_redo']) {
|
| | | if (tinyMCE.isIE && tinyMCE.settings['custom_undo_redo']) {
|
| | | var keys = new Array(8,46); // Backspace,Delete
|
| | |
|
| | | for (var i=0; i<keys.length; i++) {
|
| | | if (keys[i] == e.keyCode) {
|
| | | if (e.type == "keyup")
|
| | |
| | |
|
| | | // Handle Undo/Redo when typing content
|
| | |
|
| | | // Start typing (non position key)
|
| | | if (!posKey && e.type == "keyup")
|
| | | tinyMCE.execCommand("mceStartTyping");
|
| | | if (tinyMCE.isGecko) {
|
| | | // Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)
|
| | | if (!posKey && e.type == "keyup" && !e.ctrlKey || (e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))
|
| | | tinyMCE.execCommand("mceStartTyping");
|
| | | } else {
|
| | | // IE seems to be working better with this setting
|
| | | if (!posKey && e.type == "keyup")
|
| | | tinyMCE.execCommand("mceStartTyping");
|
| | | }
|
| | |
|
| | | // Store undo bookmark
|
| | | if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)
|
| | |
| | | if (posKey && e.type == "keyup")
|
| | | tinyMCE.triggerNodeChange(false);
|
| | |
|
| | | if (tinyMCE.isMSIE && e.ctrlKey)
|
| | | if (tinyMCE.isIE && e.ctrlKey)
|
| | | window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
|
| | | break;
|
| | |
|
| | | case "mousedown":
|
| | | case "mouseup":
|
| | | case "click":
|
| | | case "dblclick":
|
| | | case "focus":
|
| | | tinyMCE.hideMenus();
|
| | |
|
| | |
| | | }
|
| | |
|
| | | // Check instance event trigged on
|
| | | var targetBody = tinyMCE.getParentElement(e.target, "body");
|
| | | var targetBody = tinyMCE.getParentElement(e.target, "html");
|
| | | for (var instanceName in tinyMCE.instances) {
|
| | | if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))
|
| | | continue;
|
| | |
| | | // Reset design mode if lost (on everything just in case)
|
| | | inst.autoResetDesignMode();
|
| | |
|
| | | if (inst.getBody() == targetBody) {
|
| | | tinyMCE.selectedInstance = inst;
|
| | | // Use HTML element since users might click outside of body element
|
| | | if (inst.getBody().parentNode == targetBody) {
|
| | | inst.select();
|
| | | tinyMCE.selectedElement = e.target;
|
| | | tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
|
| | | tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "img");
|
| | |
| | | }
|
| | |
|
| | | // Add first bookmark location
|
| | | if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark)
|
| | | if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type == "mouseup" || e.type == "dblclick"))
|
| | | tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark = tinyMCE.selectedInstance.selection.getBookmark();
|
| | |
|
| | | if (tinyMCE.isSafari) {
|
| | | tinyMCE.selectedInstance.lastSafariSelection = tinyMCE.selectedInstance.selection.getBookmark();
|
| | | tinyMCE.selectedInstance.lastSafariSelectedElement = tinyMCE.selectedElement;
|
| | |
|
| | | var lnk = tinyMCE.getParentElement(tinyMCE.selectedElement, "a");
|
| | |
|
| | | // Patch the darned link
|
| | | if (lnk && e.type == "mousedown") {
|
| | | lnk.setAttribute("mce_real_href", lnk.getAttribute("href"));
|
| | | lnk.setAttribute("href", "javascript:void(0);");
|
| | | }
|
| | |
|
| | | // Patch back
|
| | | if (lnk && e.type == "click") {
|
| | | window.setTimeout(function() {
|
| | | lnk.setAttribute("href", lnk.getAttribute("mce_real_href"));
|
| | | lnk.removeAttribute("mce_real_href");
|
| | | }, 10);
|
| | | }
|
| | | }
|
| | |
|
| | | // Reset selected node
|
| | | if (e.type != "focus")
|
| | |
| | |
|
| | | // Just in case
|
| | | if (!tinyMCE.selectedInstance && e.target.editorId)
|
| | | tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
|
| | | tinyMCE.instances[e.target.editorId].select();
|
| | |
|
| | | return false;
|
| | | break;
|
| | |
| | | },
|
| | |
|
| | | getButtonHTML : function(id, lang, img, cmd, ui, val) {
|
| | | var h = '', m, x;
|
| | | var h = '', m, x, io = '';
|
| | |
|
| | | cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';
|
| | |
|
| | |
| | |
|
| | | cmd += ');';
|
| | |
|
| | | // Patch for IE7 bug with hover out not restoring correctly
|
| | | if (tinyMCE.isRealIE)
|
| | | io = 'onmouseover="tinyMCE.lastHover = this;"';
|
| | |
|
| | | // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
|
| | | if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isMSIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
|
| | | if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = this.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
|
| | | // Tiled button
|
| | | x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
|
| | | h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceButtonNormal" target="_self">';
|
| | | h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceTiledButton mceButtonNormal" target="_self">';
|
| | | h += '<img src="{$themeurl}/images/spacer.gif" style="background-position: ' + x + 'px 0" title="{$' + lang + '}" />';
|
| | | h += '</a>';
|
| | | } else {
|
| | | // Normal button
|
| | | h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceButtonNormal" target="_self">';
|
| | | h += '<a id="{$editor_id}_' + id + '" href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" ' + io + ' class="mceButtonNormal" target="_self">';
|
| | | h += '<img src="' + img + '" title="{$' + lang + '}" />';
|
| | | h += '</a>';
|
| | | }
|
| | |
|
| | | return h;
|
| | | },
|
| | |
|
| | | getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) {
|
| | | var h = '', m, x;
|
| | |
|
| | | mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');';
|
| | | cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\'';
|
| | |
|
| | | if (typeof(ui) != "undefined" && ui != null)
|
| | | cmd += ',' + ui;
|
| | |
|
| | | if (typeof(val) != "undefined" && val != null)
|
| | | cmd += ",'" + val + "'";
|
| | |
|
| | | cmd += ');';
|
| | |
|
| | | // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled
|
| | | if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) {
|
| | | x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
|
| | |
|
| | | if (tinyMCE.isRealIE)
|
| | | h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
|
| | | else
|
| | | h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';
|
| | |
|
| | | h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceTiledButton mceMenuButtonNormal" target="_self">';
|
| | | h += '<img src="{$themeurl}/images/spacer.gif" style="width: 20px; height: 20px; background-position: ' + x + 'px 0" title="{$' + lang + '}" /></a>';
|
| | | h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';
|
| | | h += '</a></span>';
|
| | | } else {
|
| | | if (tinyMCE.isRealIE)
|
| | | h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton" onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover = this;" onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
|
| | | else
|
| | | h += '<span id="{$editor_id}_' + id + '" class="mceMenuButton">';
|
| | |
|
| | | h += '<a href="javascript:' + cmd + '" onclick="' + cmd + 'return false;" onmousedown="return false;" class="mceMenuButtonNormal" target="_self">';
|
| | | h += '<img src="' + img + '" title="{$' + lang + '}" /></a>';
|
| | | h += '<a href="javascript:' + mcmd + '" onclick="' + mcmd + 'return false;" onmousedown="return false;"><img src="{$themeurl}/images/button_menu.gif" title="{$' + lang + '}" class="mceMenuButton" />';
|
| | | h += '</a></span>';
|
| | | }
|
| | |
|
| | | return h;
|
| | | },
|
| | |
|
| | | _menuButtonEvent : function(e, o) {
|
| | | if (o.className == 'mceMenuButtonFocus')
|
| | | return;
|
| | |
|
| | | if (e == 'over')
|
| | | o.className = o.className + ' mceMenuHover';
|
| | | else
|
| | | o.className = o.className.replace(/\s.*$/, '');
|
| | | },
|
| | |
|
| | | addButtonMap : function(m) {
|
| | |
| | | },
|
| | |
|
| | | submitPatch : function() {
|
| | | tinyMCE.removeTinyMCEFormElements(this);
|
| | | tinyMCE.triggerSave();
|
| | | this.mceOldSubmit();
|
| | | tinyMCE.isNotDirty = true;
|
| | | this.mceOldSubmit();
|
| | | },
|
| | |
|
| | | onLoad : function() {
|
| | | var r;
|
| | |
|
| | | // Wait for everything to be loaded first
|
| | | if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {
|
| | | window.setTimeout('tinyMCE.onLoad();', 1);
|
| | | return;
|
| | | }
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera && window.event.type == "readystatechange" && document.readyState != "complete")
|
| | | if (tinyMCE.isRealIE && window.event.type == "readystatechange" && document.readyState != "complete")
|
| | | return true;
|
| | |
|
| | | if (tinyMCE.isLoaded)
|
| | | return true;
|
| | |
|
| | | tinyMCE.isLoaded = true;
|
| | |
|
| | | // IE produces JS error if TinyMCE is placed in a frame
|
| | | // It seems to have something to do with the selection not beeing
|
| | | // correctly initialized in IE so this hack solves the problem
|
| | | if (tinyMCE.isRealIE && document.body) {
|
| | | r = document.body.createTextRange();
|
| | | r.collapse(true);
|
| | | r.select();
|
| | | }
|
| | |
|
| | | tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');
|
| | |
|
| | |
| | | var element = tinyMCE._getElementById(elements[i]);
|
| | | var trigger = element ? element.getAttribute(tinyMCE.settings['textarea_trigger']) : "";
|
| | |
|
| | | if (tinyMCE.getAttrib(element, "class").indexOf(deselector) != -1)
|
| | | if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(element, "class")))
|
| | | continue;
|
| | |
|
| | | if (trigger == "false")
|
| | |
| | | var elm = nodeList.item(i);
|
| | | var trigger = elm.getAttribute(tinyMCE.settings['textarea_trigger']);
|
| | |
|
| | | if (selector != '' && tinyMCE.getAttrib(elm, "class").indexOf(selector) == -1)
|
| | | if (selector != '' && !new RegExp('\\b' + selector + '\\b').test(tinyMCE.getAttrib(elm, "class")))
|
| | | continue;
|
| | |
|
| | | if (selector != '')
|
| | | trigger = selector != "" ? "true" : "";
|
| | |
|
| | | if (tinyMCE.getAttrib(elm, "class").indexOf(deselector) != -1)
|
| | | if (new RegExp('\\b' + deselector + '\\b').test(tinyMCE.getAttrib(elm, "class")))
|
| | | continue;
|
| | |
|
| | | if ((mode == "specific_textareas" && trigger == "true") || (mode == "textareas" && trigger != "false"))
|
| | |
| | | var inst = tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);
|
| | | inst.selection.selectNode(inst.getBody(), true, true);
|
| | | inst.contentWindow.focus();
|
| | | }, 10);
|
| | | }, 100);
|
| | | }
|
| | |
|
| | | tinyMCE.dispatchCallback(null, 'oninit', 'onInit');
|
| | |
| | |
|
| | | entityDecode : function(s) {
|
| | | var e = document.createElement("div");
|
| | |
|
| | | e.innerHTML = s;
|
| | | return e.innerHTML;
|
| | |
|
| | | return e.firstChild.nodeValue;
|
| | | },
|
| | |
|
| | | addToLang : function(prefix, ar) {
|
| | |
| | | var inst = tinyMCE.selectedInstance;
|
| | | var editorId = inst.editorId;
|
| | | var elm = (typeof(setup_content) != "undefined" && setup_content) ? tinyMCE.selectedElement : inst.getFocusElement();
|
| | | var undoIndex = -1;
|
| | | var undoIndex = -1, doc;
|
| | | var undoLevels = -1;
|
| | | var anySelection = false;
|
| | | var selectedText = inst.selection.getSelectedText();
|
| | |
|
| | | if (tinyMCE.settings.auto_resize)
|
| | | inst.resizeToContent();
|
| | |
|
| | | if (setup_content && tinyMCE.isGecko && inst.isHidden())
|
| | | elm = inst.getBody();
|
| | |
|
| | | inst.switchSettings();
|
| | |
|
| | | if (tinyMCE.settings["auto_resize"]) {
|
| | | var doc = inst.getDoc();
|
| | |
|
| | | inst.iframeElement.style.width = doc.body.offsetWidth + "px";
|
| | | inst.iframeElement.style.height = doc.body.offsetHeight + "px";
|
| | | }
|
| | |
|
| | | if (tinyMCE.selectedElement)
|
| | | anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0);
|
| | |
| | | var customCleanup = tinyMCE.settings['cleanup_callback'];
|
| | | if (customCleanup != "" && eval("typeof(" + customCleanup + ")") != "undefined")
|
| | | content = eval(customCleanup + "(type, content, inst);");
|
| | |
|
| | | // Trigger theme cleanup
|
| | | po = tinyMCE.themes[tinyMCE.settings['theme']];
|
| | | if (po && po.cleanup)
|
| | | content = po.cleanup(type, content, inst);
|
| | |
|
| | | // Trigger plugin cleanups
|
| | | pl = inst.plugins;
|
| | |
| | | tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' + tinyMCE.settings['language'] + '.js');
|
| | | },
|
| | |
|
| | | importPluginLanguagePack : function(name, valid_languages) {
|
| | | var lang = "en", b = tinyMCE.baseURL + '/plugins/' + name;
|
| | |
|
| | | valid_languages = valid_languages.split(',');
|
| | | for (var i=0; i<valid_languages.length; i++) {
|
| | | if (tinyMCE.settings['language'] == valid_languages[i])
|
| | | lang = tinyMCE.settings['language'];
|
| | | }
|
| | | importPluginLanguagePack : function(name) {
|
| | | var b = tinyMCE.baseURL + '/plugins/' + name;
|
| | |
|
| | | if (this.plugins[name])
|
| | | b = this.plugins[name].baseURL;
|
| | |
|
| | | tinyMCE.loadScript(b + '/langs/' + lang + '.js');
|
| | | tinyMCE.loadScript(b + '/langs/' + tinyMCE.settings['language'] + '.js');
|
| | | },
|
| | |
|
| | | applyTemplate : function(h, as) {
|
| | | var i, s, ar = h.match(new RegExp('\\{\\$[a-z0-9_]+\\}', 'gi'));
|
| | | return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}', 'gi'), function(m, s) {
|
| | | if (s.indexOf('lang_') == 0 && tinyMCELang[s])
|
| | | return tinyMCELang[s];
|
| | |
|
| | | if (ar && ar.length > 0) {
|
| | | for (i=ar.length-1; i>=0; i--) {
|
| | | s = ar[i].substring(2, ar[i].length-1);
|
| | | if (as && as[s])
|
| | | return as[s];
|
| | |
|
| | | if (s.indexOf('lang_') == 0 && tinyMCELang[s])
|
| | | h = tinyMCE.replaceVar(h, s, tinyMCELang[s]);
|
| | | else if (as && as[s])
|
| | | h = tinyMCE.replaceVar(h, s, as[s]);
|
| | | else if (tinyMCE.settings[s])
|
| | | h = tinyMCE.replaceVar(h, s, tinyMCE.settings[s]);
|
| | | }
|
| | | }
|
| | | if (tinyMCE.settings[s])
|
| | | return tinyMCE.settings[s];
|
| | |
|
| | | h = tinyMCE.replaceVar(h, "themeurl", tinyMCE.themeURL);
|
| | | if (m == 'themeurl')
|
| | | return tinyMCE.themeURL;
|
| | |
|
| | | return h;
|
| | | return m;
|
| | | });
|
| | | },
|
| | |
|
| | | replaceVar : function(h, r, v) {
|
| | |
| | | height = 200;
|
| | |
|
| | | // Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of windows!!
|
| | | if (tinyMCE.isMSIE)
|
| | | if (tinyMCE.isIE)
|
| | | height += 40;
|
| | | else
|
| | | height += 20;
|
| | |
| | | win.resizeTo(width, height);
|
| | | win.focus();
|
| | | } else {
|
| | | if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && resizable != 'yes' && tinyMCE.settings["dialog_type"] == "modal") {
|
| | | if ((tinyMCE.isRealIE) && resizable != 'yes' && tinyMCE.settings["dialog_type"] == "modal") {
|
| | | height += 10;
|
| | |
|
| | | var features = "resizable:" + resizable
|
| | |
| | |
|
| | | if (anchorName != '' && state) {
|
| | | el.title = anchorName;
|
| | | el.className = 'mceItemAnchor';
|
| | | tinyMCE.addCSSClass(el, 'mceItemAnchor');
|
| | | } else if (anchorName != '' && !state)
|
| | | el.className = '';
|
| | |
|
| | |
| | | */
|
| | |
|
| | | fixGeckoBaseHREFBug : function(m, e, h) {
|
| | | var nl, i, a, n, xsrc, xhref, el;
|
| | | var xsrc, xhref;
|
| | |
|
| | | if (tinyMCE.isGecko) {
|
| | | if (m == 1) {
|
| | |
| | |
|
| | | return h;
|
| | | } else {
|
| | | el = new Array('a','img','select','area','iframe','base','input','script','embed','object','link');
|
| | | // Why bother if there is no src or href broken
|
| | | if (!new RegExp('(src|href)=', 'g').test(h))
|
| | | return h;
|
| | |
|
| | | for (a=0; a<el.length; a++) {
|
| | | n = e.getElementsByTagName(el[a]);
|
| | | // Restore src and href that gets messed up by Gecko
|
| | | tinyMCE.selectElements(e, 'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK', function (n) {
|
| | | xsrc = tinyMCE.getAttrib(n, "mce_tsrc");
|
| | | xhref = tinyMCE.getAttrib(n, "mce_thref");
|
| | |
|
| | | for (i=0; i<n.length; i++) {
|
| | | xsrc = tinyMCE.getAttrib(n[i], "mce_tsrc");
|
| | | xhref = tinyMCE.getAttrib(n[i], "mce_thref");
|
| | |
|
| | | if (xsrc != "") {
|
| | | try {
|
| | | n[i].src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xsrc);
|
| | | } catch (e) {
|
| | | // Ignore, Firefox cast exception if local file wasn't found
|
| | | }
|
| | |
|
| | | n[i].removeAttribute("mce_tsrc");
|
| | | if (xsrc != "") {
|
| | | try {
|
| | | n.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xsrc);
|
| | | } catch (e) {
|
| | | // Ignore, Firefox cast exception if local file wasn't found
|
| | | }
|
| | |
|
| | | if (xhref != "") {
|
| | | try {
|
| | | n[i].href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xhref);
|
| | | } catch (e) {
|
| | | // Ignore, Firefox cast exception if local file wasn't found
|
| | | }
|
| | |
|
| | | n[i].removeAttribute("mce_thref");
|
| | | }
|
| | | n.removeAttribute("mce_tsrc");
|
| | | }
|
| | | }
|
| | |
|
| | | el = tinyMCE.selectNodes(e, function(n) {
|
| | | if (xhref != "") {
|
| | | try {
|
| | | n.href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xhref);
|
| | | } catch (e) {
|
| | | // Ignore, Firefox cast exception if local file wasn't found
|
| | | }
|
| | |
|
| | | n.removeAttribute("mce_thref");
|
| | | }
|
| | |
|
| | | return false;
|
| | | });
|
| | |
|
| | | // Restore text/comment nodes
|
| | | tinyMCE.selectNodes(e, function(n) {
|
| | | if (n.nodeType == 3 || n.nodeType == 8) {
|
| | | n.nodeValue = n.nodeValue.replace(/\smce_tsrc=/gi, " src=");
|
| | | n.nodeValue = n.nodeValue.replace(/\smce_thref=/gi, " href=");
|
| | |
| | | }
|
| | |
|
| | | // Content duplication bug fix
|
| | | if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) {
|
| | | if (tinyMCE.isIE && tinyMCE.settings['fix_content_duplication']) {
|
| | | // Remove P elements in P elements
|
| | | var paras = doc.getElementsByTagName("P");
|
| | | for (var i=0; i<paras.length; i++) {
|
| | |
| | | var csses = null;
|
| | |
|
| | | // Just ignore any errors
|
| | | eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(" + x + ").rules : styles[" + x + "].cssRules;} catch(e) {}");
|
| | | eval("try {var csses = tinyMCE.isIE ? doc.styleSheets(" + x + ").rules : styles[" + x + "].cssRules;} catch(e) {}");
|
| | | if (!csses)
|
| | | return new Array();
|
| | |
|
| | |
| | | return '';
|
| | | },
|
| | |
|
| | | evalFunc : function(f, idx, a) {
|
| | | evalFunc : function(f, idx, a, o) {
|
| | | var s = '(', i;
|
| | |
|
| | | for (i=idx; i<a.length; i++) {
|
| | |
| | |
|
| | | s += ');';
|
| | |
|
| | | return eval("f" + s);
|
| | | return o ? eval("o." + f + s) : eval("f" + s);
|
| | | },
|
| | |
|
| | | dispatchCallback : function(i, p, n) {
|
| | |
| | | for (i=0, l = ins.plugins; i<l.length; i++) {
|
| | | o = tinyMCE.plugins[l[i]];
|
| | |
|
| | | if (o[n] && (v = tinyMCE.evalFunc(o[n], 3, a)) == s && m > 0)
|
| | | if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
|
| | | return true;
|
| | | }
|
| | | }
|
| | |
| | | for (on in l) {
|
| | | o = l[on];
|
| | |
|
| | | if (o[n] && (v = tinyMCE.evalFunc(o[n], 3, a)) == s && m > 0)
|
| | | if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
|
| | | return true;
|
| | | }
|
| | |
|
| | |
| | | },
|
| | |
|
| | | xmlEncode : function(s) {
|
| | | s = "" + s;
|
| | | s = s.replace(/&/g, '&');
|
| | | s = s.replace(new RegExp('"', 'g'), '"');
|
| | | s = s.replace(/\'/g, '''); // ' is not working in MSIE
|
| | | s = s.replace(/</g, '<');
|
| | | s = s.replace(/>/g, '>');
|
| | | return s ? ('' + s).replace(new RegExp('[<>&"\']', 'g'), function (c, b) {
|
| | | switch (c) {
|
| | | case '&':
|
| | | return '&';
|
| | |
|
| | | return s;
|
| | | case '"':
|
| | | return '"';
|
| | |
|
| | | case '\'':
|
| | | return '''; // ' is not working in MSIE
|
| | |
|
| | | case '<':
|
| | | return '<';
|
| | |
|
| | | case '>':
|
| | | return '>';
|
| | | }
|
| | |
|
| | | return c;
|
| | | }) : s;
|
| | | },
|
| | |
|
| | | extend : function(p, np) {
|
| | |
| | | tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass);
|
| | | tinyMCE.lastSelectedMenuBtn = null;
|
| | | }
|
| | | },
|
| | |
|
| | | explode : function(d, s) {
|
| | | var ar = s.split(d), oar = new Array(), i;
|
| | | |
| | | for (i = 0; i<ar.length; i++) {
|
| | | if (ar[i] != "")
|
| | | oar[oar.length] = ar[i];
|
| | | }
|
| | | |
| | | return oar;
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | // Global instances
|
| | | var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors
|
| | |
| | | this.cleanup = new TinyMCE_Cleanup();
|
| | | this.shortcuts = new Array();
|
| | | this.hasMouseMoved = false;
|
| | | this.foreColor = this.backColor = "#999999";
|
| | | this.data = {};
|
| | |
|
| | | this.cleanup.init({
|
| | | valid_elements : s.valid_elements,
|
| | | extended_valid_elements : s.extended_valid_elements,
|
| | | valid_child_elements : s.valid_child_elements,
|
| | | entities : s.entities,
|
| | | entity_encoding : s.entity_encoding,
|
| | | debug : s.cleanup_debug,
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Control.prototype = {
|
| | | selection : null,
|
| | |
|
| | | settings : null,
|
| | |
|
| | | cleanup : null,
|
| | |
|
| | | getData : function(na) {
|
| | | var o = this.data[na];
|
| | |
|
| | | if (!o)
|
| | | o = this.data[na] = {};
|
| | |
|
| | | return o;
|
| | | },
|
| | |
|
| | | hasPlugin : function(n) {
|
| | | var i;
|
| | |
|
| | |
| | | },
|
| | |
|
| | | repaint : function() {
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera)
|
| | | var s, b, ex;
|
| | |
|
| | | if (tinyMCE.isRealIE)
|
| | | return;
|
| | |
|
| | | try {
|
| | | var s = this.selection;
|
| | | var b = s.getBookmark(true);
|
| | | s = this.selection;
|
| | | b = s.getBookmark(true);
|
| | | this.getBody().style.display = 'none';
|
| | | this.getDoc().execCommand('selectall', false, null);
|
| | | this.getSel().collapseToStart();
|
| | |
| | | }
|
| | | },
|
| | |
|
| | | select : function() {
|
| | | var oldInst = tinyMCE.selectedInstance;
|
| | |
|
| | | if (oldInst != this) {
|
| | | if (oldInst)
|
| | | oldInst.execCommand('mceEndTyping');
|
| | |
|
| | | tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst);
|
| | | tinyMCE.selectedInstance = this;
|
| | | }
|
| | | },
|
| | |
|
| | | getBody : function() {
|
| | | return this.getDoc().body;
|
| | | return this.contentBody ? this.contentBody : this.getDoc().body;
|
| | | },
|
| | |
|
| | | getDoc : function() {
|
| | | // return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ?
|
| | | return this.contentWindow.document;
|
| | | },
|
| | |
|
| | |
| | | return this.contentWindow;
|
| | | },
|
| | |
|
| | | getContainerWin : function() {
|
| | | return this.containerWindow ? this.containerWindow : window;
|
| | | },
|
| | |
|
| | | getViewPort : function() {
|
| | | return tinyMCE.getViewPort(this.getWin());
|
| | | },
|
| | |
|
| | | getParentNode : function(n, f) {
|
| | | return tinyMCE.getParentNode(n, f, this.getBody());
|
| | | },
|
| | |
|
| | | getParentElement : function(n, na, f) {
|
| | | return tinyMCE.getParentElement(n, na, f, this.getBody());
|
| | | },
|
| | |
|
| | | getParentBlockElement : function(n) {
|
| | | return tinyMCE.getParentBlockElement(n, this.getBody());
|
| | | },
|
| | |
|
| | | resizeToContent : function() {
|
| | | var d = this.getDoc(), b = d.body, de = d.documentElement;
|
| | |
|
| | | this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px';
|
| | | },
|
| | |
|
| | | addShortcut : function(m, k, d, cmd, ui, va) {
|
| | | var n = typeof(k) == "number", ie = tinyMCE.isMSIE, c, sc, i;
|
| | | var scl = this.shortcuts;
|
| | | var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts;
|
| | |
|
| | | if (!tinyMCE.getParam('custom_shortcuts'))
|
| | | return false;
|
| | |
| | |
|
| | | for (i=0; i<s.length; i++) {
|
| | | o = s[i];
|
| | |
|
| | | if (o.alt == e.altKey && o.ctrl == e.ctrlKey && (o.keyCode == e.keyCode || o.charCode == e.charCode)) {
|
| | | if (o.cmd && (e.type == "keydown" || (e.type == "keypress" && !tinyMCE.isOpera)))
|
| | | tinyMCE.execCommand(o.cmd, o.ui, o.val);
|
| | |
| | |
|
| | | autoResetDesignMode : function() {
|
| | | // Add fix for tab/style.display none/block problems in Gecko
|
| | | if (!tinyMCE.isMSIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))
|
| | | eval('try { this.getDoc().designMode = "On"; } catch(e) {}');
|
| | | if (!tinyMCE.isIE && this.isHidden() && tinyMCE.getParam('auto_reset_designmode'))
|
| | | eval('try { this.getDoc().designMode = "On"; this.useCSS = false; } catch(e) {}');
|
| | | },
|
| | |
|
| | | isHidden : function() {
|
| | | if (tinyMCE.isMSIE)
|
| | | var s;
|
| | |
|
| | | if (tinyMCE.isIE)
|
| | | return false;
|
| | |
|
| | | var s = this.getSel();
|
| | | s = this.getSel();
|
| | |
|
| | | // Weird, wheres that cursor selection?
|
| | | return (!s || !s.rangeCount || s.rangeCount == 0);
|
| | |
| | |
|
| | | isDirty : function() {
|
| | | // Is content modified and not in a submit procedure
|
| | | return this.startContent != tinyMCE.trim(this.getBody().innerHTML) && !tinyMCE.isNotDirty;
|
| | | return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML) && !tinyMCE.isNotDirty;
|
| | | },
|
| | |
|
| | | _mergeElements : function(scmd, pa, ch, override) {
|
| | |
| | | var stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style"));
|
| | | var className = tinyMCE.getAttrib(pa, "class");
|
| | |
|
| | | className += " " + tinyMCE.getAttrib(ch, "class");
|
| | | // Removed class adding due to bug #1478272
|
| | | className = tinyMCE.getAttrib(ch, "class");
|
| | |
|
| | | if (override) {
|
| | | for (var n in st) {
|
| | |
| | | },
|
| | |
|
| | | execCommand : function(command, user_interface, value) {
|
| | | var doc = this.getDoc();
|
| | | var win = this.getWin();
|
| | | var focusElm = this.getFocusElement();
|
| | | var doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();
|
| | |
|
| | | // Is non udno specific command
|
| | | // Is not a undo specific command
|
| | | if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command))
|
| | | this.undoBookmark = null;
|
| | |
|
| | | if (this.lastSafariSelection && !new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command)) {
|
| | | this.selection.moveToBookmark(this.lastSafariSelection);
|
| | | tinyMCE.selectedElement = this.lastSafariSelectedElement;
|
| | | }
|
| | |
|
| | | // Mozilla issue
|
| | | if (!tinyMCE.isMSIE && !this.useCSS) {
|
| | | if (!tinyMCE.isIE && !this.useCSS) {
|
| | | this._setUseCSS(false);
|
| | | this.useCSS = true;
|
| | | }
|
| | |
| | | this.repaint();
|
| | | return true;
|
| | |
|
| | | case "unlink":
|
| | | // Unlink if caret is inside link
|
| | | if (tinyMCE.isGecko && this.getSel().isCollapsed) {
|
| | | focusElm = tinyMCE.getParentElement(focusElm, 'A');
|
| | |
|
| | | if (focusElm)
|
| | | this.selection.selectNode(focusElm, false);
|
| | | }
|
| | |
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | |
|
| | | tinyMCE.isGecko && this.getSel().collapseToEnd();
|
| | |
|
| | | tinyMCE.triggerNodeChange();
|
| | |
|
| | | return true;
|
| | |
|
| | | case "FormatBlock":
|
| | | if (!this.cleanup.isValid(value))
|
| | | return true;
|
| | |
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | | tinyMCE.triggerNodeChange();
|
| | | break;
|
| | |
|
| | | case "InsertUnorderedList":
|
| | | case "InsertOrderedList":
|
| | | var tag = (command == "InsertUnorderedList") ? "ul" : "ol";
|
| | |
|
| | | if (tinyMCE.isSafari)
|
| | | this.execCommand("mceInsertContent", false, "<" + tag + "><li> </li><" + tag + ">");
|
| | | else
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | |
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | | tinyMCE.triggerNodeChange();
|
| | | break;
|
| | |
|
| | | case "Strikethrough":
|
| | | if (tinyMCE.isSafari)
|
| | | this.execCommand("mceInsertContent", false, "<strike>" + this.selection.getSelectedHTML() + "</strike>");
|
| | | else
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | |
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | | tinyMCE.triggerNodeChange();
|
| | | break;
|
| | |
|
| | |
| | | if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value))
|
| | | value = value.replace(/[^a-z]/gi, '');
|
| | |
|
| | | if (tinyMCE.isMSIE && new RegExp('blockquote|code|samp', 'gi').test(value)) {
|
| | | if (tinyMCE.isIE && new RegExp('blockquote|code|samp', 'gi').test(value)) {
|
| | | var b = this.selection.getBookmark();
|
| | | this.getDoc().execCommand("FormatBlock", false, '<p>');
|
| | | tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()), value);
|
| | |
| | | if (!value)
|
| | | value = tinyMCE.getParentElement(this.getFocusElement());
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | value.outerHTML = value.innerHTML;
|
| | | } else {
|
| | | var rng = value.ownerDocument.createRange();
|
| | |
| | | var invalidParentsRe = tinyMCE.settings['merge_styles_invalid_parents'] != '' ? new RegExp(tinyMCE.settings['merge_styles_invalid_parents'], "gi") : null;
|
| | |
|
| | | // Whole element selected check
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | // Control range
|
| | | if (rng.item)
|
| | | parentElm = rng.item(0);
|
| | |
| | | return;
|
| | |
|
| | | case "forecolor":
|
| | | value = value == null ? this.foreColor : value;
|
| | | value = tinyMCE.trim(value);
|
| | | value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
|
| | |
|
| | | this.foreColor = value;
|
| | | this.getDoc().execCommand('forecolor', false, value);
|
| | | break;
|
| | |
|
| | | case "HiliteColor":
|
| | | value = value == null ? this.backColor : value;
|
| | | value = tinyMCE.trim(value);
|
| | | value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value : '#' + value) : value;
|
| | | this.backColor = value;
|
| | |
|
| | | if (tinyMCE.isGecko) {
|
| | | this._setUseCSS(true);
|
| | | this.getDoc().execCommand('hilitecolor', false, value);
|
| | |
| | | // Call custom cleanup code
|
| | | value = tinyMCE.storeAwayURLs(value);
|
| | | value = tinyMCE._customCleanup(this, "insert_to_editor", value);
|
| | | tinyMCE._setHTML(doc, value);
|
| | | tinyMCE.setInnerHTML(doc.body, tinyMCE._cleanupHTML(this, doc, tinyMCE.settings, doc.body));
|
| | | tinyMCE.convertAllRelativeURLs(doc.body);
|
| | |
|
| | | if (this.getBody().nodeName == 'BODY')
|
| | | tinyMCE._setHTML(doc, value);
|
| | | else
|
| | | this.getBody().innerHTML = value;
|
| | |
|
| | | tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings, this.getBody(), false, false, false, true));
|
| | | tinyMCE.convertAllRelativeURLs(this.getBody());
|
| | |
|
| | | // Cleanup any mess left from storyAwayURLs
|
| | | tinyMCE._removeInternal(this.getBody());
|
| | |
| | | if (tinyMCE.getParam("convert_fonts_to_spans"))
|
| | | tinyMCE.convertSpansToFonts(doc);
|
| | |
|
| | | tinyMCE.handleVisualAid(doc.body, true, this.visualAid, this);
|
| | | tinyMCE._setEventsEnabled(doc.body, false);
|
| | | tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
|
| | | tinyMCE._setEventsEnabled(this.getBody(), false);
|
| | | return true;
|
| | |
|
| | | case "mceCleanup":
|
| | |
| | |
|
| | | var selectedText = "";
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | var rng = doc.selection.createRange();
|
| | | selectedText = rng.text;
|
| | | } else
|
| | |
| | | this.execCommand('mceInsertContent', false, key);
|
| | |
|
| | | // Store away scroll pos
|
| | | var scrollX = this.getDoc().body.scrollLeft + this.getDoc().documentElement.scrollLeft;
|
| | | var scrollY = this.getDoc().body.scrollTop + this.getDoc().documentElement.scrollTop;
|
| | | var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft;
|
| | | var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop;
|
| | |
|
| | | // Find marker and replace with RAW HTML
|
| | | var html = this.getBody().innerHTML;
|
| | |
| | | value = '';
|
| | |
|
| | | var insertHTMLFailed = false;
|
| | | this.getWin().focus();
|
| | |
|
| | | // Removed since it produced problems in IE
|
| | | // this.getWin().focus();
|
| | |
|
| | | if (tinyMCE.isGecko || tinyMCE.isOpera) {
|
| | | try {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | // Ugly hack in Opera due to non working "inserthtml"
|
| | | if (tinyMCE.isOpera && insertHTMLFailed) {
|
| | | this.getDoc().execCommand("insertimage", false, tinyMCE.uniqueURL);
|
| | | var ar = tinyMCE.getElementsByAttributeValue(this.getBody(), "img", "src", tinyMCE.uniqueURL);
|
| | | ar[0].outerHTML = value;
|
| | | return;
|
| | | }
|
| | |
|
| | | if (!tinyMCE.isMSIE) {
|
| | | if (!tinyMCE.isIE) {
|
| | | var isHTML = value.indexOf('<') != -1;
|
| | | var sel = this.getSel();
|
| | | var rng = this.getRng();
|
| | |
| | |
|
| | | tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value);
|
| | | } else {
|
| | | var rng = doc.selection.createRange();
|
| | | var rng = doc.selection.createRange(), tmpRng = null;
|
| | | var c = value.indexOf('<!--') != -1;
|
| | |
|
| | | // Fix comment bug, add tag before comments
|
| | | if (c)
|
| | | value = tinyMCE.uniqueTag + value;
|
| | |
|
| | | // tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)
|
| | |
|
| | | if (rng.item)
|
| | | rng.item(0).outerHTML = value;
|
| | | else
|
| | | rng.pasteHTML(value);
|
| | |
|
| | | //if (tmpRng)
|
| | | // tmpRng.select(); // Restore range (Fixes Undo bookmark bug in IE)
|
| | |
|
| | | // Remove unique tag
|
| | | if (c) {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | tinyMCE.execCommand("mceAddUndoLevel");
|
| | | tinyMCE.triggerNodeChange();
|
| | | break;
|
| | |
|
| | | case "mceStartTyping":
|
| | | if (tinyMCE.settings['custom_undo_redo'] && this.undoRedo.typingUndoIndex == -1) {
|
| | | this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;
|
| | | tinyMCE.typingUndoIndex = tinyMCE.undoIndex;
|
| | | this.execCommand('mceAddUndoLevel');
|
| | | //tinyMCE.debug("mceStartTyping");
|
| | | }
|
| | | break;
|
| | |
|
| | |
| | | if (tinyMCE.settings['custom_undo_redo'] && this.undoRedo.typingUndoIndex != -1) {
|
| | | this.execCommand('mceAddUndoLevel');
|
| | | this.undoRedo.typingUndoIndex = -1;
|
| | | //tinyMCE.debug("mceEndTyping");
|
| | | }
|
| | |
|
| | | tinyMCE.typingUndoIndex = -1;
|
| | | break;
|
| | |
|
| | | case "mceBeginUndoLevel":
|
| | |
| | | case "Indent":
|
| | | this.getDoc().execCommand(command, user_interface, value);
|
| | | tinyMCE.triggerNodeChange();
|
| | | if (tinyMCE.isMSIE) {
|
| | |
|
| | | if (tinyMCE.isIE) {
|
| | | var n = tinyMCE.getParentElement(this.getFocusElement(), "blockquote");
|
| | | do {
|
| | | if (n && n.nodeName == "BLOCKQUOTE") {
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | try {
|
| | | var rng = doc.selection.createRange();
|
| | | rng.execCommand("RemoveFormat", false, null);
|
| | |
| | | this.settings['area_width'] += deltaWidth;
|
| | | this.settings['area_height'] += deltaHeight;
|
| | |
|
| | | this.settings['width_style'] = "" + this.settings['width'];
|
| | | this.settings['height_style'] = "" + this.settings['height'];
|
| | |
|
| | | // Special % handling
|
| | | if (("" + this.settings['width']).indexOf('%') != -1)
|
| | | this.settings['area_width'] = "100%";
|
| | | else
|
| | | this.settings['width_style'] += 'px';
|
| | |
|
| | | if (("" + this.settings['height']).indexOf('%') != -1)
|
| | | this.settings['area_height'] = "100%";
|
| | | else
|
| | | this.settings['height_style'] += 'px';
|
| | |
|
| | | if (("" + replace_element.style.width).indexOf('%') != -1) {
|
| | | this.settings['width'] = replace_element.style.width;
|
| | | this.settings['area_width'] = "100%";
|
| | | this.settings['width_style'] = "100%";
|
| | | }
|
| | |
|
| | | if (("" + replace_element.style.height).indexOf('%') != -1) {
|
| | | this.settings['height'] = replace_element.style.height;
|
| | | this.settings['area_height'] = "100%";
|
| | | this.settings['height_style'] = "100%";
|
| | | }
|
| | |
|
| | | html = tinyMCE.applyTemplate(html);
|
| | |
| | | var dynamicIFrame = false;
|
| | | var tElm = targetDoc.getElementById(this.editorId);
|
| | |
|
| | | if (!tinyMCE.isMSIE) {
|
| | | if (!tinyMCE.isIE) {
|
| | | // Node case is preserved in XML strict mode
|
| | | if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName == "span")) {
|
| | | tElm = tinyMCE._createIFrame(tElm, targetDoc);
|
| | |
| | |
|
| | | // This timeout is needed in MSIE 5.5 for some odd reason
|
| | | // it seems that the document.frames isn't initialized yet?
|
| | | if (tinyMCE.isMSIE)
|
| | | if (tinyMCE.isIE)
|
| | | window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" + this.editorId + "\"]);", 1);
|
| | |
|
| | | tinyMCE.setupContent(this.editorId, true);
|
| | |
| | | }
|
| | | },
|
| | |
|
| | | getHTML : function(r) {
|
| | | var h, d = this.getDoc(), b = this.getBody();
|
| | |
|
| | | if (r)
|
| | | return b.innerHTML;
|
| | |
|
| | | h = tinyMCE._cleanupHTML(this, d, this.settings, b, false, true, false, true);
|
| | |
|
| | | if (tinyMCE.getParam("convert_fonts_to_spans"))
|
| | | tinyMCE.convertSpansToFonts(d);
|
| | |
|
| | | return h;
|
| | | },
|
| | |
|
| | | setHTML : function(h) {
|
| | | this.execCommand('mceSetContent', false, h);
|
| | | this.repaint();
|
| | | },
|
| | |
|
| | | getFocusElement : function() {
|
| | | return this.selection.getFocusElement();
|
| | | },
|
| | |
| | | },
|
| | |
|
| | | triggerSave : function(skip_cleanup, skip_callback) {
|
| | | var e, nl = new Array(), i, s;
|
| | | var e, nl = [], i, s;
|
| | |
|
| | | this.switchSettings();
|
| | | s = tinyMCE.settings;
|
| | |
|
| | | // Force hidden tabs visible while serializing
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
|
| | | if (tinyMCE.isRealIE) {
|
| | | e = this.iframeElement;
|
| | |
|
| | | do {
|
| | |
| | | nl[i].elm.className = s.hidden_tab_class;
|
| | | }
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js */
|
| | |
|
| | |
| | | s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>', 'gi'), '<$1$2 />');
|
| | |
|
| | | // Weird MSIE bug, <p><hr /></p> breaks runtime?
|
| | | if (tinyMCE.isMSIE)
|
| | | if (tinyMCE.isIE)
|
| | | s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'), "<hr>");
|
| | |
|
| | | // Weird tags will make IE error #bug: 1538495
|
| | | if (tinyMCE.isIE)
|
| | | s = s.replace(/<!(\s*)\/>/g, '');
|
| | |
|
| | | // Convert relative anchors to absolute URLs ex: #something to file.htm#something
|
| | | if (tinyMCE.getParam('convert_urls'))
|
| | | s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings['document_base_url'] + "#");
|
| | | // Removed: Since local document anchors should never be forced absolute example edit.php?id=something
|
| | | //if (tinyMCE.getParam('convert_urls'))
|
| | | // s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'), '$1' + tinyMCE.settings['document_base_url'] + "#");
|
| | |
|
| | | return s;
|
| | | };
|
| | |
| | | var h = doc.body.innerHTML;
|
| | | h = h.replace(/<span/gi, '<font');
|
| | | h = h.replace(/<\/span/gi, '</font');
|
| | | doc.body.innerHTML = h;
|
| | | tinyMCE.setInnerHTML(doc.body, h);
|
| | |
|
| | | var s = doc.getElementsByTagName("font");
|
| | | for (var i=0; i<s.length; i++) {
|
| | |
| | | var h = doc.body.innerHTML;
|
| | | h = h.replace(/<font/gi, '<span');
|
| | | h = h.replace(/<\/font/gi, '</span');
|
| | | doc.body.innerHTML = h;
|
| | | tinyMCE.setInnerHTML(doc.body, h);
|
| | |
|
| | | var fsClasses = tinyMCE.getParam('font_size_classes');
|
| | | if (fsClasses != '')
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getContent = function(editor_id) {
|
| | | var h;
|
| | |
|
| | | if (typeof(editor_id) != "undefined")
|
| | | tinyMCE.selectedInstance = tinyMCE.getInstanceById(editor_id);
|
| | | tinyMCE.getInstanceById(editor_id).select();
|
| | |
|
| | | if (tinyMCE.selectedInstance) {
|
| | | h = tinyMCE._cleanupHTML(this.selectedInstance, this.selectedInstance.getDoc(), tinyMCE.settings, this.selectedInstance.getBody(), false, true);
|
| | |
|
| | | // When editing always use fonts internaly
|
| | | if (tinyMCE.getParam("convert_fonts_to_spans"))
|
| | | tinyMCE.convertSpansToFonts(this.selectedInstance.getDoc());
|
| | |
|
| | | return h;
|
| | | }
|
| | | if (tinyMCE.selectedInstance)
|
| | | return tinyMCE.selectedInstance.getHTML();
|
| | |
|
| | | return null;
|
| | | };
|
| | |
| | | }
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype._cleanupHTML = function(inst, doc, config, elm, visual, on_save, on_submit) {
|
| | | var h, d, t1, t2, t3, t4, t5, c, s;
|
| | | TinyMCE_Engine.prototype._cleanupHTML = function(inst, doc, config, elm, visual, on_save, on_submit, inn) {
|
| | | var h, d, t1, t2, t3, t4, t5, c, s, nb;
|
| | |
|
| | | if (!tinyMCE.getParam('cleanup'))
|
| | | return elm.innerHTML;
|
| | |
| | | c.sourceIndex = -1;
|
| | |
|
| | | if (s.cleanup_serializer == "xml")
|
| | | h = c.serializeNodeAsXML(elm);
|
| | | h = c.serializeNodeAsXML(elm, inn);
|
| | | else
|
| | | h = c.serializeNodeAsHTML(elm);
|
| | | h = c.serializeNodeAsHTML(elm, inn);
|
| | |
|
| | | if (d)
|
| | | t3 = new Date().getTime();
|
| | |
|
| | | // Post processing
|
| | | nb = tinyMCE.getParam('entity_encoding') == 'numeric' ? ' ' : ' ';
|
| | | h = h.replace(/<\/?(body|head|html)[^>]*>/gi, '');
|
| | | h = h.replace(new RegExp(' (rowspan="1"|colspan="1")', 'g'), '');
|
| | | h = h.replace(/<p><hr \/><\/p>/g, '<hr />');
|
| | | h = h.replace(/<p>( | )<\/p><hr \/><p>( | )<\/p>/g, '<hr />');
|
| | | h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td> </td>');
|
| | | h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p> </p>');
|
| | | h = h.replace(/<p>\s*( | )\s*<br \/>\s*( | )\s*<\/p>/g, '<p> </p>');
|
| | | h = h.replace(/<p>\s*( | )\s*<br \/>\s*<\/p>/g, '<p> </p>');
|
| | | h = h.replace(/<p>\s*<br \/>\s* \s*<\/p>/g, '<p> </p>');
|
| | | h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb + '</td>');
|
| | | h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
|
| | | h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko
|
| | | h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P tags for Gecko
|
| | | h = h.replace(/<p>\s*( | )\s*<br \/>\s*( | )\s*<\/p>/g, '<p>' + nb + '</p>');
|
| | | h = h.replace(/<p>\s*( | )\s*<br \/>\s*<\/p>/g, '<p>' + nb + '</p>');
|
| | | h = h.replace(/<p>\s*<br \/>\s* \s*<\/p>/g, '<p>' + nb + '</p>');
|
| | | h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'), '$1');
|
| | | h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1> </p>');
|
| | | h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb + '</p>');
|
| | |
|
| | | // Clean body
|
| | | if (/^\s*(<br \/>|<p> <\/p>|<p> <\/p>|<p><\/p>)\s*$/.test(h))
|
| | |
| | | // Gecko specific processing
|
| | | if (tinyMCE.isGecko) {
|
| | | h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');
|
| | | h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1> </td>');
|
| | | h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g, '<td$1>' + nb + '</td>');
|
| | | }
|
| | |
|
| | | if (s.force_br_newlines)
|
| | |
| | | };
|
| | |
|
| | | function TinyMCE_Cleanup() {
|
| | | this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
|
| | | this.isIE = (navigator.appName == "Microsoft Internet Explorer");
|
| | | this.rules = tinyMCE.clearArray(new Array());
|
| | |
|
| | | // Default config
|
| | |
| | |
|
| | | this.vElements = tinyMCE.clearArray(new Array());
|
| | | this.vElementsRe = '';
|
| | | this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|BUTTON|AREA)$/;
|
| | | this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;
|
| | | this.codeElementsRe = /^(SCRIPT|STYLE)$/;
|
| | | this.serializationId = 0;
|
| | | this.mceAttribs = {
|
| | |
| | | this.nlBeforeRe = this._arrayToRe(s.newline_before_elements.split(','), 'gi', '<(', ')([^>]*)>');
|
| | | this.nlAfterRe = this._arrayToRe(s.newline_after_elements.split(','), 'gi', '<(', ')([^>]*)>');
|
| | | this.nlBeforeAfterRe = this._arrayToRe(s.newline_before_after_elements.split(','), 'gi', '<(\\/?)(', ')([^>]*)>');
|
| | | this.serializedNodes = [];
|
| | |
|
| | | if (s.invalid_elements != '')
|
| | | this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','), 'g', '^(', ')$');
|
| | |
| | | }
|
| | |
|
| | | this.vElementsRe = this._arrayToRe(this.vElements, '');
|
| | | },
|
| | |
|
| | | isValid : function(n) {
|
| | | this._setupRules(); // Will initialize cleanup rules
|
| | |
|
| | | // Clean the name up a bit
|
| | | n = n.replace(/[^a-z0-9]+/gi, '').toUpperCase();
|
| | |
|
| | | return !tinyMCE.getParam('cleanup') || this.vElementsRe.test(n);
|
| | | },
|
| | |
|
| | | addChildRemoveRuleStr : function(s) {
|
| | | var x, y, p, i, t, tn, ta, cl, r;
|
| | |
|
| | | if (!s)
|
| | | return;
|
| | |
|
| | | ta = s.split(',');
|
| | | for (x=0; x<ta.length; x++) {
|
| | | s = ta[x];
|
| | |
|
| | | // Split tag/children
|
| | | p = this.split(/\[|\]/, s);
|
| | | if (p == null || p.length < 1)
|
| | | t = s.toUpperCase();
|
| | | else
|
| | | t = p[0].toUpperCase();
|
| | |
|
| | | // Handle all tag names
|
| | | tn = this.split('/', t);
|
| | | for (y=0; y<tn.length; y++) {
|
| | | r = "^(";
|
| | |
|
| | | // Build regex
|
| | | cl = this.split(/\|/, p[1]);
|
| | | for (i=0; i<cl.length; i++) {
|
| | | if (cl[i] == '%istrict')
|
| | | r += tinyMCE.inlineStrict;
|
| | | else if (cl[i] == '%itrans')
|
| | | r += tinyMCE.inlineTransitional;
|
| | | else if (cl[i] == '%istrict_na')
|
| | | r += tinyMCE.inlineStrict.substring(2);
|
| | | else if (cl[i] == '%itrans_na')
|
| | | r += tinyMCE.inlineTransitional.substring(2);
|
| | | else if (cl[i] == '%btrans')
|
| | | r += tinyMCE.blockElms;
|
| | | else if (cl[i] == '%strict')
|
| | | r += tinyMCE.blockStrict;
|
| | | else
|
| | | r += (cl[i].charAt(0) != '#' ? cl[i].toUpperCase() : cl[i]);
|
| | |
|
| | | r += (i != cl.length - 1 ? '|' : '');
|
| | | }
|
| | |
|
| | | r += ')$';
|
| | | //tinyMCE.debug(t + "=" + r);
|
| | | if (this.childRules == null)
|
| | | this.childRules = tinyMCE.clearArray(new Array());
|
| | |
|
| | | this.childRules[tn[y]] = new RegExp(r);
|
| | |
|
| | | if (p.length > 1)
|
| | | this.childRules[tn[y]].wrapTag = p[2];
|
| | | }
|
| | | }
|
| | | },
|
| | |
|
| | | parseRuleStr : function(s) {
|
| | |
| | | for (i=0; i<a.length; i++) {
|
| | | t = a[i];
|
| | |
|
| | | if (t.charAt(0) == '!') {
|
| | | a[i] = t = t.substring(1);
|
| | |
|
| | | if (!r.reqAttribsRe)
|
| | | r.reqAttribsRe = '\\s+(' + t;
|
| | | else
|
| | | r.reqAttribsRe += '|' + t;
|
| | | }
|
| | |
|
| | | av = new RegExp('(=|:|<)(.*?)$').exec(t);
|
| | | t = t.replace(new RegExp('(=|:|<).*?$'), '');
|
| | | if (av && av.length > 0) {
|
| | |
| | | if (!r.validAttribValues)
|
| | | r.validAttribValues = tinyMCE.clearArray(new Array());
|
| | |
|
| | | r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?', av[0].substring(1)), '');
|
| | | r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?', av[0].substring(1)), 'i');
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | a[i] = t.toLowerCase();
|
| | | }
|
| | |
|
| | | if (r.reqAttribsRe)
|
| | | r.reqAttribsRe = new RegExp(r.reqAttribsRe + ')=\"', 'g');
|
| | |
|
| | | r.vAttribsRe += ')$';
|
| | | r.vAttribsRe = this._wildcardToRe(r.vAttribsRe);
|
| | |
| | | var s, b;
|
| | |
|
| | | if (!this.xmlDoc) {
|
| | | if (this.isMSIE) {
|
| | | if (this.isIE) {
|
| | | try {this.xmlDoc = new ActiveXObject('MSXML2.DOMDocument');} catch (e) {}
|
| | |
|
| | | if (!this.xmlDoc)
|
| | |
| | |
|
| | | this._convertToXML(n, b);
|
| | |
|
| | | if (this.isMSIE)
|
| | | if (this.isIE)
|
| | | return this.xmlDoc.xml;
|
| | | else
|
| | | return new XMLSerializer().serializeToString(this.xmlDoc);
|
| | |
| | | }
|
| | | },
|
| | |
|
| | | serializeNodeAsHTML : function(n) {
|
| | | var en, no, h = '', i, l, r, cn, va = false, f = false, at, hc;
|
| | | serializeNodeAsHTML : function(n, inn) {
|
| | | var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr;
|
| | |
|
| | | this._setupRules(); // Will initialize cleanup rules
|
| | |
|
| | | if (this._isDuplicate(n))
|
| | | return '';
|
| | |
|
| | | // Skip non valid child elements
|
| | | if (n.parentNode && this.childRules != null) {
|
| | | cr = this.childRules[n.parentNode.nodeName];
|
| | |
|
| | | if (typeof(cr) != "undefined" && !cr.test(n.nodeName)) {
|
| | | st = true;
|
| | | t = null;
|
| | | }
|
| | | }
|
| | |
|
| | | switch (n.nodeType) {
|
| | | case 1: // Element
|
| | | hc = n.hasChildNodes();
|
| | |
|
| | | // MSIE sometimes produces <//tag>
|
| | | if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && n.nodeName.indexOf('/') != -1)
|
| | | if (st)
|
| | | break;
|
| | |
|
| | | if (this.vElementsRe.test(n.nodeName) && (!this.iveRe || !this.iveRe.test(n.nodeName))) {
|
| | | // MSIE sometimes produces <//tag>
|
| | | if ((tinyMCE.isRealIE) && n.nodeName.indexOf('/') != -1)
|
| | | break;
|
| | |
|
| | | if (this.vElementsRe.test(n.nodeName) && (!this.iveRe || !this.iveRe.test(n.nodeName)) && !inn) {
|
| | | va = true;
|
| | |
|
| | | r = this.rules[n.nodeName];
|
| | |
| | | if (r.removeEmpty && !hc)
|
| | | return "";
|
| | |
|
| | | h += '<' + en;
|
| | | t = '<' + en;
|
| | |
|
| | | if (r.vAttribsReIsWild) {
|
| | | // Serialize wildcard attributes
|
| | |
| | | for (i=at.length-1; i>-1; i--) {
|
| | | no = at[i];
|
| | | if (no.specified && r.vAttribsRe.test(no.nodeName))
|
| | | h += this._serializeAttribute(n, r, no.nodeName);
|
| | | t += this._serializeAttribute(n, r, no.nodeName);
|
| | | }
|
| | | } else {
|
| | | // Serialize specific attributes
|
| | | for (i=r.vAttribs.length-1; i>-1; i--)
|
| | | h += this._serializeAttribute(n, r, r.vAttribs[i]);
|
| | | t += this._serializeAttribute(n, r, r.vAttribs[i]);
|
| | | }
|
| | |
|
| | | // Serialize mce_ atts
|
| | |
| | |
|
| | | for (no in at) {
|
| | | if (at[no])
|
| | | h += this._serializeAttribute(n, r, at[no]);
|
| | | t += this._serializeAttribute(n, r, at[no]);
|
| | | }
|
| | | }
|
| | |
|
| | | // Check for required attribs
|
| | | if (r.reqAttribsRe && !t.match(r.reqAttribsRe))
|
| | | t = null;
|
| | |
|
| | | // Close these
|
| | | if (this.closeElementsRe.test(n.nodeName))
|
| | | return h + ' />';
|
| | | if (t != null && this.closeElementsRe.test(n.nodeName))
|
| | | return t + ' />';
|
| | |
|
| | | h += '>';
|
| | | if (t != null)
|
| | | h += t + '>';
|
| | |
|
| | | if (this.isMSIE && this.codeElementsRe.test(n.nodeName))
|
| | | if (this.isIE && this.codeElementsRe.test(n.nodeName))
|
| | | h += n.innerHTML;
|
| | | }
|
| | | break;
|
| | |
|
| | | case 3: // Text
|
| | | if (st)
|
| | | break;
|
| | |
|
| | | if (n.parentNode && this.codeElementsRe.test(n.parentNode.nodeName))
|
| | | return this.isMSIE ? '' : n.nodeValue;
|
| | | return this.isIE ? '' : n.nodeValue;
|
| | |
|
| | | return this.xmlEncode(n.nodeValue);
|
| | |
|
| | | case 8: // Comment
|
| | | if (st)
|
| | | break;
|
| | |
|
| | | return "<!--" + this._trimComment(n.nodeValue) + "-->";
|
| | | }
|
| | |
|
| | |
| | | h += this.fillStr;
|
| | |
|
| | | // End element
|
| | | if (va)
|
| | | if (t != null && va)
|
| | | h += '</' + en + '>';
|
| | |
|
| | | return h;
|
| | |
| | | if (av.length != 0 && av == "{$uid}")
|
| | | av = "uid_" + (this.idCount++);
|
| | |
|
| | | if (av.length != 0)
|
| | | return " " + an + "=" + '"' + this.xmlEncode(av) + '"';
|
| | | if (av.length != 0) {
|
| | | if (an.indexOf('on') != 0)
|
| | | av = this.xmlEncode(av);
|
| | |
|
| | | return " " + an + "=" + '"' + av + '"';
|
| | | }
|
| | |
|
| | | return "";
|
| | | },
|
| | |
|
| | | formatHTML : function(h) {
|
| | | var s = this.settings, p = '', i = 0, li = 0, o = '', l;
|
| | |
|
| | | // Replace BR in pre elements to \n
|
| | | h = h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {
|
| | | c = c.replace(/<br\s*\/>/gi, '\n');
|
| | | return '<pre' + b + '>' + c + '</pre>';
|
| | | });
|
| | |
|
| | | h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :)
|
| | | h = '\n' + h;
|
| | |
| | | },
|
| | |
|
| | | xmlEncode : function(s) {
|
| | | var i, l, e, o = '', c;
|
| | | var cl = this;
|
| | |
|
| | | this._setupEntities(); // Will intialize lookup table
|
| | |
|
| | |
| | | return tinyMCE.xmlEncode(s);
|
| | |
|
| | | case "named":
|
| | | for (i=0, l=s.length; i<l; i++) {
|
| | | c = s.charCodeAt(i);
|
| | | e = this.entities[c];
|
| | | return s.replace(new RegExp('[\u007F-\uFFFF<>&"\']', 'g'), function (c, b) {
|
| | | b = cl.entities[c.charCodeAt(0)];
|
| | |
|
| | | if (e && e != '')
|
| | | o += '&' + e + ';';
|
| | | else
|
| | | o += String.fromCharCode(c);
|
| | | }
|
| | |
|
| | | return o;
|
| | | return b ? '&' + b + ';' : c;
|
| | | });
|
| | |
|
| | | case "numeric":
|
| | | for (i=0, l=s.length; i<l; i++) {
|
| | | c = s.charCodeAt(i);
|
| | |
|
| | | if (c > 127 || c == 60 || c == 62 || c == 38 || c == 39 || c == 34)
|
| | | o += '&#' + c + ";";
|
| | | else
|
| | | o += String.fromCharCode(c);
|
| | | }
|
| | |
|
| | | return o;
|
| | | return s.replace(new RegExp('[\u007F-\uFFFF<>&"\']', 'g'), function (c, b) {
|
| | | return b ? '&#' + c.charCodeAt(0) + ';' : c;
|
| | | });
|
| | | }
|
| | |
|
| | | return s;
|
| | |
| | | if (n == "class" && !v)
|
| | | v = e.className;
|
| | |
|
| | | if (this.isMSIE && n == "http-equiv")
|
| | | if (this.isIE && n == "http-equiv")
|
| | | v = e.httpEquiv;
|
| | |
|
| | | if (this.isMSIE && e.nodeName == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded")
|
| | | if (this.isIE && e.nodeName == "FORM" && n == "enctype" && v == "application/x-www-form-urlencoded")
|
| | | v = "";
|
| | |
|
| | | if (this.isMSIE && e.nodeName == "INPUT" && n == "size" && v == "20")
|
| | | if (this.isIE && e.nodeName == "INPUT" && n == "size" && v == "20")
|
| | | v = "";
|
| | |
|
| | | if (this.isMSIE && e.nodeName == "INPUT" && n == "maxlength" && v == "2147483647")
|
| | | if (this.isIE && e.nodeName == "INPUT" && n == "maxlength" && v == "2147483647")
|
| | | v = "";
|
| | |
|
| | | if (n == "style" && !tinyMCE.isOpera)
|
| | |
| | | if (!this.rulesDone) {
|
| | | this.addRuleStr(s.valid_elements);
|
| | | this.addRuleStr(s.extended_valid_elements);
|
| | | this.addChildRemoveRuleStr(s.valid_child_elements);
|
| | |
|
| | | this.rulesDone = true;
|
| | | }
|
| | |
| | | if (!this.settings.fix_content_duplication)
|
| | | return false;
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera && n.nodeType == 1) {
|
| | | if (tinyMCE.isRealIE && n.nodeType == 1) {
|
| | | // Mark elements
|
| | | if (n.mce_serialized == this.serializationId)
|
| | | return true;
|
| | |
| | |
|
| | | return false;
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_DOMUtils.class.js */
|
| | |
|
| | | TinyMCE_Engine.prototype.createTagHTML = function(tn, a, h) {
|
| | | var o = '', f = tinyMCE.xmlEncode;
|
| | |
|
| | | o = '<' + tn;
|
| | |
|
| | | if (a) {
|
| | | for (n in a) {
|
| | | if (typeof(a[n]) != 'function' && a[n] != null)
|
| | | o += ' ' + f(n) + '="' + f('' + a[n]) + '"';
|
| | | }
|
| | | }
|
| | |
|
| | | o += !h ? ' />' : '>' + h + '</' + tn + '>';
|
| | |
|
| | | return o;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.createTag = function(d, tn, a, h) {
|
| | | var o = d.createElement(tn);
|
| | |
|
| | | if (a) {
|
| | | for (n in a) {
|
| | | if (typeof(a[n]) != 'function' && a[n] != null)
|
| | | tinyMCE.setAttrib(o, n, a[n]);
|
| | | }
|
| | | }
|
| | |
|
| | | if (h)
|
| | | o.innerHTML = h;
|
| | |
|
| | | return o;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getElementByAttributeValue = function(n, e, a, v) {
|
| | | return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0];
|
| | |
| | | return n != null && n.nodeType == 1 && this.blockRegExp.test(n.nodeName);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getParentBlockElement = function(n) {
|
| | | while (n) {
|
| | | if (this.isBlockElement(n))
|
| | | return n;
|
| | |
|
| | | n = n.parentNode;
|
| | | }
|
| | | TinyMCE_Engine.prototype.getParentBlockElement = function(n, r) {
|
| | | return this.getParentNode(n, function(n) {
|
| | | return tinyMCE.isBlockElement(n);
|
| | | }, r);
|
| | |
|
| | | return null;
|
| | | };
|
| | |
| | | TinyMCE_Engine.prototype.setInnerHTML = function(e, h) {
|
| | | var i, nl, n;
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
|
| | | // Convert all strong/em to b/i in Gecko
|
| | | if (tinyMCE.isGecko) {
|
| | | h = h.replace(/<strong/gi, '<b');
|
| | | h = h.replace(/<em(\/?)/gi, '<i');
|
| | | h = h.replace(/<em /gi, '<i');
|
| | | h = h.replace(/<\/strong>/gi, '</b>');
|
| | | h = h.replace(/<\/em>/gi, '</i>');
|
| | | }
|
| | |
|
| | | if (tinyMCE.isRealIE) {
|
| | | // Since MSIE handles invalid HTML better that valid XHTML we
|
| | | // need to make some things invalid. <hr /> gets converted to <hr>.
|
| | | h = h.replace(/\s\/>/g, '>');
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getOuterHTML = function(e) {
|
| | | if (tinyMCE.isMSIE)
|
| | | if (tinyMCE.isIE)
|
| | | return e.outerHTML;
|
| | |
|
| | | var d = e.ownerDocument.createElement("body");
|
| | | d.appendChild(e);
|
| | | d.appendChild(e.cloneNode(true));
|
| | | return d.innerHTML;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.setOuterHTML = function(e, h) {
|
| | | if (tinyMCE.isMSIE) {
|
| | | e.outerHTML = h;
|
| | | return;
|
| | | }
|
| | | TinyMCE_Engine.prototype.setOuterHTML = function(e, h, d) {
|
| | | var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;
|
| | |
|
| | | var d = e.ownerDocument.createElement("body");
|
| | | d.innerHTML = h;
|
| | | e.parentNode.replaceChild(d.firstChild, e);
|
| | | if (tinyMCE.isIE && e.nodeType == 1)
|
| | | e.outerHTML = h;
|
| | | else {
|
| | | t = d.createElement("body");
|
| | | t.innerHTML = h;
|
| | |
|
| | | for (i=0, nl=t.childNodes; i<nl.length; i++)
|
| | | e.parentNode.insertBefore(nl[i].cloneNode(true), e);
|
| | |
|
| | | e.parentNode.removeChild(e);
|
| | | }
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype._getElementById = function(id, d) {
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getNodeTree = function(n, na, t, nn) {
|
| | | var i;
|
| | |
|
| | | if (typeof(t) == "undefined" || n.nodeType == t && (typeof(nn) == "undefined" || n.nodeName == nn))
|
| | | na[na.length] = n;
|
| | |
|
| | | if (n.hasChildNodes()) {
|
| | | for (i=0; i<n.childNodes.length; i++)
|
| | | tinyMCE.getNodeTree(n.childNodes[i], na, t, nn);
|
| | | }
|
| | |
|
| | | return na;
|
| | | return this.selectNodes(n, function(n) {
|
| | | return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);
|
| | | }, na ? na : new Array());
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getParentElement = function(node, names, attrib_name, attrib_value) {
|
| | | if (typeof(names) == "undefined") {
|
| | | if (node.nodeType == 1)
|
| | | return node;
|
| | | TinyMCE_Engine.prototype.getParentElement = function(n, na, f, r) {
|
| | | var re = na ? new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') + ')$') : 0, v;
|
| | |
|
| | | // Find parent node that is a element
|
| | | while ((node = node.parentNode) != null && node.nodeType != 1) ;
|
| | | // Compatiblity with old scripts where f param was a attribute string
|
| | | if (f && typeof(f) == 'string')
|
| | | return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) != '';});
|
| | |
|
| | | return node;
|
| | | }
|
| | |
|
| | | if (node == null)
|
| | | return null;
|
| | |
|
| | | var namesAr = names.toUpperCase().split(',');
|
| | |
|
| | | do {
|
| | | for (var i=0; i<namesAr.length; i++) {
|
| | | if (node.nodeName == namesAr[i] || names == "*") {
|
| | | if (typeof(attrib_name) == "undefined")
|
| | | return node;
|
| | | else if (node.getAttribute(attrib_name)) {
|
| | | if (typeof(attrib_value) == "undefined") {
|
| | | if (node.getAttribute(attrib_name) != "")
|
| | | return node;
|
| | | } else if (node.getAttribute(attrib_name) == attrib_value)
|
| | | return node;
|
| | | }
|
| | | }
|
| | | }
|
| | | } while ((node = node.parentNode) != null);
|
| | |
|
| | | return null;
|
| | | return this.getParentNode(n, function(n) {
|
| | | return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName))) && (!f || f(n));
|
| | | }, r);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getParentNode = function(n, f) {
|
| | | TinyMCE_Engine.prototype.getParentNode = function(n, f, r) {
|
| | | while (n) {
|
| | | if (n == r)
|
| | | return null;
|
| | |
|
| | | if (f(n))
|
| | | return n;
|
| | |
|
| | |
| | | return null;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getAttrib = function(elm, name, default_value) {
|
| | | if (typeof(default_value) == "undefined")
|
| | | default_value = "";
|
| | | TinyMCE_Engine.prototype.getAttrib = function(elm, name, dv) {
|
| | | var v;
|
| | |
|
| | | if (typeof(dv) == "undefined")
|
| | | dv = "";
|
| | |
|
| | | // Not a element
|
| | | if (!elm || elm.nodeType != 1)
|
| | | return default_value;
|
| | | return dv;
|
| | |
|
| | | var v = elm.getAttribute(name);
|
| | | v = elm.getAttribute(name);
|
| | |
|
| | | // Try className for class attrib
|
| | | if (name == "class" && !v)
|
| | |
| | | if (tinyMCE.isGecko && name == "href" && elm.href != null && elm.href != "")
|
| | | v = elm.href;
|
| | |
|
| | | if (name == "http-equiv" && tinyMCE.isMSIE)
|
| | | if (name == "http-equiv" && tinyMCE.isIE)
|
| | | v = elm.httpEquiv;
|
| | |
|
| | | if (name == "style" && !tinyMCE.isOpera)
|
| | | v = elm.style.cssText;
|
| | |
|
| | | return (v && v != "") ? v : default_value;
|
| | | return (v && v != "") ? v : dv;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.setAttrib = function(element, name, value, fix_value) {
|
| | | if (typeof(value) == "number" && value != null)
|
| | | value = "" + value;
|
| | | TinyMCE_Engine.prototype.setAttrib = function(el, name, va, fix) {
|
| | | if (typeof(va) == "number" && va != null)
|
| | | va = "" + va;
|
| | |
|
| | | if (fix_value) {
|
| | | if (value == null)
|
| | | value = "";
|
| | | if (fix) {
|
| | | if (va == null)
|
| | | va = "";
|
| | |
|
| | | var re = new RegExp('[^0-9%]', 'g');
|
| | | value = value.replace(re, '');
|
| | | va = va.replace(/[^0-9%]/g, '');
|
| | | }
|
| | |
|
| | | if (name == "style")
|
| | | element.style.cssText = value;
|
| | | el.style.cssText = va;
|
| | |
|
| | | if (name == "class")
|
| | | element.className = value;
|
| | | el.className = va;
|
| | |
|
| | | if (value != null && value != "" && value != -1)
|
| | | element.setAttribute(name, value);
|
| | | if (va != null && va != "" && va != -1)
|
| | | el.setAttribute(name, va);
|
| | | else
|
| | | element.removeAttribute(name);
|
| | | el.removeAttribute(name);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.setStyleAttrib = function(elm, name, value) {
|
| | | eval('elm.style.' + name + '=value;');
|
| | | TinyMCE_Engine.prototype.setStyleAttrib = function(e, n, v) {
|
| | | e.style[n] = v;
|
| | |
|
| | | // Style attrib deleted
|
| | | if (tinyMCE.isMSIE && value == null || value == '') {
|
| | | var str = tinyMCE.serializeStyle(tinyMCE.parseStyle(elm.style.cssText));
|
| | | elm.style.cssText = str;
|
| | | elm.setAttribute("style", str);
|
| | | // Style attrib deleted in IE
|
| | | if (tinyMCE.isIE && v == null || v == '') {
|
| | | v = tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));
|
| | | e.style.cssText = v;
|
| | | e.setAttribute("style", v);
|
| | | }
|
| | | };
|
| | |
|
| | |
| | | }
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getAbsPosition = function(n) {
|
| | | var p = {absLeft : 0, absTop : 0};
|
| | | TinyMCE_Engine.prototype.getAbsPosition = function(n, cn) {
|
| | | var l = 0, t = 0;
|
| | |
|
| | | while (n) {
|
| | | p.absLeft += n.offsetLeft;
|
| | | p.absTop += n.offsetTop;
|
| | | while (n && n != cn) {
|
| | | l += n.offsetLeft;
|
| | | t += n.offsetTop;
|
| | | n = n.offsetParent;
|
| | | }
|
| | |
|
| | | return p;
|
| | | return {absLeft : l, absTop : t};
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.prevNode = function(e, n) {
|
| | |
| | | return null;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.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;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.selectNodes = function(n, f, a) {
|
| | | var i;
|
| | |
|
| | |
| | |
|
| | | TinyMCE_Engine.prototype.addCSSClass = function(e, c, b) {
|
| | | var o = this.removeCSSClass(e, c);
|
| | |
|
| | | return e.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.removeCSSClass = function(e, c) {
|
| | | var a = this.explode(' ', e.className), i;
|
| | | c = e.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
|
| | | return e.className = c != ' ' ? c : '';
|
| | | };
|
| | |
|
| | | for (i=0; i<a.length; i++) {
|
| | | if (a[i] == c)
|
| | | a[i] = '';
|
| | | }
|
| | |
|
| | | return e.className = a.join(' ');
|
| | | TinyMCE_Engine.prototype.hasCSSClass = function(n, c) {
|
| | | return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.renameElement = function(e, n, d) {
|
| | |
| | |
|
| | | e.parentNode.replaceChild(ne, e);
|
| | | }
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.getViewPort = function(w) {
|
| | | var d = w.document, m = d.compatMode == 'CSS1Compat', b = d.body, de = d.documentElement;
|
| | |
|
| | | return {
|
| | | left : w.pageXOffset || (m ? de.scrollLeft : b.scrollLeft),
|
| | | top : w.pageYOffset || (m ? de.scrollTop : b.scrollTop),
|
| | | width : w.innerWidth || (m ? de.clientWidth : b.clientWidth),
|
| | | height : w.innerHeight || (m ? de.clientHeight : b.clientHeight)
|
| | | };
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_URL.class.js */
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.convertRelativeToAbsoluteURL = function(base_url, relative_url) {
|
| | | var baseURL = this.parseURL(base_url);
|
| | | var baseURL = this.parseURL(base_url), baseURLParts, relURLParts;
|
| | | var relURL = this.parseURL(relative_url);
|
| | |
|
| | | if (relative_url == "" || relative_url.charAt(0) == '/' || relative_url.indexOf('://') != -1 || relative_url.indexOf('mailto:') != -1 || relative_url.indexOf('javascript:') != -1)
|
| | | if (relative_url == "" || relative_url.indexOf('://') != -1 || /^(mailto:|javascript:|#|\/)/.test(relative_url))
|
| | | return relative_url;
|
| | |
|
| | | // Split parts
|
| | |
| | | return url;
|
| | |
|
| | | // Fix relative/Mozilla
|
| | | if (!tinyMCE.isMSIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')
|
| | | if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/')
|
| | | return tinyMCE.settings['base_href'] + url;
|
| | |
|
| | | // Handle relative URLs
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.convertAllRelativeURLs = function(body) {
|
| | | // Convert all image URL:s to absolute URL
|
| | | var elms = body.getElementsByTagName("img");
|
| | | for (var i=0; i<elms.length; i++) {
|
| | | var src = tinyMCE.getAttrib(elms[i], 'src');
|
| | | var i, elms, src, href, mhref, msrc;
|
| | |
|
| | | var msrc = tinyMCE.getAttrib(elms[i], 'mce_src');
|
| | | // Convert all image URL:s to absolute URL
|
| | | elms = body.getElementsByTagName("img");
|
| | | for (i=0; i<elms.length; i++) {
|
| | | src = tinyMCE.getAttrib(elms[i], 'src');
|
| | |
|
| | | msrc = tinyMCE.getAttrib(elms[i], 'mce_src');
|
| | | if (msrc != "")
|
| | | src = msrc;
|
| | |
|
| | |
| | | }
|
| | |
|
| | | // Convert all link URL:s to absolute URL
|
| | | var elms = body.getElementsByTagName("a");
|
| | | for (var i=0; i<elms.length; i++) {
|
| | | var href = tinyMCE.getAttrib(elms[i], 'href');
|
| | | elms = body.getElementsByTagName("a");
|
| | | for (i=0; i<elms.length; i++) {
|
| | | href = tinyMCE.getAttrib(elms[i], 'href');
|
| | |
|
| | | var mhref = tinyMCE.getAttrib(elms[i], 'mce_href');
|
| | | mhref = tinyMCE.getAttrib(elms[i], 'mce_href');
|
| | | if (mhref != "")
|
| | | href = mhref;
|
| | |
|
| | |
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Array.class.js */
|
| | |
|
| | | TinyMCE_Engine.prototype.clearArray = function(a) {
|
| | | for (var k in a)
|
| | | a[k] = null;
|
| | | var n;
|
| | |
|
| | | for (n in a)
|
| | | a[n] = null;
|
| | |
|
| | | return a;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.explode = function(d, s) {
|
| | | var ar = s.split(d), oar = new Array(), i;
|
| | |
|
| | | for (i = 0; i<ar.length; i++) {
|
| | | if (ar[i] != "")
|
| | | oar[oar.length] = ar[i];
|
| | | }
|
| | |
|
| | | return oar;
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Event.class.js */
|
| | |
|
| | | TinyMCE_Engine.prototype._setEventsEnabled = function(node, state) {
|
| | | var events = new Array('onfocus','onblur','onclick','ondblclick',
|
| | | var evs, x, y, elms, i, event;
|
| | | var events = ['onfocus','onblur','onclick','ondblclick',
|
| | | 'onmousedown','onmouseup','onmouseover','onmousemove',
|
| | | 'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup');
|
| | | 'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];
|
| | |
|
| | | var evs = tinyMCE.settings['event_elements'].split(',');
|
| | | for (var y=0; y<evs.length; y++){
|
| | | var elms = node.getElementsByTagName(evs[y]);
|
| | | for (var i=0; i<elms.length; i++) {
|
| | | var event = "";
|
| | | evs = tinyMCE.settings['event_elements'].split(',');
|
| | | for (y=0; y<evs.length; y++){
|
| | | elms = node.getElementsByTagName(evs[y]);
|
| | | for (i=0; i<elms.length; i++) {
|
| | | event = "";
|
| | |
|
| | | for (var x=0; x<events.length; x++) {
|
| | | for (x=0; x<events.length; x++) {
|
| | | if ((event = tinyMCE.getAttrib(elms[i], events[x])) != '') {
|
| | | event = tinyMCE.cleanupEventStr("" + event);
|
| | |
|
| | |
| | | if (!tinyMCE.isInstance(inst))
|
| | | continue;
|
| | |
|
| | | tinyMCE.selectedInstance = inst;
|
| | | inst.select();
|
| | | win = inst.getWin();
|
| | |
|
| | | if (win && win.event) {
|
| | |
| | | }
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.findEvent = function(e) {
|
| | | var n, inst;
|
| | |
|
| | | if (e)
|
| | | return e;
|
| | |
|
| | | for (n in tinyMCE.instances) {
|
| | | inst = tinyMCE.instances[n];
|
| | |
|
| | | if (tinyMCE.isInstance(inst) && inst.getWin().event)
|
| | | return inst.getWin().event;
|
| | | }
|
| | |
|
| | | return null;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.unloadHandler = function() {
|
| | | tinyMCE.triggerSave(true, true);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.addEventHandlers = function(inst) {
|
| | | var doc = inst.getDoc();
|
| | | this.setEventHandlers(inst, 1);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.setEventHandlers = function(inst, s) {
|
| | | var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;
|
| | |
|
| | | ie = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'controlselect', 'dblclick'];
|
| | | ot = ['keypress', 'keyup', 'keydown', 'click', 'mouseup', 'mousedown', 'focus', 'blur', 'dragdrop'];
|
| | |
|
| | | inst.switchSettings();
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | tinyMCE.addEvent(doc, "keypress", TinyMCE_Engine.prototype._eventPatch);
|
| | | tinyMCE.addEvent(doc, "keyup", TinyMCE_Engine.prototype._eventPatch);
|
| | | tinyMCE.addEvent(doc, "keydown", TinyMCE_Engine.prototype._eventPatch);
|
| | | tinyMCE.addEvent(doc, "mouseup", TinyMCE_Engine.prototype._eventPatch);
|
| | | tinyMCE.addEvent(doc, "mousedown", TinyMCE_Engine.prototype._eventPatch);
|
| | | tinyMCE.addEvent(doc, "click", TinyMCE_Engine.prototype._eventPatch);
|
| | | if (tinyMCE.isIE) {
|
| | | for (i=0; i<ie.length; i++)
|
| | | f(doc, ie[i], TinyMCE_Engine.prototype._eventPatch);
|
| | | } else {
|
| | | tinyMCE.addEvent(doc, "keypress", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "keydown", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "keyup", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "click", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "mouseup", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "mousedown", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "focus", tinyMCE.handleEvent);
|
| | | tinyMCE.addEvent(doc, "blur", tinyMCE.handleEvent);
|
| | | for (i=0; i<ot.length; i++)
|
| | | f(doc, ot[i], tinyMCE.handleEvent);
|
| | |
|
| | | eval('try { doc.designMode = "On"; } catch(e) {}'); // Force designmode
|
| | | }
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.onMouseMove = function() {
|
| | | var inst;
|
| | | var inst, lh;
|
| | |
|
| | | // Fix for IE7 bug where it's not restoring hover on anchors correctly
|
| | | if (tinyMCE.lastHover) {
|
| | | lh = tinyMCE.lastHover;
|
| | |
|
| | | // Call out on menus and refresh class on normal buttons
|
| | | if (lh.className.indexOf('mceMenu') != -1)
|
| | | tinyMCE._menuButtonEvent('out', lh);
|
| | | else
|
| | | lh.className = lh.className;
|
| | |
|
| | | tinyMCE.lastHover = null;
|
| | | }
|
| | |
|
| | | if (!tinyMCE.hasMouseMoved) {
|
| | | inst = tinyMCE.selectedInstance;
|
| | |
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.cancelEvent = function(e) {
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (!e)
|
| | | return false;
|
| | |
|
| | | if (tinyMCE.isIE) {
|
| | | e.returnValue = false;
|
| | | e.cancelBubble = true;
|
| | | } else
|
| | | } else {
|
| | | e.preventDefault();
|
| | | e.stopPropagation && e.stopPropagation();
|
| | | }
|
| | |
|
| | | return false;
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.addEvent = function(o, n, h) {
|
| | | // Add cleanup for all non unload events
|
| | | if (n != 'unload') {
|
| | | function clean() {
|
| | | var ex;
|
| | |
|
| | | try {
|
| | | tinyMCE.removeEvent(o, n, h);
|
| | | tinyMCE.removeEvent(window, 'unload', clean);
|
| | | o = n = h = null;
|
| | | } catch (ex) {
|
| | | // IE may produce access denied exception on unload
|
| | | }
|
| | | }
|
| | |
|
| | | // Add memory cleaner
|
| | | tinyMCE.addEvent(window, 'unload', clean);
|
| | | }
|
| | |
|
| | | if (o.attachEvent)
|
| | | o.attachEvent("on" + n, h);
|
| | | else
|
| | | o.addEventListener(n, h, false);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.removeEvent = function(o, n, h) {
|
| | | if (o.detachEvent)
|
| | | o.detachEvent("on" + n, h);
|
| | | else
|
| | | o.removeEventListener(n, h, false);
|
| | | };
|
| | |
|
| | | TinyMCE_Engine.prototype.addSelectAccessibility = function(e, s, w) {
|
| | |
| | |
|
| | | TinyMCE_Engine.prototype.accessibleEventHandler = function(e) {
|
| | | var win = this._win;
|
| | | e = tinyMCE.isMSIE ? win.event : e;
|
| | | var elm = tinyMCE.isMSIE ? e.srcElement : e.target;
|
| | | e = tinyMCE.isIE ? win.event : e;
|
| | | var elm = tinyMCE.isIE ? e.srcElement : e.target;
|
| | |
|
| | | // Unpiggyback onchange on blur
|
| | | if (e.type == "blur") {
|
| | |
| | | TinyMCE_Engine.prototype._resetIframeHeight = function() {
|
| | | var ife;
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
|
| | | if (tinyMCE.isRealIE) {
|
| | | ife = tinyMCE.selectedInstance.iframeElement;
|
| | |
|
| | | /* if (ife._oldWidth) {
|
| | |
| | | var inst = this.instance;
|
| | | var e, r = this.getRng(), h;
|
| | |
|
| | | if (tinyMCE.isSafari) {
|
| | | // Not realy perfect!!
|
| | | return r.toString();
|
| | | }
|
| | | if (!r)
|
| | | return null;
|
| | |
|
| | | e = document.createElement("body");
|
| | |
|
| | | if (tinyMCE.isGecko)
|
| | | if (r.cloneContents)
|
| | | e.appendChild(r.cloneContents());
|
| | | else |
| | | else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) != 'undefined')
|
| | | e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
|
| | | else
|
| | | e.innerHTML = r.toString(); // Failed, use text for now
|
| | |
|
| | | h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true, false);
|
| | |
|
| | |
| | | var inst = this.instance;
|
| | | var d, r, s, t;
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isIE) {
|
| | | d = inst.getDoc();
|
| | |
|
| | | if (d.selection.type == "Text") {
|
| | |
| | | },
|
| | |
|
| | | getBookmark : function(simple) {
|
| | | var inst = this.instance;
|
| | | var rng = this.getRng();
|
| | | var doc = this.instance.getDoc();
|
| | | var sp, le, s, e, nl, i, si, ei;
|
| | | var trng, sx, sy, xx = -999999999;
|
| | | var doc = inst.getDoc(), b = inst.getBody();
|
| | | var sp, le, s, e, nl, i, si, ei, w;
|
| | | var trng, sx, sy, xx = -999999999, vp = inst.getViewPort();
|
| | |
|
| | | // Skip Opera for now
|
| | | if (tinyMCE.isOpera)
|
| | | return null;
|
| | | sx = vp.left;
|
| | | sy = vp.top;
|
| | |
|
| | | sx = doc.body.scrollLeft + doc.documentElement.scrollLeft;
|
| | | sy = doc.body.scrollTop + doc.documentElement.scrollTop;
|
| | |
|
| | | if (tinyMCE.isSafari || tinyMCE.isGecko)
|
| | | if (tinyMCE.isSafari || tinyMCE.isOpera || simple)
|
| | | return {rng : rng, scrollX : sx, scrollY : sy};
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (simple)
|
| | | return {rng : rng};
|
| | |
|
| | | if (tinyMCE.isIE) {
|
| | | if (rng.item) {
|
| | | e = rng.item(0);
|
| | |
|
| | | nl = doc.getElementsByTagName(e.nodeName);
|
| | | nl = b.getElementsByTagName(e.nodeName);
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (e == nl[i]) {
|
| | | sp = i;
|
| | |
| | | scrollY : sy
|
| | | };
|
| | | } else {
|
| | | trng = doc.body.createTextRange();
|
| | | trng.moveToElementText(inst.getBody());
|
| | | trng.collapse(true);
|
| | | bp = Math.abs(trng.move('character', xx));
|
| | |
|
| | | trng = rng.duplicate();
|
| | | trng.collapse(true);
|
| | | sp = Math.abs(trng.move('character', xx));
|
| | |
| | | le = Math.abs(trng.move('character', xx)) - sp;
|
| | |
|
| | | return {
|
| | | start : sp,
|
| | | start : sp - bp,
|
| | | length : le,
|
| | | scrollX : sx,
|
| | | scrollY : sy
|
| | |
| | | }
|
| | |
|
| | | if (tinyMCE.isGecko) {
|
| | | s = tinyMCE.getParentElement(rng.startContainer);
|
| | | for (si=0; si<s.childNodes.length && s.childNodes[si] != rng.startContainer; si++) ;
|
| | | s = this.getSel();
|
| | | e = this.getFocusElement();
|
| | |
|
| | | nl = doc.getElementsByTagName(s.nodeName);
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (s == nl[i]) {
|
| | | if (!s)
|
| | | return null;
|
| | |
|
| | | if (e && e.nodeName == 'IMG') {
|
| | | /*nl = b.getElementsByTagName('IMG');
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (e == nl[i]) {
|
| | | sp = i;
|
| | | break;
|
| | | }
|
| | | }*/
|
| | |
|
| | | return {
|
| | | start : -1,
|
| | | end : -1,
|
| | | index : sp,
|
| | | scrollX : sx,
|
| | | scrollY : sy
|
| | | };
|
| | | }
|
| | |
|
| | | e = tinyMCE.getParentElement(rng.endContainer);
|
| | | for (ei=0; ei<e.childNodes.length && e.childNodes[ei] != rng.endContainer; ei++) ;
|
| | | // Caret or selection
|
| | | if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
|
| | | e = this._getPosText(b, s.anchorNode, s.focusNode);
|
| | |
|
| | | nl = doc.getElementsByTagName(e.nodeName);
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (e == nl[i]) {
|
| | | le = i;
|
| | | break;
|
| | | }
|
| | | if (!e)
|
| | | return {scrollX : sx, scrollY : sy};
|
| | |
|
| | | return {
|
| | | start : e.start + s.anchorOffset,
|
| | | end : e.end + s.focusOffset,
|
| | | scrollX : sx,
|
| | | scrollY : sy
|
| | | };
|
| | | } else {
|
| | | e = this._getPosText(b, rng.startContainer, rng.endContainer);
|
| | |
|
| | | if (!e)
|
| | | return {scrollX : sx, scrollY : sy};
|
| | |
|
| | | return {
|
| | | start : e.start + rng.startOffset,
|
| | | end : e.end + rng.endOffset,
|
| | | scrollX : sx,
|
| | | scrollY : sy
|
| | | };
|
| | | }
|
| | |
|
| | | //tinyMCE.debug(s.nodeName, sp, rng.startOffset, '-' , e.nodeName, le, rng.endOffset);
|
| | | //tinyMCE.debug(sx, sy);
|
| | |
|
| | | return {
|
| | | startTag : s.nodeName,
|
| | | start : sp,
|
| | | startIndex : si,
|
| | | endTag : e.nodeName,
|
| | | end : le,
|
| | | endIndex : ei,
|
| | | startOffset : rng.startOffset,
|
| | | endOffset : rng.endOffset,
|
| | | scrollX : sx,
|
| | | scrollY : sy
|
| | | };
|
| | | }
|
| | |
|
| | | return null;
|
| | | },
|
| | |
|
| | | moveToBookmark : function(bookmark) {
|
| | | var rng, nl, i;
|
| | | var inst = this.instance;
|
| | | var rng, nl, i, ex, b = inst.getBody(), sd;
|
| | | var doc = inst.getDoc();
|
| | | var win = inst.getWin();
|
| | | var sel = this.getSel();
|
| | |
| | | return false;
|
| | |
|
| | | if (tinyMCE.isSafari) {
|
| | | sel.setBaseAndExtent(bookmark.startContainer, bookmark.startOffset, bookmark.endContainer, bookmark.endOffset);
|
| | | sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset, bookmark.rng.endContainer, bookmark.rng.endOffset);
|
| | | return true;
|
| | | }
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | if (tinyMCE.isRealIE) {
|
| | | if (bookmark.rng) {
|
| | | bookmark.rng.select();
|
| | | try {
|
| | | bookmark.rng.select();
|
| | | } catch (ex) {
|
| | | // Ignore
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | win.focus();
|
| | |
|
| | | if (bookmark.tag) {
|
| | | rng = inst.getBody().createControlRange();
|
| | | rng = b.createControlRange();
|
| | |
|
| | | nl = doc.getElementsByTagName(bookmark.tag);
|
| | | nl = b.getElementsByTagName(bookmark.tag);
|
| | |
|
| | | if (nl.length > bookmark.index) {
|
| | | try {
|
| | |
| | | }
|
| | | }
|
| | | } else {
|
| | | rng = inst.getSel().createRange();
|
| | | rng.moveToElementText(inst.getBody());
|
| | | rng.collapse(true);
|
| | | rng.moveStart('character', bookmark.start);
|
| | | rng.moveEnd('character', bookmark.length);
|
| | | // Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs
|
| | | try {
|
| | | // Incorrect bookmark
|
| | | if (bookmark.start < 0)
|
| | | return true;
|
| | |
|
| | | rng = inst.getSel().createRange();
|
| | | rng.moveToElementText(inst.getBody());
|
| | | rng.collapse(true);
|
| | | rng.moveStart('character', bookmark.start);
|
| | | rng.moveEnd('character', bookmark.length);
|
| | | } catch (ex) {
|
| | | return true;
|
| | | }
|
| | | }
|
| | |
|
| | | rng.select();
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | if (tinyMCE.isGecko && bookmark.rng) {
|
| | | sel.removeAllRanges();
|
| | | sel.addRange(bookmark.rng);
|
| | | win.scrollTo(bookmark.scrollX, bookmark.scrollY);
|
| | | return true;
|
| | | }
|
| | |
|
| | | if (tinyMCE.isGecko) {
|
| | | // try {
|
| | | rng = doc.createRange();
|
| | |
|
| | | nl = doc.getElementsByTagName(bookmark.startTag);
|
| | | if (nl.length > bookmark.start)
|
| | | rng.setStart(nl[bookmark.start].childNodes[bookmark.startIndex], bookmark.startOffset);
|
| | |
|
| | | nl = doc.getElementsByTagName(bookmark.endTag);
|
| | | if (nl.length > bookmark.end)
|
| | | rng.setEnd(nl[bookmark.end].childNodes[bookmark.endIndex], bookmark.endOffset);
|
| | |
|
| | | if (tinyMCE.isGecko || tinyMCE.isOpera) {
|
| | | if (bookmark.rng) {
|
| | | sel.removeAllRanges();
|
| | | sel.addRange(rng);
|
| | | /* } catch {
|
| | | // Ignore
|
| | | }*/
|
| | | sel.addRange(bookmark.rng);
|
| | | }
|
| | |
|
| | | if (bookmark.start != -1 && bookmark.end != -1) {
|
| | | try {
|
| | | sd = this._getTextPos(b, bookmark.start, bookmark.end);
|
| | | rng = doc.createRange();
|
| | | rng.setStart(sd.startNode, sd.startOffset);
|
| | | rng.setEnd(sd.endNode, sd.endOffset);
|
| | | sel.removeAllRanges();
|
| | | sel.addRange(rng);
|
| | | win.focus();
|
| | | } catch (ex) {
|
| | | // Ignore
|
| | | }
|
| | | }
|
| | |
|
| | | /*
|
| | | if (typeof(bookmark.index) != 'undefined') {
|
| | | tinyMCE.selectElements(b, 'IMG', function (n) {
|
| | | if (bookmark.index-- == 0) {
|
| | | // Select image in Gecko here
|
| | | }
|
| | |
|
| | | return false;
|
| | | });
|
| | | }
|
| | | */
|
| | |
|
| | | win.scrollTo(bookmark.scrollX, bookmark.scrollY);
|
| | | return true;
|
| | | }
|
| | |
|
| | | return false;
|
| | | },
|
| | |
|
| | | _getPosText : function(r, sn, en) {
|
| | | var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
|
| | |
|
| | | while ((n = w.nextNode()) != null) {
|
| | | if (n == sn)
|
| | | d.start = p;
|
| | |
|
| | | if (n == en) {
|
| | | d.end = p;
|
| | | return d;
|
| | | }
|
| | |
|
| | | p += n.nodeValue ? n.nodeValue.length : 0;
|
| | | }
|
| | |
|
| | | return null;
|
| | | },
|
| | |
|
| | | _getTextPos : function(r, sp, ep) {
|
| | | var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {};
|
| | |
|
| | | while ((n = w.nextNode()) != null) {
|
| | | p += n.nodeValue ? n.nodeValue.length : 0;
|
| | |
|
| | | if (p >= sp && !d.startNode) {
|
| | | d.startNode = n;
|
| | | d.startOffset = sp - (p - n.nodeValue.length);
|
| | | }
|
| | |
|
| | | if (p >= ep) {
|
| | | d.endNode = n;
|
| | | d.endOffset = ep - (p - n.nodeValue.length);
|
| | |
|
| | | return d;
|
| | | }
|
| | | }
|
| | |
|
| | | return null;
|
| | | },
|
| | |
|
| | | selectNode : function(node, collapse, select_text_node, to_start) {
|
| | |
| | | if (typeof(to_start) == "undefined")
|
| | | to_start = true;
|
| | |
|
| | | if (tinyMCE.isMSIE) {
|
| | | rng = inst.getBody().createTextRange();
|
| | | if (inst.settings.auto_resize)
|
| | | inst.resizeToContent();
|
| | |
|
| | | if (tinyMCE.isRealIE) {
|
| | | rng = inst.getDoc().body.createTextRange();
|
| | |
|
| | | try {
|
| | | rng.moveToElementText(node);
|
| | |
| | | },
|
| | |
|
| | | scrollToNode : function(node) {
|
| | | var inst = this.instance;
|
| | | var pos, doc, scrollX, scrollY, height;
|
| | |
|
| | | // Scroll to node position
|
| | | pos = tinyMCE.getAbsPosition(node);
|
| | | doc = inst.getDoc();
|
| | | scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft;
|
| | | scrollY = doc.body.scrollTop + doc.documentElement.scrollTop;
|
| | | height = tinyMCE.isMSIE ? document.getElementById(inst.editorId).style.pixelHeight : inst.targetElement.clientHeight;
|
| | | var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin;
|
| | |
|
| | | // Only scroll if out of visible area
|
| | | if (!tinyMCE.settings['auto_resize'] && !(pos.absTop > scrollY && pos.absTop < (scrollY - 25 + height)))
|
| | | inst.contentWindow.scrollTo(pos.absLeft, pos.absTop - height + 25); |
| | | if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25))
|
| | | w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25);
|
| | |
|
| | | // Scroll container window
|
| | | if (inst.settings.auto_resize) {
|
| | | cwin = inst.getContainerWin();
|
| | | cvp = tinyMCE.getViewPort(cwin);
|
| | | p = this.getAbsPosition(node);
|
| | |
|
| | | if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height)
|
| | | cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25);
|
| | | }
|
| | | },
|
| | |
|
| | | getAbsPosition : function(n) {
|
| | | var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement);
|
| | |
|
| | | return {
|
| | | absLeft : ipos.absLeft + pos.absLeft,
|
| | | absTop : ipos.absTop + pos.absTop
|
| | | };
|
| | | },
|
| | |
|
| | | getSel : function() {
|
| | | var inst = this.instance;
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera)
|
| | | if (tinyMCE.isRealIE)
|
| | | return inst.getDoc().selection;
|
| | |
|
| | | return inst.contentWindow.getSelection();
|
| | | },
|
| | |
|
| | | getRng : function() {
|
| | | var inst = this.instance;
|
| | | var sel = this.getSel();
|
| | | var s = this.getSel();
|
| | |
|
| | | if (sel == null)
|
| | | if (s == null)
|
| | | return null;
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera)
|
| | | return sel.createRange();
|
| | | if (tinyMCE.isRealIE)
|
| | | return s.createRange();
|
| | |
|
| | | if (tinyMCE.isSafari && !sel.getRangeAt)
|
| | | if (tinyMCE.isSafari && !s.getRangeAt)
|
| | | return '' + window.getSelection();
|
| | |
|
| | | return sel.getRangeAt(0);
|
| | | return s.getRangeAt(0);
|
| | | },
|
| | |
|
| | | getFocusElement : function() {
|
| | | var inst = this.instance;
|
| | | var inst = this.instance, doc, rng, sel, elm;
|
| | |
|
| | | if (tinyMCE.isMSIE && !tinyMCE.isOpera) {
|
| | | var doc = inst.getDoc();
|
| | | var rng = doc.selection.createRange();
|
| | | if (tinyMCE.isRealIE) {
|
| | | doc = inst.getDoc();
|
| | | rng = doc.selection.createRange();
|
| | |
|
| | | // if (rng.collapse)
|
| | | // rng.collapse(true);
|
| | |
|
| | | var elm = rng.item ? rng.item(0) : rng.parentElement();
|
| | | elm = rng.item ? rng.item(0) : rng.parentElement();
|
| | | } else {
|
| | | if (inst.isHidden())
|
| | | if (!tinyMCE.isSafari && inst.isHidden())
|
| | | return inst.getBody();
|
| | |
|
| | | var sel = this.getSel();
|
| | | var rng = this.getRng();
|
| | | sel = this.getSel();
|
| | | rng = this.getRng();
|
| | |
|
| | | if (!sel || !rng)
|
| | | return null;
|
| | |
|
| | | var elm = rng.commonAncestorContainer;
|
| | | //var elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
|
| | | elm = rng.commonAncestorContainer;
|
| | | //elm = (sel && sel.anchorNode) ? sel.anchorNode : null;
|
| | |
|
| | | // Handle selection a image or other control like element such as anchors
|
| | | if (!rng.collapsed) {
|
| | |
| | |
|
| | | return elm;
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */
|
| | |
|
| | |
| | |
|
| | | TinyMCE_UndoRedo.prototype = {
|
| | | add : function(l) {
|
| | | var b;
|
| | | var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;
|
| | |
|
| | | if (l) {
|
| | | this.undoLevels[this.undoLevels.length] = l;
|
| | | return true;
|
| | | }
|
| | |
|
| | | var inst = this.instance;
|
| | |
|
| | | if (this.typingUndoIndex != -1) {
|
| | | this.undoIndex = this.typingUndoIndex;
|
| | | // tinyMCE.debug("Override: " + this.undoIndex);
|
| | |
|
| | | if (tinyMCE.typingUndoIndex != -1)
|
| | | tinyMCE.undoIndex = tinyMCE.typingUndoIndex;
|
| | | }
|
| | |
|
| | | var newHTML = tinyMCE.trim(inst.getBody().innerHTML);
|
| | | newHTML = tinyMCE.trim(inst.getBody().innerHTML);
|
| | | if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) {
|
| | | //tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex]);
|
| | | //tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content);
|
| | |
|
| | | tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst);
|
| | |
|
| | | // Time to compress
|
| | | var customUndoLevels = tinyMCE.settings['custom_undo_redo_levels'];
|
| | | customUndoLevels = tinyMCE.settings['custom_undo_redo_levels'];
|
| | | if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {
|
| | | for (var i=0; i<this.undoLevels.length-1; i++) {
|
| | | //tinyMCE.debug(this.undoLevels[i] + "=" + this.undoLevels[i+1]);
|
| | | for (i=0; i<this.undoLevels.length-1; i++)
|
| | | this.undoLevels[i] = this.undoLevels[i+1];
|
| | | }
|
| | |
|
| | | this.undoLevels.length--;
|
| | | this.undoIndex--;
|
| | |
|
| | | // Todo: Implement global undo/redo logic here
|
| | | }
|
| | |
|
| | | b = inst.undoBookmark;
|
| | |
|
| | | if (!b)
|
| | | b = inst.selection.getBookmark();
|
| | |
|
| | |
| | | bookmark : b
|
| | | };
|
| | |
|
| | | // Remove all above from global undo/redo
|
| | | ul = tinyMCE.undoLevels;
|
| | | for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {
|
| | | ur = ul[i].undoRedo;
|
| | |
|
| | | if (ur.undoIndex == ur.undoLevels.length -1)
|
| | | ur.undoIndex--;
|
| | |
|
| | | ur.undoLevels.length--;
|
| | | }
|
| | |
|
| | | // Add global undo level
|
| | | tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;
|
| | | tinyMCE.undoLevels.length = tinyMCE.undoIndex;
|
| | |
|
| | | this.undoLevels.length = this.undoIndex + 1;
|
| | |
|
| | | //tinyMCE.debug("level added" + this.undoIndex);
|
| | | return true;
|
| | |
|
| | | // tinyMCE.debug(this.undoIndex + "," + (this.undoLevels.length-1));
|
| | | }
|
| | |
|
| | | return false;
|
| | |
| | | // Do undo
|
| | | if (this.undoIndex > 0) {
|
| | | this.undoIndex--;
|
| | |
|
| | | tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
|
| | | inst.repaint();
|
| | |
|
| | | if (inst.settings.custom_undo_redo_restore_selection)
|
| | | inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
|
| | | }
|
| | |
|
| | | // tinyMCE.debug("Undo - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex);
|
| | | },
|
| | |
|
| | | redo : function() {
|
| | |
| | |
|
| | | if (this.undoIndex < (this.undoLevels.length-1)) {
|
| | | this.undoIndex++;
|
| | |
|
| | | tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
|
| | | inst.repaint();
|
| | | // if (this.undoIndex > 0)
|
| | | // inst.selection.moveToBookmark(this.undoLevels[this.undoIndex-1].bookmark);
|
| | |
|
| | | if (inst.settings.custom_undo_redo_restore_selection)
|
| | | inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
|
| | | // tinyMCE.debug("Redo - undo levels:" + this.undoLevels.length + ", undo index: " + this.undoIndex);
|
| | | }
|
| | |
|
| | | tinyMCE.triggerNodeChange();
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */
|
| | |
|
| | | var TinyMCE_ForceParagraphs = {
|
| | | _insertPara : function(inst, e) {
|
| | | var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0);
|
| | | var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock;
|
| | | var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null;
|
| | | var paraBefore, paraAfter, startChop, endChop, contents;
|
| | |
|
| | | function isEmpty(para) {
|
| | | function isEmptyHTML(html) {
|
| | | return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == "";
|
| | |
| | | return true;
|
| | | }
|
| | |
|
| | | var doc = inst.getDoc();
|
| | | var sel = inst.getSel();
|
| | | var win = inst.contentWindow;
|
| | | var rng = sel.getRangeAt(0);
|
| | | var body = doc.body;
|
| | | var rootElm = doc.documentElement;
|
| | | var blockName = "P";
|
| | |
|
| | | // tinyMCE.debug(body.innerHTML);
|
| | |
|
| | | // debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());
|
| | |
|
| | | // Setup before range
|
| | | var rngBefore = doc.createRange();
|
| | | rngBefore = doc.createRange();
|
| | | rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
|
| | | rngBefore.collapse(true);
|
| | |
|
| | | // Setup after range
|
| | | var rngAfter = doc.createRange();
|
| | | rngAfter = doc.createRange();
|
| | | rngAfter.setStart(sel.focusNode, sel.focusOffset);
|
| | | rngAfter.collapse(true);
|
| | |
|
| | | // Setup start/end points
|
| | | var direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
|
| | | var startNode = direct ? sel.anchorNode : sel.focusNode;
|
| | | var startOffset = direct ? sel.anchorOffset : sel.focusOffset;
|
| | | var endNode = direct ? sel.focusNode : sel.anchorNode;
|
| | | var endOffset = direct ? sel.focusOffset : sel.anchorOffset;
|
| | | direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
|
| | | startNode = direct ? sel.anchorNode : sel.focusNode;
|
| | | startOffset = direct ? sel.anchorOffset : sel.focusOffset;
|
| | | endNode = direct ? sel.focusNode : sel.anchorNode;
|
| | | endOffset = direct ? sel.focusOffset : sel.anchorOffset;
|
| | |
|
| | | startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;
|
| | | endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;
|
| | |
|
| | | // tinyMCE.debug(startNode, endNode);
|
| | |
|
| | | // Get block elements
|
| | | var startBlock = tinyMCE.getParentBlockElement(startNode);
|
| | | var endBlock = tinyMCE.getParentBlockElement(endNode);
|
| | | startBlock = inst.getParentBlockElement(startNode);
|
| | | endBlock = inst.getParentBlockElement(endNode);
|
| | |
|
| | | // If absolute force paragraph generation within
|
| | | if (startBlock && new RegExp('absolute|relative|static', 'gi').test(startBlock.style.position))
|
| | |
| | | }
|
| | |
|
| | | // Within a list use normal behaviour
|
| | | if (tinyMCE.getParentElement(startBlock, "OL,UL") != null)
|
| | | if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)
|
| | | return false;
|
| | |
|
| | | // Within a table create new paragraphs
|
| | |
| | | startBlock = endBlock = null;
|
| | |
|
| | | // Setup new paragraphs
|
| | | var paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
|
| | | var paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
|
| | | paraBefore = (startBlock != null && startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
|
| | | paraAfter = (endBlock != null && endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);
|
| | |
|
| | | // Is header, then force paragraph under
|
| | | if (/^(H[1-6])$/.test(blockName))
|
| | | paraAfter = doc.createElement("p");
|
| | |
|
| | | // Setup chop nodes
|
| | | var startChop = startNode;
|
| | | var endChop = endNode;
|
| | | startChop = startNode;
|
| | | endChop = endNode;
|
| | |
|
| | | // Get startChop node
|
| | | node = startChop;
|
| | |
| | | if (startBlock == null) {
|
| | | // Delete selection
|
| | | rng.deleteContents();
|
| | | sel.removeAllRanges();
|
| | |
|
| | | if (!tinyMCE.isSafari)
|
| | | sel.removeAllRanges();
|
| | |
|
| | | if (startChop != rootElm && endChop != rootElm) {
|
| | | // Insert paragraph before
|
| | |
| | | if (endChop.nodeName != "#text" && endChop.nodeName != "BODY")
|
| | | rngBefore.setEndAfter(endChop);
|
| | |
|
| | | var contents = rng.cloneContents();
|
| | | contents = rng.cloneContents();
|
| | | if (contents.firstChild && (contents.firstChild.nodeName == blockName || contents.firstChild.nodeName == "BODY"))
|
| | | paraAfter.innerHTML = contents.firstChild.innerHTML;
|
| | | else
|
| | |
| | | rngBefore.deleteContents();
|
| | |
|
| | | // Insert new paragraphs
|
| | | paraAfter.normalize();
|
| | | rngBefore.insertNode(paraAfter);
|
| | | paraBefore.normalize();
|
| | | rngBefore.insertNode(paraBefore);
|
| | | if (tinyMCE.isOpera) {
|
| | | paraBefore.normalize();
|
| | | rngBefore.insertNode(paraBefore);
|
| | | paraAfter.normalize();
|
| | | rngBefore.insertNode(paraAfter);
|
| | | } else {
|
| | | paraAfter.normalize();
|
| | | rngBefore.insertNode(paraAfter);
|
| | | paraBefore.normalize();
|
| | | rngBefore.insertNode(paraBefore);
|
| | | }
|
| | |
|
| | | // tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);
|
| | | //tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);
|
| | | } else {
|
| | | body.innerHTML = "<" + blockName + "> </" + blockName + "><" + blockName + "> </" + blockName + ">";
|
| | | paraAfter = body.childNodes[1];
|
| | | }
|
| | |
|
| | | inst.selection.moveToBookmark(b);
|
| | | inst.selection.selectNode(paraAfter, true, true);
|
| | |
|
| | | return true;
|
| | |
| | | // Place secound part within new paragraph
|
| | | rngAfter.setEndAfter(endChop);
|
| | | rngAfter.setStart(endNode, endOffset);
|
| | | var contents = rngAfter.cloneContents();
|
| | | contents = rngAfter.cloneContents();
|
| | |
|
| | | if (contents.firstChild && contents.firstChild.nodeName == blockName) {
|
| | | /* var nodes = contents.firstChild.childNodes;
|
| | |
| | | paraAfter.innerHTML = " ";
|
| | |
|
| | | // Create a range around everything
|
| | | var rng = doc.createRange();
|
| | | rng = doc.createRange();
|
| | |
|
| | | if (!startChop.previousSibling && startChop.parentNode.nodeName.toUpperCase() == blockName) {
|
| | | rng.setStartBefore(startChop.parentNode);
|
| | |
| | |
|
| | | // Delete all contents and insert new paragraphs
|
| | | rng.deleteContents();
|
| | | rng.insertNode(paraAfter);
|
| | | rng.insertNode(paraBefore);
|
| | |
|
| | | if (tinyMCE.isOpera) {
|
| | | rng.insertNode(paraBefore);
|
| | | rng.insertNode(paraAfter);
|
| | | } else {
|
| | | rng.insertNode(paraAfter);
|
| | | rng.insertNode(paraBefore);
|
| | | }
|
| | |
|
| | | //tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);
|
| | |
|
| | | // Normalize
|
| | | paraAfter.normalize();
|
| | | paraBefore.normalize();
|
| | |
|
| | | inst.selection.moveToBookmark(b);
|
| | | inst.selection.selectNode(paraAfter, true, true);
|
| | |
|
| | | return true;
|
| | |
| | | _handleBackSpace : function(inst) {
|
| | | var r = inst.getRng(), sn = r.startContainer, nv, s = false;
|
| | |
|
| | | if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR") {
|
| | | // Added body check for bug #1527787
|
| | | if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR" && sn.parentNode.nodeName != "BODY") {
|
| | | nv = sn.nodeValue;
|
| | |
|
| | | // Handle if a backspace is pressed after a space character #bug 1466054
|
| | | if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ')
|
| | | s = true;
|
| | | // Handle if a backspace is pressed after a space character #bug 1466054 removed since fix for #1527787
|
| | | /*if (nv != null && nv.length >= r.startOffset && nv.charAt(r.startOffset - 1) == ' ')
|
| | | s = true;*/
|
| | |
|
| | | // Only remove BRs if we are at the end of line #bug 1464152
|
| | | if (nv != null && r.startOffset == nv.length)
|
| | | sn.nextSibling.parentNode.removeChild(sn.nextSibling);
|
| | | }
|
| | |
|
| | | if (inst.settings.auto_resize)
|
| | | inst.resizeToContent();
|
| | |
|
| | | return s;
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */
|
| | |
|
| | |
| | |
|
| | | if (!this.blockerElement && this.blockMode) {
|
| | | d = this.doc;
|
| | | b = d.createElement("iframe");
|
| | | b = d.getElementById(this.id + "_blocker");
|
| | |
|
| | | b.style.cssText = 'display: none; position: absolute; left: 0; top: 0';
|
| | | b.src = 'javascript:false;';
|
| | | b.frameBorder = '0';
|
| | | b.scrolling = 'no';
|
| | | if (!b) {
|
| | | b = d.createElement("iframe");
|
| | |
|
| | | d.body.appendChild(b);
|
| | | b.setAttribute('id', this.id + "_blocker");
|
| | | b.style.cssText = 'display: none; position: absolute; left: 0; top: 0';
|
| | | b.src = 'javascript:false;';
|
| | | b.frameBorder = '0';
|
| | | b.scrolling = 'no';
|
| | | |
| | | d.body.appendChild(b);
|
| | | }
|
| | |
|
| | | this.blockerElement = b;
|
| | | }
|
| | |
|
| | |
| | | return p;
|
| | | },
|
| | |
|
| | | create : function(n, c, p) {
|
| | | create : function(n, c, p, h) {
|
| | | var d = this.doc, e = d.createElement(n);
|
| | |
|
| | | e.setAttribute('id', this.id);
|
| | |
| | | if (!p)
|
| | | p = d.body;
|
| | |
|
| | | if (h)
|
| | | e.innerHTML = h;
|
| | |
|
| | | p.appendChild(e);
|
| | |
|
| | | return this.element = e;
|
| | | },
|
| | |
|
| | | exists : function() {
|
| | | return this.doc.getElementById(this.id) != null;
|
| | | },
|
| | |
|
| | | parseInt : function(s) {
|
| | |
| | |
|
| | | return parseInt(s);
|
| | | }
|
| | | };
|
| | |
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */
|
| | |
|
| | |
| | | this.needsUpdate = true;
|
| | | };
|
| | |
|
| | | // Extends the TinyMCE_Layer class
|
| | | TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {
|
| | | init : function(s) {
|
| | | var n;
|
| | |
| | | break;
|
| | |
|
| | | default:
|
| | | h += '<tr><td><a href="javascript:void(0);" onmousedown="' + tinyMCE.xmlEncode(m[i].js) + ';return false;"><span' + c +'>' + t + '</span></a>';
|
| | | h += '<tr><td><a href="#" onclick="return tinyMCE.cancelEvent(event);" onmousedown="return tinyMCE.cancelEvent(event);" onmouseup="' + tinyMCE.xmlEncode(m[i].js) + ';return tinyMCE.cancelEvent(event);"><span' + c +'>' + t + '</span></a>';
|
| | | }
|
| | |
|
| | | h += '</td></tr>';
|
| | |
| | |
|
| | | tinyMCE.lastMenu = this;
|
| | | }
|
| | | });
|
| | |
|
| | | });
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Compatibility.class.js */
|
| | |
|
| | | if (!Function.prototype.call) {
|
| | | Function.prototype.call = function() {
|
| | | var a = arguments, s = a[0], i, as = '', r, o;
|
| | |
|
| | | for (i=1; i<a.length; i++)
|
| | | as += (i > 1 ? ',' : '') + 'a[' + i + ']';
|
| | |
|
| | | o = s._fu;
|
| | | s._fu = this;
|
| | | r = eval('s._fu(' + as + ')');
|
| | | s._fu = o;
|
| | |
|
| | | return r;
|
| | | };
|
| | | };
|
| | |
|
| | | /* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */
|
| | |
|
| | | TinyMCE_Engine.prototype.debug = function() {
|
| | | var m = "", e, a, i;
|
| | | var m = "", a, i, l = tinyMCE.log.length;
|
| | |
|
| | | e = document.getElementById("tinymce_debug");
|
| | | if (!e) {
|
| | | var d = document.createElement("div");
|
| | | d.setAttribute("className", "debugger");
|
| | | d.className = "debugger";
|
| | | d.innerHTML = 'Debug output:<textarea id="tinymce_debug" style="width: 100%; height: 300px" wrap="nowrap" mce_editable="false"></textarea>';
|
| | |
|
| | | document.body.appendChild(d);
|
| | | e = document.getElementById("tinymce_debug");
|
| | | }
|
| | |
|
| | | a = this.debug.arguments;
|
| | | for (i=0; i<a.length; i++) {
|
| | | for (i=0, a = this.debug.arguments; i<a.length; i++) {
|
| | | m += a[i];
|
| | |
|
| | | if (i<a.length-1)
|
| | | m += ', ';
|
| | | }
|
| | |
|
| | | e.value += m + "\n";
|
| | | if (l < 1000)
|
| | | tinyMCE.log[l] = "[debug] " + m;
|
| | | };
|
| | |
|
| | |
| | | /**
|
| | | * $RCSfile: editable_selects.js,v $
|
| | | * $Revision: 1.1 $
|
| | | * $Date: 2006/04/10 09:30:19 $
|
| | | * $Id: editable_selects.js 18 2006-06-29 14:11:23Z spocke $
|
| | | *
|
| | | * Makes select boxes editable.
|
| | | *
|
| | |
| | | /**
|
| | | * $RCSfile: form_utils.js,v $
|
| | | * $Revision: 1.11 $
|
| | | * $Date: 2006/04/07 15:53:12 $
|
| | | * $Id: form_utils.js 43 2006-08-08 16:10:07Z spocke $
|
| | | *
|
| | | * Various form utilitiy functions.
|
| | | *
|
| | |
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | var themeBaseURL = tinyMCE.baseURL + '/themes/' + tinyMCE.getParam("theme");
|
| | |
|
| | | function getColorPickerHTML(id, target_form_element) {
|
| | | var html = "";
|
| | | var h = "";
|
| | |
|
| | | html += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
|
| | | html += '<img id="' + id + '" src="../../themes/' + tinyMCE.getParam("theme") + '/images/color.gif"';
|
| | | html += ' onmouseover="this.className=\'mceButtonOver\'"';
|
| | | html += ' onmouseout="this.className=\'mceButtonNormal\'"';
|
| | | html += ' onmousedown="this.className=\'mceButtonDown\'"';
|
| | | html += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
|
| | | html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
|
| | | h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
|
| | | h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';
|
| | | h += ' onmouseover="this.className=\'mceButtonOver\'"';
|
| | | h += ' onmouseout="this.className=\'mceButtonNormal\'"';
|
| | | h += ' onmousedown="this.className=\'mceButtonDown\'"';
|
| | | h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
|
| | | h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
|
| | |
|
| | | return html;
|
| | | return h;
|
| | | }
|
| | |
|
| | | function pickColor(e, target_form_element) {
|
| | |
| | | var html = "";
|
| | |
|
| | | html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';
|
| | | html += '<img id="' + id + '" src="../../themes/' + tinyMCE.getParam("theme") + '/images/browse.gif"';
|
| | | html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';
|
| | | html += ' onmouseover="this.className=\'mceButtonOver\';"';
|
| | | html += ' onmouseout="this.className=\'mceButtonNormal\';"';
|
| | | html += ' onmousedown="this.className=\'mceButtonDown\';"';
|
| | |
| | | /**
|
| | | * $RCSfile: mclayer.js,v $
|
| | | * $Revision: 1.2 $
|
| | | * $Date: 2006/02/06 20:11:09 $
|
| | | * $Id: mclayer.js 18 2006-06-29 14:11:23Z spocke $
|
| | | *
|
| | | * Moxiecode floating layer script.
|
| | | *
|
| | |
| | |
|
| | | return parseInt(s);
|
| | | }
|
| | | } |
| | | }
|
| | |
| | | /**
|
| | | * $RCSfile: mctabs.js,v $
|
| | | * $Revision: 1.2 $
|
| | | * $Date: 2006/02/06 20:11:09 $
|
| | | * $Id: mctabs.js 18 2006-06-29 14:11:23Z spocke $
|
| | | *
|
| | | * Moxiecode DHTML Tabs script.
|
| | | *
|
| | |
| | | /**
|
| | | * $RCSfile: validate.js,v $
|
| | | * $Revision: 1.3 $
|
| | | * $Date: 2006/02/06 20:11:09 $
|
| | | * $Id: validate.js 65 2006-08-24 15:54:55Z spocke $
|
| | | *
|
| | | * Various form validation methods.
|
| | | *
|
| | |
| | | * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved.
|
| | | */
|
| | |
|
| | | function testRegExp(form_name, element_name, re) {
|
| | | return new RegExp(re).test(document.forms[form_name].elements[element_name].value);
|
| | | }
|
| | | /**
|
| | | // String validation:
|
| | |
|
| | | function validateString(form_name, element_name) {
|
| | | return (document.forms[form_name].elements[element_name].value.length > 0);
|
| | | }
|
| | | if (!Validator.isEmail('myemail'))
|
| | | alert('Invalid email.');
|
| | |
|
| | | function validateSelection(form_name, element_name) {
|
| | | return (document.forms[form_name].elements[element_name].selectedIndex > 0);
|
| | | }
|
| | | // Form validation:
|
| | |
|
| | | function validateCheckBox(form_name, element_name) {
|
| | | return document.forms[form_name].elements[element_name].checked;
|
| | | }
|
| | | var f = document.forms['myform'];
|
| | |
|
| | | function validateCleanString(form_name, element_name) {
|
| | | return testRegExp(form_name, element_name, '^[A-Za-z0-9_]+$');
|
| | | }
|
| | | if (!Validator.isEmail(f.myemail))
|
| | | alert('Invalid email.');
|
| | | */
|
| | |
|
| | | function validateEmail(form_name, element_name) {
|
| | | return testRegExp(form_name, element_name, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
|
| | | }
|
| | | var Validator = {
|
| | | isEmail : function(s) {
|
| | | return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
|
| | | },
|
| | |
|
| | | function validateAbsUrl(form_name, element_name) {
|
| | | return testRegExp(form_name, element_name, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+$');
|
| | | }
|
| | | isAbsUrl : function(s) {
|
| | | return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
|
| | | },
|
| | |
|
| | | function validateNumber(form_name, element_name, allow_blank) {
|
| | | return (!allow_blank && value == '') ? false : testRegExp(form_name, element_name, '^-?[0-9]*\\.?[0-9]*$');
|
| | | }
|
| | | isSize : function(s) {
|
| | | return this.test(s, '^[0-9]+(px|%)?$');
|
| | | },
|
| | |
|
| | | function validateSize(form_name, element_name,) {
|
| | | return testRegExp(form_name, element_name, '^[0-9]+(px|%)?$');
|
| | | }
|
| | | isId : function(s) {
|
| | | return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
|
| | | },
|
| | |
|
| | | function validateID(form_name, element_name,) {
|
| | | return testRegExp(form_name, element_name, '^[A-Za-z_]([A-Za-z0-9_])*$');
|
| | | }
|
| | | isEmpty : function(s) {
|
| | | var nl, i;
|
| | |
|
| | | if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
|
| | | return true;
|
| | |
|
| | | if (s.type == 'checkbox' && !s.checked)
|
| | | return true;
|
| | |
|
| | | if (s.type == 'radio') {
|
| | | for (i=0, nl = s.form.elements; i<nl.length; i++) {
|
| | | if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
|
| | | return false;
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
|
| | | },
|
| | |
|
| | | isNumber : function(s, d) {
|
| | | return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
|
| | | },
|
| | |
|
| | | test : function(s, p) {
|
| | | s = s.nodeType == 1 ? s.value : s;
|
| | |
|
| | | return s == '' || new RegExp(p).test(s);
|
| | | }
|
| | | };
|
| | |
|
| | | var AutoValidator = {
|
| | | settings : {
|
| | | id_cls : 'id',
|
| | | int_cls : 'int',
|
| | | url_cls : 'url',
|
| | | number_cls : 'number',
|
| | | email_cls : 'email',
|
| | | size_cls : 'size',
|
| | | required_cls : 'required',
|
| | | invalid_cls : 'invalid',
|
| | | min_cls : 'min',
|
| | | max_cls : 'max'
|
| | | },
|
| | |
|
| | | init : function(s) {
|
| | | var n;
|
| | |
|
| | | for (n in s)
|
| | | this.settings[n] = s[n];
|
| | | },
|
| | |
|
| | | validate : function(f) {
|
| | | var i, nl, s = this.settings, c = 0;
|
| | |
|
| | | nl = this.tags(f, 'label');
|
| | | for (i=0; i<nl.length; i++)
|
| | | this.removeClass(nl[i], s.invalid_cls);
|
| | |
|
| | | c += this.validateElms(f, 'input');
|
| | | c += this.validateElms(f, 'select');
|
| | | c += this.validateElms(f, 'textarea');
|
| | |
|
| | | return c == 3;
|
| | | },
|
| | |
|
| | | invalidate : function(n) {
|
| | | this.mark(n.form, n);
|
| | | },
|
| | |
|
| | | reset : function(e) {
|
| | | var t = new Array('label', 'input', 'select', 'textarea');
|
| | | var i, j, nl, s = this.settings;
|
| | |
|
| | | if (e == null)
|
| | | return;
|
| | |
|
| | | for (i=0; i<t.length; i++) {
|
| | | nl = this.tags(e.form ? e.form : e, t[i]);
|
| | | for (j=0; j<nl.length; j++)
|
| | | this.removeClass(nl[j], s.invalid_cls);
|
| | | }
|
| | | },
|
| | |
|
| | | validateElms : function(f, e) {
|
| | | var nl, i, n, s = this.settings, st = true, va = Validator, v;
|
| | |
|
| | | nl = this.tags(f, e);
|
| | | for (i=0; i<nl.length; i++) {
|
| | | n = nl[i];
|
| | |
|
| | | this.removeClass(n, s.invalid_cls);
|
| | |
|
| | | if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.size_cls) && !va.isSize(n))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.id_cls) && !va.isId(n))
|
| | | st = this.mark(f, n);
|
| | |
|
| | | if (this.hasClass(n, s.min_cls, true)) {
|
| | | v = this.getNum(n, s.min_cls);
|
| | |
|
| | | if (isNaN(v) || parseInt(n.value) < parseInt(v))
|
| | | st = this.mark(f, n);
|
| | | }
|
| | |
|
| | | if (this.hasClass(n, s.max_cls, true)) {
|
| | | v = this.getNum(n, s.max_cls);
|
| | |
|
| | | if (isNaN(v) || parseInt(n.value) > parseInt(v))
|
| | | st = this.mark(f, n);
|
| | | }
|
| | | }
|
| | |
|
| | | return st;
|
| | | },
|
| | |
|
| | | hasClass : function(n, c, d) {
|
| | | return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
|
| | | },
|
| | |
|
| | | getNum : function(n, c) {
|
| | | c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
|
| | | c = c.replace(/[^0-9]/g, '');
|
| | |
|
| | | return c;
|
| | | },
|
| | |
|
| | | addClass : function(n, c, b) {
|
| | | var o = this.removeClass(n, c);
|
| | | n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
|
| | | },
|
| | |
|
| | | removeClass : function(n, c) {
|
| | | c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
|
| | | return n.className = c != ' ' ? c : '';
|
| | | },
|
| | |
|
| | | tags : function(f, s) {
|
| | | return f.getElementsByTagName(s);
|
| | | },
|
| | |
|
| | | mark : function(f, n) {
|
| | | var s = this.settings;
|
| | |
|
| | | this.addClass(n, s.invalid_cls);
|
| | | this.markLabels(f, n, s.invalid_cls);
|
| | |
|
| | | return false;
|
| | | },
|
| | |
|
| | | markLabels : function(f, n, ic) {
|
| | | var nl, i;
|
| | |
|
| | | nl = this.tags(f, "label");
|
| | | for (i=0; i<nl.length; i++) {
|
| | | if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
|
| | | this.addClass(nl[i], ic);
|
| | | }
|
| | |
|
| | | return null;
|
| | | }
|
| | | };
|
| | |
| | | height: 190px;
|
| | | }
|
| | |
|
| | | label.msg { display: none; }
|
| | | label.invalid { color: #EE0000; display: inline; }
|
| | | input.invalid { border: 1px solid #EE0000; }
|
| | |
|
| | | /* Disables the advanced tab in the table plugin. */
|
| | | /*
|
| | | #table #advanced_tab {
|
| | |
| | | /* This file contains the CSS data for the editor UI of TinyMCE instances */
|
| | |
|
| | | .mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {
|
| | | border: 0; margin: 0; padding: 0; background: transparent;
|
| | | }
|
| | |
|
| | | .mceSeparatorLine {
|
| | | border: 0;
|
| | | padding: 0;
|
| | | margin-left: 4px;
|
| | | margin-right: 2px;
|
| | | }
|
| | |
|
| | | .mceSelectList {
|
| | | font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
|
| | | font-size: 7pt !important;
|
| | | font-weight: normal;
|
| | | margin-top: 3px;
|
| | | padding: 0;
|
| | | display: inline;
|
| | | vertical-align: top;
|
| | | background-color: #F0F0EE;
|
| | | }
|
| | |
|
| | | .mceLabel, .mceLabelDisabled {
|
| | | font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
|
| | | font-size: 9pt;
|
| | | }
|
| | |
|
| | | .mceLabel {
|
| | | color: #000000;
|
| | | }
|
| | |
|
| | | .mceLabelDisabled {
|
| | | cursor: text;
|
| | | color: #999999;
|
| | | }
|
| | |
|
| | | .mceEditor {
|
| | | background: #F0F0EE;
|
| | | border: 1px solid #cccccc;
|
| | | padding: 0;
|
| | | margin: 0;
|
| | | }
|
| | |
|
| | | .mceEditorArea {
|
| | | font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
|
| | | background: #FFFFFF;
|
| | | padding: 0;
|
| | | margin: 0;
|
| | | }
|
| | |
|
| | | .mceToolbarTop, .mceToolbarBottom {
|
| | | background: #F0F0EE;
|
| | | line-height: 1px;
|
| | | font-size: 1px;
|
| | | }
|
| | |
|
| | | .mceToolbarTop {
|
| | | border-bottom: 1px solid #cccccc;
|
| | | padding-bottom: 1px;
|
| | | }
|
| | |
|
| | | .mceToolbarBottom {
|
| | | border-top: 1px solid #cccccc;
|
| | | }
|
| | |
|
| | | .mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {
|
| | | height: 20px;
|
| | | }
|
| | |
|
| | | .mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {
|
| | | font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
|
| | | font-size: 9pt;
|
| | | padding: 2px;
|
| | | line-height: 16px;
|
| | | overflow: visible;
|
| | | }
|
| | |
|
| | | .mceStatusbarTop {
|
| | | border-bottom: 1px solid #cccccc;
|
| | | }
|
| | |
|
| | | .mceStatusbarBottom {
|
| | | border-top: 1px solid #cccccc;
|
| | | }
|
| | |
|
| | | .mceStatusbar {
|
| | | border-bottom: 1px solid #cccccc;
|
| | | }
|
| | |
|
| | | .mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {
|
| | | text-decoration: none;
|
| | | font-family: 'MS Sans Serif', sans-serif, Verdana, Arial;
|
| | | font-size: 9pt;
|
| | | color: #000000;
|
| | | }
|
| | |
|
| | | .mcePathItem:hover {
|
| | | text-decoration: underline;
|
| | | }
|
| | |
|
| | | .mceStatusbarPathText {
|
| | | float: left;
|
| | | }
|
| | |
|
| | | .mceStatusbarResize {
|
| | | float: right;
|
| | | background-image: url('../images/statusbar_resize.gif');
|
| | | background-repeat: no-repeat;
|
| | | width: 11px;
|
| | | height: 20px;
|
| | | cursor: se-resize;
|
| | | }
|
| | |
|
| | | .mceResizeBox {
|
| | | width: 10px;
|
| | | height: 10px;
|
| | | display: none;
|
| | | border: 1px dotted gray;
|
| | | margin: 0;
|
| | | padding: 0;
|
| | | }
|
| | |
|
| | | .mceEditorIframe {
|
| | | border: 0;
|
| | | }
|
| | | .mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;}
|
| | | .mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;}
|
| | | .mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;}
|
| | | .mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;}
|
| | | .mceLabel {color: #000000;}
|
| | | .mceLabelDisabled {cursor: text; color: #999999;}
|
| | | .mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;}
|
| | | .mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; }
|
| | | .mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;}
|
| | | .mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;}
|
| | | .mceToolbarBottom {border-top: 1px solid #cccccc;}
|
| | | .mceToolbarContainer {position: relative; left: 0; top: 0; display: block;}
|
| | | .mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;}
|
| | | .mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;}
|
| | | .mceStatusbarTop {border-bottom: 1px solid #cccccc;}
|
| | | .mceStatusbarBottom {border-top: 1px solid #cccccc;}
|
| | | .mceStatusbar {border-bottom: 1px solid #cccccc;}
|
| | | .mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;}
|
| | | .mcePathItem:hover {text-decoration: underline;}
|
| | | .mceStatusbarPathText {float: left;}
|
| | | .mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;}
|
| | | .mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;}
|
| | | .mceEditorIframe {border: 0;}
|
| | |
|
| | | /* Button CSS rules */
|
| | |
|
| | | a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {
|
| | | width: 20px;
|
| | | height: 20px;
|
| | | cursor: default;
|
| | | margin-top: 1px;
|
| | | margin-left: 1px;
|
| | | }
|
| | |
|
| | | a.mceButtonDisabled img {
|
| | | border: 0 !important;
|
| | | }
|
| | |
|
| | | a.mceButtonNormal img, a.mceButtonSelected img {
|
| | | border: 1px solid #F0F0EE !important;
|
| | | }
|
| | |
|
| | | a.mceButtonSelected img {
|
| | | border: 1px solid #6779AA !important;
|
| | | background-color: #D4D5D8;
|
| | | }
|
| | |
|
| | | a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {
|
| | | border: 1px solid #0A246A !important;
|
| | | cursor: default;
|
| | | background-color: #B6BDD2;
|
| | | }
|
| | |
|
| | | a.mceButtonDisabled img {
|
| | | -moz-opacity:0.3;
|
| | | opacity: 0.3;
|
| | | border: 1px solid #F0F0EE !important;
|
| | | cursor: default;
|
| | | }
|
| | |
|
| | | a.mceTiledButton img {
|
| | | background-image: url('../images/buttons.gif');
|
| | | background-repeat: no-repeat;
|
| | | }
|
| | |
|
| | | /* MSIE specific rules */
|
| | |
|
| | | * html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {
|
| | | border: 0 !important;
|
| | | margin-top: 2px;
|
| | | margin-bottom: 1px;
|
| | | }
|
| | |
|
| | | * html a.mceButtonDisabled img {
|
| | | filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
|
| | | border: 0 !important;
|
| | | }
|
| | |
|
| | | * html a.mceButtonDisabled {
|
| | | border: 1px solid #F0F0EE !important;
|
| | | }
|
| | |
|
| | | * html a.mceButtonNormal, * html a.mceButtonSelected {
|
| | | border: 1px solid #F0F0EE !important;
|
| | | cursor: default;
|
| | | }
|
| | |
|
| | | * html a.mceButtonSelected {
|
| | | border: 1px solid #6779AA !important;
|
| | | background-color: #D4D5D8;
|
| | | }
|
| | |
|
| | | * html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {
|
| | | border: 1px solid #0A246A !important;
|
| | | cursor: default;
|
| | | background-color: #B6BDD2;
|
| | | }
|
| | |
|
| | | * html .mceSelectList {
|
| | | margin-top: 2px;
|
| | | }
|
| | | a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;}
|
| | | a.mceButtonDisabled img {border: 0 !important;}
|
| | | a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;}
|
| | | a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
|
| | | a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;}
|
| | | a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;}
|
| | | a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;}
|
| | |
|
| | | /* Menu button CSS rules */
|
| | |
|
| | | span.mceMenuButton img, span.mceMenuButtonSelected img {
|
| | | border: 1px solid #F0F0EE;
|
| | | margin-left: 1px;
|
| | | }
|
| | |
|
| | | span.mceMenuButtonSelected img {
|
| | | border: 1px solid #6779AA;
|
| | | background-color: #B6BDD2;
|
| | | }
|
| | |
|
| | | span.mceMenuButtonSelected img.mceMenuButton {
|
| | | border: 1px solid #F0F0EE;
|
| | | background-color: transparent;
|
| | | }
|
| | |
|
| | | span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {
|
| | | border-left: 0;
|
| | | margin-left: 0;
|
| | | }
|
| | |
|
| | | span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {
|
| | | border: 1px solid #0A246A;
|
| | | background-color: #B6BDD2;
|
| | | }
|
| | |
|
| | | span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {
|
| | | border-left: 0;
|
| | | }
|
| | |
|
| | | span.mceMenuButtonFocus img {
|
| | | border: 1px solid gray;
|
| | | border-right: 0;
|
| | | margin-left: 1px;
|
| | | background-color: #F5F4F2;
|
| | | }
|
| | |
|
| | | span.mceMenuButtonFocus img.mceMenuButton {
|
| | | border: 1px solid gray;
|
| | | border-left: 1px solid #F5F4F2;
|
| | | margin-left: 0;
|
| | | }
|
| | |
|
| | | /* Menu button MSIE specific rules */
|
| | |
|
| | | * html span.mceMenuButton, * html span.mceMenuButtonFocus {
|
| | | position: relative;
|
| | | left: 0;
|
| | | top: 0;
|
| | | }
|
| | |
|
| | | * html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {
|
| | | position: relative;
|
| | | top: 1px;
|
| | | }
|
| | |
|
| | | * html span.mceMenuHover img {
|
| | | border: 1px solid #0A246A;
|
| | | background-color: #B6BDD2;
|
| | | }
|
| | |
|
| | | * html span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {
|
| | | border: 1px solid #0A246A;
|
| | | background-color: #B6BDD2;
|
| | | border-left: 0;
|
| | | }
|
| | | span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;}
|
| | | span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;}
|
| | | span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;}
|
| | | span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;}
|
| | | span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;}
|
| | | span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;}
|
| | | span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;}
|
| | | span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;}
|
| | | span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;}
|
| | | span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;}
|
| | |
|
| | | /* Menu */
|
| | |
|
| | | .mceMenu {
|
| | | position: absolute;
|
| | | left: 0;
|
| | | top: 0;
|
| | | display: none;
|
| | | z-index: 100;
|
| | | background-color: white;
|
| | | border: 1px solid gray;
|
| | | font-weight: normal;
|
| | | }
|
| | | .mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 100; background-color: white; border: 1px solid gray; font-weight: normal;}
|
| | | .mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;}
|
| | | .mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;}
|
| | | .mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;}
|
| | | .mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;}
|
| | | .mceMenuTitle span {padding-left: 5px;}
|
| | | .mceMenuTitle {background-color: #DDDDDD; font-weight: bold;}
|
| | | .mceMenuDisabled {color: gray;}
|
| | | span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;}
|
| | | span.mceMenuCheckItem {padding-left: 20px;}
|
| | | span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;}
|
| | | .mceColors table, .mceColors td {margin: 0; padding: 2px;}
|
| | | a.mceMoreColors {width: 130px; margin: 0; padding: 0; margin-left: 3px; margin-bottom: 3px; text-align: center; border: 1px solid white;}
|
| | | .mceColorPreview {position: absolute; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;}
|
| | | a.mceMoreColors:hover {border: 1px solid #0A246A;}
|
| | | .mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;}
|
| | |
|
| | | .mceMenu a, .mceMenuTitle, .mceMenuDisabled {
|
| | | display: block;
|
| | | width: 100%;
|
| | | text-decoration: none;
|
| | | background-color: white;
|
| | | font-family: Tahoma, Verdana, Arial, Helvetica;
|
| | | font-size: 11px;
|
| | | line-height: 20px;
|
| | | color: black;
|
| | | }
|
| | | /* MSIE 6 specific rules */
|
| | |
|
| | | .mceMenu a:hover {
|
| | | background-color: #B6BDD2;
|
| | | color: black;
|
| | | text-decoration: none !important;
|
| | | }
|
| | | * html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}
|
| | | * html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}
|
| | | * html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
|
| | | * html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}
|
| | | * html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
|
| | | * html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}
|
| | | * html .mceSelectList {margin-top: 2px;}
|
| | | * html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}
|
| | | * html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;}
|
| | | * html a.mceMoreColors {width: 132px;}
|
| | | * html .mceColors td a {width: 10px; height: 10px;}
|
| | | * html .mceColorPreview {margin-left: 2px; margin-top: 14px;}
|
| | |
|
| | | .mceMenu span {
|
| | | padding-left: 10px;
|
| | | padding-right: 10px;
|
| | | display: block;
|
| | | line-height: 20px;
|
| | | }
|
| | | /* MSIE 7 specific rules */
|
| | |
|
| | | .mceMenuSeparator {
|
| | | border-bottom: 1px solid gray;
|
| | | background-color: gray;
|
| | | height: 1px;
|
| | | }
|
| | |
|
| | | .mceMenuTitle span {
|
| | | padding-left: 5px;
|
| | | }
|
| | |
|
| | | .mceMenuTitle {
|
| | | background-color: #DDDDDD;
|
| | | font-weight: bold;
|
| | | }
|
| | |
|
| | | .mceMenuDisabled {
|
| | | color: gray;
|
| | | }
|
| | |
|
| | | span.mceMenuSelectedItem {
|
| | | background-image: url('../images/menu_check.gif');
|
| | | background-repeat: no-repeat;
|
| | | background-position: 5px 8px;
|
| | | padding-left: 20px;
|
| | | }
|
| | |
|
| | | span.mceMenuCheckItem {
|
| | | padding-left: 20px;
|
| | | }
|
| | |
|
| | | span.mceMenuLine {
|
| | | display: block;
|
| | | position: absolute;
|
| | | left: 0;
|
| | | top: -1px;
|
| | | background-color: #F5F4F2;
|
| | | width: 30px;
|
| | | height: 1px;
|
| | | overflow: hidden;
|
| | | padding-left: 0;
|
| | | padding-right: 0;
|
| | | }
|
| | | *:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;}
|
| | | *:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;}
|
| | | *:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;}
|
| | | *:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;}
|
| | | *:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;}
|
| | | *:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;}
|
| | | *:first-child+html .mceSelectList {margin-top: 2px;}
|
| | | *:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;}
|
| | | *:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;}
|
| | | *:first-child+html a.mceMoreColors {width: 132px;}
|
| | | *:first-child+html .mceColors td a {width: 10px; height: 10px;}
|
| | | *:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;}
|